aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/keypair_details/KeyPairUIDTab.cpp
diff options
context:
space:
mode:
authorSaturneric <[email protected]>2021-05-22 05:40:29 +0000
committerSaturneric <[email protected]>2021-05-22 05:40:29 +0000
commitdca700701e034a4862361645030de79e1dfc33e0 (patch)
tree4e2d483d3908be6edaff23320fe633e7255d1c06 /src/ui/keypair_details/KeyPairUIDTab.cpp
parentpopupMenu now Exec When mKeyList HAS item(s) Selected. (diff)
downloadGpgFrontend-dca700701e034a4862361645030de79e1dfc33e0.tar.gz
GpgFrontend-dca700701e034a4862361645030de79e1dfc33e0.zip
Expand and improve GpgKey;
Modify project structure, separate KeyPairDetail from other ui files; Add New Tab and Write the Code for KeyPair Details Dialog; Signed-off-by: Saturneric <[email protected]>
Diffstat (limited to 'src/ui/keypair_details/KeyPairUIDTab.cpp')
-rw-r--r--src/ui/keypair_details/KeyPairUIDTab.cpp144
1 files changed, 144 insertions, 0 deletions
diff --git a/src/ui/keypair_details/KeyPairUIDTab.cpp b/src/ui/keypair_details/KeyPairUIDTab.cpp
new file mode 100644
index 00000000..e0128b55
--- /dev/null
+++ b/src/ui/keypair_details/KeyPairUIDTab.cpp
@@ -0,0 +1,144 @@
+//
+// Created by eric on 2021/5/22.
+//
+
+#include "ui/keypair_details/KeyPairUIDTab.h"
+
+KeyPairUIDTab::KeyPairUIDTab(GpgME::GpgContext *ctx, const GpgKey &key, QWidget *parent) : QWidget(parent), key(key) {
+
+ mCtx = ctx;
+
+ createUIDList();
+ createSignList();
+
+ auto uidButtonsLayout = new QGridLayout();
+
+ auto addUIDButton = new QPushButton(tr("New UID"));
+ auto manageUIDButton = new QPushButton(tr("Manage UID"));
+
+ uidButtonsLayout->addWidget(addUIDButton, 0, 1);
+ uidButtonsLayout->addWidget(manageUIDButton, 0, 2);
+
+
+ auto sigButtonsLayout = new QGridLayout();
+
+ auto addSigButton = new QPushButton("New Signature");
+ auto manageSigButton = new QPushButton(tr("Manage Signature"));
+
+ sigButtonsLayout->addWidget(addSigButton, 0, 1);
+ sigButtonsLayout->addWidget(manageSigButton, 0, 2);
+
+ auto gridLayout = new QGridLayout();
+ gridLayout->addWidget(uidList, 0, 0);
+ gridLayout->addLayout(uidButtonsLayout, 1, 0);
+
+ gridLayout->addWidget(sigList, 2, 0);
+ gridLayout->addLayout(sigButtonsLayout, 3, 0);
+
+ setLayout(gridLayout);
+
+ connect(mCtx, SIGNAL(signalKeyDBChanged()), this, SLOT(slotRefreshUIDList()));
+ connect(mCtx, SIGNAL(signalKeyDBChanged()), this, SLOT(slotRefreshSigList()));
+
+ slotRefreshUIDList();
+ slotRefreshSigList();
+}
+
+void KeyPairUIDTab::createUIDList() {
+ uidList = new QTableWidget(this);
+ uidList->setColumnCount(3);
+ uidList->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
+ uidList->verticalHeader()->hide();
+ uidList->setShowGrid(false);
+ uidList->setSelectionBehavior(QAbstractItemView::SelectRows);
+
+ // tableitems not editable
+ uidList->setEditTriggers(QAbstractItemView::NoEditTriggers);
+
+ // no focus (rectangle around tableitems)
+ // may be it should focus on whole row
+ uidList->setFocusPolicy(Qt::NoFocus);
+ uidList->setAlternatingRowColors(true);
+
+ QStringList labels;
+ labels << tr("Name") << tr("Email") << tr("Comment");
+ uidList->setHorizontalHeaderLabels(labels);
+ uidList->horizontalHeader()->setStretchLastSection(true);
+}
+
+void KeyPairUIDTab::createSignList() {
+ sigList = new QTableWidget(this);
+ sigList->setColumnCount(5);
+ sigList->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
+ sigList->verticalHeader()->hide();
+ sigList->setShowGrid(false);
+ sigList->setSelectionBehavior(QAbstractItemView::SelectRows);
+
+ // tableitems not editable
+ sigList->setEditTriggers(QAbstractItemView::NoEditTriggers);
+
+ // no focus (rectangle around tableitems)
+ // may be it should focus on whole row
+ sigList->setFocusPolicy(Qt::NoFocus);
+ sigList->setAlternatingRowColors(true);
+
+ QStringList labels;
+ labels << tr("Type") << tr("Name") << tr("Pubkey Id") << tr("Create Time") << tr("Valid Time");
+ sigList->setHorizontalHeaderLabels(labels);
+ sigList->horizontalHeader()->setStretchLastSection(true);
+}
+
+void KeyPairUIDTab::slotRefreshUIDList() {
+ int row = 0;
+
+ uidList->clearContents();
+ uidList->setRowCount(key.uids.size());
+
+ for(const auto& uid : key.uids) {
+ auto *tmp0 = new QTableWidgetItem(uid.name);
+ uidList->setItem(row, 0, tmp0);
+
+ auto *tmp1 = new QTableWidgetItem(uid.email);
+ uidList->setItem(row, 1, tmp1);
+
+ auto *tmp2 = new QTableWidgetItem(uid.comment);
+ uidList->setItem(row, 2, tmp2);
+
+ row++;
+ }
+
+
+}
+
+void KeyPairUIDTab::slotRefreshSigList() {
+ int row = 0;
+
+ sigList->clearContents();
+
+ for(const auto& uid : key.uids) {
+ row += uid.signatures.size();
+ }
+ sigList->setRowCount(row);
+
+ row = 0;
+ for(const auto& uid : key.uids) {
+ for(const auto &sig : uid.signatures) {
+ auto *tmp0 = new QTableWidgetItem(sig.pubkey_algo);
+ uidList->setItem(row, 0, tmp0);
+
+ auto *tmp1 = new QTableWidgetItem(sig.name);
+ uidList->setItem(row, 1, tmp1);
+
+ auto *tmp2 = new QTableWidgetItem(sig.uid);
+ uidList->setItem(row, 2, tmp2);
+
+ auto *tmp3 = new QTableWidgetItem(sig.create_time.toString());
+ uidList->setItem(row, 3, tmp3);
+
+ auto *tmp4 = new QTableWidgetItem(sig.expire_time.toString());
+ uidList->setItem(row, 4, tmp4);
+
+ row++;
+ }
+ }
+}