diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2020-06-28 16:30:52 +0200 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2020-06-28 16:30:52 +0200 |
| commit | 6edd9e7a12a3827fb6aac62a88be01085e41e176 (patch) | |
| tree | 4513475c7efaea92a154ff20e970ed3d4b475b7c /src/dialogs/settingsdialog.cpp | |
| parent | a53e490d2e96d22a24293019921af26e00f2bf7a (diff) | |
| download | kristall-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.cpp | 40 |
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() |
