Application: Use shared pointers

Fixes #1239
This commit is contained in:
Jonas Kvinge
2023-07-21 05:55:24 +02:00
parent d6b53f78ab
commit 2e61235403
316 changed files with 2170 additions and 1643 deletions

View File

@@ -26,6 +26,7 @@
#include <QVariant>
#include <QString>
#include "core/shared_ptr.h"
#include "core/application.h"
#include "core/player.h"
#include "engine/enginebase.h"
@@ -51,7 +52,7 @@ class BackendSettingsPage : public SettingsPage {
void Save() override;
void Cancel() override;
EngineBase *engine() const { return dialog()->app()->player()->engine(); }
SharedPtr<EngineBase> engine() const { return dialog()->app()->player()->engine(); }
#ifdef HAVE_ALSA
enum class ALSAPluginType {

View File

@@ -54,7 +54,7 @@ GlobalShortcutsSettingsPage::GlobalShortcutsSettingsPage(SettingsDialog *dialog,
: SettingsPage(dialog, parent),
ui_(new Ui_GlobalShortcutsSettingsPage),
initialized_(false),
grabber_(new GlobalShortcutGrabber) {
grabber_(new GlobalShortcutGrabber()) {
ui_->setupUi(this);
ui_->shortcut_options->setEnabled(false);

View File

@@ -24,14 +24,13 @@
#include "config.h"
#include <memory>
#include <QObject>
#include <QSettings>
#include <QMap>
#include <QString>
#include <QKeySequence>
#include "core/scoped_ptr.h"
#include "globalshortcuts/globalshortcutsmanager.h"
#include "settingspage.h"
@@ -77,7 +76,7 @@ class GlobalShortcutsSettingsPage : public SettingsPage {
Ui_GlobalShortcutsSettingsPage *ui_;
bool initialized_;
std::unique_ptr<GlobalShortcutGrabber> grabber_;
ScopedPtr<GlobalShortcutGrabber> grabber_;
QMap<QString, Shortcut> shortcuts_;

View File

@@ -53,10 +53,10 @@ QobuzSettingsPage::QobuzSettingsPage(SettingsDialog *dialog, QWidget *parent)
QObject::connect(ui_->button_login, &QPushButton::clicked, this, &QobuzSettingsPage::LoginClicked);
QObject::connect(ui_->login_state, &LoginStateWidget::LogoutClicked, this, &QobuzSettingsPage::LogoutClicked);
QObject::connect(this, &QobuzSettingsPage::Login, service_, &InternetService::LoginWithCredentials);
QObject::connect(this, &QobuzSettingsPage::Login, &*service_, &InternetService::LoginWithCredentials);
QObject::connect(service_, &InternetService::LoginFailure, this, &QobuzSettingsPage::LoginFailure);
QObject::connect(service_, &InternetService::LoginSuccess, this, &QobuzSettingsPage::LoginSuccess);
QObject::connect(&*service_, &InternetService::LoginFailure, this, &QobuzSettingsPage::LoginFailure);
QObject::connect(&*service_, &InternetService::LoginSuccess, this, &QobuzSettingsPage::LoginSuccess);
dialog->installEventFilter(this);

View File

@@ -23,6 +23,7 @@
#include <QObject>
#include <QString>
#include "core/shared_ptr.h"
#include "settings/settingspage.h"
class QEvent;
@@ -55,7 +56,7 @@ class QobuzSettingsPage : public SettingsPage {
private:
Ui_QobuzSettingsPage *ui_;
QobuzService *service_;
SharedPtr<QobuzService> service_;
};
#endif // QOBUZSETTINGSPAGE_H

View File

@@ -58,21 +58,21 @@ ScrobblerSettingsPage::ScrobblerSettingsPage(SettingsDialog *dialog, QWidget *pa
setWindowIcon(IconLoader::Load("scrobble", true, 0, 32));
// Last.fm
QObject::connect(lastfmscrobbler_, &LastFMScrobbler::AuthenticationComplete, this, &ScrobblerSettingsPage::LastFM_AuthenticationComplete);
QObject::connect(&*lastfmscrobbler_, &LastFMScrobbler::AuthenticationComplete, this, &ScrobblerSettingsPage::LastFM_AuthenticationComplete);
QObject::connect(ui_->button_lastfm_login, &QPushButton::clicked, this, &ScrobblerSettingsPage::LastFM_Login);
QObject::connect(ui_->widget_lastfm_login_state, &LoginStateWidget::LoginClicked, this, &ScrobblerSettingsPage::LastFM_Login);
QObject::connect(ui_->widget_lastfm_login_state, &LoginStateWidget::LogoutClicked, this, &ScrobblerSettingsPage::LastFM_Logout);
ui_->widget_lastfm_login_state->AddCredentialGroup(ui_->widget_lastfm_login);
// Libre.fm
QObject::connect(librefmscrobbler_, &LibreFMScrobbler::AuthenticationComplete, this, &ScrobblerSettingsPage::LibreFM_AuthenticationComplete);
QObject::connect(&*librefmscrobbler_, &LibreFMScrobbler::AuthenticationComplete, this, &ScrobblerSettingsPage::LibreFM_AuthenticationComplete);
QObject::connect(ui_->button_librefm_login, &QPushButton::clicked, this, &ScrobblerSettingsPage::LibreFM_Login);
QObject::connect(ui_->widget_librefm_login_state, &LoginStateWidget::LoginClicked, this, &ScrobblerSettingsPage::LibreFM_Login);
QObject::connect(ui_->widget_librefm_login_state, &LoginStateWidget::LogoutClicked, this, &ScrobblerSettingsPage::LibreFM_Logout);
ui_->widget_librefm_login_state->AddCredentialGroup(ui_->widget_librefm_login);
// ListenBrainz
QObject::connect(listenbrainzscrobbler_, &ListenBrainzScrobbler::AuthenticationComplete, this, &ScrobblerSettingsPage::ListenBrainz_AuthenticationComplete);
QObject::connect(&*listenbrainzscrobbler_, &ListenBrainzScrobbler::AuthenticationComplete, this, &ScrobblerSettingsPage::ListenBrainz_AuthenticationComplete);
QObject::connect(ui_->button_listenbrainz_login, &QPushButton::clicked, this, &ScrobblerSettingsPage::ListenBrainz_Login);
QObject::connect(ui_->widget_listenbrainz_login_state, &LoginStateWidget::LoginClicked, this, &ScrobblerSettingsPage::ListenBrainz_Login);
QObject::connect(ui_->widget_listenbrainz_login_state, &LoginStateWidget::LogoutClicked, this, &ScrobblerSettingsPage::ListenBrainz_Logout);
@@ -91,12 +91,12 @@ void ScrobblerSettingsPage::Load() {
QSettings s;
if (!s.contains(kSettingsGroup)) set_changed();
ui_->checkbox_enable->setChecked(scrobbler_->IsEnabled());
ui_->checkbox_scrobble_button->setChecked(scrobbler_->ScrobbleButton());
ui_->checkbox_love_button->setChecked(scrobbler_->LoveButton());
ui_->checkbox_offline->setChecked(scrobbler_->IsOffline());
ui_->spinbox_submit->setValue(scrobbler_->SubmitDelay());
ui_->checkbox_albumartist->setChecked(scrobbler_->PreferAlbumArtist());
ui_->checkbox_enable->setChecked(scrobbler_->enabled());
ui_->checkbox_scrobble_button->setChecked(scrobbler_->scrobble_button());
ui_->checkbox_love_button->setChecked(scrobbler_->love_button());
ui_->checkbox_offline->setChecked(scrobbler_->offline());
ui_->spinbox_submit->setValue(scrobbler_->submit_delay());
ui_->checkbox_albumartist->setChecked(scrobbler_->prefer_albumartist());
ui_->checkbox_show_error_dialog->setChecked(scrobbler_->ShowErrorDialog());
ui_->checkbox_source_collection->setChecked(scrobbler_->sources().contains(Song::Source::Collection));
@@ -111,15 +111,15 @@ void ScrobblerSettingsPage::Load() {
ui_->checkbox_source_radioparadise->setChecked(scrobbler_->sources().contains(Song::Source::RadioParadise));
ui_->checkbox_source_unknown->setChecked(scrobbler_->sources().contains(Song::Source::Unknown));
ui_->checkbox_lastfm_enable->setChecked(lastfmscrobbler_->IsEnabled());
LastFM_RefreshControls(lastfmscrobbler_->IsAuthenticated());
ui_->checkbox_lastfm_enable->setChecked(lastfmscrobbler_->enabled());
LastFM_RefreshControls(lastfmscrobbler_->authenticated());
ui_->checkbox_librefm_enable->setChecked(librefmscrobbler_->IsEnabled());
LibreFM_RefreshControls(librefmscrobbler_->IsAuthenticated());
ui_->checkbox_librefm_enable->setChecked(librefmscrobbler_->enabled());
LibreFM_RefreshControls(librefmscrobbler_->authenticated());
ui_->checkbox_listenbrainz_enable->setChecked(listenbrainzscrobbler_->IsEnabled());
ui_->checkbox_listenbrainz_enable->setChecked(listenbrainzscrobbler_->enabled());
ui_->lineedit_listenbrainz_user_token->setText(listenbrainzscrobbler_->user_token());
ListenBrainz_RefreshControls(listenbrainzscrobbler_->IsAuthenticated());
ListenBrainz_RefreshControls(listenbrainzscrobbler_->authenticated());
Init(ui_->layout_scrobblersettingspage->parentWidget());

View File

@@ -20,11 +20,15 @@
#ifndef SCROBBLERSETTINGSPAGE_H
#define SCROBBLERSETTINGSPAGE_H
#include <memory>
#include "settingspage.h"
#include <QObject>
#include <QString>
#include "core/shared_ptr.h"
class SettingsDialog;
class Ui_ScrobblerSettingsPage;
class AudioScrobbler;
@@ -56,10 +60,10 @@ class ScrobblerSettingsPage : public SettingsPage {
void ListenBrainz_AuthenticationComplete(const bool success, const QString &error = QString());
private:
AudioScrobbler *scrobbler_;
LastFMScrobbler *lastfmscrobbler_;
LibreFMScrobbler *librefmscrobbler_;
ListenBrainzScrobbler *listenbrainzscrobbler_;
SharedPtr<AudioScrobbler> scrobbler_;
SharedPtr<LastFMScrobbler> lastfmscrobbler_;
SharedPtr<LibreFMScrobbler> librefmscrobbler_;
SharedPtr<ListenBrainzScrobbler> listenbrainzscrobbler_;
Ui_ScrobblerSettingsPage *ui_;
bool lastfm_waiting_for_auth_;

View File

@@ -34,6 +34,7 @@
#include <QString>
#include <QSettings>
#include "core/shared_ptr.h"
#include "engine/enginebase.h"
#include "osd/osdbase.h"
@@ -104,8 +105,8 @@ class SettingsDialog : public QDialog {
Application *app() const { return app_; }
OSDBase *osd() const { return osd_; }
Player *player() const { return player_; }
EngineBase *engine() const { return engine_; }
SharedPtr<Player> player() const { return player_; }
SharedPtr<EngineBase> engine() const { return engine_; }
CollectionDirectoryModel *collection_directory_model() const { return model_; }
GlobalShortcutsManager *global_shortcuts_manager() const { return manager_; }
@@ -150,8 +151,8 @@ class SettingsDialog : public QDialog {
QMainWindow *mainwindow_;
Application *app_;
OSDBase *osd_;
Player *player_;
EngineBase *engine_;
SharedPtr<Player> player_;
SharedPtr<EngineBase> engine_;
CollectionDirectoryModel *model_;
GlobalShortcutsManager *manager_;

View File

@@ -50,12 +50,12 @@ SubsonicSettingsPage::SubsonicSettingsPage(SettingsDialog *dialog, QWidget *pare
setWindowIcon(IconLoader::Load("subsonic", true, 0, 32));
QObject::connect(ui_->button_test, &QPushButton::clicked, this, &SubsonicSettingsPage::TestClicked);
QObject::connect(ui_->button_deletesongs, &QPushButton::clicked, service_, &SubsonicService::DeleteSongs);
QObject::connect(ui_->button_deletesongs, &QPushButton::clicked, &*service_, &SubsonicService::DeleteSongs);
QObject::connect(this, &SubsonicSettingsPage::Test, service_, &SubsonicService::SendPingWithCredentials);
QObject::connect(this, &SubsonicSettingsPage::Test, &*service_, &SubsonicService::SendPingWithCredentials);
QObject::connect(service_, &SubsonicService::TestFailure, this, &SubsonicSettingsPage::TestFailure);
QObject::connect(service_, &SubsonicService::TestSuccess, this, &SubsonicSettingsPage::TestSuccess);
QObject::connect(&*service_, &SubsonicService::TestFailure, this, &SubsonicSettingsPage::TestFailure);
QObject::connect(&*service_, &SubsonicService::TestSuccess, this, &SubsonicSettingsPage::TestSuccess);
dialog->installEventFilter(this);

View File

@@ -26,6 +26,7 @@
#include <QString>
#include <QUrl>
#include "core/shared_ptr.h"
#include "settings/settingspage.h"
class QEvent;
@@ -62,7 +63,7 @@ class SubsonicSettingsPage : public SettingsPage {
private:
Ui_SubsonicSettingsPage *ui_;
SubsonicService *service_;
SharedPtr<SubsonicService> service_;
};
#endif // SUBSONICSETTINGSPAGE_H

View File

@@ -54,11 +54,11 @@ TidalSettingsPage::TidalSettingsPage(SettingsDialog *dialog, QWidget *parent)
QObject::connect(ui_->login_state, &LoginStateWidget::LogoutClicked, this, &TidalSettingsPage::LogoutClicked);
QObject::connect(ui_->oauth, &QCheckBox::toggled, this, &TidalSettingsPage::OAuthClicked);
QObject::connect(this, &TidalSettingsPage::Authorize, service_, &TidalService::StartAuthorization);
QObject::connect(this, &TidalSettingsPage::Login, service_, &TidalService::SendLoginWithCredentials);
QObject::connect(this, &TidalSettingsPage::Authorize, &*service_, &TidalService::StartAuthorization);
QObject::connect(this, &TidalSettingsPage::Login, &*service_, &TidalService::SendLoginWithCredentials);
QObject::connect(service_, &InternetService::LoginFailure, this, &TidalSettingsPage::LoginFailure);
QObject::connect(service_, &InternetService::LoginSuccess, this, &TidalSettingsPage::LoginSuccess);
QObject::connect(&*service_, &InternetService::LoginFailure, this, &TidalSettingsPage::LoginFailure);
QObject::connect(&*service_, &InternetService::LoginSuccess, this, &TidalSettingsPage::LoginSuccess);
dialog->installEventFilter(this);

View File

@@ -25,6 +25,7 @@
#include <QObject>
#include <QString>
#include "core/shared_ptr.h"
#include "settings/settingspage.h"
class QEvent;
@@ -65,7 +66,7 @@ class TidalSettingsPage : public SettingsPage {
private:
Ui_TidalSettingsPage *ui_;
TidalService *service_;
SharedPtr<TidalService> service_;
};
#endif // TIDALSETTINGSPAGE_H