aboutsummaryrefslogtreecommitdiff
path: root/src/settingsdialog.cpp
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-09 11:00:01 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-09 11:00:01 +0200
commit661ddc244793102ee0720871c4edcd64f80bc744 (patch)
treeafda784b7669842663866653388c1931be24c0c7 /src/settingsdialog.cpp
parent976522e19566eaa30bd5cc4fe55730dd8a777bf8 (diff)
downloadkristall-661ddc244793102ee0720871c4edcd64f80bc744.tar.gz
Adds theme support:
Diffstat (limited to 'src/settingsdialog.cpp')
-rw-r--r--src/settingsdialog.cpp72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp
index 69c7280..c71225c 100644
--- a/src/settingsdialog.cpp
+++ b/src/settingsdialog.cpp
@@ -5,6 +5,7 @@
#include <QStyle>
#include <QSettings>
#include <QInputDialog>
+#include <QFileDialog>
#include <QMessageBox>
#include "kristall.hpp"
@@ -452,3 +453,74 @@ void SettingsDialog::on_SettingsDialog_accepted()
}
global_settings.endArray();
}
+
+void SettingsDialog::on_preset_import_clicked()
+{
+ QFileDialog dialog { this };
+ dialog.setAcceptMode(QFileDialog::AcceptOpen);
+ dialog.selectNameFilter("Kristall Theme (*.kthm)");
+
+ if(dialog.exec() !=QFileDialog::Accepted)
+ return;
+
+ QString fileName = dialog.selectedFiles().at(0);
+
+ QSettings import_settings { fileName, QSettings::IniFormat };
+
+ QString name;
+
+ name = import_settings.value("name").toString();
+
+ while(name.isEmpty())
+ {
+ QInputDialog dlg { this };
+ dlg.setInputMode(QInputDialog::TextInput);
+ dlg.setOkButtonText("Save");
+ dlg.setCancelButtonText("Cancel");
+ dlg.setLabelText("Imported preset has no name.\r\nPlease enter a name for the preset:");
+ if(dlg.exec() != QDialog::Accepted)
+ return;
+ name = dlg.textValue();
+ }
+
+ bool override = false;
+ if(this->predefined_styles.contains(name))
+ {
+ auto response = QMessageBox::question(this, "Kristall", QString("Do you want to override the style '%1'?").arg(name));
+ if(response != QMessageBox::Yes)
+ return;
+ override = true;
+ }
+
+ DocumentStyle style;
+ style.load(import_settings);
+
+ this->predefined_styles.insert(name, style);
+
+ if(not override)
+ {
+ this->ui->presets->addItem(name);
+ }
+}
+
+void SettingsDialog::on_preset_export_clicked()
+{
+ QString name = this->ui->presets->currentText();
+ if(name.isEmpty())
+ return;
+
+ QFileDialog dialog { this };
+ dialog.setAcceptMode(QFileDialog::AcceptSave);
+ dialog.selectNameFilter("Kristall Theme (*.kthm)");
+ dialog.selectFile(QString("%1.kthm").arg(name));
+
+ if(dialog.exec() !=QFileDialog::Accepted)
+ return;
+
+ QString fileName = dialog.selectedFiles().at(0);
+
+ QSettings export_settings { fileName, QSettings::IniFormat };
+ export_settings.setValue("name", name);
+ this->predefined_styles.value(name).save(export_settings);
+ export_settings.sync();
+}