diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2020-06-11 02:17:32 +0200 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2020-06-11 02:17:32 +0200 |
| commit | 2779c61e83491d1d798f3f494aa890e3f586245a (patch) | |
| tree | c09e6e77efd85465a331a65f5f8d73dd450d6b4f /src/certificateselectiondialog.cpp | |
| parent | ab3e5ad5f25862985c17ba557163a1902b54747f (diff) | |
| download | kristall-2779c61e83491d1d798f3f494aa890e3f586245a.tar.gz | |
Adds first draft of client certificate management.
Diffstat (limited to 'src/certificateselectiondialog.cpp')
| -rw-r--r-- | src/certificateselectiondialog.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/certificateselectiondialog.cpp b/src/certificateselectiondialog.cpp index 70dac42..e3aef35 100644 --- a/src/certificateselectiondialog.cpp +++ b/src/certificateselectiondialog.cpp @@ -2,6 +2,12 @@ #include "ui_certificateselectiondialog.h" #include "certificatehelper.hpp" +#include "kristall.hpp" +#include "newidentitiydialog.hpp" + + +#include <QDebug> +#include <QItemSelectionModel> CertificateSelectionDialog::CertificateSelectionDialog(QWidget *parent) : QDialog(parent), @@ -9,6 +15,11 @@ CertificateSelectionDialog::CertificateSelectionDialog(QWidget *parent) : { ui->setupUi(this); this->ui->server_request->setVisible(false); + + this->ui->certificates->setModel(&global_identities); + this->ui->certificates->expandAll(); + + connect(this->ui->certificates->selectionModel(), &QItemSelectionModel::currentChanged, this, &CertificateSelectionDialog::on_currentChanged); } CertificateSelectionDialog::~CertificateSelectionDialog() @@ -69,3 +80,38 @@ void CertificateSelectionDialog::acceptTemporaryWithTimeout(QDateTime timeout) this->accept(); } + +void CertificateSelectionDialog::on_currentChanged(const QModelIndex ¤t, const QModelIndex &previous) +{ + auto id = global_identities.getIdentity(current); + + this->ui->use_selected_cert->setEnabled(id.isValid()); +} + +void CertificateSelectionDialog::on_create_new_cert_clicked() +{ + NewIdentitiyDialog dialog { this }; + + if(dialog.exec() != QDialog::Accepted) + return; + + auto id = dialog.createIdentity(); + if(not id.isValid()) + return; + id.is_persistent = true; + + global_identities.addCertificate( + dialog.groupName(), + id); +} + +void CertificateSelectionDialog::on_use_selected_cert_clicked() +{ + auto sel = this->ui->certificates->selectionModel()->currentIndex(); + this->cryto_identity = global_identities.getIdentity(sel); + if(this->cryto_identity.isValid()) { + this->accept(); + } else { + qDebug() << "Tried to use an invalid identity when the button should not be enabled. This is a bug!"; + } +} |
