aboutsummaryrefslogtreecommitdiff
path: root/src/dialogs
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
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')
-rw-r--r--src/dialogs/certificatemanagementdialog.cpp34
-rw-r--r--src/dialogs/certificatemanagementdialog.hpp6
-rw-r--r--src/dialogs/certificatemanagementdialog.ui2
-rw-r--r--src/dialogs/certificateselectiondialog.cpp10
-rw-r--r--src/dialogs/newidentitiydialog.cpp2
-rw-r--r--src/dialogs/settingsdialog.cpp40
6 files changed, 60 insertions, 34 deletions
diff --git a/src/dialogs/certificatemanagementdialog.cpp b/src/dialogs/certificatemanagementdialog.cpp
index 5141b30..1ed78dd 100644
--- a/src/dialogs/certificatemanagementdialog.cpp
+++ b/src/dialogs/certificatemanagementdialog.cpp
@@ -17,7 +17,7 @@ CertificateManagementDialog::CertificateManagementDialog(QWidget *parent) :
{
ui->setupUi(this);
- this->ui->certificates->setModel(&global_identities);
+ this->ui->certificates->setModel(&identity_set);
this->ui->certificates->expandAll();
connect(
@@ -34,11 +34,23 @@ CertificateManagementDialog::~CertificateManagementDialog()
delete ui;
}
+IdentityCollection CertificateManagementDialog::identitySet() const
+{
+ return this->identity_set;
+}
+
+void CertificateManagementDialog::setIdentitySet(const IdentityCollection &src)
+{
+ this->identity_set = src;
+ this->ui->certificates->expandAll();
+
+}
+
void CertificateManagementDialog::on_certificates_selected(QModelIndex const& index, QModelIndex const & previous)
{
Q_UNUSED(previous);
- selected_identity = global_identities.getMutableIdentity(index);
+ selected_identity = identity_set.getMutableIdentity(index);
this->ui->export_cert_button->setEnabled(selected_identity != nullptr);
@@ -70,8 +82,8 @@ void CertificateManagementDialog::on_certificates_selected(QModelIndex const& in
this->ui->cert_host_filter->setText("");
this->ui->cert_auto_enable->setChecked(false);
- if(auto group_name = global_identities.group(index); not group_name.isEmpty()) {
- this->ui->delete_cert_button->setEnabled(global_identities.canDeleteGroup(group_name));
+ if(auto group_name = identity_set.group(index); not group_name.isEmpty()) {
+ this->ui->delete_cert_button->setEnabled(identity_set.canDeleteGroup(group_name));
} else {
this->ui->delete_cert_button->setEnabled(false);
}
@@ -97,7 +109,7 @@ void CertificateManagementDialog::on_delete_cert_button_clicked()
{
auto index = this->ui->certificates->currentIndex();
- if(global_identities.getMutableIdentity(index) != nullptr)
+ if(identity_set.getMutableIdentity(index) != nullptr)
{
auto answer = QMessageBox::question(
this,
@@ -108,11 +120,11 @@ void CertificateManagementDialog::on_delete_cert_button_clicked()
);
if(answer != QMessageBox::Yes)
return;
- if(not global_identities.destroyIdentity(index)) {
+ if(not identity_set.destroyIdentity(index)) {
QMessageBox::warning(this, "Kristall", "Could not destroy identity!");
}
}
- else if(auto group_name = global_identities.group(index); not group_name.isEmpty()) {
+ else if(auto group_name = identity_set.group(index); not group_name.isEmpty()) {
auto answer = QMessageBox::question(
this,
@@ -122,7 +134,7 @@ void CertificateManagementDialog::on_delete_cert_button_clicked()
if(answer != QMessageBox::Yes)
return;
- if(not global_identities.deleteGroup(group_name)) {
+ if(not identity_set.deleteGroup(group_name)) {
QMessageBox::warning(this, "Kristall", "Could not delete group!");
}
}
@@ -261,7 +273,7 @@ void CertificateManagementDialog::on_import_cert_button_clicked()
return;
}
- if(not global_identities.addCertificate(tr("Imported Certificates"), ident)) {
+ if(not identity_set.addCertificate(tr("Imported Certificates"), ident)) {
QMessageBox::warning(
this,
"Kristall",
@@ -274,7 +286,7 @@ void CertificateManagementDialog::on_create_cert_button_clicked()
{
NewIdentitiyDialog dialog { this };
- dialog.setGroupName(global_identities.group(this->ui->certificates->currentIndex()));
+ dialog.setGroupName(identity_set.group(this->ui->certificates->currentIndex()));
if(dialog.exec() != QDialog::Accepted)
return;
@@ -284,7 +296,7 @@ void CertificateManagementDialog::on_create_cert_button_clicked()
return;
id.is_persistent = true;
- global_identities.addCertificate(
+ identity_set.addCertificate(
dialog.groupName(),
id);
}
diff --git a/src/dialogs/certificatemanagementdialog.hpp b/src/dialogs/certificatemanagementdialog.hpp
index 0d7178a..23c07fa 100644
--- a/src/dialogs/certificatemanagementdialog.hpp
+++ b/src/dialogs/certificatemanagementdialog.hpp
@@ -4,6 +4,7 @@
#include <QDialog>
#include "cryptoidentity.hpp"
+#include "identitycollection.hpp"
namespace Ui {
class CertificateManagementDialog;
@@ -17,6 +18,9 @@ public:
explicit CertificateManagementDialog(QWidget *parent = nullptr);
~CertificateManagementDialog();
+ IdentityCollection identitySet() const;
+ void setIdentitySet(IdentityCollection const & src);
+
private slots:
void on_cert_notes_textChanged();
@@ -39,6 +43,8 @@ private:
private:
Ui::CertificateManagementDialog *ui;
+ IdentityCollection identity_set;
+
CryptoIdentity * selected_identity;
};
diff --git a/src/dialogs/certificatemanagementdialog.ui b/src/dialogs/certificatemanagementdialog.ui
index 8fe3f8b..596448f 100644
--- a/src/dialogs/certificatemanagementdialog.ui
+++ b/src/dialogs/certificatemanagementdialog.ui
@@ -255,7 +255,7 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
- <set>QDialogButtonBox::Ok</set>
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
diff --git a/src/dialogs/certificateselectiondialog.cpp b/src/dialogs/certificateselectiondialog.cpp
index f4dab38..4caf988 100644
--- a/src/dialogs/certificateselectiondialog.cpp
+++ b/src/dialogs/certificateselectiondialog.cpp
@@ -16,7 +16,7 @@ CertificateSelectionDialog::CertificateSelectionDialog(QWidget *parent) :
ui->setupUi(this);
this->ui->server_request->setVisible(false);
- this->ui->certificates->setModel(&global_identities);
+ this->ui->certificates->setModel(&kristall::identities);
this->ui->certificates->expandAll();
connect(this->ui->certificates->selectionModel(), &QItemSelectionModel::currentChanged, this, &CertificateSelectionDialog::on_currentChanged);
@@ -86,7 +86,7 @@ void CertificateSelectionDialog::on_currentChanged(const QModelIndex &current, c
{
Q_UNUSED(current)
Q_UNUSED(previous)
- auto id = global_identities.getIdentity(current);
+ auto id = kristall::identities.getIdentity(current);
this->ui->use_selected_cert->setEnabled(id.isValid());
}
@@ -103,7 +103,7 @@ void CertificateSelectionDialog::on_create_new_cert_clicked()
return;
id.is_persistent = true;
- global_identities.addCertificate(
+ kristall::identities.addCertificate(
dialog.groupName(),
id);
}
@@ -111,7 +111,7 @@ void CertificateSelectionDialog::on_create_new_cert_clicked()
void CertificateSelectionDialog::on_use_selected_cert_clicked()
{
auto sel = this->ui->certificates->selectionModel()->currentIndex();
- this->cryto_identity = global_identities.getIdentity(sel);
+ this->cryto_identity = kristall::identities.getIdentity(sel);
if(this->cryto_identity.isValid()) {
this->accept();
} else {
@@ -121,7 +121,7 @@ void CertificateSelectionDialog::on_use_selected_cert_clicked()
void CertificateSelectionDialog::on_certificates_doubleClicked(const QModelIndex &index)
{
- this->cryto_identity = global_identities.getIdentity(index);
+ this->cryto_identity = kristall::identities.getIdentity(index);
if(this->cryto_identity.isValid()) {
this->accept();
} else {
diff --git a/src/dialogs/newidentitiydialog.cpp b/src/dialogs/newidentitiydialog.cpp
index af2a97e..30e0cc6 100644
--- a/src/dialogs/newidentitiydialog.cpp
+++ b/src/dialogs/newidentitiydialog.cpp
@@ -19,7 +19,7 @@ NewIdentitiyDialog::NewIdentitiyDialog(QWidget *parent) :
ui->expiration_date->setTime(QTime(12, 00));
ui->group->clear();
- for(auto group_name : global_identities.groups())
+ for(auto group_name : kristall::identities.groups())
{
ui->group->addItem(group_name);
}
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()