aboutsummaryrefslogtreecommitdiff
path: root/src/dialogs/settingsdialog.cpp
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-28 16:30:52 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-28 16:30:52 +0200
commit6edd9e7a12a3827fb6aac62a88be01085e41e176 (patch)
tree4513475c7efaea92a154ff20e970ed3d4b475b7c /src/dialogs/settingsdialog.cpp
parenta53e490d2e96d22a24293019921af26e00f2bf7a (diff)
downloadkristall-6edd9e7a12a3827fb6aac62a88be01085e41e176.tar.gz
Huge refacoring of the settings stuff. Provides automated migration between old and new configuration file stuff. Themes are now just files in a folder instead of encoded data in the config file.
Diffstat (limited to 'src/dialogs/settingsdialog.cpp')
-rw-r--r--src/dialogs/settingsdialog.cpp40
1 files changed, 24 insertions, 16 deletions
diff --git a/src/dialogs/settingsdialog.cpp b/src/dialogs/settingsdialog.cpp
index ebd1664..980957c 100644
--- a/src/dialogs/settingsdialog.cpp
+++ b/src/dialogs/settingsdialog.cpp
@@ -36,30 +36,29 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
setGeminiStyle(DocumentStyle { });
- int items = global_settings.beginReadArray("Themes");
-
this->predefined_styles.clear();
- for(int i = 0; i < items; i++)
+ for(auto const & fileName : kristall::dirs::styles.entryList())
{
- global_settings.setArrayIndex(i);
+ QSettings style_sheet {
+ kristall::dirs::styles.absoluteFilePath(fileName),
+ QSettings::IniFormat
+ };
- QString name = global_settings.value("name").toString();
+ QString name = style_sheet.value("name").toString();
DocumentStyle style;
- style.load(global_settings);
+ style.load(style_sheet);
this->predefined_styles.insert(name, style);
}
- global_settings.endArray();
-
this->ui->presets->clear();
for(auto const & style_name : this->predefined_styles.keys())
{
this->ui->presets->addItem(style_name);
}
- if(items > 0) {
+ if(this->predefined_styles.size() > 0) {
on_presets_currentIndexChanged(0);
} else {
this->on_presets_currentIndexChanged(-1);
@@ -461,19 +460,28 @@ void SettingsDialog::on_preset_load_clicked()
void SettingsDialog::on_SettingsDialog_accepted()
{
- global_settings.beginWriteArray("Themes", this->predefined_styles.size());
+ QStringList files = kristall::dirs::styles.entryList();
- int index = 0;
for(auto const & style_name : this->predefined_styles.keys())
{
- global_settings.setArrayIndex(index);
+ QString fileName = DocumentStyle::createFileNameFromName(style_name, 0);
+ files.removeAll(fileName);
+
+ QSettings style_sheet {
+ kristall::dirs::styles.absoluteFilePath(fileName),
+ QSettings::IniFormat
+ };
- global_settings.setValue("name", style_name);
- this->predefined_styles.value(style_name).save(global_settings);
+ style_sheet.setValue("name", style_name);
+ this->predefined_styles.value(style_name).save(style_sheet);
- index += 1;
+ style_sheet.sync();
+ }
+
+ for(auto const & fileName : files)
+ {
+ kristall::dirs::styles.remove(fileName);
}
- global_settings.endArray();
}
void SettingsDialog::on_preset_import_clicked()