Add setting to set style

This commit is contained in:
Jonas Kvinge
2020-11-08 02:04:24 +01:00
parent c9c3fb396a
commit 0ae7c18f1f
4 changed files with 87 additions and 21 deletions

View File

@@ -97,6 +97,7 @@
# include "core/translations.h" # include "core/translations.h"
#endif #endif
#include "settings/behavioursettingspage.h" #include "settings/behavioursettingspage.h"
#include "settings/appearancesettingspage.h"
#ifdef HAVE_DBUS #ifdef HAVE_DBUS
# include "osd/osddbus.h" # include "osd/osddbus.h"
@@ -197,6 +198,16 @@ int main(int argc, char* argv[]) {
// Gnome on Ubuntu has menu icons disabled by default. I think that's a bad idea, and makes some menus in Strawberry look confusing. // Gnome on Ubuntu has menu icons disabled by default. I think that's a bad idea, and makes some menus in Strawberry look confusing.
QCoreApplication::setAttribute(Qt::AA_DontShowIconsInMenus, false); QCoreApplication::setAttribute(Qt::AA_DontShowIconsInMenus, false);
{
QSettings s;
s.beginGroup(AppearanceSettingsPage::kSettingsGroup);
QString style = s.value(AppearanceSettingsPage::kStyle, "default").toString();
s.endGroup();
if (style != "default") {
QApplication::setStyle(style);
}
}
// Set the permissions on the config file on Unix - it can contain passwords for internet services so it's important that other users can't read it. // Set the permissions on the config file on Unix - it can contain passwords for internet services so it's important that other users can't read it.
// On Windows these are stored in the registry instead. // On Windows these are stored in the registry instead.
#ifdef Q_OS_UNIX #ifdef Q_OS_UNIX

View File

@@ -23,6 +23,7 @@
#include <QApplication> #include <QApplication>
#include <QWidget> #include <QWidget>
#include <QStyleFactory>
#include <QVariant> #include <QVariant>
#include <QString> #include <QString>
#include <QStringBuilder> #include <QStringBuilder>
@@ -51,6 +52,9 @@
const char *AppearanceSettingsPage::kSettingsGroup = "Appearance"; const char *AppearanceSettingsPage::kSettingsGroup = "Appearance";
const char *AppearanceSettingsPage::kStyle = "style";
const char *AppearanceSettingsPage::kSystemThemeIcons = "system_icons";
const char *AppearanceSettingsPage::kUseCustomColorSet = "use-custom-set"; const char *AppearanceSettingsPage::kUseCustomColorSet = "use-custom-set";
const char *AppearanceSettingsPage::kForegroundColor = "foreground-color"; const char *AppearanceSettingsPage::kForegroundColor = "foreground-color";
const char *AppearanceSettingsPage::kBackgroundColor = "background-color"; const char *AppearanceSettingsPage::kBackgroundColor = "background-color";
@@ -69,8 +73,6 @@ const char *AppearanceSettingsPage::kOpacityLevel = "opacity_level";
const int AppearanceSettingsPage::kDefaultBlurRadius = 0; const int AppearanceSettingsPage::kDefaultBlurRadius = 0;
const int AppearanceSettingsPage::kDefaultOpacityLevel = 40; const int AppearanceSettingsPage::kDefaultOpacityLevel = 40;
const char *AppearanceSettingsPage::kSystemThemeIcons = "system_icons";
const char *AppearanceSettingsPage::kTabBarSystemColor= "tab_system_color"; const char *AppearanceSettingsPage::kTabBarSystemColor= "tab_system_color";
const char *AppearanceSettingsPage::kTabBarGradient = "tab_gradient"; const char *AppearanceSettingsPage::kTabBarGradient = "tab_gradient";
const char *AppearanceSettingsPage::kTabBarColor = "tab_color"; const char *AppearanceSettingsPage::kTabBarColor = "tab_color";
@@ -91,6 +93,11 @@ AppearanceSettingsPage::AppearanceSettingsPage(SettingsDialog *dialog)
ui_->setupUi(this); ui_->setupUi(this);
setWindowIcon(IconLoader::Load("view-media-visualization")); setWindowIcon(IconLoader::Load("view-media-visualization"));
ui_->combobox_style->addItem("default", "default");
for (const QString &style : QStyleFactory::keys()) {
ui_->combobox_style->addItem(style, style);
}
ui_->combobox_backgroundimageposition->setItemData(0, BackgroundImagePosition_UpperLeft); ui_->combobox_backgroundimageposition->setItemData(0, BackgroundImagePosition_UpperLeft);
ui_->combobox_backgroundimageposition->setItemData(1, BackgroundImagePosition_UpperRight); ui_->combobox_backgroundimageposition->setItemData(1, BackgroundImagePosition_UpperRight);
ui_->combobox_backgroundimageposition->setItemData(2, BackgroundImagePosition_Middle); ui_->combobox_backgroundimageposition->setItemData(2, BackgroundImagePosition_Middle);
@@ -140,6 +147,12 @@ void AppearanceSettingsPage::Load() {
QSettings s; QSettings s;
s.beginGroup(kSettingsGroup); s.beginGroup(kSettingsGroup);
ComboBoxLoadFromSettings(s, ui_->combobox_style, kStyle, "default");
#if !defined(Q_OS_MACOS) && !defined(Q_OS_WIN)
ui_->checkbox_system_icons->setChecked(s.value(kSystemThemeIcons, false).toBool());
#endif
QPalette p = QApplication::palette(); QPalette p = QApplication::palette();
// Keep in mind originals colors, in case the user clicks on Cancel, to be able to restore colors // Keep in mind originals colors, in case the user clicks on Cancel, to be able to restore colors
@@ -197,10 +210,6 @@ void AppearanceSettingsPage::Load() {
ui_->blur_slider->setValue(s.value(kBlurRadius, kDefaultBlurRadius).toInt()); ui_->blur_slider->setValue(s.value(kBlurRadius, kDefaultBlurRadius).toInt());
ui_->opacity_slider->setValue(s.value(kOpacityLevel, kDefaultOpacityLevel).toInt()); ui_->opacity_slider->setValue(s.value(kOpacityLevel, kDefaultOpacityLevel).toInt());
#if !defined(Q_OS_MACOS) && !defined(Q_OS_WIN)
ui_->checkbox_system_icons->setChecked(s.value(kSystemThemeIcons, false).toBool());
#endif
ui_->checkbox_background_image_keep_aspect_ratio->setEnabled(ui_->checkbox_background_image_stretch->isChecked()); 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_->checkbox_background_image_do_not_cut->setEnabled(ui_->checkbox_background_image_stretch->isChecked() && ui_->checkbox_background_image_keep_aspect_ratio->isChecked());
@@ -222,8 +231,16 @@ void AppearanceSettingsPage::Load() {
void AppearanceSettingsPage::Save() { void AppearanceSettingsPage::Save() {
QSettings s; QSettings s;
s.beginGroup(kSettingsGroup); s.beginGroup(kSettingsGroup);
s.setValue("style", ui_->combobox_style->currentText());
#if defined(Q_OS_MACOS) || defined(Q_OS_WIN)
s.setValue(kSystemThemeIcons, false);
#else
s.setValue(kSystemThemeIcons, ui_->checkbox_system_icons->isChecked());
#endif
bool use_a_custom_color_set = ui_->use_a_custom_color_set->isChecked(); bool use_a_custom_color_set = ui_->use_a_custom_color_set->isChecked();
s.setValue(kUseCustomColorSet, use_a_custom_color_set); s.setValue(kUseCustomColorSet, use_a_custom_color_set);
if (use_a_custom_color_set) { if (use_a_custom_color_set) {
@@ -269,12 +286,6 @@ void AppearanceSettingsPage::Save() {
s.setValue(kBlurRadius, ui_->blur_slider->value()); s.setValue(kBlurRadius, ui_->blur_slider->value());
s.setValue(kOpacityLevel, ui_->opacity_slider->value()); s.setValue(kOpacityLevel, ui_->opacity_slider->value());
#if defined(Q_OS_MACOS) || defined(Q_OS_WIN)
s.setValue(kSystemThemeIcons, false);
#else
s.setValue(kSystemThemeIcons, ui_->checkbox_system_icons->isChecked());
#endif
s.setValue(kTabBarSystemColor, ui_->tabbar_system_color->isChecked()); s.setValue(kTabBarSystemColor, ui_->tabbar_system_color->isChecked());
s.setValue(kTabBarGradient, ui_->tabbar_gradient->isChecked()); s.setValue(kTabBarGradient, ui_->tabbar_gradient->isChecked());
s.setValue(kTabBarColor, current_tabbar_bg_color_); s.setValue(kTabBarColor, current_tabbar_bg_color_);

View File

@@ -44,6 +44,8 @@ class AppearanceSettingsPage : public SettingsPage {
static const char *kSettingsGroup; static const char *kSettingsGroup;
static const char *kStyle;
static const char *kUseCustomColorSet; static const char *kUseCustomColorSet;
static const char *kForegroundColor; static const char *kForegroundColor;
static const char *kBackgroundColor; static const char *kBackgroundColor;

View File

@@ -14,6 +14,56 @@
<string>Appearance</string> <string>Appearance</string>
</property> </property>
<layout class="QVBoxLayout" name="layout_appearancesettingspage"> <layout class="QVBoxLayout" name="layout_appearancesettingspage">
<item>
<widget class="QGroupBox" name="groupbox_style">
<property name="title">
<string>Style</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="layout_style">
<item>
<widget class="QLabel" name="label_style">
<property name="text">
<string>Style</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="combobox_style"/>
</item>
<item>
<spacer name="spacer_style">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="checkbox_system_icons">
<property name="text">
<string>Use system theme icons</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Settings require restart.</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item> <item>
<widget class="QGroupBox" name="groupbox_colors"> <widget class="QGroupBox" name="groupbox_colors">
<property name="title"> <property name="title">
@@ -562,13 +612,6 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item>
<widget class="QCheckBox" name="checkbox_system_icons">
<property name="text">
<string>Use system theme icons</string>
</property>
</widget>
</item>
<item> <item>
<spacer name="spacer_bottom"> <spacer name="spacer_bottom">
<property name="orientation"> <property name="orientation">
@@ -613,7 +656,6 @@
<tabstop>spinbox_icon_size_playlist_buttons</tabstop> <tabstop>spinbox_icon_size_playlist_buttons</tabstop>
<tabstop>spinbox_icon_size_left_panel_buttons</tabstop> <tabstop>spinbox_icon_size_left_panel_buttons</tabstop>
<tabstop>spinbox_icon_size_configure_buttons</tabstop> <tabstop>spinbox_icon_size_configure_buttons</tabstop>
<tabstop>checkbox_system_icons</tabstop>
</tabstops> </tabstops>
<resources/> <resources/>
<connections> <connections>