aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/settings/SettingsAppearance.cpp
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-05-03 14:45:48 +0000
committersaturneric <[email protected]>2024-05-03 14:46:40 +0000
commit526170b9676e7c04f5a6d7d2ba461b3f42cea32c (patch)
tree095e4448588f4202d5bd930cf83e90dbd37cb224 /src/ui/dialog/settings/SettingsAppearance.cpp
parentfix: reset module settings object in a proper way (diff)
downloadGpgFrontend-526170b9676e7c04f5a6d7d2ba461b3f42cea32c.tar.gz
GpgFrontend-526170b9676e7c04f5a6d7d2ba461b3f42cea32c.zip
feat: support theme changing by user
Diffstat (limited to 'src/ui/dialog/settings/SettingsAppearance.cpp')
-rw-r--r--src/ui/dialog/settings/SettingsAppearance.cpp52
1 files changed, 40 insertions, 12 deletions
diff --git a/src/ui/dialog/settings/SettingsAppearance.cpp b/src/ui/dialog/settings/SettingsAppearance.cpp
index b756ae05..299b30d9 100644
--- a/src/ui/dialog/settings/SettingsAppearance.cpp
+++ b/src/ui/dialog/settings/SettingsAppearance.cpp
@@ -28,6 +28,7 @@
#include "SettingsAppearance.h"
+#include "core/function/GlobalSettingStation.h"
#include "core/model/SettingsObject.h"
#include "core/utils/MemoryUtils.h"
#include "ui/struct/settings_object/AppearanceSO.h"
@@ -39,26 +40,28 @@ AppearanceTab::AppearanceTab(QWidget* parent)
: QWidget(parent), ui_(SecureCreateSharedObject<Ui_AppearanceSettings>()) {
ui_->setupUi(this);
- ui_->iconSizeBox->setTitle(tr("Icon Size"));
+ ui_->generalBox->setTitle(tr("General"));
+
+ ui_->themaLabel->setText(tr("Theme"));
+ ui_->windowStateCheckBox->setText(
+ tr("Save window size and position on exit."));
+
+ ui_->toolbarIconBox->setTitle(tr("Toolbar Icon"));
+
+ ui_->toolbarIconSizeLabel->setText(tr("Size"));
ui_->smallRadioButton->setText(tr("small"));
ui_->mediumRadioButton->setText(tr("medium"));
ui_->largeRadioButton->setText(tr("large"));
- ui_->iconStyleBox->setTitle(tr("Icon Style"));
+ ui_->toolbarIconStyleLabel->setText(tr("Style"));
ui_->justTextRadioButton->setText(tr("just text"));
ui_->justIconRadioButton->setText(tr("just icons"));
ui_->textAndIconsRadioButton->setText(tr("text and icons"));
- ui_->windowStateBox->setTitle(tr("Window State"));
- ui_->windowStateCheckBox->setText(
- tr("Save window size and position on exit."));
-
- ui_->textEditorBox->setTitle(tr("Text Editor"));
- ui_->fontSizeTextEditorLabel->setText(tr("Font Size in Text Editor"));
+ ui_->fontSizeBox->setTitle(tr("Font Size"));
- ui_->informationBoardBox->setTitle(tr("Information Board"));
- ui_->fontSizeInformationBoardLabel->setText(
- tr("Font Size in Information Board"));
+ ui_->fontSizeTextEditorLabel->setText(tr("Text Editor"));
+ ui_->fontSizeInformationBoardLabel->setText(tr("Information Board"));
icon_size_group_ = new QButtonGroup(this);
icon_size_group_->addButton(ui_->smallRadioButton, 1);
@@ -71,10 +74,13 @@ AppearanceTab::AppearanceTab(QWidget* parent)
icon_style_group_->addButton(ui_->textAndIconsRadioButton, 3);
SetSettings();
+
+ connect(ui_->themeComboBox, qOverload<int>(&QComboBox::currentIndexChanged),
+ this, &AppearanceTab::SignalRestartNeeded);
}
void AppearanceTab::SetSettings() {
- AppearanceSO appearance(SettingsObject("general_settings_state"));
+ AppearanceSO const appearance(SettingsObject("general_settings_state"));
auto icon_size =
QSize(appearance.tool_bar_icon_width, appearance.tool_bar_icon_height);
@@ -123,6 +129,25 @@ void AppearanceTab::SetSettings() {
text_editor_info_font_size = 10;
}
ui_->fontSizeTextEditorLabelSpinBox->setValue(text_editor_info_font_size);
+
+ // init available styles
+ for (const auto& s : QStyleFactory::keys()) {
+ ui_->themeComboBox->addItem(s.toLower());
+ }
+
+ auto settings = GlobalSettingStation::GetInstance().GetSettings();
+ auto theme = settings.value("appearance/theme").toString();
+
+ auto target_theme_index = ui_->themeComboBox->findText(theme);
+ if (theme.isEmpty() || target_theme_index == -1) {
+ GF_UI_LOG_DEBUG(
+ "There is not valid theme found from settings, using current theme: {}",
+ QApplication::style()->name());
+ ui_->themeComboBox->setCurrentIndex(
+ ui_->themeComboBox->findText(QApplication::style()->name()));
+ } else {
+ ui_->themeComboBox->setCurrentIndex(target_theme_index);
+ }
}
void AppearanceTab::ApplySettings() {
@@ -169,6 +194,9 @@ void AppearanceTab::ApplySettings() {
ui_->fontSizeTextEditorLabelSpinBox->value();
general_settings_state.Store(appearance.ToJson());
+
+ auto settings = GlobalSettingStation::GetInstance().GetSettings();
+ settings.setValue("appearance/theme", ui_->themeComboBox->currentText());
}
} // namespace GpgFrontend::UI