From a5e84bbe98072d1d60729a4366489350efaa0afe Mon Sep 17 00:00:00 2001 From: Jim Broadus Date: Tue, 6 Jul 2021 23:07:55 -0700 Subject: [PATCH] internet: Add common InternetService::ConfigRequired() method. This will allow some common handling of unconfigured services. --- src/internet/core/cloudfileservice.cpp | 2 +- src/internet/core/cloudfileservice.h | 1 + src/internet/core/internetservice.h | 2 ++ src/internet/digitally/digitallyimportedservicebase.cpp | 2 +- src/internet/digitally/digitallyimportedservicebase.h | 2 ++ src/internet/spotify/spotifyservice.h | 2 ++ src/internet/subsonic/subsonicservice.cpp | 2 +- src/internet/subsonic/subsonicservice.h | 4 ++++ 8 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/internet/core/cloudfileservice.cpp b/src/internet/core/cloudfileservice.cpp index 960a35e16..16dfc0847 100644 --- a/src/internet/core/cloudfileservice.cpp +++ b/src/internet/core/cloudfileservice.cpp @@ -83,7 +83,7 @@ QStandardItem* CloudFileService::CreateRootItem() { void CloudFileService::LazyPopulate(QStandardItem* item) { switch (item->data(InternetModel::Role_Type).toInt()) { case InternetModel::Type_Service: - if (!has_credentials()) { + if (ConfigRequired()) { ShowConfig(); } else { Connect(); diff --git a/src/internet/core/cloudfileservice.h b/src/internet/core/cloudfileservice.h index 7b9db223e..649c117a9 100644 --- a/src/internet/core/cloudfileservice.h +++ b/src/internet/core/cloudfileservice.h @@ -49,6 +49,7 @@ class CloudFileService : public InternetService { virtual bool has_credentials() const = 0; bool is_indexing() const { return indexing_task_id_ != -1; } + bool ConfigRequired() override { return !has_credentials(); } signals: void AllIndexingTasksFinished(); diff --git a/src/internet/core/internetservice.h b/src/internet/core/internetservice.h index 1704e2803..e6e750f08 100644 --- a/src/internet/core/internetservice.h +++ b/src/internet/core/internetservice.h @@ -88,6 +88,8 @@ class InternetService : public QObject { virtual QString Icon() { return QString(); } + virtual bool ConfigRequired() { return false; } + signals: void StreamError(const QString& message); void StreamMetadataFound(const QUrl& original_url, const Song& song); diff --git a/src/internet/digitally/digitallyimportedservicebase.cpp b/src/internet/digitally/digitallyimportedservicebase.cpp index a4f6105c1..1edc044ff 100644 --- a/src/internet/digitally/digitallyimportedservicebase.cpp +++ b/src/internet/digitally/digitallyimportedservicebase.cpp @@ -126,7 +126,7 @@ void DigitallyImportedServiceBase::RefreshStreamsFinished(QNetworkReply* reply, void DigitallyImportedServiceBase::PopulateStreams() { if (root_->hasChildren()) root_->removeRows(0, root_->rowCount()); - if (!is_premium_account()) { + if (ConfigRequired()) { ShowConfig(); return; } diff --git a/src/internet/digitally/digitallyimportedservicebase.h b/src/internet/digitally/digitallyimportedservicebase.h index 943e11d6b..97c19ccd5 100644 --- a/src/internet/digitally/digitallyimportedservicebase.h +++ b/src/internet/digitally/digitallyimportedservicebase.h @@ -64,6 +64,8 @@ class DigitallyImportedServiceBase : public InternetService { void SongFromChannel(const DigitallyImportedClient::Channel& channel, Song* song) const; + bool ConfigRequired() override { return !is_premium_account(); } + public slots: void ShowConfig() override; diff --git a/src/internet/spotify/spotifyservice.h b/src/internet/spotify/spotifyservice.h index 8d53d3e1a..2589d5cf1 100644 --- a/src/internet/spotify/spotifyservice.h +++ b/src/internet/spotify/spotifyservice.h @@ -92,6 +92,8 @@ class SpotifyService : public InternetService { LoginState login_state() const { return login_state_; } bool IsLoggedIn() const { return login_state_ == LoginState_LoggedIn; } + bool ConfigRequired() override { return !IsLoggedIn(); } + static void SongFromProtobuf(const cpb::spotify::Track& track, Song* song); signals: diff --git a/src/internet/subsonic/subsonicservice.cpp b/src/internet/subsonic/subsonicservice.cpp index 68f6f2a77..a8f517b3c 100644 --- a/src/internet/subsonic/subsonicservice.cpp +++ b/src/internet/subsonic/subsonicservice.cpp @@ -168,7 +168,7 @@ void SubsonicService::LazyPopulate(QStandardItem* item) { switch (item->data(InternetModel::Role_Type).toInt()) { case InternetModel::Type_Service: library_model_->Init(); - if (login_state() != LoginState_Loggedin) { + if (ConfigRequired()) { ShowConfig(); } else if (total_song_count_ == 0 && !load_database_task_id_) { ReloadDatabase(); diff --git a/src/internet/subsonic/subsonicservice.h b/src/internet/subsonic/subsonicservice.h index e626f8d65..6f9e18f18 100644 --- a/src/internet/subsonic/subsonicservice.h +++ b/src/internet/subsonic/subsonicservice.h @@ -103,6 +103,10 @@ class SubsonicService : public InternetService { LoginState login_state() const { return login_state_; } + bool ConfigRequired() override { + return login_state() != LoginState_Loggedin; + } + // Subsonic API methods void Ping();