diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index 6127cef96..8ce8f4bb4 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -58,7 +58,6 @@ #include #include #include -#include #include #include #include @@ -977,27 +976,28 @@ MainWindow::MainWindow(Application *app, // Load settings qLog(Debug) << "Loading settings"; - settings_.beginGroup(MainWindowSettings::kSettingsGroup); + Settings settings; + settings.beginGroup(MainWindowSettings::kSettingsGroup); // Set last used geometry to position window on the correct monitor // Set window state only if the window was last maximized - if (settings_.contains("geometry")) { - restoreGeometry(settings_.value("geometry").toByteArray()); + if (settings.contains("geometry")) { + restoreGeometry(settings.value("geometry").toByteArray()); } - if (!settings_.contains(MainWindowSettings::kSplitterState) || !ui_->splitter->restoreState(settings_.value(MainWindowSettings::kSplitterState).toByteArray())) { + if (!settings.contains(MainWindowSettings::kSplitterState) || !ui_->splitter->restoreState(settings.value(MainWindowSettings::kSplitterState).toByteArray())) { ui_->splitter->setSizes(QList() << 20 << (width() - 20)); } - ui_->tabs->setCurrentIndex(settings_.value("current_tab", 1).toInt()); + ui_->tabs->setCurrentIndex(settings.value("current_tab", 1).toInt()); FancyTabWidget::Mode default_mode = FancyTabWidget::Mode::LargeSidebar; - FancyTabWidget::Mode tab_mode = static_cast(settings_.value("tab_mode", static_cast(default_mode)).toInt()); + FancyTabWidget::Mode tab_mode = static_cast(settings.value("tab_mode", static_cast(default_mode)).toInt()); if (tab_mode == FancyTabWidget::Mode::None) tab_mode = default_mode; ui_->tabs->SetMode(tab_mode); TabSwitched(); - file_view_->SetPath(settings_.value("file_path", QDir::homePath()).toString()); + file_view_->SetPath(settings.value("file_path", QDir::homePath()).toString()); // Users often collapse one side of the splitter by mistake and don't know how to restore it. This must be set after the state is restored above. ui_->splitter->setChildrenCollapsible(false); @@ -1040,13 +1040,13 @@ MainWindow::MainWindow(Application *app, case BehaviourSettings::StartupBehaviour::Remember: default:{ - was_maximized_ = settings_.value(MainWindowSettings::kMaximized, true).toBool(); + was_maximized_ = settings.value(MainWindowSettings::kMaximized, true).toBool(); if (was_maximized_) setWindowState(windowState() | Qt::WindowMaximized); - was_minimized_ = settings_.value(MainWindowSettings::kMinimized, false).toBool(); + was_minimized_ = settings.value(MainWindowSettings::kMinimized, false).toBool(); if (was_minimized_) setWindowState(windowState() | Qt::WindowMinimized); - if (!systemtrayicon_->IsSystemTrayAvailable() || !systemtrayicon_->isVisible() || !settings_.value(MainWindowSettings::kHidden, false).toBool()) { + if (!systemtrayicon_->IsSystemTrayAvailable() || !systemtrayicon_->isVisible() || !settings.value(MainWindowSettings::kHidden, false).toBool()) { show(); } break; @@ -1054,7 +1054,7 @@ MainWindow::MainWindow(Application *app, } #endif - bool show_sidebar = settings_.value(MainWindowSettings::kShowSidebar, true).toBool(); + bool show_sidebar = settings.value(MainWindowSettings::kShowSidebar, true).toBool(); ui_->sidebar_layout->setVisible(show_sidebar); ui_->action_toggle_show_sidebar->setChecked(show_sidebar); @@ -1225,7 +1225,9 @@ void MainWindow::ReloadSettings() { osd_->ReloadSettings(); - album_cover_choice_controller_->search_cover_auto_action()->setChecked(settings_.value(MainWindowSettings::kSearchForCoverAuto, true).toBool()); + s.beginGroup(MainWindowSettings::kSettingsGroup); + album_cover_choice_controller_->search_cover_auto_action()->setChecked(s.value(MainWindowSettings::kSearchForCoverAuto, true).toBool()); + s.endGroup(); #ifdef HAVE_SUBSONIC s.beginGroup(SubsonicSettings::kSettingsGroup); @@ -1342,8 +1344,11 @@ void MainWindow::SaveSettings() { ui_->playlist->view()->SaveSettings(); app_->scrobbler()->WriteCache(); - settings_.setValue(MainWindowSettings::kShowSidebar, ui_->action_toggle_show_sidebar->isChecked()); - settings_.setValue(MainWindowSettings::kSearchForCoverAuto, album_cover_choice_controller_->search_cover_auto_action()->isChecked()); + Settings s; + s.beginGroup(MainWindowSettings::kSettingsGroup); + s.setValue(MainWindowSettings::kShowSidebar, ui_->action_toggle_show_sidebar->isChecked()); + s.setValue(MainWindowSettings::kSearchForCoverAuto, album_cover_choice_controller_->search_cover_auto_action()->isChecked()); + s.endGroup(); } @@ -1584,23 +1589,35 @@ void MainWindow::ToggleSidebar(const bool checked) { ui_->sidebar_layout->setVisible(checked); TabSwitched(); - settings_.setValue(MainWindowSettings::kShowSidebar, checked); + + Settings s; + s.beginGroup(MainWindowSettings::kSettingsGroup); + s.setValue(MainWindowSettings::kShowSidebar, checked); + s.endGroup(); } void MainWindow::ToggleSearchCoverAuto(const bool checked) { - settings_.setValue(MainWindowSettings::kSearchForCoverAuto, checked); + + Settings s; + s.beginGroup(MainWindowSettings::kSettingsGroup); + s.setValue(MainWindowSettings::kSearchForCoverAuto, checked); + s.endGroup(); + } void MainWindow::SaveGeometry() { if (!initialized_) return; - settings_.setValue(MainWindowSettings::kMaximized, isMaximized()); - settings_.setValue(MainWindowSettings::kMinimized, isMinimized()); - settings_.setValue(MainWindowSettings::kHidden, isHidden()); - settings_.setValue(MainWindowSettings::kGeometry, saveGeometry()); - settings_.setValue(MainWindowSettings::kSplitterState, ui_->splitter->saveState()); + Settings s; + s.beginGroup(MainWindowSettings::kSettingsGroup); + s.setValue(MainWindowSettings::kMaximized, isMaximized()); + s.setValue(MainWindowSettings::kMinimized, isMinimized()); + s.setValue(MainWindowSettings::kHidden, isHidden()); + s.setValue(MainWindowSettings::kGeometry, saveGeometry()); + s.setValue(MainWindowSettings::kSplitterState, ui_->splitter->saveState()); + s.endGroup(); } @@ -1742,7 +1759,12 @@ void MainWindow::SetHiddenInTray(const bool hidden) { } void MainWindow::FilePathChanged(const QString &path) { - settings_.setValue("file_path", path); + + Settings s; + s.beginGroup(MainWindowSettings::kSettingsGroup); + s.setValue("file_path", path); + s.endGroup(); + } void MainWindow::Seeked(const qint64 microseconds) { @@ -2324,7 +2346,9 @@ void MainWindow::EditValue() { void MainWindow::AddFile() { // Last used directory - QString directory = settings_.value("add_media_path", QDir::currentPath()).toString(); + Settings s; + s.beginGroup(MainWindowSettings::kSettingsGroup); + QString directory = s.value("add_media_path", QDir::currentPath()).toString(); PlaylistParser parser(app_->tagreader_client(), app_->collection_backend()); @@ -2334,7 +2358,7 @@ void MainWindow::AddFile() { if (filenames.isEmpty()) return; // Save last used directory - settings_.setValue("add_media_path", filenames[0]); + s.setValue("add_media_path", filenames[0]); // Convert to URLs QList urls; @@ -2352,14 +2376,16 @@ void MainWindow::AddFile() { void MainWindow::AddFolder() { // Last used directory - QString directory = settings_.value("add_folder_path", QDir::currentPath()).toString(); + Settings s; + s.beginGroup(MainWindowSettings::kSettingsGroup); + QString directory = s.value("add_folder_path", QDir::currentPath()).toString(); // Show dialog directory = QFileDialog::getExistingDirectory(this, tr("Add folder"), directory); if (directory.isEmpty()) return; // Save last used directory - settings_.setValue("add_folder_path", directory); + s.setValue("add_folder_path", directory); // Add media MimeData *mimedata = new MimeData; diff --git a/src/core/mainwindow.h b/src/core/mainwindow.h index dd295ebac..ed4fd85d2 100644 --- a/src/core/mainwindow.h +++ b/src/core/mainwindow.h @@ -45,7 +45,6 @@ #include #include #include -#include #include #include "includes/scoped_ptr.h" @@ -53,7 +52,6 @@ #include "includes/lazy.h" #include "core/platforminterface.h" #include "core/song.h" -#include "core/settings.h" #include "core/commandlineoptions.h" #include "tagreader/tagreaderclient.h" #include "osd/osdbase.h" @@ -390,7 +388,6 @@ class MainWindow : public QMainWindow, public PlatformInterface { QTimer *track_position_timer_; QTimer *track_slider_timer_; - Settings settings_; bool keep_running_; bool playing_widget_; diff --git a/src/globalshortcuts/globalshortcutsmanager.cpp b/src/globalshortcuts/globalshortcutsmanager.cpp index 22a66d929..e62f0c18c 100644 --- a/src/globalshortcuts/globalshortcutsmanager.cpp +++ b/src/globalshortcuts/globalshortcutsmanager.cpp @@ -32,6 +32,7 @@ #include #include "core/logging.h" +#include "core/settings.h" #include "globalshortcutsmanager.h" #include "globalshortcutsbackend.h" @@ -58,29 +59,32 @@ using namespace Qt::Literals::StringLiterals; GlobalShortcutsManager::GlobalShortcutsManager(QWidget *parent) : QWidget(parent) { - settings_.beginGroup(GlobalShortcutsSettings::kSettingsGroup); + Settings s; + s.beginGroup(GlobalShortcutsSettings::kSettingsGroup); // Create actions - AddShortcut(u"play"_s, tr("Play"), std::bind(&GlobalShortcutsManager::Play, this)); - AddShortcut(u"pause"_s, tr("Pause"), std::bind(&GlobalShortcutsManager::Pause, this)); - AddShortcut(u"play_pause"_s, tr("Play/Pause"), std::bind(&GlobalShortcutsManager::PlayPause, this), QKeySequence(Qt::Key_MediaPlay)); - AddShortcut(u"stop"_s, tr("Stop"), std::bind(&GlobalShortcutsManager::Stop, this), QKeySequence(Qt::Key_MediaStop)); - AddShortcut(u"stop_after"_s, tr("Stop playing after current track"), std::bind(&GlobalShortcutsManager::StopAfter, this)); - AddShortcut(u"next_track"_s, tr("Next track"), std::bind(&GlobalShortcutsManager::Next, this), QKeySequence(Qt::Key_MediaNext)); - AddShortcut(u"prev_track"_s, tr("Previous track"), std::bind(&GlobalShortcutsManager::Previous, this), QKeySequence(Qt::Key_MediaPrevious)); - AddShortcut(u"restart_or_prev_track"_s, tr("Restart or previous track"), std::bind(&GlobalShortcutsManager::RestartOrPrevious, this)); - AddShortcut(u"inc_volume"_s, tr("Increase volume"), std::bind(&GlobalShortcutsManager::IncVolume, this)); - AddShortcut(u"dec_volume"_s, tr("Decrease volume"), std::bind(&GlobalShortcutsManager::DecVolume, this)); - AddShortcut(u"mute"_s, tr("Mute"), std::bind(&GlobalShortcutsManager::Mute, this)); - AddShortcut(u"seek_forward"_s, tr("Seek forward"), std::bind(&GlobalShortcutsManager::SeekForward, this)); - AddShortcut(u"seek_backward"_s, tr("Seek backward"), std::bind(&GlobalShortcutsManager::SeekBackward, this)); - AddShortcut(u"show_hide"_s, tr("Show/Hide"), std::bind(&GlobalShortcutsManager::ShowHide, this)); - AddShortcut(u"show_osd"_s, tr("Show OSD"), std::bind(&GlobalShortcutsManager::ShowOSD, this)); - AddShortcut(u"toggle_pretty_osd"_s, tr("Toggle Pretty OSD"), std::bind(&GlobalShortcutsManager::TogglePrettyOSD, this)); // Toggling possible only for pretty OSD - AddShortcut(u"shuffle_mode"_s, tr("Change shuffle mode"), std::bind(&GlobalShortcutsManager::CycleShuffleMode, this)); - AddShortcut(u"repeat_mode"_s, tr("Change repeat mode"), std::bind(&GlobalShortcutsManager::CycleRepeatMode, this)); - AddShortcut(u"toggle_scrobbling"_s, tr("Enable/disable scrobbling"), std::bind(&GlobalShortcutsManager::ToggleScrobbling, this)); - AddShortcut(u"love"_s, tr("Love"), std::bind(&GlobalShortcutsManager::Love, this)); + AddShortcut(s, u"play"_s, tr("Play"), std::bind(&GlobalShortcutsManager::Play, this)); + AddShortcut(s, u"pause"_s, tr("Pause"), std::bind(&GlobalShortcutsManager::Pause, this)); + AddShortcut(s, u"play_pause"_s, tr("Play/Pause"), std::bind(&GlobalShortcutsManager::PlayPause, this), QKeySequence(Qt::Key_MediaPlay)); + AddShortcut(s, u"stop"_s, tr("Stop"), std::bind(&GlobalShortcutsManager::Stop, this), QKeySequence(Qt::Key_MediaStop)); + AddShortcut(s, u"stop_after"_s, tr("Stop playing after current track"), std::bind(&GlobalShortcutsManager::StopAfter, this)); + AddShortcut(s, u"next_track"_s, tr("Next track"), std::bind(&GlobalShortcutsManager::Next, this), QKeySequence(Qt::Key_MediaNext)); + AddShortcut(s, u"prev_track"_s, tr("Previous track"), std::bind(&GlobalShortcutsManager::Previous, this), QKeySequence(Qt::Key_MediaPrevious)); + AddShortcut(s, u"restart_or_prev_track"_s, tr("Restart or previous track"), std::bind(&GlobalShortcutsManager::RestartOrPrevious, this)); + AddShortcut(s, u"inc_volume"_s, tr("Increase volume"), std::bind(&GlobalShortcutsManager::IncVolume, this)); + AddShortcut(s, u"dec_volume"_s, tr("Decrease volume"), std::bind(&GlobalShortcutsManager::DecVolume, this)); + AddShortcut(s, u"mute"_s, tr("Mute"), std::bind(&GlobalShortcutsManager::Mute, this)); + AddShortcut(s, u"seek_forward"_s, tr("Seek forward"), std::bind(&GlobalShortcutsManager::SeekForward, this)); + AddShortcut(s, u"seek_backward"_s, tr("Seek backward"), std::bind(&GlobalShortcutsManager::SeekBackward, this)); + AddShortcut(s, u"show_hide"_s, tr("Show/Hide"), std::bind(&GlobalShortcutsManager::ShowHide, this)); + AddShortcut(s, u"show_osd"_s, tr("Show OSD"), std::bind(&GlobalShortcutsManager::ShowOSD, this)); + AddShortcut(s, u"toggle_pretty_osd"_s, tr("Toggle Pretty OSD"), std::bind(&GlobalShortcutsManager::TogglePrettyOSD, this)); // Toggling possible only for pretty OSD + AddShortcut(s, u"shuffle_mode"_s, tr("Change shuffle mode"), std::bind(&GlobalShortcutsManager::CycleShuffleMode, this)); + AddShortcut(s, u"repeat_mode"_s, tr("Change repeat mode"), std::bind(&GlobalShortcutsManager::CycleRepeatMode, this)); + AddShortcut(s, u"toggle_scrobbling"_s, tr("Enable/disable scrobbling"), std::bind(&GlobalShortcutsManager::ToggleScrobbling, this)); + AddShortcut(s, u"love"_s, tr("Love"), std::bind(&GlobalShortcutsManager::Love, this)); + + s.endGroup(); // Create backends - these do the actual shortcut registration @@ -116,35 +120,39 @@ void GlobalShortcutsManager::ReloadSettings() { backends_enabled_ << GlobalShortcutsBackend::Type::Win; #endif + { + Settings s; + s.beginGroup(GlobalShortcutsSettings::kSettingsGroup); #ifdef HAVE_KGLOBALACCEL_GLOBALSHORTCUTS - if (settings_.value(GlobalShortcutsSettings::kUseKGlobalAccel, true).toBool()) { - backends_enabled_ << GlobalShortcutsBackend::Type::KGlobalAccel; - } + if (s.value(GlobalShortcutsSettings::kUseKGlobalAccel, true).toBool()) { + backends_enabled_ << GlobalShortcutsBackend::Type::KGlobalAccel; + } #endif - #ifdef HAVE_X11_GLOBALSHORTCUTS - if (settings_.value(GlobalShortcutsSettings::kUseX11, false).toBool()) { - backends_enabled_ << GlobalShortcutsBackend::Type::X11; - } + if (s.value(GlobalShortcutsSettings::kUseX11, false).toBool()) { + backends_enabled_ << GlobalShortcutsBackend::Type::X11; + } #endif + s.endGroup(); + } Unregister(); Register(); } -void GlobalShortcutsManager::AddShortcut(const QString &id, const QString &name, std::function signal, const QKeySequence &default_key) { // clazy:exclude=function-args-by-ref +void GlobalShortcutsManager::AddShortcut(Settings &s, const QString &id, const QString &name, std::function signal, const QKeySequence &default_key) { // clazy:exclude=function-args-by-ref - Shortcut shortcut = AddShortcut(id, name, default_key); + Shortcut shortcut = AddShortcut(s, id, name, default_key); QObject::connect(shortcut.action, &QAction::triggered, this, signal); } -GlobalShortcutsManager::Shortcut GlobalShortcutsManager::AddShortcut(const QString &id, const QString &name, const QKeySequence &default_key) { +GlobalShortcutsManager::Shortcut GlobalShortcutsManager::AddShortcut(Settings &s, const QString &id, const QString &name, const QKeySequence &default_key) { Shortcut shortcut; shortcut.action = new QAction(name, this); - QKeySequence key_sequence = QKeySequence::fromString(settings_.value(id, default_key.toString()).toString()); + QKeySequence key_sequence = QKeySequence::fromString(s.value(id, default_key.toString()).toString()); shortcut.action->setShortcut(key_sequence); shortcut.id = id; shortcut.default_key = default_key; diff --git a/src/globalshortcuts/globalshortcutsmanager.h b/src/globalshortcuts/globalshortcutsmanager.h index 83981fee0..2ad607f29 100644 --- a/src/globalshortcuts/globalshortcutsmanager.h +++ b/src/globalshortcuts/globalshortcutsmanager.h @@ -32,15 +32,14 @@ #include #include #include -#include #include "globalshortcutsbackend.h" -#include "core/settings.h" - class QShortcut; class QAction; +class Settings; + class GlobalShortcutsManager : public QWidget { Q_OBJECT @@ -99,12 +98,11 @@ class GlobalShortcutsManager : public QWidget { void Love(); private: - void AddShortcut(const QString &id, const QString &name, std::function signal, const QKeySequence &default_key = QKeySequence(0)); - Shortcut AddShortcut(const QString &id, const QString &name, const QKeySequence &default_key); + void AddShortcut(Settings &s, const QString &id, const QString &name, std::function signal, const QKeySequence &default_key = QKeySequence(0)); + Shortcut AddShortcut(Settings &s, const QString &id, const QString &name, const QKeySequence &default_key); private: QList backends_; - Settings settings_; QList backends_enabled_; QMap shortcuts_; }; diff --git a/src/playlist/playlistcontainer.cpp b/src/playlist/playlistcontainer.cpp index 57eac237d..f91aae254 100644 --- a/src/playlist/playlistcontainer.cpp +++ b/src/playlist/playlistcontainer.cpp @@ -106,8 +106,6 @@ PlaylistContainer::PlaylistContainer(QWidget *parent) no_matches_font.setBold(true); no_matches_label_->setFont(no_matches_font); - settings_.beginGroup(kSettingsGroup); - // Tab bar ui_->tab_bar->setExpanding(false); ui_->tab_bar->setMovable(true); @@ -257,7 +255,11 @@ void PlaylistContainer::ReloadSettings() { ui_->redo->setIconSize(QSize(iconsize, iconsize)); ui_->search_field->setIconSize(iconsize); - bool playlist_clear = settings_.value("playlist_clear", true).toBool(); + s.beginGroup(kSettingsGroup); + const bool playlist_clear = s.value("playlist_clear", true).toBool(); + const bool show_toolbar = s.value("show_toolbar", true).toBool(); + s.endGroup(); + if (playlist_clear) { ui_->clear->show(); } @@ -265,7 +267,6 @@ void PlaylistContainer::ReloadSettings() { ui_->clear->hide(); } - bool show_toolbar = settings_.value("show_toolbar", true).toBool(); ui_->toolbar->setVisible(show_toolbar); if (!show_toolbar) ui_->search_field->clear(); @@ -308,7 +309,12 @@ void PlaylistContainer::PlaylistAdded(const int id, const QString &name, const b ui_->tab_bar->InsertTab(id, index, name, favorite); // Are we start up, should we select this tab? - if (starting_up_ && settings_.value("current_playlist", 1).toInt() == id) { + Settings s; + s.beginGroup(kSettingsGroup); + const int current_playlist = s.value("current_playlist", 1).toInt(); + s.endGroup(); + + if (starting_up_ && current_playlist == id) { starting_up_ = false; ui_->tab_bar->set_current_id(id); } @@ -347,12 +353,14 @@ void PlaylistContainer::NewPlaylist() { manager_->New(tr("Playlist")); } void PlaylistContainer::LoadPlaylist() { - QString filename = settings_.value("last_load_playlist").toString(); + Settings s; + s.beginGroup(kSettingsGroup); + QString filename = s.value("last_load_playlist").toString(); filename = QFileDialog::getOpenFileName(this, tr("Load playlist"), filename, manager_->parser()->filters(PlaylistParser::Type::Load)); if (filename.isNull()) return; - settings_.setValue("last_load_playlist", filename); + s.setValue("last_load_playlist", filename); manager_->Load(filename); @@ -391,7 +399,10 @@ void PlaylistContainer::Save() { if (starting_up_) return; - settings_.setValue("current_playlist", ui_->tab_bar->current_id()); + Settings s; + s.beginGroup(kSettingsGroup); + s.setValue("current_playlist", ui_->tab_bar->current_id()); + s.endGroup(); } diff --git a/src/playlist/playlistcontainer.h b/src/playlist/playlistcontainer.h index aed857262..bf4c4c787 100644 --- a/src/playlist/playlistcontainer.h +++ b/src/playlist/playlistcontainer.h @@ -28,7 +28,6 @@ #include #include #include -#include class QTimer; class QTimeLine; @@ -45,7 +44,6 @@ class PlaylistView; class Ui_PlaylistContainer; #include "includes/shared_ptr.h" -#include "core/settings.h" class PlaylistContainer : public QWidget { Q_OBJECT @@ -118,7 +116,6 @@ class PlaylistContainer : public QWidget { QAction *redo_; Playlist *playlist_; - Settings settings_; bool starting_up_; bool tab_bar_visible_; diff --git a/src/playlist/playlistview.cpp b/src/playlist/playlistview.cpp index 641a40802..a363af0f1 100644 --- a/src/playlist/playlistview.cpp +++ b/src/playlist/playlistview.cpp @@ -57,7 +57,6 @@ #include #include #include -#include #include #include "includes/qt_blurimage.h"