summaryrefslogtreecommitdiff
path: root/src/settingsdialogtheme.cpp
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2021-01-29 20:03:47 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-01-29 20:03:47 +0100
commit7610e3139408a8947795140a14a6bd396d4e0f71 (patch)
treeec329fd049debd8f71e278ebba3280c6fe2270ce /src/settingsdialogtheme.cpp
parentd0796b4ab23122d5f01378743d93f8c75b19c35c (diff)
Reorganize settingsdialog classes to match UI.
Diffstat (limited to 'src/settingsdialogtheme.cpp')
-rw-r--r--src/settingsdialogtheme.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/settingsdialogtheme.cpp b/src/settingsdialogtheme.cpp
new file mode 100644
index 00000000..9b32773b
--- /dev/null
+++ b/src/settingsdialogtheme.cpp
@@ -0,0 +1,82 @@
+#include "settingsdialogtheme.h"
+#include "ui_settingsdialog.h"
+#include "shared/appconfig.h"
+#include "categoriesdialog.h"
+#include "colortable.h"
+#include "modlist.h"
+#include <utility.h>
+#include <questionboxmemory.h>
+
+using namespace MOBase;
+
+ThemeSettingsTab::ThemeSettingsTab(Settings& s, SettingsDialog& d)
+ : SettingsTab(s, d)
+{
+ // style
+ addStyles();
+ selectStyle();
+
+ // colors
+ ui->colorTable->load(s);
+
+ QObject::connect(ui->resetColorsBtn, &QPushButton::clicked, [&] { ui->colorTable->resetColors(); });
+
+ QObject::connect(ui->exploreStyles, &QPushButton::clicked, [&] { onExploreStyles(); });
+}
+
+void ThemeSettingsTab::update()
+{
+ // style
+ const QString oldStyle = settings().interface().styleName().value_or("");
+ const QString newStyle = ui->styleBox->itemData(
+ ui->styleBox->currentIndex()).toString();
+
+ if (oldStyle != newStyle) {
+ settings().interface().setStyleName(newStyle);
+ emit settings().styleChanged(newStyle);
+ }
+
+ // colors
+ ui->colorTable->commitColors();
+}
+
+void ThemeSettingsTab::addStyles()
+{
+ ui->styleBox->addItem("None", "");
+ for (auto&& key : QStyleFactory::keys()) {
+ ui->styleBox->addItem(key, key);
+ }
+
+ ui->styleBox->insertSeparator(ui->styleBox->count());
+
+ QDirIterator iter(
+ QCoreApplication::applicationDirPath() + "/" +
+ QString::fromStdWString(AppConfig::stylesheetsPath()),
+ QStringList("*.qss"),
+ QDir::Files);
+
+ while (iter.hasNext()) {
+ iter.next();
+
+ ui->styleBox->addItem(
+ iter.fileInfo().completeBaseName(),
+ iter.fileName());
+ }
+}
+
+void ThemeSettingsTab::selectStyle()
+{
+ const int currentID = ui->styleBox->findData(
+ settings().interface().styleName().value_or(""));
+
+ if (currentID != -1) {
+ ui->styleBox->setCurrentIndex(currentID);
+ }
+}
+
+void ThemeSettingsTab::onExploreStyles()
+{
+ QString ssPath = QCoreApplication::applicationDirPath() + "/" + ToQString(AppConfig::stylesheetsPath());
+ shell::Explore(ssPath);
+}
+