+ SettingsPage::defaults();
+ widgetHasChanged();
+}
+
+void AppearanceSettingsPage::load()
+{
+ QtUiSettings uiSettings;
+
+ // Gui Style
+ QString style = uiSettings.value("Style", QString("")).toString();
+ if (style.isEmpty()) {
+ ui.styleComboBox->setCurrentIndex(0);
+ }
+ else {
+ ui.styleComboBox->setCurrentIndex(ui.styleComboBox->findText(style, Qt::MatchExactly));
+ }
+ ui.styleComboBox->setProperty("storedValue", ui.styleComboBox->currentIndex());
+
+ // Language
+ QLocale locale = uiSettings.value("Locale", QLocale::system()).value<QLocale>();
+ if (locale == QLocale::system())
+ ui.languageComboBox->setCurrentIndex(1);
+ else if (locale.language() == QLocale::C) // we use C for "untranslated"
+ ui.languageComboBox->setCurrentIndex(0);
+ else
+ ui.languageComboBox->setCurrentIndex(ui.languageComboBox->findText(QLocale::languageToString(locale.language()), Qt::MatchExactly));
+ ui.languageComboBox->setProperty("storedValue", ui.languageComboBox->currentIndex());
+ Quassel::loadTranslation(selectedLocale());
+
+ // IconTheme
+ QString icontheme = UiStyleSettings{}.value("Icons/FallbackTheme", QString{}).toString();
+ if (icontheme.isEmpty()) {
+ ui.iconThemeComboBox->setCurrentIndex(0);
+ }
+ else {
+ auto idx = ui.iconThemeComboBox->findData(icontheme);
+ ui.iconThemeComboBox->setCurrentIndex(idx > 0 ? idx : 0);
+ }
+ ui.iconThemeComboBox->setProperty("storedValue", ui.iconThemeComboBox->currentIndex());
+
+ // bufferSettings:
+ BufferSettings bufferSettings;
+ int redirectTarget = bufferSettings.userNoticesTarget();
+ SettingsPage::load(ui.userNoticesInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer);
+ SettingsPage::load(ui.userNoticesInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer);
+ SettingsPage::load(ui.userNoticesInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer);
+
+ redirectTarget = bufferSettings.serverNoticesTarget();
+ SettingsPage::load(ui.serverNoticesInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer);
+ SettingsPage::load(ui.serverNoticesInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer);
+ SettingsPage::load(ui.serverNoticesInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer);
+
+ redirectTarget = bufferSettings.errorMsgsTarget();
+ SettingsPage::load(ui.errorMsgsInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer);
+ SettingsPage::load(ui.errorMsgsInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer);
+ SettingsPage::load(ui.errorMsgsInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer);
+
+ SettingsPage::load();
+ setChangedState(false);
+}
+
+void AppearanceSettingsPage::save()
+{
+ QtUiSettings uiSettings;
+ UiStyleSettings styleSettings;
+
+ if (ui.styleComboBox->currentIndex() < 1) {
+ uiSettings.setValue("Style", QString(""));
+ }
+ else {
+ uiSettings.setValue("Style", ui.styleComboBox->currentText());
+ QApplication::setStyle(ui.styleComboBox->currentText());
+ }
+ ui.styleComboBox->setProperty("storedValue", ui.styleComboBox->currentIndex());
+
+ if (ui.languageComboBox->currentIndex() == 1) {
+ uiSettings.remove("Locale"); // force the default (QLocale::system())
+ }
+ else {
+ uiSettings.setValue("Locale", selectedLocale());
+ }
+ ui.languageComboBox->setProperty("storedValue", ui.languageComboBox->currentIndex());
+
+ bool needsIconThemeRefresh = ui.iconThemeComboBox->currentIndex() != ui.iconThemeComboBox->property("storedValue").toInt()
+ || ui.overrideSystemIconTheme->isChecked() != ui.overrideSystemIconTheme->property("storedValue").toBool();
+
+ auto iconTheme = selectedIconTheme();
+ if (iconTheme.isEmpty()) {
+ styleSettings.remove("Icons/FallbackTheme");
+ }
+ else {
+ styleSettings.setValue("Icons/FallbackTheme", iconTheme);
+ }
+ 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());
+
+ BufferSettings bufferSettings;
+ int redirectTarget = 0;
+ if (ui.userNoticesInDefaultBuffer->isChecked())
+ redirectTarget |= BufferSettings::DefaultBuffer;
+ if (ui.userNoticesInStatusBuffer->isChecked())
+ redirectTarget |= BufferSettings::StatusBuffer;
+ if (ui.userNoticesInCurrentBuffer->isChecked())
+ redirectTarget |= BufferSettings::CurrentBuffer;
+ bufferSettings.setUserNoticesTarget(redirectTarget);
+
+ redirectTarget = 0;
+ if (ui.serverNoticesInDefaultBuffer->isChecked())
+ redirectTarget |= BufferSettings::DefaultBuffer;
+ if (ui.serverNoticesInStatusBuffer->isChecked())
+ redirectTarget |= BufferSettings::StatusBuffer;
+ if (ui.serverNoticesInCurrentBuffer->isChecked())
+ redirectTarget |= BufferSettings::CurrentBuffer;
+ bufferSettings.setServerNoticesTarget(redirectTarget);
+
+ redirectTarget = 0;
+ if (ui.errorMsgsInDefaultBuffer->isChecked())
+ redirectTarget |= BufferSettings::DefaultBuffer;
+ if (ui.errorMsgsInStatusBuffer->isChecked())
+ redirectTarget |= BufferSettings::StatusBuffer;
+ if (ui.errorMsgsInCurrentBuffer->isChecked())
+ redirectTarget |= BufferSettings::CurrentBuffer;
+ bufferSettings.setErrorMsgsTarget(redirectTarget);
+
+ SettingsPage::save();
+ setChangedState(false);
+ if (needsStyleReload)
+ QtUi::style()->reload();
+ if (needsIconThemeRefresh)
+ QtUi::instance()->refreshIconTheme();