From 7598054ced80159ad8a6823bc03004ea5dadf4cc Mon Sep 17 00:00:00 2001 From: Christian Kr Date: Sun, 22 Sep 2024 11:19:41 +0200 Subject: [PATCH 1/5] Remove left line of player control container --- src/core/mainwindow.ui | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/core/mainwindow.ui b/src/core/mainwindow.ui index 345af71afc..5323bb6536 100644 --- a/src/core/mainwindow.ui +++ b/src/core/mainwindow.ui @@ -74,13 +74,6 @@ 0 - - - - Qt::Orientation::Vertical - - - @@ -463,7 +456,7 @@ 0 0 1131 - 23 + 30 @@ -508,7 +501,7 @@ - Help + Hel&p @@ -539,7 +532,7 @@ - Previous track + P&revious track F5 @@ -596,7 +589,7 @@ false - Love + &Love Ctrl+L @@ -762,7 +755,7 @@ - &Save all playlists... + Sa&ve all playlists... @@ -806,7 +799,7 @@ - Stop collection scan + Sto&p collection scan Stop collection scan @@ -851,7 +844,7 @@ - Add stream... + Add str&eam... @@ -859,12 +852,12 @@ true - Show sidebar + Sho&w sidebar - Import data from last.fm... + &Import data from last.fm... From 5f0144feef9815136eea0714ba8a337f750b8a35 Mon Sep 17 00:00:00 2001 From: Christian Kr Date: Sun, 22 Sep 2024 12:13:53 +0200 Subject: [PATCH 2/5] Make player controls position changeable from bottom to top --- src/core/mainwindow.cpp | 37 +++ src/core/mainwindow.h | 9 + src/core/mainwindow.ui | 702 ++++++++++++++++++++-------------------- 3 files changed, 397 insertions(+), 351 deletions(-) diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index f2a6bc6b85..23ab75f141 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -954,6 +954,12 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS // Reload playlist settings, for BG and glowing ui_->playlist->view()->ReloadSettings(); + // Initialize the player controls position. + PlayerControlsPosition default_position = PlayerControlsPosition::Bottom; + PlayerControlsPosition player_controls_position = static_cast(settings_.value("player_controls_position", static_cast(default_position)).toInt()); + if (player_controls_position == PlayerControlsPosition::None) player_controls_position = default_position; + SetPlayerControlsPosition(player_controls_position); + #ifdef Q_OS_MACOS // Always show the mainwindow on startup for macOS show(); #else @@ -1285,6 +1291,7 @@ void MainWindow::SaveSettings() { settings_.setValue("show_sidebar", ui_->action_toggle_show_sidebar->isChecked()); settings_.setValue("search_for_cover_auto", album_cover_choice_controller_->search_cover_auto_action()->isChecked()); + settings_.setValue("player_controls_position", static_cast(player_controls_position_)); } @@ -3017,6 +3024,36 @@ void MainWindow::AutoCompleteTags() { } +void MainWindow::SetPlayerControlsPosition(const PlayerControlsPosition position) { + if (position == PlayerControlsPosition::None) { + return; + } + + const PlayerControlsPosition previous_position = player_controls_position_; + player_controls_position_ = position; + + if (player_controls_position_ == previous_position) { + return; + } + else { + // Remove player controls and line for reordering. + ui_->layout_right->removeWidget(ui_->line_playlist_sep); + ui_->layout_right->removeItem(ui_->layout_player_controls_container); + ui_->layout_right->removeWidget(ui_->playlist); + } + + if (player_controls_position_ == PlayerControlsPosition::Bottom) { + ui_->layout_right->insertWidget(0, ui_->playlist); + ui_->layout_right->insertWidget(1, ui_->line_playlist_sep); + ui_->layout_right->insertLayout(2, ui_->layout_player_controls_container); + } + else { + ui_->layout_right->insertLayout(0, ui_->layout_player_controls_container); + ui_->layout_right->insertWidget(1, ui_->line_playlist_sep); + ui_->layout_right->insertWidget(2, ui_->playlist); + } +} + void MainWindow::AutoCompleteTagsAccepted() { for (PlaylistItemPtr item : std::as_const(autocomplete_tag_items_)) { diff --git a/src/core/mainwindow.h b/src/core/mainwindow.h index 03bea14b7e..ec55bf90c6 100644 --- a/src/core/mainwindow.h +++ b/src/core/mainwindow.h @@ -112,6 +112,12 @@ class MainWindow : public QMainWindow, public PlatformInterface { static const char *kSettingsGroup; static const char *kAllFilesFilterSpec; + enum class PlayerControlsPosition { + None = 0, + Top, + Bottom, + }; + void SetHiddenInTray(const bool hidden); void CommandlineOptionsReceived(const CommandlineOptions &options); @@ -270,6 +276,7 @@ class MainWindow : public QMainWindow, public PlatformInterface { public Q_SLOTS: void CommandlineOptionsReceived(const QByteArray &string_options); void Raise(); + void SetPlayerControlsPosition(const PlayerControlsPosition position); private: @@ -406,6 +413,8 @@ class MainWindow : public QMainWindow, public PlatformInterface { bool delete_files_; bool ignore_close_; + PlayerControlsPosition player_controls_position_; + }; #endif // MAINWINDOW_H diff --git a/src/core/mainwindow.ui b/src/core/mainwindow.ui index 5323bb6536..22e3fb8dfa 100644 --- a/src/core/mainwindow.ui +++ b/src/core/mainwindow.ui @@ -70,379 +70,379 @@ - - - 0 + + + Qt::Orientation::Horizontal - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::Shape::NoFrame - - - - QFrame::Shape::NoFrame - - - - 1 + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + MenuPopupToolButton - - 0 + + + 32 + 32 + - - 0 + + true - - 0 + + + + + + MenuPopupToolButton - - 0 + + + 32 + 32 + - - - - MenuPopupToolButton - - - - 32 - 32 - - - - true - - - - - - - MenuPopupToolButton - - - - 32 - 32 - - - - true - - - - - - - false - - - MenuPopupToolButton - - - - 32 - 32 - - - - QToolButton::ToolButtonPopupMode::MenuButtonPopup - - - true - - - - - - - MenuPopupToolButton - - - - 32 - 32 - - - - true - - - - - - - - 1 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Orientation::Vertical - - - - - - - MenuPopupToolButton - - - - 32 - 32 - - - - true - - - - - - - - - - Qt::Orientation::Vertical - - - - - - - - 100 - 0 - - - - - 0 - 36 - - - - - - - - Qt::Orientation::Horizontal - - - QSizePolicy::Policy::Expanding - - - - 0 - 0 - - - - - - - - Qt::Orientation::Vertical - - - - - - - - 0 - 0 - - - - 100 - - - Qt::Orientation::Horizontal - - - - - - - - - - - 0 - 0 - - - - - 0 + + true + + + + + + + false + + + MenuPopupToolButton + + + + 32 + 32 + + + + QToolButton::ToolButtonPopupMode::MenuButtonPopup - - 0 + + true - - 0 + + + + + + MenuPopupToolButton - - 0 + + + 32 + 32 + - - 0 + + true - - - - Qt::Orientation::Horizontal - - - - - - - - 0 - 0 - - - - - 3 + + + + + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Orientation::Vertical - - 0 + + + + + + MenuPopupToolButton - - 0 + + + 32 + 32 + - - 0 + + true - - 0 + + + + + + + + + Qt::Orientation::Vertical + + + + + + + + 100 + 0 + + + + + 0 + 36 + + + + + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Expanding + + + + 0 + 0 + + + + + + + + Qt::Orientation::Vertical + + + + + + + + 0 + 0 + + + + 100 + + + Qt::Orientation::Horizontal + + + + + + + + + + + 0 + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Orientation::Horizontal + + + + + + + + 0 + 0 + + + + + 3 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 - - - - 1 - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - - - - - - - - - - Qt::Orientation::Vertical + + + + + 0 - - - - - - - - - Qt::Orientation::Vertical + + 0 - - - - - - true + + 0 - - - 0 - 0 - + + 0 - - + + 0 - - - 16 - 16 - - - - true - - - - - - - - 10 - 0 - - - - - - - - - - - - - - + + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + + + + + + + + + Qt::Orientation::Vertical + + + + + + + + + + Qt::Orientation::Vertical + + + + + + + true + + + + 0 + 0 + + + + + + + + 16 + 16 + + + + true + + + + + + + + 10 + 0 + + + + + + + + + + + + From 1a11b6756ab170e0d9a4e546976d86a16d1ff94e Mon Sep 17 00:00:00 2001 From: Christian Kr Date: Sun, 22 Sep 2024 12:57:03 +0200 Subject: [PATCH 3/5] Make position of player controls part of appearance settings --- src/core/mainwindow.cpp | 13 +++--- src/settings/appearancesettingspage.cpp | 11 +++++ src/settings/appearancesettingspage.h | 2 + src/settings/appearancesettingspage.ui | 55 +++++++++++++++++++++++-- src/translations/translations.pot | 9 ++++ 5 files changed, 79 insertions(+), 11 deletions(-) diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index 23ab75f141..4a16c842ab 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -954,12 +954,6 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS // Reload playlist settings, for BG and glowing ui_->playlist->view()->ReloadSettings(); - // Initialize the player controls position. - PlayerControlsPosition default_position = PlayerControlsPosition::Bottom; - PlayerControlsPosition player_controls_position = static_cast(settings_.value("player_controls_position", static_cast(default_position)).toInt()); - if (player_controls_position == PlayerControlsPosition::None) player_controls_position = default_position; - SetPlayerControlsPosition(player_controls_position); - #ifdef Q_OS_MACOS // Always show the mainwindow on startup for macOS show(); #else @@ -1141,6 +1135,12 @@ void MainWindow::ReloadSettings() { s.beginGroup(AppearanceSettingsPage::kSettingsGroup); int iconsize = s.value(AppearanceSettingsPage::kIconSizePlayControlButtons, 32).toInt(); + + // Initialize the player controls position. + PlayerControlsPosition default_position = PlayerControlsPosition::Bottom; + PlayerControlsPosition player_controls_position = static_cast(s.value(AppearanceSettingsPage::kPlayerControlsPosition, static_cast(default_position)).toInt()); + if (player_controls_position == PlayerControlsPosition::None) player_controls_position = default_position; + SetPlayerControlsPosition(player_controls_position); s.endGroup(); tray_icon_->SetTrayiconProgress(trayicon_progress); @@ -1291,7 +1291,6 @@ void MainWindow::SaveSettings() { settings_.setValue("show_sidebar", ui_->action_toggle_show_sidebar->isChecked()); settings_.setValue("search_for_cover_auto", album_cover_choice_controller_->search_cover_auto_action()->isChecked()); - settings_.setValue("player_controls_position", static_cast(player_controls_position_)); } diff --git a/src/settings/appearancesettingspage.cpp b/src/settings/appearancesettingspage.cpp index a3e7793fdd..d449e6c94c 100644 --- a/src/settings/appearancesettingspage.cpp +++ b/src/settings/appearancesettingspage.cpp @@ -52,6 +52,8 @@ #include "settingsdialog.h" #include "ui_appearancesettingspage.h" +#include + const char *AppearanceSettingsPage::kSettingsGroup = "Appearance"; const char *AppearanceSettingsPage::kStyle = "style"; @@ -84,6 +86,8 @@ const char *AppearanceSettingsPage::kIconSizeConfigureButtons = "icon_size_confi const char *AppearanceSettingsPage::kPlaylistPlayingSongColor = "playlist_playing_song_color"; +const char *AppearanceSettingsPage::kPlayerControlsPosition = "player_controls_position"; + AppearanceSettingsPage::AppearanceSettingsPage(SettingsDialog *dialog, QWidget *parent) : SettingsPage(dialog, parent), ui_(new Ui_AppearanceSettingsPage), @@ -104,6 +108,9 @@ AppearanceSettingsPage::AppearanceSettingsPage(SettingsDialog *dialog, QWidget * ui_->combobox_backgroundimageposition->setItemData(3, static_cast(BackgroundImagePosition::BottomLeft)); ui_->combobox_backgroundimageposition->setItemData(4, static_cast(BackgroundImagePosition::BottomRight)); + ui_->comboBox_player_controls_position->setItemData(0, static_cast(MainWindow::PlayerControlsPosition::Bottom)); + ui_->comboBox_player_controls_position->setItemData(1, static_cast(MainWindow::PlayerControlsPosition::Top)); + QObject::connect(ui_->blur_slider, &QSlider::valueChanged, this, &AppearanceSettingsPage::BlurLevelChanged); QObject::connect(ui_->opacity_slider, &QSlider::valueChanged, this, &AppearanceSettingsPage::OpacityLevelChanged); @@ -215,6 +222,8 @@ void AppearanceSettingsPage::Load() { UpdateColorSelectorColor(ui_->select_playlist_playing_song_color, current_playlist_playing_song_color_); PlaylistPlayingSongColorSystem(ui_->playlist_playing_song_color_system->isChecked()); + ui_->comboBox_player_controls_position->setCurrentIndex(ui_->comboBox_player_controls_position->findData(s.value(kPlayerControlsPosition, static_cast(MainWindow::PlayerControlsPosition::Bottom)).toInt())); + s.endGroup(); Init(ui_->layout_appearancesettingspage->parentWidget()); @@ -288,6 +297,8 @@ void AppearanceSettingsPage::Save() { s.setValue(kPlaylistPlayingSongColor, current_playlist_playing_song_color_); } + s.setValue(kPlayerControlsPosition, ui_->comboBox_player_controls_position->currentData().toInt()); + s.endGroup(); } diff --git a/src/settings/appearancesettingspage.h b/src/settings/appearancesettingspage.h index eca26c0be0..2deed6aae5 100644 --- a/src/settings/appearancesettingspage.h +++ b/src/settings/appearancesettingspage.h @@ -75,6 +75,8 @@ class AppearanceSettingsPage : public SettingsPage { static const char *kPlaylistPlayingSongColor; + static const char *kPlayerControlsPosition; + enum class BackgroundImageType { Default, None, diff --git a/src/settings/appearancesettingspage.ui b/src/settings/appearancesettingspage.ui index 7670e07de2..1e8c95ab00 100644 --- a/src/settings/appearancesettingspage.ui +++ b/src/settings/appearancesettingspage.ui @@ -144,14 +144,14 @@ The album cover of the currently playing song - Albu&m cover + A&lbum cover - A Taste of Strawbs + A &Taste of Strawbs @@ -160,7 +160,7 @@ - Custom image: + &Custom image: @@ -553,7 +553,7 @@ - System highlight color + System hi&ghlight color @@ -585,6 +585,53 @@ + + + + Player controls + + + + + + + + Position + + + + + + + + Bottom + + + + + Top + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + diff --git a/src/translations/translations.pot b/src/translations/translations.pot index 9f6e59270b..60c84dd77e 100644 --- a/src/translations/translations.pot +++ b/src/translations/translations.pot @@ -3696,6 +3696,15 @@ msgstr "" msgid "Select playlist playing song color:" msgstr "" +msgid "Player controls" +msgstr "" + +msgid "Bottom" +msgstr "" + +msgid "Top" +msgstr "" + msgid "Notifications" msgstr "" From 50dd034a78f03b8be2ea92ba7d12580856262d80 Mon Sep 17 00:00:00 2001 From: Christian Kr Date: Sun, 22 Sep 2024 13:04:32 +0200 Subject: [PATCH 4/5] Revert unwanted changes --- src/settings/appearancesettingspage.ui | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/settings/appearancesettingspage.ui b/src/settings/appearancesettingspage.ui index 1e8c95ab00..58a17f058e 100644 --- a/src/settings/appearancesettingspage.ui +++ b/src/settings/appearancesettingspage.ui @@ -144,14 +144,14 @@ The album cover of the currently playing song - A&lbum cover + Albu&m cover - A &Taste of Strawbs + A Taste of Strawbs @@ -160,7 +160,7 @@ - &Custom image: + Custom image: @@ -553,7 +553,7 @@ - System hi&ghlight color + System highlight color From e1723e6925acd717e4755de32494fda03effcce4 Mon Sep 17 00:00:00 2001 From: Christian Kr Date: Sun, 22 Sep 2024 13:19:20 +0200 Subject: [PATCH 5/5] Revert unwanted changes --- src/core/mainwindow.ui | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/core/mainwindow.ui b/src/core/mainwindow.ui index 22e3fb8dfa..33bd7a30cb 100644 --- a/src/core/mainwindow.ui +++ b/src/core/mainwindow.ui @@ -456,7 +456,7 @@ 0 0 1131 - 30 + 23 @@ -501,7 +501,7 @@ - Hel&p + Help @@ -532,7 +532,7 @@ - P&revious track + Previous track F5 @@ -589,7 +589,7 @@ false - &Love + Love Ctrl+L @@ -755,7 +755,7 @@ - Sa&ve all playlists... + &Save all playlists... @@ -799,7 +799,7 @@ - Sto&p collection scan + Stop collection scan Stop collection scan @@ -844,7 +844,7 @@ - Add str&eam... + Add stream... @@ -852,12 +852,12 @@ true - Sho&w sidebar + Show sidebar - &Import data from last.fm... + Import data from last.fm...