diff --git a/src/settings/appearancesettingspage.cpp b/src/settings/appearancesettingspage.cpp
index 8e32ed2d0..8e83f9af7 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::kIconSizeTabbarSmallMode = "icon_size_tabbar_small_mode";
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";
@@ -196,7 +197,8 @@ 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_tabbar_small_mode->setValue(s.value(kIconSizeTabbarSmallMode, 32).toInt());
+ ui_->spinbox_icon_size_tabbar_large_mode->setValue(s.value(kIconSizeTabbarLargeMode, 40).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());
@@ -264,6 +266,7 @@ void AppearanceSettingsPage::Save() {
s.setValue(kTabBarGradient, ui_->tabbar_gradient->isChecked());
s.setValue(kTabBarColor, current_tabbar_bg_color_);
+ s.setValue(kIconSizeTabbarSmallMode, ui_->spinbox_icon_size_tabbar_small_mode->value());
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());
diff --git a/src/settings/appearancesettingspage.h b/src/settings/appearancesettingspage.h
index 38a25a63b..d33e2394d 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 *kIconSizeTabbarSmallMode;
static const char *kIconSizeTabbarLargeMode;
static const char *kIconSizePlayControlButtons;
static const char *kIconSizePlaylistButtons;
diff --git a/src/settings/appearancesettingspage.ui b/src/settings/appearancesettingspage.ui
index 6666eb4b5..ee58aa9f2 100644
--- a/src/settings/appearancesettingspage.ui
+++ b/src/settings/appearancesettingspage.ui
@@ -7,7 +7,7 @@
0
0
674
- 896
+ 1030
@@ -442,7 +442,7 @@
-
-
-
+
-
Playlist buttons
@@ -450,23 +450,20 @@
-
+
+
+ Tabbar large mode
+
+
+
+ -
Play control buttons
- -
-
-
- 16
-
-
- 64
-
-
-
- -
+
-
16
@@ -476,7 +473,7 @@
- -
+
-
16
@@ -486,7 +483,14 @@
- -
+
-
+
+
+ Configure buttons
+
+
+
+ -
16
@@ -496,29 +500,42 @@
- -
-
-
- Configure buttons
+
-
+
+
+ 16
+
+
+ 64
- -
+
-
Files, playlists and queue buttons
+ -
+
+
+ 16
+
+
+ 64
+
+
+
-
-
+
- Tabbar large mode
+ Tabbar small mode
-
-
+
16
diff --git a/src/widgets/fancytabwidget.cpp b/src/widgets/fancytabwidget.cpp
index 9d54a3e45..bc2371e83 100644
--- a/src/widgets/fancytabwidget.cpp
+++ b/src/widgets/fancytabwidget.cpp
@@ -57,8 +57,11 @@
#include "core/stylehelper.h"
#include "settings/appearancesettingspage.h"
-const int FancyTabWidget::IconSize_LargeSidebar = 32;
-const int FancyTabWidget::IconSize_SmallSidebar = 22;
+const int FancyTabWidget::IconSize_LargeSidebar = 40;
+const int FancyTabWidget::IconSize_SmallSidebar = 32;
+const int FancyTabWidget::IconSize_PlainSidebar = 22;
+const int FancyTabWidget::IconSize_TabsSidebar = 22;
+const int FancyTabWidget::IconSize_IconsSidebar = 22;
const int FancyTabWidget::TabSize_LargeSidebarWidth = 70;
class FancyTabBar: public QTabBar {
@@ -129,7 +132,7 @@ class FancyTabBar: public QTabBar {
}
else {
if (tabWidget->mode() == FancyTabWidget::Mode_IconOnlyTabs) {
- size = QSize(FancyTabWidget::IconSize_SmallSidebar + 10, FancyTabWidget::IconSize_SmallSidebar + 10);
+ size = QSize(FancyTabWidget::IconSize_IconsSidebar + 10, FancyTabWidget::IconSize_IconsSidebar + 10);
}
else {
QFont bold_font(font());
@@ -140,12 +143,16 @@ class FancyTabBar: public QTabBar {
int w = 0;
int h = 0;
if (tabWidget->mode() == FancyTabWidget::Mode_Tabs) {
- w = FancyTabWidget::IconSize_SmallSidebar + rect.width() + 10;
- h = std::max(FancyTabWidget::IconSize_SmallSidebar, rect.height()) + 15;
+ w = FancyTabWidget::IconSize_TabsSidebar + rect.width() + 10;
+ h = std::max(FancyTabWidget::IconSize_TabsSidebar, rect.height()) + 15;
}
- else {
- w = std::max(FancyTabWidget::IconSize_SmallSidebar, rect.height()) + 15;
- h = FancyTabWidget::IconSize_SmallSidebar + rect.width() + 20;
+ else if (tabWidget->mode() == FancyTabWidget::Mode_SmallSidebar) {
+ w = std::max(tabWidget->iconsize_smallsidebar(), rect.height()) + 15;
+ h = tabWidget->iconsize_smallsidebar() + rect.width() + 20;
+ }
+ else if (tabWidget->mode() == FancyTabWidget::Mode_PlainSidebar) {
+ w = std::max(FancyTabWidget::IconSize_PlainSidebar, rect.height()) + 15;
+ h = FancyTabWidget::IconSize_PlainSidebar + rect.width() + 20;
}
size = QSize(w, h);
}
@@ -280,14 +287,13 @@ class FancyTabBar: public QTabBar {
if (verticalTextTabs) {
m = QTransform::fromTranslate(tabrect.left(), tabrect.bottom());
m.rotate(-90);
- textFlags = Qt::AlignLeft | Qt::AlignVCenter;
- iconFlags = Qt::AlignLeft | Qt::AlignVCenter;
+ textFlags = Qt::AlignVCenter;
+ iconFlags = Qt::AlignVCenter;
tabrectLabel = QRect(QPoint(0, 0), m.mapRect(tabrect).size());
tabrectText = tabrectLabel;
- tabrectText.translate(FancyTabWidget::IconSize_SmallSidebar + 8, -2);
-
+ tabrectText.translate(tabWidget->iconsize_smallsidebar() + 8, 0);
}
else {
m = QTransform::fromTranslate(tabrect.left(), tabrect.top());
@@ -319,18 +325,19 @@ class FancyTabBar: public QTabBar {
// Draw the icon
QRect tabrectIcon;
- const int PADDING = 5;
if (verticalTextTabs) {
tabrectIcon = tabrectLabel;
- tabrectIcon.setSize(QSize(FancyTabWidget::IconSize_SmallSidebar, FancyTabWidget::IconSize_SmallSidebar));
- tabrectIcon.translate(PADDING, PADDING);
+ tabrectIcon.setSize(QSize(tabWidget->iconsize_smallsidebar(), tabWidget->iconsize_smallsidebar()));
+ // Center the icon
+ const int moveRight = (QTabBar::width() - tabWidget->iconsize_smallsidebar()) / 2;
+ tabrectIcon.translate(5, moveRight);
}
else {
tabrectIcon = tabrectLabel;
tabrectIcon.setSize(QSize(tabWidget->iconsize_largesidebar(), tabWidget->iconsize_largesidebar()));
// Center the icon
const int moveRight = (QTabBar::width() - tabWidget->iconsize_largesidebar() -1) / 2;
- tabrectIcon.translate(moveRight, PADDING);
+ tabrectIcon.translate(moveRight, 5);
}
tabIcon(index).paint(&p, tabrectIcon, iconFlags);
p.restore();
@@ -357,9 +364,6 @@ class TabData : public QObject {
layout->addWidget(widget_view_);
page_->setLayout(layout);
}
- ~TabData() override {
- //delete page_;
- }
QWidget *widget_view() { return widget_view_; }
QString name() { return name_; }
@@ -422,6 +426,7 @@ FancyTabWidget::FancyTabWidget(QWidget* parent) : QTabWidget(parent),
bottom_widget_(nullptr),
bg_color_system_(true),
bg_gradient_(true),
+ iconsize_smallsidebar_(FancyTabWidget::IconSize_SmallSidebar),
iconsize_largesidebar_(FancyTabWidget::IconSize_LargeSidebar)
{
@@ -489,7 +494,8 @@ 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();;
+ iconsize_smallsidebar_ = s.value(AppearanceSettingsPage::kIconSizeTabbarSmallMode, FancyTabWidget::IconSize_SmallSidebar).toInt();
+ iconsize_largesidebar_ = s.value(AppearanceSettingsPage::kIconSizeTabbarLargeMode, FancyTabWidget::IconSize_LargeSidebar).toInt();
s.endGroup();
update();
diff --git a/src/widgets/fancytabwidget.h b/src/widgets/fancytabwidget.h
index cc50db27f..be67f6d13 100644
--- a/src/widgets/fancytabwidget.h
+++ b/src/widgets/fancytabwidget.h
@@ -74,8 +74,12 @@ class FancyTabWidget : public QTabWidget {
static const int TabSize_LargeSidebarWidth;
static const int IconSize_LargeSidebar;
static const int IconSize_SmallSidebar;
+ static const int IconSize_PlainSidebar;
+ static const int IconSize_TabsSidebar;
+ static const int IconSize_IconsSidebar;
Mode mode() const { return mode_; }
+ int iconsize_smallsidebar() const { return iconsize_smallsidebar_; }
int iconsize_largesidebar() const { return iconsize_largesidebar_; }
signals:
@@ -109,6 +113,7 @@ class FancyTabWidget : public QTabWidget {
bool bg_color_system_;
bool bg_gradient_;
QColor bg_color_;
+ int iconsize_smallsidebar_;
int iconsize_largesidebar_;
};