diff options
Diffstat (limited to 'src/ui/dialog/keypair_details/KeyPairSubkeyTab.cpp')
-rw-r--r-- | src/ui/dialog/keypair_details/KeyPairSubkeyTab.cpp | 241 |
1 files changed, 110 insertions, 131 deletions
diff --git a/src/ui/dialog/keypair_details/KeyPairSubkeyTab.cpp b/src/ui/dialog/keypair_details/KeyPairSubkeyTab.cpp index 9c243a39..3f973fae 100644 --- a/src/ui/dialog/keypair_details/KeyPairSubkeyTab.cpp +++ b/src/ui/dialog/keypair_details/KeyPairSubkeyTab.cpp @@ -1,5 +1,5 @@ /** - * Copyright (C) 2021 Saturneric + * Copyright (C) 2021 Saturneric <[email protected]> * * This file is part of GpgFrontend. * @@ -20,7 +20,7 @@ * the gpg4usb project, which is under GPL-3.0-or-later. * * All the source code of GpgFrontend was modified and released by - * Saturneric<[email protected]> starting on May 12, 2021. + * Saturneric <[email protected]> starting on May 12, 2021. * * SPDX-License-Identifier: GPL-3.0-or-later * @@ -28,57 +28,52 @@ #include "KeyPairSubkeyTab.h" +#include "core/GpgModel.h" #include "core/function/gpg/GpgKeyGetter.h" -#include "ui/SignalStation.h" +#include "core/utils/CommonUtils.h" +#include "ui/UISignalStation.h" namespace GpgFrontend::UI { -KeyPairSubkeyTab::KeyPairSubkeyTab(const std::string& key_id, QWidget* parent) +KeyPairSubkeyTab::KeyPairSubkeyTab(const QString& key_id, QWidget* parent) : QWidget(parent), key_(GpgKeyGetter::GetInstance().GetKey(key_id)) { - SPDLOG_DEBUG(key_.GetEmail(), key_.IsPrivateKey(), key_.IsHasMasterKey(), - key_.GetSubKeys()->front().IsPrivateKey()); - create_subkey_list(); create_subkey_opera_menu(); - list_box_ = new QGroupBox(_("Subkey List")); - detail_box_ = new QGroupBox(_("Detail of Selected Subkey")); + list_box_ = new QGroupBox(tr("Subkey List")); + detail_box_ = new QGroupBox(tr("Detail of Selected Subkey")); - auto uidButtonsLayout = new QGridLayout(); + auto* uid_buttons_layout = new QGridLayout(); - auto addSubkeyButton = new QPushButton(_("Generate A New Subkey")); + auto* add_subkey_button = new QPushButton(tr("Generate A New Subkey")); if (!key_.IsPrivateKey() || !key_.IsHasMasterKey()) { - addSubkeyButton->setDisabled(true); - setHidden(addSubkeyButton); + add_subkey_button->setDisabled(true); + setHidden(add_subkey_button); } - uidButtonsLayout->addWidget(addSubkeyButton, 0, 1); - - auto* baseLayout = new QVBoxLayout(); - - auto subkeyListLayout = new QGridLayout(); - subkeyListLayout->addWidget(subkey_list_, 0, 0); - subkeyListLayout->addLayout(uidButtonsLayout, 1, 0); - subkeyListLayout->setContentsMargins(0, 10, 0, 0); - - auto* subkeyDetailLayout = new QGridLayout(); - - subkeyDetailLayout->addWidget(new QLabel(QString(_("Key ID")) + ": "), 0, 0); - subkeyDetailLayout->addWidget(new QLabel(QString(_("Algorithm")) + ": "), 1, - 0); - subkeyDetailLayout->addWidget(new QLabel(QString(_("Key Size")) + ": "), 2, - 0); - subkeyDetailLayout->addWidget(new QLabel(QString(_("Usage")) + ": "), 3, 0); - subkeyDetailLayout->addWidget( - new QLabel(QString(_("Expires On (Local Time)")) + ": "), 4, 0); - subkeyDetailLayout->addWidget( - new QLabel(QString(_("Create Date (Local Time)")) + ": "), 5, 0); - subkeyDetailLayout->addWidget(new QLabel(QString(_("Existence")) + ": "), 6, - 0); - subkeyDetailLayout->addWidget( - new QLabel(QString(_("Key in Smart Card")) + ": "), 7, 0); - subkeyDetailLayout->addWidget(new QLabel(QString(_("Fingerprint")) + ": "), 8, - 0); + uid_buttons_layout->addWidget(add_subkey_button, 0, 1); + + auto* base_layout = new QVBoxLayout(); + + auto* subkey_list_layout = new QGridLayout(); + subkey_list_layout->addWidget(subkey_list_, 0, 0); + subkey_list_layout->addLayout(uid_buttons_layout, 1, 0); + subkey_list_layout->setContentsMargins(0, 10, 0, 0); + + auto* subkey_detail_layout = new QGridLayout(); + + subkey_detail_layout->addWidget(new QLabel(tr("Key ID") + ": "), 0, 0); + subkey_detail_layout->addWidget(new QLabel(tr("Algorithm") + ": "), 1, 0); + subkey_detail_layout->addWidget(new QLabel(tr("Key Size") + ": "), 2, 0); + subkey_detail_layout->addWidget(new QLabel(tr("Usage") + ": "), 3, 0); + subkey_detail_layout->addWidget( + new QLabel(tr("Expires On (Local Time)") + ": "), 4, 0); + subkey_detail_layout->addWidget( + new QLabel(tr("Create Date (Local Time)") + ": "), 5, 0); + subkey_detail_layout->addWidget(new QLabel(tr("Existence") + ": "), 6, 0); + subkey_detail_layout->addWidget(new QLabel(tr("Key in Smart Card") + ": "), 7, + 0); + subkey_detail_layout->addWidget(new QLabel(tr("Fingerprint") + ": "), 8, 0); key_id_var_label_ = new QLabel(this); key_size_var_label_ = new QLabel(this); @@ -90,49 +85,49 @@ KeyPairSubkeyTab::KeyPairSubkeyTab(const std::string& key_id, QWidget* parent) fingerprint_var_label_ = new QLabel(this); card_key_label_ = new QLabel(this); - subkeyDetailLayout->addWidget(key_id_var_label_, 0, 1, 1, 1); - subkeyDetailLayout->addWidget(key_size_var_label_, 2, 1, 1, 2); - subkeyDetailLayout->addWidget(expire_var_label_, 4, 1, 1, 2); - subkeyDetailLayout->addWidget(algorithm_var_label_, 1, 1, 1, 2); - subkeyDetailLayout->addWidget(created_var_label_, 5, 1, 1, 2); - subkeyDetailLayout->addWidget(usage_var_label_, 3, 1, 1, 2); - subkeyDetailLayout->addWidget(master_key_exist_var_label_, 6, 1, 1, 2); - subkeyDetailLayout->addWidget(card_key_label_, 7, 1, 1, 2); - subkeyDetailLayout->addWidget(fingerprint_var_label_, 8, 1, 1, 2); - - auto* copyKeyIdButton = new QPushButton(_("Copy")); - copyKeyIdButton->setFlat(true); - subkeyDetailLayout->addWidget(copyKeyIdButton, 0, 2); - connect(copyKeyIdButton, &QPushButton::clicked, this, [=]() { + subkey_detail_layout->addWidget(key_id_var_label_, 0, 1, 1, 1); + subkey_detail_layout->addWidget(key_size_var_label_, 2, 1, 1, 2); + subkey_detail_layout->addWidget(expire_var_label_, 4, 1, 1, 2); + subkey_detail_layout->addWidget(algorithm_var_label_, 1, 1, 1, 2); + subkey_detail_layout->addWidget(created_var_label_, 5, 1, 1, 2); + subkey_detail_layout->addWidget(usage_var_label_, 3, 1, 1, 2); + subkey_detail_layout->addWidget(master_key_exist_var_label_, 6, 1, 1, 2); + subkey_detail_layout->addWidget(card_key_label_, 7, 1, 1, 2); + subkey_detail_layout->addWidget(fingerprint_var_label_, 8, 1, 1, 2); + + auto* copy_key_id_button = new QPushButton(tr("Copy")); + copy_key_id_button->setFlat(true); + subkey_detail_layout->addWidget(copy_key_id_button, 0, 2); + connect(copy_key_id_button, &QPushButton::clicked, this, [=]() { QString fpr = key_id_var_label_->text().trimmed(); QClipboard* cb = QApplication::clipboard(); cb->setText(fpr); }); - list_box_->setLayout(subkeyListLayout); + list_box_->setLayout(subkey_list_layout); list_box_->setContentsMargins(0, 12, 0, 0); - detail_box_->setLayout(subkeyDetailLayout); + detail_box_->setLayout(subkey_detail_layout); - baseLayout->addWidget(list_box_); - baseLayout->addWidget(detail_box_); - baseLayout->addStretch(); + base_layout->addWidget(list_box_); + base_layout->addWidget(detail_box_); + base_layout->addStretch(); - connect(addSubkeyButton, &QPushButton::clicked, this, + connect(add_subkey_button, &QPushButton::clicked, this, &KeyPairSubkeyTab::slot_add_subkey); connect(subkey_list_, &QTableWidget::itemSelectionChanged, this, &KeyPairSubkeyTab::slot_refresh_subkey_detail); // key database refresh signal - connect(SignalStation::GetInstance(), - &SignalStation::SignalKeyDatabaseRefreshDone, this, + connect(UISignalStation::GetInstance(), + &UISignalStation::SignalKeyDatabaseRefreshDone, this, &KeyPairSubkeyTab::slot_refresh_key_info); - connect(SignalStation::GetInstance(), - &SignalStation::SignalKeyDatabaseRefreshDone, this, + connect(UISignalStation::GetInstance(), + &UISignalStation::SignalKeyDatabaseRefreshDone, this, &KeyPairSubkeyTab::slot_refresh_subkey_list); - baseLayout->setContentsMargins(0, 0, 0, 0); + base_layout->setContentsMargins(0, 0, 0, 0); - setLayout(baseLayout); + setLayout(base_layout); setAttribute(Qt::WA_DeleteOnClose, true); slot_refresh_subkey_list(); @@ -157,8 +152,8 @@ void KeyPairSubkeyTab::create_subkey_list() { subkey_list_->setAlternatingRowColors(true); QStringList labels; - labels << _("Subkey ID") << _("Key Size") << _("Algo") - << _("Create Date (UTC)") << _("Expire Date (UTC)"); + labels << tr("Subkey ID") << tr("Key Size") << tr("Algo") << tr("Create Date") + << tr("Expire Date"); subkey_list_->setHorizontalHeaderLabels(labels); subkey_list_->horizontalHeader()->setStretchLastSection(false); @@ -176,13 +171,13 @@ void KeyPairSubkeyTab::slot_refresh_subkey_list() { this->buffered_subkeys_.push_back(std::move(sub_key)); } - SPDLOG_DEBUG("buffered_subkeys_ refreshed size", - this->buffered_subkeys_.size()); + GF_UI_LOG_DEBUG("buffered_subkeys_ refreshed size", + this->buffered_subkeys_.size()); subkey_list_->setRowCount(buffered_subkeys_.size()); for (const auto& subkeys : buffered_subkeys_) { - auto* tmp0 = new QTableWidgetItem(QString::fromStdString(subkeys.GetID())); + auto* tmp0 = new QTableWidgetItem(subkeys.GetID()); tmp0->setTextAlignment(Qt::AlignCenter); subkey_list_->setItem(row, 0, tmp0); @@ -190,21 +185,18 @@ void KeyPairSubkeyTab::slot_refresh_subkey_list() { tmp1->setTextAlignment(Qt::AlignCenter); subkey_list_->setItem(row, 1, tmp1); - auto* tmp2 = - new QTableWidgetItem(QString::fromStdString(subkeys.GetPubkeyAlgo())); + auto* tmp2 = new QTableWidgetItem(subkeys.GetPubkeyAlgo()); tmp2->setTextAlignment(Qt::AlignCenter); subkey_list_->setItem(row, 2, tmp2); - auto* tmp3 = new QTableWidgetItem( - QString::fromStdString(to_iso_string(subkeys.GetCreateTime()))); + auto* tmp3 = new QTableWidgetItem(subkeys.GetCreateTime().toString()); tmp3->setTextAlignment(Qt::AlignCenter); subkey_list_->setItem(row, 3, tmp3); - auto* tmp4 = new QTableWidgetItem( - boost::posix_time::to_time_t( - boost::posix_time::ptime(subkeys.GetExpireTime())) == 0 - ? _("Never Expire") - : QString::fromStdString(to_iso_string(subkeys.GetExpireTime()))); + auto* tmp4 = + new QTableWidgetItem(subkeys.GetExpireTime().toSecsSinceEpoch() == 0 + ? tr("Never Expire") + : subkeys.GetExpireTime().toString()); tmp4->setTextAlignment(Qt::AlignCenter); subkey_list_->setItem(row, 4, tmp4); @@ -214,12 +206,12 @@ void KeyPairSubkeyTab::slot_refresh_subkey_list() { } } - SPDLOG_DEBUG("subkey_list_ item {} refreshed", row); + GF_UI_LOG_DEBUG("subkey_list_ item {} refreshed", row); row++; } - SPDLOG_DEBUG("subkey_list_ refreshed"); + GF_UI_LOG_DEBUG("subkey_list_ refreshed"); if (subkey_list_->rowCount() > 0) { subkey_list_->selectRow(0); @@ -227,67 +219,55 @@ void KeyPairSubkeyTab::slot_refresh_subkey_list() { } void KeyPairSubkeyTab::slot_add_subkey() { - auto dialog = new SubkeyGenerateDialog(key_.GetId(), this); + auto* dialog = new SubkeyGenerateDialog(key_.GetId(), this); dialog->show(); } void KeyPairSubkeyTab::slot_refresh_subkey_detail() { - auto& subkey = get_selected_subkey(); + const auto& subkey = get_selected_subkey(); - key_id_var_label_->setText(QString::fromStdString(subkey.GetID())); + key_id_var_label_->setText(subkey.GetID()); key_size_var_label_->setText(QString::number(subkey.GetKeyLength())); - time_t subkey_time_t = boost::posix_time::to_time_t( - boost::posix_time::ptime(subkey.GetExpireTime())); + time_t subkey_time_t = subkey.GetExpireTime().toSecsSinceEpoch(); -#ifdef GPGFRONTEND_GUI_QT6 - expire_var_label_->setText( - subkey_time_t == 0 - ? _("Never Expires") - : QLocale::system().toString(QDateTime::fromSecsSinceEpoch( - to_time_t(subkey.GetExpireTime())))); -#else expire_var_label_->setText( - subkey_time_t == 0 ? _("Never Expires") - : QLocale::system().toString(QDateTime::fromTime_t( - to_time_t(subkey.GetExpireTime())))); -#endif + subkey_time_t == 0 ? tr("Never Expires") + : QLocale::system().toString(subkey.GetExpireTime())); + if (subkey_time_t != 0 && - subkey.GetExpireTime() < boost::posix_time::second_clock::local_time()) { - auto paletteExpired = expire_var_label_->palette(); - paletteExpired.setColor(expire_var_label_->foregroundRole(), Qt::red); - expire_var_label_->setPalette(paletteExpired); + subkey.GetExpireTime() < QDateTime::currentDateTime()) { + auto palette_expired = expire_var_label_->palette(); + palette_expired.setColor(expire_var_label_->foregroundRole(), Qt::red); + expire_var_label_->setPalette(palette_expired); } else { - auto paletteValid = expire_var_label_->palette(); - paletteValid.setColor(expire_var_label_->foregroundRole(), Qt::darkGreen); - expire_var_label_->setPalette(paletteValid); + auto palette_valid = expire_var_label_->palette(); + palette_valid.setColor(expire_var_label_->foregroundRole(), Qt::darkGreen); + expire_var_label_->setPalette(palette_valid); } - algorithm_var_label_->setText(QString::fromStdString(subkey.GetPubkeyAlgo())); -#ifdef GPGFRONTEND_GUI_QT6 - created_var_label_->setText(QLocale::system().toString( - QDateTime::fromSecsSinceEpoch(to_time_t(subkey.GetCreateTime())))); -#else - created_var_label_->setText(QLocale::system().toString( - QDateTime::fromTime_t(to_time_t(subkey.GetCreateTime())))); -#endif + algorithm_var_label_->setText(subkey.GetPubkeyAlgo()); + created_var_label_->setText( + QLocale::system().toString(subkey.GetCreateTime())); - std::stringstream usage_steam; + QString buffer; + QTextStream usage_steam(&buffer); - if (subkey.IsHasCertificationCapability()) - usage_steam << _("Certificate") << " "; - if (subkey.IsHasEncryptionCapability()) usage_steam << _("Encrypt") << " "; - if (subkey.IsHasSigningCapability()) usage_steam << _("Sign") << " "; - if (subkey.IsHasAuthenticationCapability()) usage_steam << _("Auth") << " "; + if (subkey.IsHasCertificationCapability()) { + usage_steam << tr("Certificate") << " "; + } + if (subkey.IsHasEncryptionCapability()) usage_steam << tr("Encrypt") << " "; + if (subkey.IsHasSigningCapability()) usage_steam << tr("Sign") << " "; + if (subkey.IsHasAuthenticationCapability()) usage_steam << tr("Auth") << " "; - usage_var_label_->setText(usage_steam.str().c_str()); + usage_var_label_->setText(usage_steam.readAll()); // Show the situation that secret key not exists. - master_key_exist_var_label_->setText(subkey.IsSecretKey() ? _("Exists") - : _("Not Exists")); + master_key_exist_var_label_->setText(subkey.IsSecretKey() ? tr("Exists") + : tr("Not Exists")); // Show the situation if key in a smart card. - card_key_label_->setText(subkey.IsCardKey() ? _("Yes") : _("No")); + card_key_label_->setText(subkey.IsCardKey() ? tr("Yes") : tr("No")); if (!subkey.IsSecretKey()) { auto palette_expired = master_key_exist_var_label_->palette(); @@ -311,23 +291,22 @@ void KeyPairSubkeyTab::slot_refresh_subkey_detail() { card_key_label_->setPalette(palette_valid); } - fingerprint_var_label_->setText( - QString::fromStdString(beautify_fingerprint(subkey.GetFingerprint()))); + fingerprint_var_label_->setText(BeautifyFingerprint(subkey.GetFingerprint())); } void KeyPairSubkeyTab::create_subkey_opera_menu() { subkey_opera_menu_ = new QMenu(this); - auto* editSubkeyAct = new QAction(_("Edit Expire Date")); - connect(editSubkeyAct, &QAction::triggered, this, + auto* edit_subkey_act = new QAction(tr("Edit Expire Date")); + connect(edit_subkey_act, &QAction::triggered, this, &KeyPairSubkeyTab::slot_edit_subkey); - subkey_opera_menu_->addAction(editSubkeyAct); + subkey_opera_menu_->addAction(edit_subkey_act); } void KeyPairSubkeyTab::slot_edit_subkey() { - SPDLOG_DEBUG("fpr {}", get_selected_subkey().GetFingerprint()); + GF_UI_LOG_DEBUG("fpr {}", get_selected_subkey().GetFingerprint()); - auto dialog = new KeySetExpireDateDialog( + auto* dialog = new KeySetExpireDateDialog( key_.GetId(), get_selected_subkey().GetFingerprint(), this); dialog->show(); } @@ -340,7 +319,7 @@ void KeyPairSubkeyTab::contextMenuEvent(QContextMenuEvent* event) { } } -const GpgSubKey& KeyPairSubkeyTab::get_selected_subkey() { +auto KeyPairSubkeyTab::get_selected_subkey() -> const GpgSubKey& { int row = 0; for (int i = 0; i < subkey_list_->rowCount(); i++) { |