diff options
| author | Mikaƫl Capelle <capelle.mikael@gmail.com> | 2021-01-30 18:21:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-30 18:21:56 +0100 |
| commit | 3b360162e1d16f0f54e4163a16efe56fb50152c7 (patch) | |
| tree | 7c4184886251cf91ac0a6ad18d4a6641e6535b07 /src/settingsdialogtheme.cpp | |
| parent | f53e5406d4292f484257178ec5733f6ceb116673 (diff) | |
| parent | 76989e2b8f6dc3cea2c2e90813feb86af2ecad14 (diff) | |
Merge pull request #1386 from Holt59/update-settings-dialog
Update settings dialog.
Diffstat (limited to 'src/settingsdialogtheme.cpp')
| -rw-r--r-- | src/settingsdialogtheme.cpp | 82 |
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); +} + |
