aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/keypair_details/KeyPairSubkeyTab.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/ui/keypair_details/KeyPairSubkeyTab.cpp69
1 files changed, 56 insertions, 13 deletions
diff --git a/src/ui/keypair_details/KeyPairSubkeyTab.cpp b/src/ui/keypair_details/KeyPairSubkeyTab.cpp
index 75bd50f5..b47013ed 100644
--- a/src/ui/keypair_details/KeyPairSubkeyTab.cpp
+++ b/src/ui/keypair_details/KeyPairSubkeyTab.cpp
@@ -27,6 +27,7 @@
KeyPairSubkeyTab::KeyPairSubkeyTab(GpgME::GpgContext *ctx, const GpgKey &key, QWidget *parent) : mCtx(ctx), mKey(key), QWidget(parent) {
createSubkeyList();
+ createSubkeyOperaMenu();
listBox = new QGroupBox("Subkey List");
detailBox = new QGroupBox("Detail of Selected Subkey");
@@ -55,6 +56,7 @@ KeyPairSubkeyTab::KeyPairSubkeyTab(GpgME::GpgContext *ctx, const GpgKey &key, QW
subkeyDetailLayout->addWidget(new QLabel(tr("Usage: ")), 3, 0);
subkeyDetailLayout->addWidget(new QLabel(tr("Expires on: ")), 4, 0);
subkeyDetailLayout->addWidget(new QLabel(tr("Last Update: ")), 5, 0);
+ subkeyDetailLayout->addWidget(new QLabel(tr("Existence: ")), 6, 0);
keyidVarLabel = new QLabel();
keySizeVarLabel = new QLabel();
@@ -62,6 +64,7 @@ KeyPairSubkeyTab::KeyPairSubkeyTab(GpgME::GpgContext *ctx, const GpgKey &key, QW
algorithmVarLabel = new QLabel();
createdVarLabel = new QLabel();
usageVarLabel = new QLabel();
+ masterKeyExistVarLabel = new QLabel();
subkeyDetailLayout->addWidget(keyidVarLabel, 0, 1);
subkeyDetailLayout->addWidget(keySizeVarLabel, 2, 1);
@@ -69,6 +72,7 @@ KeyPairSubkeyTab::KeyPairSubkeyTab(GpgME::GpgContext *ctx, const GpgKey &key, QW
subkeyDetailLayout->addWidget(algorithmVarLabel, 1, 1);
subkeyDetailLayout->addWidget(createdVarLabel, 5, 1);
subkeyDetailLayout->addWidget(usageVarLabel, 3, 1);
+ subkeyDetailLayout->addWidget(masterKeyExistVarLabel, 6, 1);
listBox->setLayout(subkeyListLayout);
detailBox->setLayout(subkeyDetailLayout);
@@ -165,18 +169,22 @@ void KeyPairSubkeyTab::slotAddSubkey() {
void KeyPairSubkeyTab::slotRefreshSubkeyDetail() {
- int row = 0;
-
- for(int i = 0 ; i < subkeyList->rowCount(); i++) {
- if(subkeyList->item(row, 0)->isSelected()) break;
- row++;
- }
-
- auto key = buffered_subkeys[row];
+ auto key = getSelectedSubkey();
keyidVarLabel->setText(key->id);
keySizeVarLabel->setText(QString::number(key->length));
- expireVarLabel->setText(key->expires.toTime_t() == 0 ? tr("Never Expire") : key->expires.toString());
+
+ expireVarLabel->setText(key->expires.toTime_t() == 0 ? tr("Never Expires") : key->expires.toString());
+ if(key->expires.toTime_t() != 0 && key->expires < QDateTime::currentDateTime()) {
+ auto paletteExpired = expireVarLabel->palette();
+ paletteExpired.setColor(expireVarLabel->foregroundRole(), Qt::red);
+ expireVarLabel->setPalette(paletteExpired);
+ } else {
+ auto paletteValid = expireVarLabel->palette();
+ paletteValid.setColor(expireVarLabel->foregroundRole(), Qt::darkGreen);
+ expireVarLabel->setPalette(paletteValid);
+ }
+
algorithmVarLabel->setText(key->pubkey_algo);
createdVarLabel->setText(key->timestamp.toString());
@@ -193,21 +201,56 @@ void KeyPairSubkeyTab::slotRefreshSubkeyDetail() {
usage_steam << "Auth ";
usageVarLabel->setText(usage);
+
+ // Show the situation that master key not exists.
+ masterKeyExistVarLabel->setText(key->secret ? "Exists" : "Not Exists");
+ if(!key->secret){
+ auto paletteExpired = masterKeyExistVarLabel->palette();
+ paletteExpired.setColor(masterKeyExistVarLabel->foregroundRole(), Qt::red);
+ masterKeyExistVarLabel->setPalette(paletteExpired);
+ } else {
+ auto paletteValid = masterKeyExistVarLabel->palette();
+ paletteValid.setColor(masterKeyExistVarLabel->foregroundRole(), Qt::darkGreen);
+ masterKeyExistVarLabel->setPalette(paletteValid);
+ }
}
void KeyPairSubkeyTab::createSubkeyOperaMenu() {
subkeyOperaMenu = new QMenu();
- auto *revokeSubkeyAct = new QAction(tr("Revoke Subkey"));
- auto *editSubkeyAct = new QAction(tr("Edit Subkey"));
+ // auto *revokeSubkeyAct = new QAction(tr("Revoke Subkey"));
+ auto *editSubkeyAct = new QAction(tr("Edit Expire Date"));
+ connect(editSubkeyAct, SIGNAL(triggered(bool)), this, SLOT(slotEditSubkey()));
- subkeyOperaMenu->addAction(revokeSubkeyAct);
+ // subkeyOperaMenu->addAction(revokeSubkeyAct);
subkeyOperaMenu->addAction(editSubkeyAct);
}
void KeyPairSubkeyTab::slotEditSubkey() {
-
+ auto *subkey = getSelectedSubkey();
+ if(subkey == buffered_subkeys[0]) {
+ subkey = nullptr;
+ }
+ auto dialog = new KeySetExpireDateDialog(mCtx, mKey, subkey, this);
+ dialog->show();
}
void KeyPairSubkeyTab::slotRevokeSubkey() {
}
+
+void KeyPairSubkeyTab::contextMenuEvent(QContextMenuEvent *event) {
+ if (subkeyList->selectedItems().length() > 0) {
+ subkeyOperaMenu->exec(event->globalPos());
+ }
+}
+
+const GpgSubKey *KeyPairSubkeyTab::getSelectedSubkey() {
+ int row = 0;
+
+ for(int i = 0 ; i < subkeyList->rowCount(); i++) {
+ if(subkeyList->item(row, 0)->isSelected()) break;
+ row++;
+ }
+
+ return buffered_subkeys[row];
+}