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.
This commit is contained in:
Jim Broadus 2021-03-17 16:57:12 -07:00 committed by John Maguire
parent 8b2f7f08ae
commit 5ebd6d1e6b
23 changed files with 18 additions and 42 deletions

View File

@ -88,7 +88,6 @@ class CloudFileService : public InternetService {
LibraryModel* library_model_;
QSortFilterProxyModel* library_sort_model_;
std::unique_ptr<QMenu> context_menu_;
std::unique_ptr<AlbumCoverManager> cover_manager_;
PlaylistManager* playlist_manager_;
TaskManager* task_manager_;

View File

@ -25,6 +25,7 @@
#include <QAction>
#include <QList>
#include <QMenu>
#include <QObject>
#include <QUrl>
@ -138,6 +139,7 @@ class InternetService : public QObject {
protected:
Application* app_;
std::unique_ptr<QMenu> context_menu_;
private:
InternetModel* model_;

View File

@ -101,7 +101,6 @@ class DigitallyImportedServiceBase : public InternetService {
QStandardItem* root_;
std::unique_ptr<QMenu> context_menu_;
QStandardItem* context_item_;
CachedList<DigitallyImportedClient::Channel> saved_channels_;

View File

@ -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),

View File

@ -73,7 +73,6 @@ class IcecastService : public InternetService {
QStandardItem* root_;
NetworkAccessManager* network_;
QMenu* context_menu_;
std::shared_ptr<IcecastBackend> backend_;
IcecastModel* model_;

View File

@ -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()),

View File

@ -91,7 +91,6 @@ class IntergalacticFMServiceBase : public InternetService {
IntergalacticFMUrlHandler* url_handler_;
QStandardItem* root_;
QMenu* context_menu_;
QNetworkAccessManager* network_;

View File

@ -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,

View File

@ -81,7 +81,6 @@ class SavedRadio : public InternetService {
void AddStreamToList(const Stream& stream, QStandardItem* parent);
private:
QMenu* context_menu_;
QStandardItem* root_;
QAction* remove_action_;

View File

@ -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),

View File

@ -104,8 +104,6 @@ class JamendoService : public InternetService {
private:
NetworkAccessManager* network_;
QMenu* context_menu_;
QAction* album_info_;
QAction* download_album_;

View File

@ -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(

View File

@ -109,7 +109,6 @@ class MagnatuneService : public InternetService {
private:
MagnatuneUrlHandler* url_handler_;
QMenu* context_menu_;
QStandardItem* root_;
QAction* download_;

View File

@ -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),

View File

@ -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_;

View File

@ -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<Song>();
InternetModel::Service<SavedRadio>()->Add(station.url(), station.artist(),
QUrl(station.art_automatic()));
}
}

View File

@ -107,7 +107,6 @@ class RadioBrowserService : public InternetService {
private:
QStandardItem* root_;
std::unique_ptr<QMenu> context_menu_;
std::unique_ptr<QMenu> station_menu_;
std::unique_ptr<QAction> add_to_saved_radio_action_;

View File

@ -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()),

View File

@ -91,7 +91,6 @@ class SomaFMServiceBase : public InternetService {
SomaFMUrlHandler* url_handler_;
QStandardItem* root_;
QMenu* context_menu_;
QNetworkAccessManager* network_;

View File

@ -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;

View File

@ -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_;

View File

@ -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),

View File

@ -143,7 +143,6 @@ class SubsonicService : public InternetService {
SubsonicLibraryScanner* scanner_;
int load_database_task_id_;
QMenu* context_menu_;
QStandardItem* root_;
std::shared_ptr<LibraryBackend> library_backend_;