From 5ebd6d1e6becaa767abce0ebe21ff8598dbb985e Mon Sep 17 00:00:00 2001 From: Jim Broadus Date: Wed, 17 Mar 2021 16:57:12 -0700 Subject: [PATCH] internet/core: Move context_menu_ to base class Every internet service class has a context_menu_ member. Moving this to the base class will allow the consolidation of common menu functionality. --- src/internet/core/cloudfileservice.h | 1 - src/internet/core/internetservice.h | 2 ++ src/internet/digitally/digitallyimportedservicebase.h | 1 - src/internet/icecast/icecastservice.cpp | 3 +-- src/internet/icecast/icecastservice.h | 1 - src/internet/intergalacticfm/intergalacticfmservice.cpp | 7 ++----- src/internet/intergalacticfm/intergalacticfmservice.h | 1 - src/internet/internetradio/savedradio.cpp | 8 +++----- src/internet/internetradio/savedradio.h | 1 - src/internet/jamendo/jamendoservice.cpp | 5 ++--- src/internet/jamendo/jamendoservice.h | 2 -- src/internet/magnatune/magnatuneservice.cpp | 5 ++--- src/internet/magnatune/magnatuneservice.h | 1 - src/internet/podcasts/podcastservice.cpp | 3 +-- src/internet/podcasts/podcastservice.h | 1 - src/internet/radiobrowser/radiobrowserservice.cpp | 3 +-- src/internet/radiobrowser/radiobrowserservice.h | 1 - src/internet/somafm/somafmservice.cpp | 5 ++--- src/internet/somafm/somafmservice.h | 1 - src/internet/spotify/spotifyservice.cpp | 3 +-- src/internet/spotify/spotifyservice.h | 1 - src/internet/subsonic/subsonicservice.cpp | 3 +-- src/internet/subsonic/subsonicservice.h | 1 - 23 files changed, 18 insertions(+), 42 deletions(-) diff --git a/src/internet/core/cloudfileservice.h b/src/internet/core/cloudfileservice.h index d88a0d854..efc18faab 100644 --- a/src/internet/core/cloudfileservice.h +++ b/src/internet/core/cloudfileservice.h @@ -88,7 +88,6 @@ class CloudFileService : public InternetService { LibraryModel* library_model_; QSortFilterProxyModel* library_sort_model_; - std::unique_ptr context_menu_; std::unique_ptr cover_manager_; PlaylistManager* playlist_manager_; TaskManager* task_manager_; diff --git a/src/internet/core/internetservice.h b/src/internet/core/internetservice.h index e5b529ed4..6552b5b22 100644 --- a/src/internet/core/internetservice.h +++ b/src/internet/core/internetservice.h @@ -25,6 +25,7 @@ #include #include +#include #include #include @@ -138,6 +139,7 @@ class InternetService : public QObject { protected: Application* app_; + std::unique_ptr context_menu_; private: InternetModel* model_; diff --git a/src/internet/digitally/digitallyimportedservicebase.h b/src/internet/digitally/digitallyimportedservicebase.h index 9cd2d0f15..88e116c1a 100644 --- a/src/internet/digitally/digitallyimportedservicebase.h +++ b/src/internet/digitally/digitallyimportedservicebase.h @@ -101,7 +101,6 @@ class DigitallyImportedServiceBase : public InternetService { QStandardItem* root_; - std::unique_ptr context_menu_; QStandardItem* context_item_; CachedList saved_channels_; diff --git a/src/internet/icecast/icecastservice.cpp b/src/internet/icecast/icecastservice.cpp index d6a5cc6a4..7e6a7f14d 100644 --- a/src/internet/icecast/icecastservice.cpp +++ b/src/internet/icecast/icecastservice.cpp @@ -55,7 +55,6 @@ const char* IcecastService::kHomepage = "http://dir.xiph.org/"; IcecastService::IcecastService(Application* app, InternetModel* parent) : InternetService(kServiceName, app, parent, parent), network_(new NetworkAccessManager(this)), - context_menu_(nullptr), backend_(new IcecastBackend), model_(nullptr), filter_(new IcecastFilterWidget(0)) { @@ -298,7 +297,7 @@ void IcecastService::ShowContextMenu(const QPoint& global_pos) { void IcecastService::EnsureMenuCreated() { if (context_menu_) return; - context_menu_ = new QMenu; + context_menu_.reset(new QMenu); context_menu_->addActions(GetPlaylistActions()); context_menu_->addAction(IconLoader::Load("download", IconLoader::Base), diff --git a/src/internet/icecast/icecastservice.h b/src/internet/icecast/icecastservice.h index 5004c8ade..d5032399b 100644 --- a/src/internet/icecast/icecastservice.h +++ b/src/internet/icecast/icecastservice.h @@ -73,7 +73,6 @@ class IcecastService : public InternetService { QStandardItem* root_; NetworkAccessManager* network_; - QMenu* context_menu_; std::shared_ptr backend_; IcecastModel* model_; diff --git a/src/internet/intergalacticfm/intergalacticfmservice.cpp b/src/internet/intergalacticfm/intergalacticfmservice.cpp index 6172f4a20..c6b7fd9e2 100644 --- a/src/internet/intergalacticfm/intergalacticfmservice.cpp +++ b/src/internet/intergalacticfm/intergalacticfmservice.cpp @@ -58,7 +58,6 @@ IntergalacticFMServiceBase::IntergalacticFMServiceBase( url_scheme_(name.toLower().remove(' ')), url_handler_(new IntergalacticFMUrlHandler(app, this, this)), root_(nullptr), - context_menu_(nullptr), network_(new NetworkAccessManager(this)), streams_(name, "streams", kStreamsCacheDurationSecs), name_(name), @@ -73,9 +72,7 @@ IntergalacticFMServiceBase::IntergalacticFMServiceBase( new IntergalacticFMSearchProvider(this, app_, this)); } -IntergalacticFMServiceBase::~IntergalacticFMServiceBase() { - delete context_menu_; -} +IntergalacticFMServiceBase::~IntergalacticFMServiceBase() {} QStandardItem* IntergalacticFMServiceBase::CreateRootItem() { root_ = new QStandardItem(icon_, name_); @@ -96,7 +93,7 @@ void IntergalacticFMServiceBase::LazyPopulate(QStandardItem* item) { void IntergalacticFMServiceBase::ShowContextMenu(const QPoint& global_pos) { if (!context_menu_) { - context_menu_ = new QMenu; + context_menu_.reset(new QMenu); context_menu_->addActions(GetPlaylistActions()); context_menu_->addAction(IconLoader::Load("download", IconLoader::Base), tr("Open %1 in browser").arg(homepage_url_.host()), diff --git a/src/internet/intergalacticfm/intergalacticfmservice.h b/src/internet/intergalacticfm/intergalacticfmservice.h index f6c4f62f0..10aff13a6 100644 --- a/src/internet/intergalacticfm/intergalacticfmservice.h +++ b/src/internet/intergalacticfm/intergalacticfmservice.h @@ -91,7 +91,6 @@ class IntergalacticFMServiceBase : public InternetService { IntergalacticFMUrlHandler* url_handler_; QStandardItem* root_; - QMenu* context_menu_; QNetworkAccessManager* network_; diff --git a/src/internet/internetradio/savedradio.cpp b/src/internet/internetradio/savedradio.cpp index 1d7037f02..adadb6024 100644 --- a/src/internet/internetradio/savedradio.cpp +++ b/src/internet/internetradio/savedradio.cpp @@ -37,16 +37,14 @@ const char* SavedRadio::kServiceName = "SavedRadio"; const char* SavedRadio::kSettingsGroup = "SavedRadio"; SavedRadio::SavedRadio(Application* app, InternetModel* parent) - : InternetService(kServiceName, app, parent, parent), - context_menu_(nullptr), - root_(nullptr) { + : InternetService(kServiceName, app, parent, parent), root_(nullptr) { LoadStreams(); app_->global_search()->AddProvider( new SavedRadioSearchProvider(this, app_, this)); } -SavedRadio::~SavedRadio() { delete context_menu_; } +SavedRadio::~SavedRadio() {} QStandardItem* SavedRadio::CreateRootItem() { root_ = new QStandardItem( @@ -104,7 +102,7 @@ void SavedRadio::SaveStreams() { void SavedRadio::ShowContextMenu(const QPoint& global_pos) { if (!context_menu_) { - context_menu_ = new QMenu; + context_menu_.reset(new QMenu); context_menu_->addActions(GetPlaylistActions()); remove_action_ = context_menu_->addAction( IconLoader::Load("list-remove", IconLoader::Base), tr("Remove"), this, diff --git a/src/internet/internetradio/savedradio.h b/src/internet/internetradio/savedradio.h index c275da64f..95876b9fe 100644 --- a/src/internet/internetradio/savedradio.h +++ b/src/internet/internetradio/savedradio.h @@ -81,7 +81,6 @@ class SavedRadio : public InternetService { void AddStreamToList(const Stream& stream, QStandardItem* parent); private: - QMenu* context_menu_; QStandardItem* root_; QAction* remove_action_; diff --git a/src/internet/jamendo/jamendoservice.cpp b/src/internet/jamendo/jamendoservice.cpp index 37e3ecf09..6a317c202 100644 --- a/src/internet/jamendo/jamendoservice.cpp +++ b/src/internet/jamendo/jamendoservice.cpp @@ -81,7 +81,6 @@ const int JamendoService::kApproxDatabaseSize = 450000; JamendoService::JamendoService(Application* app, InternetModel* parent) : InternetService(kServiceName, app, parent, parent), network_(new NetworkAccessManager(this)), - context_menu_(nullptr), library_backend_(nullptr), library_filter_(nullptr), library_model_(nullptr), @@ -176,7 +175,7 @@ void JamendoService::UpdateTotalSongCount(int count) { void JamendoService::DownloadDirectory() { // don't ask if we're refreshing the database if (total_song_count_ == 0) { - if (QMessageBox::question(context_menu_, tr("Jamendo database"), + if (QMessageBox::question(nullptr, tr("Jamendo database"), tr("This action will create a database which " "could be as big as 150 MB.\n" "Do you want to continue anyway?"), @@ -414,7 +413,7 @@ void JamendoService::ParseDirectoryFinished() { void JamendoService::EnsureMenuCreated() { if (library_filter_) return; - context_menu_ = new QMenu; + context_menu_.reset(new QMenu); context_menu_->addActions(GetPlaylistActions()); album_info_ = context_menu_->addAction( IconLoader::Load("view-media-lyrics", IconLoader::Base), diff --git a/src/internet/jamendo/jamendoservice.h b/src/internet/jamendo/jamendoservice.h index 99da054a8..4e59a9718 100644 --- a/src/internet/jamendo/jamendoservice.h +++ b/src/internet/jamendo/jamendoservice.h @@ -104,8 +104,6 @@ class JamendoService : public InternetService { private: NetworkAccessManager* network_; - QMenu* context_menu_; - QAction* album_info_; QAction* download_album_; diff --git a/src/internet/magnatune/magnatuneservice.cpp b/src/internet/magnatune/magnatuneservice.cpp index 3d7c24064..bfbbcb63e 100644 --- a/src/internet/magnatune/magnatuneservice.cpp +++ b/src/internet/magnatune/magnatuneservice.cpp @@ -74,7 +74,6 @@ const char* MagnatuneService::kDownloadUrl = MagnatuneService::MagnatuneService(Application* app, InternetModel* parent) : InternetService(kServiceName, app, parent, parent), url_handler_(new MagnatuneUrlHandler(this, this)), - context_menu_(nullptr), root_(nullptr), library_backend_(nullptr), library_model_(nullptr), @@ -107,7 +106,7 @@ MagnatuneService::MagnatuneService(Application* app, InternetModel* parent) IconLoader::Load("magnatune", IconLoader::Provider), true, app_, this)); } -MagnatuneService::~MagnatuneService() { delete context_menu_; } +MagnatuneService::~MagnatuneService() {} void MagnatuneService::ReloadSettings() { QSettings s; @@ -272,7 +271,7 @@ QString MagnatuneService::ReadElementText(QXmlStreamReader& reader) { void MagnatuneService::EnsureMenuCreated() { if (context_menu_) return; - context_menu_ = new QMenu; + context_menu_.reset(new QMenu); context_menu_->addActions(GetPlaylistActions()); download_ = context_menu_->addAction( diff --git a/src/internet/magnatune/magnatuneservice.h b/src/internet/magnatune/magnatuneservice.h index 33fbafdd3..34dff9070 100644 --- a/src/internet/magnatune/magnatuneservice.h +++ b/src/internet/magnatune/magnatuneservice.h @@ -109,7 +109,6 @@ class MagnatuneService : public InternetService { private: MagnatuneUrlHandler* url_handler_; - QMenu* context_menu_; QStandardItem* root_; QAction* download_; diff --git a/src/internet/podcasts/podcastservice.cpp b/src/internet/podcasts/podcastservice.cpp index 8b67d679a..496e9427c 100644 --- a/src/internet/podcasts/podcastservice.cpp +++ b/src/internet/podcasts/podcastservice.cpp @@ -66,7 +66,6 @@ PodcastService::PodcastService(Application* app, InternetModel* parent) backend_(app->podcast_backend()), model_(new PodcastServiceModel(this)), proxy_(new PodcastSortProxyModel(this)), - context_menu_(nullptr), root_(nullptr), organise_dialog_(new OrganiseDialog(app_->task_manager())) { icon_loader_->SetModel(model_); @@ -416,7 +415,7 @@ QStandardItem* PodcastService::CreatePodcastEpisodeItem( void PodcastService::ShowContextMenu(const QPoint& global_pos) { if (!context_menu_) { - context_menu_ = new QMenu; + context_menu_.reset(new QMenu); context_menu_->addAction(IconLoader::Load("list-add", IconLoader::Base), tr("Add podcast..."), this, SLOT(AddPodcast())); context_menu_->addAction(IconLoader::Load("view-refresh", IconLoader::Base), diff --git a/src/internet/podcasts/podcastservice.h b/src/internet/podcasts/podcastservice.h index c2322af7e..b5452f9be 100644 --- a/src/internet/podcasts/podcastservice.h +++ b/src/internet/podcasts/podcastservice.h @@ -146,7 +146,6 @@ class PodcastService : public InternetService { QStandardItemModel* model_; QSortFilterProxyModel* proxy_; - QMenu* context_menu_; QAction* update_selected_action_; QAction* remove_selected_action_; QAction* download_selected_action_; diff --git a/src/internet/radiobrowser/radiobrowserservice.cpp b/src/internet/radiobrowser/radiobrowserservice.cpp index 23a5fe3de..ccfea99f8 100644 --- a/src/internet/radiobrowser/radiobrowserservice.cpp +++ b/src/internet/radiobrowser/radiobrowserservice.cpp @@ -136,7 +136,6 @@ RadioBrowserService::RadioBrowserService(Application* app, InternetModel* parent) : InternetService(kServiceName, app, parent, parent), root_(nullptr), - context_menu_(nullptr), station_menu_(nullptr), add_to_saved_radio_action_(nullptr), network_(new NetworkAccessManager(this)), @@ -437,4 +436,4 @@ void RadioBrowserService::AddToSavedRadio(bool checked) { Song station = item->data(InternetModel::Role_SongMetadata).value(); InternetModel::Service()->Add(station.url(), station.artist(), QUrl(station.art_automatic())); -} \ No newline at end of file +} diff --git a/src/internet/radiobrowser/radiobrowserservice.h b/src/internet/radiobrowser/radiobrowserservice.h index 9c836c774..7b458fa8c 100644 --- a/src/internet/radiobrowser/radiobrowserservice.h +++ b/src/internet/radiobrowser/radiobrowserservice.h @@ -107,7 +107,6 @@ class RadioBrowserService : public InternetService { private: QStandardItem* root_; - std::unique_ptr context_menu_; std::unique_ptr station_menu_; std::unique_ptr add_to_saved_radio_action_; diff --git a/src/internet/somafm/somafmservice.cpp b/src/internet/somafm/somafmservice.cpp index 2eed98530..7ae68003a 100644 --- a/src/internet/somafm/somafmservice.cpp +++ b/src/internet/somafm/somafmservice.cpp @@ -60,7 +60,6 @@ SomaFMServiceBase::SomaFMServiceBase(Application* app, InternetModel* parent, url_scheme_(name.toLower().remove(' ')), url_handler_(new SomaFMUrlHandler(app, this, this)), root_(nullptr), - context_menu_(nullptr), network_(new NetworkAccessManager(this)), streams_(name, "streams", kStreamsCacheDurationSecs), name_(name), @@ -75,7 +74,7 @@ SomaFMServiceBase::SomaFMServiceBase(Application* app, InternetModel* parent, new SomaFMSearchProvider(this, app_, this)); } -SomaFMServiceBase::~SomaFMServiceBase() { delete context_menu_; } +SomaFMServiceBase::~SomaFMServiceBase() {} QStandardItem* SomaFMServiceBase::CreateRootItem() { root_ = new QStandardItem(icon_, name_); @@ -96,7 +95,7 @@ void SomaFMServiceBase::LazyPopulate(QStandardItem* item) { void SomaFMServiceBase::ShowContextMenu(const QPoint& global_pos) { if (!context_menu_) { - context_menu_ = new QMenu; + context_menu_.reset(new QMenu); context_menu_->addActions(GetPlaylistActions()); context_menu_->addAction(IconLoader::Load("download", IconLoader::Base), tr("Open %1 in browser").arg(homepage_url_.host()), diff --git a/src/internet/somafm/somafmservice.h b/src/internet/somafm/somafmservice.h index 43e1aecd0..6cdcdf5b6 100644 --- a/src/internet/somafm/somafmservice.h +++ b/src/internet/somafm/somafmservice.h @@ -91,7 +91,6 @@ class SomaFMServiceBase : public InternetService { SomaFMUrlHandler* url_handler_; QStandardItem* root_; - QMenu* context_menu_; QNetworkAccessManager* network_; diff --git a/src/internet/spotify/spotifyservice.cpp b/src/internet/spotify/spotifyservice.cpp index a2ebdbe1a..6c77b8a82 100644 --- a/src/internet/spotify/spotifyservice.cpp +++ b/src/internet/spotify/spotifyservice.cpp @@ -76,7 +76,6 @@ SpotifyService::SpotifyService(Application* app, InternetModel* parent) inbox_(nullptr), toplist_(nullptr), login_task_id_(0), - context_menu_(nullptr), playlist_context_menu_(nullptr), song_context_menu_(nullptr), playlist_sync_action_(nullptr), @@ -661,7 +660,7 @@ QWidget* SpotifyService::HeaderWidget() const { void SpotifyService::EnsureMenuCreated() { if (context_menu_) return; - context_menu_ = new QMenu; + context_menu_.reset(new QMenu); context_menu_->addAction(GetNewShowConfigAction()); playlist_context_menu_ = new QMenu; diff --git a/src/internet/spotify/spotifyservice.h b/src/internet/spotify/spotifyservice.h index 351faa1c5..8d53d3e1a 100644 --- a/src/internet/spotify/spotifyservice.h +++ b/src/internet/spotify/spotifyservice.h @@ -168,7 +168,6 @@ class SpotifyService : public InternetService { int login_task_id_; QString pending_search_; - QMenu* context_menu_; QMenu* playlist_context_menu_; QMenu* song_context_menu_; QAction* playlist_sync_action_; diff --git a/src/internet/subsonic/subsonicservice.cpp b/src/internet/subsonic/subsonicservice.cpp index f0643cc39..68f6f2a77 100644 --- a/src/internet/subsonic/subsonicservice.cpp +++ b/src/internet/subsonic/subsonicservice.cpp @@ -67,7 +67,6 @@ SubsonicService::SubsonicService(Application* app, InternetModel* parent) url_handler_(new SubsonicUrlHandler(this, this)), scanner_(new SubsonicLibraryScanner(this, this)), load_database_task_id_(0), - context_menu_(nullptr), root_(nullptr), library_backend_(nullptr), library_model_(nullptr), @@ -137,7 +136,7 @@ SubsonicService::SubsonicService(Application* app, InternetModel* parent) connect(this, SIGNAL(LoginStateChanged(SubsonicService::LoginState)), SLOT(OnLoginStateChanged(SubsonicService::LoginState))); - context_menu_ = new QMenu; + context_menu_.reset(new QMenu); context_menu_->addActions(GetPlaylistActions()); context_menu_->addSeparator(); context_menu_->addAction(IconLoader::Load("view-refresh", IconLoader::Base), diff --git a/src/internet/subsonic/subsonicservice.h b/src/internet/subsonic/subsonicservice.h index 6468f90cd..e626f8d65 100644 --- a/src/internet/subsonic/subsonicservice.h +++ b/src/internet/subsonic/subsonicservice.h @@ -143,7 +143,6 @@ class SubsonicService : public InternetService { SubsonicLibraryScanner* scanner_; int load_database_task_id_; - QMenu* context_menu_; QStandardItem* root_; std::shared_ptr library_backend_;