From 91e1e5880dd0b8931d0ff0de78ce429cc15b60ce Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Sun, 28 Mar 2021 15:23:34 +0200 Subject: [PATCH] Fix compilation on older Qt, use Player::SongChangeRequestProcessed() signal to handle station play count --- .../radiobrowser/radiobrowserservice.cpp | 29 ++++++++++++------- .../radiobrowser/radiobrowserservice.h | 1 + 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/internet/radiobrowser/radiobrowserservice.cpp b/src/internet/radiobrowser/radiobrowserservice.cpp index 6d7130377..a37fe16dd 100644 --- a/src/internet/radiobrowser/radiobrowserservice.cpp +++ b/src/internet/radiobrowser/radiobrowserservice.cpp @@ -146,6 +146,8 @@ RadioBrowserService::RadioBrowserService(Application* app, app_->player()->RegisterUrlHandler(url_handler_); app_->global_search()->AddProvider( new RadioBrowserSearchProvider(app_, this, this)); + connect(app_->player(), SIGNAL(SongChangeRequestProcessed(QUrl, bool)), this, + SLOT(SongChangeRequestProcessed(QUrl, bool))); } QStandardItem* RadioBrowserService::CreateRootItem() { @@ -422,8 +424,11 @@ void RadioBrowserService::ResolveStationUrl(const QUrl& original_url) { StreamList list; QJsonArray contents = document.array(); - QJsonValue item = contents.first(); - if (item.isUndefined()) return; + QJsonObject item = contents.first().toObject(); + if (item.isEmpty()) { + emit StationUrlResolved(original_url, QUrl()); + return; + } Song ret; ret.set_valid(true); @@ -434,17 +439,21 @@ void RadioBrowserService::ResolveStationUrl(const QUrl& original_url) { emit StreamMetadataFound(original_url, ret); emit StationUrlResolved(original_url, ret.url()); - - // inform the server that we played the station - QString determinedUrl = - PlayClickUrl.arg(main_server_url_, original_url.path()); - QUrl playUrl(determinedUrl); - QNetworkReply* playReply = network_->get(QNetworkRequest(playUrl)); - connect(playReply, &QNetworkReply::finished, - [=] { playReply->deleteLater(); }); }); } +void RadioBrowserService::SongChangeRequestProcessed(const QUrl& url, + bool valid) { + if (!valid || url.scheme() != url_handler_->scheme()) return; + + // inform the server that the station is playing + QString determinedUrl = PlayClickUrl.arg(main_server_url_, url.path()); + QUrl playUrl(determinedUrl); + QNetworkReply* playReply = network_->get(QNetworkRequest(playUrl)); + connect(playReply, &QNetworkReply::finished, + [=] { playReply->deleteLater(); }); +} + void RadioBrowserService::AddToSavedRadio(bool checked) { Q_UNUSED(checked); QAction* action = qobject_cast(sender()); diff --git a/src/internet/radiobrowser/radiobrowserservice.h b/src/internet/radiobrowser/radiobrowserservice.h index 7b458fa8c..e336f3b1d 100644 --- a/src/internet/radiobrowser/radiobrowserservice.h +++ b/src/internet/radiobrowser/radiobrowserservice.h @@ -85,6 +85,7 @@ class RadioBrowserService : public InternetService { public slots: void ReloadSettings() override; + void SongChangeRequestProcessed(const QUrl& url, bool valid); private slots: void LazyPopulate(QStandardItem* item) override;