aboutsummaryrefslogtreecommitdiff
path: root/src
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
parent976522e19566eaa30bd5cc4fe55730dd8a777bf8 (diff)
downloadkristall-661ddc244793102ee0720871c4edcd64f80bc744.tar.gz
Adds theme support:
Diffstat (limited to 'src')
-rw-r--r--src/settingsdialog.cpp72
-rw-r--r--src/settingsdialog.hpp4
-rw-r--r--src/settingsdialog.ui6
3 files changed, 79 insertions, 3 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();
+}
diff --git a/src/settingsdialog.hpp b/src/settingsdialog.hpp
index c3350d5..475d5b0 100644
--- a/src/settingsdialog.hpp
+++ b/src/settingsdialog.hpp
@@ -85,6 +85,10 @@ private slots:
void on_preset_load_clicked();
+ void on_preset_import_clicked();
+
+ void on_preset_export_clicked();
+
private:
void reloadStylePreview();
diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui
index 1089f05..02cccee 100644
--- a/src/settingsdialog.ui
+++ b/src/settingsdialog.ui
@@ -17,7 +17,7 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
- <number>1</number>
+ <number>0</number>
</property>
<widget class="QWidget" name="generic">
<attribute name="title">
@@ -720,7 +720,7 @@
<item>
<widget class="QLabel" name="quote_preview">
<property name="text">
- <string> </string>
+ <string/>
</property>
</widget>
</item>
@@ -811,8 +811,8 @@
</connection>
</connections>
<buttongroups>
- <buttongroup name="textRenderingBtnGroup"/>
<buttongroup name="textHighlightsBtnGroup"/>
+ <buttongroup name="textRenderingBtnGroup"/>
<buttongroup name="gophermapBtnGroup"/>
</buttongroups>
</ui>