From: romibi Date: Fri, 15 Jul 2016 19:37:03 +0000 (+0200) Subject: Add Settings option to choose from bundled Icon Themes X-Git-Tag: travis-deploy-test~396 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=0603a509f3a29006560197a7901624954a1671d6 Add Settings option to choose from bundled Icon Themes or system default --- diff --git a/src/qtui/qtuiapplication.cpp b/src/qtui/qtuiapplication.cpp index 755a0326..50c3c71e 100644 --- a/src/qtui/qtuiapplication.cpp +++ b/src/qtui/qtuiapplication.cpp @@ -145,9 +145,26 @@ bool QtUiApplication::init() return false; } + // Checking if settings Icon Theme is valid + QString savedIcontheme = QtUiSettings().value("IconTheme", QVariant("")).toString(); +#ifndef WITH_OXYGEN + if (savedIcontheme == "oxygen") + QtUiSettings().remove("IconTheme"); +#endif +#ifndef WITH_BREEZE + if (savedIcontheme == "breeze") + QtUiSettings().remove("IconTheme"); +#endif +#ifndef WITH_BREEZE_DARK + if (savedIcontheme == "breezedark") + QtUiSettings().remove("IconTheme"); +#endif + // Set the icon theme if (Quassel::isOptionSet("icontheme")) QIcon::setThemeName(Quassel::optionValue("icontheme")); + else if (QtUiSettings().value("IconTheme", QVariant("")).toString() != "") + QIcon::setThemeName(QtUiSettings().value("IconTheme").toString()); else if (QIcon::themeName().isEmpty()) // Some platforms don't set a default icon theme; chances are we can find our bundled Oxygen theme though QIcon::setThemeName("oxygen"); diff --git a/src/qtui/settingspages/appearancesettingspage.cpp b/src/qtui/settingspages/appearancesettingspage.cpp index 58178158..6891c744 100644 --- a/src/qtui/settingspages/appearancesettingspage.cpp +++ b/src/qtui/settingspages/appearancesettingspage.cpp @@ -46,6 +46,7 @@ AppearanceSettingsPage::AppearanceSettingsPage(QWidget *parent) initAutoWidgets(); initStyleComboBox(); initLanguageComboBox(); + initIconThemeComboBox(); foreach(QComboBox *comboBox, findChildren()) { connect(comboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(widgetHasChanged())); @@ -98,6 +99,23 @@ void AppearanceSettingsPage::initLanguageComboBox() } } +void AppearanceSettingsPage::initIconThemeComboBox() +{ +#if defined WITH_OXYGEN || defined WITH_BREEZE || defined WITH_BREEZE_DARK +# if defined WITH_OXYGEN + ui.iconthemeComboBox->addItem(tr("Oxygen"), QVariant("oxygen")); +# endif +# if defined WITH_BREEZE + ui.iconthemeComboBox->addItem(tr("Breeze Light"), QVariant("breeze")); +# endif +# if defined WITH_BREEZE_DARK + ui.iconthemeComboBox->addItem(tr("Breeze Dark"), QVariant("breezedark")); +# endif +#else + ui.iconthemeComboBox->hide(); +#endif +} + void AppearanceSettingsPage::defaults() { @@ -134,6 +152,14 @@ void AppearanceSettingsPage::load() ui.languageComboBox->setProperty("storedValue", ui.languageComboBox->currentIndex()); Quassel::loadTranslation(selectedLocale()); + // IconTheme + QString icontheme = uiSettings.value("IconTheme", QVariant("")).toString(); + if (icontheme == "") + ui.iconthemeComboBox->setCurrentIndex(0); + else + ui.iconthemeComboBox->setCurrentIndex(ui.iconthemeComboBox->findData(icontheme)); + ui.iconthemeComboBox->setProperty("storedValue", ui.iconthemeComboBox->currentIndex()); + // bufferSettings: BufferSettings bufferSettings; int redirectTarget = bufferSettings.userNoticesTarget(); @@ -177,6 +203,15 @@ void AppearanceSettingsPage::save() } ui.languageComboBox->setProperty("storedValue", ui.languageComboBox->currentIndex()); + if (selectedIconTheme()=="") { + uiSettings.remove("IconTheme"); + } + else { + uiSettings.setValue("IconTheme", selectedIconTheme()); + QIcon::setThemeName(selectedIconTheme()); + } + ui.iconthemeComboBox->setProperty("storedValue", ui.iconthemeComboBox->currentIndex()); + bool needsStyleReload = ui.useCustomStyleSheet->isChecked() != ui.useCustomStyleSheet->property("storedValue").toBool() || (ui.useCustomStyleSheet->isChecked() && ui.customStyleSheetPath->text() != ui.customStyleSheetPath->property("storedValue").toString()); @@ -230,6 +265,10 @@ QLocale AppearanceSettingsPage::selectedLocale() const return locale; } +QString AppearanceSettingsPage::selectedIconTheme() const +{ + return ui.iconthemeComboBox->itemData(ui.iconthemeComboBox->currentIndex()).toString(); +} void AppearanceSettingsPage::chooseStyleSheet() { @@ -255,6 +294,7 @@ bool AppearanceSettingsPage::testHasChanged() { if (ui.styleComboBox->currentIndex() != ui.styleComboBox->property("storedValue").toInt()) return true; if (ui.languageComboBox->currentIndex() != ui.languageComboBox->property("storedValue").toInt()) return true; + if (ui.iconthemeComboBox->currentIndex() != ui.iconthemeComboBox->property("storedValue").toInt()) return true; if (SettingsPage::hasChanged(ui.userNoticesInStatusBuffer)) return true; if (SettingsPage::hasChanged(ui.userNoticesInDefaultBuffer)) return true; diff --git a/src/qtui/settingspages/appearancesettingspage.h b/src/qtui/settingspages/appearancesettingspage.h index 91dc8fc2..b1f316ba 100644 --- a/src/qtui/settingspages/appearancesettingspage.h +++ b/src/qtui/settingspages/appearancesettingspage.h @@ -53,7 +53,9 @@ private: bool testHasChanged(); void initStyleComboBox(); void initLanguageComboBox(); + void initIconThemeComboBox(); QLocale selectedLocale() const; + QString selectedIconTheme() const; Ui::AppearanceSettingsPage ui; QHash settings; diff --git a/src/qtui/settingspages/appearancesettingspage.ui b/src/qtui/settingspages/appearancesettingspage.ui index c64cb60c..0cc4f15d 100644 --- a/src/qtui/settingspages/appearancesettingspage.ui +++ b/src/qtui/settingspages/appearancesettingspage.ui @@ -67,6 +67,25 @@ + + + + Icon Theme: + + + + + + + Choose from the bundled Icon-Themes! May need restart... + + + + <System Default> + + + +