summaryrefslogtreecommitdiff
path: root/src/settingsdialogtheme.cpp
diff options
context:
space:
mode:
authorMikaƫl Capelle <capelle.mikael@gmail.com>2021-01-30 18:21:56 +0100
committerGitHub <noreply@github.com>2021-01-30 18:21:56 +0100
commit3b360162e1d16f0f54e4163a16efe56fb50152c7 (patch)
tree7c4184886251cf91ac0a6ad18d4a6641e6535b07 /src/settingsdialogtheme.cpp
parentf53e5406d4292f484257178ec5733f6ceb116673 (diff)
parent76989e2b8f6dc3cea2c2e90813feb86af2ecad14 (diff)
Merge pull request #1386 from Holt59/update-settings-dialog
Update settings dialog.
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);
+}
+