diff --git a/src/settings/appearancesettingspage.cpp b/src/settings/appearancesettingspage.cpp index 66976f231..b45d61ee7 100644 --- a/src/settings/appearancesettingspage.cpp +++ b/src/settings/appearancesettingspage.cpp @@ -75,6 +75,7 @@ const char *AppearanceSettingsPage::kTabBarSystemColor= "tab_system_color"; const char *AppearanceSettingsPage::kTabBarGradient = "tab_gradient"; const char *AppearanceSettingsPage::kTabBarColor = "tab_color"; +const char *AppearanceSettingsPage::kIconSizeTabbarLargeMode = "icon_size_tabbar_large_mode"; const char *AppearanceSettingsPage::kIconSizePlayControlButtons = "icon_size_play_control_buttons"; const char *AppearanceSettingsPage::kIconSizePlaylistButtons = "icon_size_playlist_buttons"; const char *AppearanceSettingsPage::kIconSizeLeftPanelButtons = "icon_size_left_panel_buttons"; @@ -191,6 +192,7 @@ void AppearanceSettingsPage::Load() { ui_->checkbox_background_image_keep_aspect_ratio->setEnabled(ui_->checkbox_background_image_stretch->isChecked()); ui_->checkbox_background_image_do_not_cut->setEnabled(ui_->checkbox_background_image_stretch->isChecked() && ui_->checkbox_background_image_keep_aspect_ratio->isChecked()); + ui_->spinbox_icon_size_tabbar_large_mode->setValue(s.value(kIconSizeTabbarLargeMode, 32).toInt()); ui_->spinbox_icon_size_play_control_buttons->setValue(s.value(kIconSizePlayControlButtons, 32).toInt()); ui_->spinbox_icon_size_playlist_buttons->setValue(s.value(kIconSizePlaylistButtons, 20).toInt()); ui_->spinbox_icon_size_left_panel_buttons->setValue(s.value(kIconSizeLeftPanelButtons, 22).toInt()); @@ -255,6 +257,7 @@ void AppearanceSettingsPage::Save() { s.setValue(kTabBarGradient, ui_->tabbar_gradient->isChecked()); s.setValue(kTabBarColor, current_tabbar_bg_color_); + s.setValue(kIconSizeTabbarLargeMode, ui_->spinbox_icon_size_tabbar_large_mode->value()); s.setValue(kIconSizePlayControlButtons, ui_->spinbox_icon_size_play_control_buttons->value()); s.setValue(kIconSizePlaylistButtons, ui_->spinbox_icon_size_playlist_buttons->value()); s.setValue(kIconSizeLeftPanelButtons, ui_->spinbox_icon_size_left_panel_buttons->value()); diff --git a/src/settings/appearancesettingspage.h b/src/settings/appearancesettingspage.h index b2c57ed4f..532a2f10e 100644 --- a/src/settings/appearancesettingspage.h +++ b/src/settings/appearancesettingspage.h @@ -68,6 +68,7 @@ class AppearanceSettingsPage : public SettingsPage { static const char *kTabBarGradient; static const char *kTabBarColor; + static const char *kIconSizeTabbarLargeMode; static const char *kIconSizePlayControlButtons; static const char *kIconSizePlaylistButtons; static const char *kIconSizeLeftPanelButtons; diff --git a/src/settings/appearancesettingspage.ui b/src/settings/appearancesettingspage.ui index f9b3bd999..aa9884f1b 100644 --- a/src/settings/appearancesettingspage.ui +++ b/src/settings/appearancesettingspage.ui @@ -436,38 +436,21 @@ - - - Files, playlists and queue buttons - - - - Playlist buttons - + Play control buttons - - - - 16 - - - 64 - - - - - + + 16 @@ -477,6 +460,26 @@ + + + 16 + + + 64 + + + + + + + 16 + + + 64 + + + + 16 @@ -486,15 +489,29 @@ - + Configure buttons - - + + + + Files, playlists and queue buttons + + + + + + + Tabbar large mode + + + + + 16 @@ -565,6 +582,11 @@ checkbox_background_image_do_not_cut blur_slider opacity_slider + spinbox_icon_size_tabbar_large_mode + spinbox_icon_size_play_control_buttons + spinbox_icon_size_playlist_buttons + spinbox_icon_size_left_panel_buttons + spinbox_icon_size_configure_buttons checkbox_system_icons diff --git a/src/widgets/fancytabwidget.cpp b/src/widgets/fancytabwidget.cpp index fe7939a77..49090b8e8 100644 --- a/src/widgets/fancytabwidget.cpp +++ b/src/widgets/fancytabwidget.cpp @@ -56,9 +56,10 @@ #include "core/stylehelper.h" #include "settings/appearancesettingspage.h" -const QSize FancyTabWidget::IconSize_LargeSidebar = QSize(32, 32); -const QSize FancyTabWidget::IconSize_SmallSidebar = QSize(22, 22); -const QSize FancyTabWidget::TabSize_LargeSidebar = QSize(70, 58); +const int FancyTabWidget::IconSize_LargeSidebar = 32; +const int FancyTabWidget::IconSize_SmallSidebar = 22; +const int FancyTabWidget::TabSize_LargeSidebarWidth = 70; + class FancyTabBar: public QTabBar { @@ -99,7 +100,7 @@ class FancyTabBar: public QTabBar { QSize size; if (tabWidget->mode() == FancyTabWidget::Mode_LargeSidebar) { - size = FancyTabWidget::TabSize_LargeSidebar; + size = QSize(std::max(FancyTabWidget::TabSize_LargeSidebarWidth, tabWidget->iconsize_largesidebar() + 22), tabWidget->iconsize_largesidebar() + 24); } else { size = QTabBar::tabSizeHint(index); @@ -277,14 +278,14 @@ class FancyTabBar: public QTabBar { const int PADDING = 5; if (verticalTextTabs) { tabrectIcon = tabrectLabel; - tabrectIcon.setSize(FancyTabWidget::IconSize_SmallSidebar); + tabrectIcon.setSize(QSize(FancyTabWidget::IconSize_SmallSidebar, FancyTabWidget::IconSize_SmallSidebar)); tabrectIcon.translate(PADDING, PADDING); } else { tabrectIcon = tabrectLabel; - tabrectIcon.setSize(FancyTabWidget::IconSize_LargeSidebar); + tabrectIcon.setSize(QSize(tabWidget->iconsize_largesidebar(), tabWidget->iconsize_largesidebar())); // Center the icon - const int moveRight = (FancyTabWidget::TabSize_LargeSidebar.width() - FancyTabWidget::IconSize_LargeSidebar.width() -1) / 2; + const int moveRight = (std::max(FancyTabWidget::TabSize_LargeSidebarWidth, tabWidget->iconsize_largesidebar() + 22) - tabWidget->iconsize_largesidebar() -1) / 2; tabrectIcon.translate(moveRight, PADDING); } tabIcon(index).paint(&p, tabrectIcon, iconFlags); @@ -374,7 +375,10 @@ void FancyTabWidget::currentTabChanged(const int idx) { FancyTabWidget::FancyTabWidget(QWidget* parent) : QTabWidget(parent), menu_(nullptr), mode_(Mode_None), - bottom_widget_(nullptr) + bottom_widget_(nullptr), + bg_color_system_(true), + bg_gradient_(true), + iconsize_largesidebar_(FancyTabWidget::IconSize_LargeSidebar) { FancyTabBar *tabBar = new FancyTabBar(this); @@ -441,9 +445,11 @@ void FancyTabWidget::ReloadSettings() { bg_color_system_ = s.value(AppearanceSettingsPage::kTabBarSystemColor, false).toBool(); bg_gradient_ = s.value(AppearanceSettingsPage::kTabBarGradient, true).toBool(); bg_color_ = s.value(AppearanceSettingsPage::kTabBarColor, StyleHelper::highlightColor()).value(); + iconsize_largesidebar_ = s.value(AppearanceSettingsPage::kIconSizeTabbarLargeMode, FancyTabWidget::IconSize_LargeSidebar).toInt();; s.endGroup(); update(); + tabBarUpdateGeometry(); } diff --git a/src/widgets/fancytabwidget.h b/src/widgets/fancytabwidget.h index e17189c5c..cc50db27f 100644 --- a/src/widgets/fancytabwidget.h +++ b/src/widgets/fancytabwidget.h @@ -71,12 +71,12 @@ class FancyTabWidget : public QTabWidget { Mode_PlainSidebar, }; - static const QSize TabSize_LargeSidebar; + static const int TabSize_LargeSidebarWidth; + static const int IconSize_LargeSidebar; + static const int IconSize_SmallSidebar; - static const QSize IconSize_LargeSidebar; - static const QSize IconSize_SmallSidebar; - - Mode mode() { return mode_; } + Mode mode() const { return mode_; } + int iconsize_largesidebar() const { return iconsize_largesidebar_; } signals: void ModeChanged(FancyTabWidget::Mode mode); @@ -109,6 +109,7 @@ class FancyTabWidget : public QTabWidget { bool bg_color_system_; bool bg_gradient_; QColor bg_color_; + int iconsize_largesidebar_; };