diff --git a/CMakeLists.txt b/CMakeLists.txt index 48c9e6358582ed47dc0b67124cc6b0c969441364..696f9fe9378e9df5e0836833958bc91adf51a912 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,7 @@ project(simplecastengine) set(QT_MIN_VERSION "5.9.0") set(KF_MIN_VERSION "5.35.0") +set (CMAKE_CXX_STANDARD 11) find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) diff --git a/plasmoid/package/contents/ui/main.qml b/plasmoid/package/contents/ui/main.qml index 32d1400502cbfa75f0508f90c77c57559bb4ee67..80d57fc2fe43b54fed5e170964a28ece8c754cda 100644 --- a/plasmoid/package/contents/ui/main.qml +++ b/plasmoid/package/contents/ui/main.qml @@ -95,6 +95,7 @@ Item { var loadTrack = service.operationDescription("addURLToPlaylist"); loadTrack.URL = url.text; service.startOperationCall(loadTrack); + url.text = ""; } } } diff --git a/src/minimediaplayer.cpp b/src/minimediaplayer.cpp index 111ba39332e69b91cdf8aadaa9ed60d9100a986e..75750dd512a40f37e37cc43e56bb421fd5d9612b 100644 --- a/src/minimediaplayer.cpp +++ b/src/minimediaplayer.cpp @@ -19,6 +19,7 @@ #include #include #include +#include MiniMediaPlayer::MiniMediaPlayer(QObject *parent) : QObject(parent) { @@ -40,9 +41,12 @@ bool MiniMediaPlayer::nextTrack() if(playlist.size() > 1) { playlist.pop_front(); - m_player->stop(); - m_player->setMedia(getStreamUrlFromUrl(playlist.first().second)); - emit playlistChanged(getTrackNames()); + m_player->pause(); + m_player->setPosition(0); + QtConcurrent::run([this]() { + m_player->setMedia(getStreamUrlFromUrl(playlist.first().second)); + emit playlistChanged(getTrackNames()); + }); return true; } else if(playlist.size() == 1) @@ -98,25 +102,25 @@ void MiniMediaPlayer::positionChanged(qint64 position) emit trackPositionChanged(position); } -bool MiniMediaPlayer::addURLToPlaylist(QUrl mediaUrl) +void MiniMediaPlayer::addURLToPlaylist(QUrl mediaUrl) { - if(isValidMediaUrl(mediaUrl)) - { - bool shouldStartPlaying = false; - if(playlist.size() == 0) shouldStartPlaying = true; - QList> tracks = getStreamTitlesAndUrlsFromUrl(mediaUrl); - playlist.append(tracks); - emit playlistChanged(getTrackNames()); - if(shouldStartPlaying && playlist.size() > 0) + QtConcurrent::run([this,mediaUrl](){ + if(isValidMediaUrl(mediaUrl)) { - m_player->setMedia(getStreamUrlFromUrl(playlist.first().second)); - } - if(tracks.size() > 0) - { - return true; + bool shouldStartPlaying = false; + if(playlist.size() == 0) shouldStartPlaying = true; + QList> tracks = getStreamTitlesAndUrlsFromUrl(mediaUrl); + if(tracks.size() > 0) + { + playlist.append(tracks); + emit playlistChanged(getTrackNames()); + } + if(shouldStartPlaying && playlist.size() > 0) + { + m_player->setMedia(getStreamUrlFromUrl(playlist.first().second)); + } } - } - return false; + }); } QUrl MiniMediaPlayer::getStreamUrlFromUrl(QUrl mediaUrl) diff --git a/src/minimediaplayer.h b/src/minimediaplayer.h index 6c5b1b53e47d2d4afc2249a0b393f97843c6eb04..5ca360979ab3014998ca787d984fea65f42ad7a4 100644 --- a/src/minimediaplayer.h +++ b/src/minimediaplayer.h @@ -31,7 +31,7 @@ class MiniMediaPlayer : public QObject public: MiniMediaPlayer(QObject *parent = 0); - bool addURLToPlaylist(QUrl mediaUrl); + void addURLToPlaylist(QUrl mediaUrl); QList getTrackNames(); diff --git a/src/simplecastservice.cpp b/src/simplecastservice.cpp index 1abfefde7d849d4d727e33961826d66329da3905..82a0a729d2e41fbf28ad9f608e25602213a8c3d4 100644 --- a/src/simplecastservice.cpp +++ b/src/simplecastservice.cpp @@ -43,7 +43,8 @@ public: { if(paramaters.contains("URL")) { - setResult(player->addURLToPlaylist(paramaters["URL"].toUrl())); + player->addURLToPlaylist(paramaters["URL"].toUrl()); + emitResult(); } } } diff --git a/src/simplecasttcpservice.cpp b/src/simplecasttcpservice.cpp index 7cf949c09fd64a40726a8a2c92d0edf16886f35e..6ddeedc52fc6a02a3e0000beb1dad348b00d761d 100644 --- a/src/simplecasttcpservice.cpp +++ b/src/simplecasttcpservice.cpp @@ -57,7 +57,8 @@ public: } else if(message.size() == 3 && message[1] == "addURLToPlaylist") { - openSocket.write(player->addURLToPlaylist(QUrl(message[2]))?"0":"1"); + player->addURLToPlaylist(QUrl(message[2])); + openSocket.write("0"); } else {