Make fancy tabbar large mode icon size configurable

This commit is contained in:
Jonas Kvinge
2020-06-29 03:03:04 +02:00
parent 12ff3e963b
commit 3fd9f4b0df
5 changed files with 69 additions and 36 deletions

View File

@@ -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());

View File

@@ -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;

View File

@@ -436,38 +436,21 @@
<item>
<layout class="QGridLayout" name="layout_icon_sizes">
<item row="2" column="0">
<widget class="QLabel" name="label_icon_size_left_panel_buttons">
<property name="text">
<string>Files, playlists and queue buttons</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_icon_size_playlist_buttons">
<property name="text">
<string>Playlist buttons</string>
</property>
</widget>
</item>
<item row="0" column="0">
<item row="1" column="0">
<widget class="QLabel" name="label_icon_size_play_control_buttons">
<property name="text">
<string>Play control buttons</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="spinbox_icon_size_left_panel_buttons">
<property name="minimum">
<number>16</number>
</property>
<property name="maximum">
<number>64</number>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="spinbox_icon_size_play_control_buttons">
<item row="4" column="1">
<widget class="QSpinBox" name="spinbox_icon_size_configure_buttons">
<property name="minimum">
<number>16</number>
</property>
@@ -477,6 +460,26 @@
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="spinbox_icon_size_play_control_buttons">
<property name="minimum">
<number>16</number>
</property>
<property name="maximum">
<number>64</number>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="spinbox_icon_size_left_panel_buttons">
<property name="minimum">
<number>16</number>
</property>
<property name="maximum">
<number>64</number>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="spinbox_icon_size_playlist_buttons">
<property name="minimum">
<number>16</number>
@@ -486,15 +489,29 @@
</property>
</widget>
</item>
<item row="3" column="0">
<item row="4" column="0">
<widget class="QLabel" name="label_icon_size_configure_buttons">
<property name="text">
<string>Configure buttons</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="spinbox_icon_size_configure_buttons">
<item row="3" column="0">
<widget class="QLabel" name="label_icon_size_left_panel_buttons">
<property name="text">
<string>Files, playlists and queue buttons</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_icon_size_tabbar_large_mode">
<property name="text">
<string>Tabbar large mode</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="spinbox_icon_size_tabbar_large_mode">
<property name="minimum">
<number>16</number>
</property>
@@ -565,6 +582,11 @@
<tabstop>checkbox_background_image_do_not_cut</tabstop>
<tabstop>blur_slider</tabstop>
<tabstop>opacity_slider</tabstop>
<tabstop>spinbox_icon_size_tabbar_large_mode</tabstop>
<tabstop>spinbox_icon_size_play_control_buttons</tabstop>
<tabstop>spinbox_icon_size_playlist_buttons</tabstop>
<tabstop>spinbox_icon_size_left_panel_buttons</tabstop>
<tabstop>spinbox_icon_size_configure_buttons</tabstop>
<tabstop>checkbox_system_icons</tabstop>
</tabstops>
<resources/>

View File

@@ -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<QColor>();
iconsize_largesidebar_ = s.value(AppearanceSettingsPage::kIconSizeTabbarLargeMode, FancyTabWidget::IconSize_LargeSidebar).toInt();;
s.endGroup();
update();
tabBarUpdateGeometry();
}

View File

@@ -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_;
};