aboutsummaryrefslogtreecommitdiff
path: root/src/certificateselectiondialog.cpp
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-11 02:17:32 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-11 02:17:32 +0200
commit2779c61e83491d1d798f3f494aa890e3f586245a (patch)
treec09e6e77efd85465a331a65f5f8d73dd450d6b4f /src/certificateselectiondialog.cpp
parentab3e5ad5f25862985c17ba557163a1902b54747f (diff)
downloadkristall-2779c61e83491d1d798f3f494aa890e3f586245a.tar.gz
Adds first draft of client certificate management.
Diffstat (limited to 'src/certificateselectiondialog.cpp')
-rw-r--r--src/certificateselectiondialog.cpp46
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 &current, 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!";
+ }
+}