#include "pageappearance.h" #include "ui_pageappearance.h" #include #include #include static const QStringList filters = {"*.colors"}; PageAppearance::PageAppearance(QWidget* parent): QWidget(parent), m_ui(new Ui::PageAppearance()), styles() { m_ui->setupUi(this); m_ui->themeInput->addItem(tr("System")); styles.push_back("system"); QStringList themes = QStyleFactory::keys(); for (const QString& key : themes) { m_ui->themeInput->addItem(key); styles.push_back(key); } QSettings settings; QVariant vtheme = settings.value("theme"); if (vtheme.isValid()) { QString theme = vtheme.toString(); m_ui->themeInput->setCurrentText(theme); } else { m_ui->themeInput->setCurrentText("System"); } connect(m_ui->themeInput, qOverload(&QComboBox::currentIndexChanged), this, &PageAppearance::onThemeChanged); m_ui->colorInput->addItem(tr("System")); const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "color-schemes", QStandardPaths::LocateDirectory); QStringList schemeFiles; for (const QString &dir : dirs) { const QStringList fileNames = QDir(dir).entryList(filters); for (const QString &file : fileNames) { m_ui->colorInput->addItem(dir + QDir::separator() + file); } } } PageAppearance::~PageAppearance() { } void PageAppearance::onThemeChanged(int index) { if (index >= 0) { emit variableModified("theme", styles[index]); } }