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 | |
| 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')
| -rw-r--r-- | src/dialogs/certificatemanagementdialog.cpp | 34 | ||||
| -rw-r--r-- | src/dialogs/certificatemanagementdialog.hpp | 6 | ||||
| -rw-r--r-- | src/dialogs/certificatemanagementdialog.ui | 2 | ||||
| -rw-r--r-- | src/dialogs/certificateselectiondialog.cpp | 10 | ||||
| -rw-r--r-- | src/dialogs/newidentitiydialog.cpp | 2 | ||||
| -rw-r--r-- | src/dialogs/settingsdialog.cpp | 40 |
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 ¤t, 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() |
