blob: 75bcdb5980438c6ffc7baae86dbcc73d00a04a3b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#include "settingsdialogtheme.h"
#include "categoriesdialog.h"
#include "colortable.h"
#include "modlist.h"
#include "shared/appconfig.h"
#include "ui_settingsdialog.h"
#include <questionboxmemory.h>
#include <utility.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);
}
|