diff options
author | Saturneric <[email protected]> | 2022-01-03 17:25:59 +0000 |
---|---|---|
committer | Saturneric <[email protected]> | 2022-01-03 17:25:59 +0000 |
commit | c20c7b9bb81a09d54b288517092fe356bb808de4 (patch) | |
tree | 625db0ac06fdf95d5e886ab558e9d240f47730d1 /src/ui/KeyMgmt.cpp | |
parent | <fixed, refactor>(ui): Enhanced sending email function. (diff) | |
download | GpgFrontend-c20c7b9bb81a09d54b288517092fe356bb808de4.tar.gz GpgFrontend-c20c7b9bb81a09d54b288517092fe356bb808de4.zip |
<feature, refactor>(core, ui): Key package generate.
1. refactor GpgKeyImportExporter to meet with key package generation.
2. add ExportKeyPackageDialog.
3. add Qt AES ability.
4. refactor Key List to provide menu ability control.
5. add check all and uncheck all ability to key list menu.
Diffstat (limited to 'src/ui/KeyMgmt.cpp')
-rwxr-xr-x | src/ui/KeyMgmt.cpp | 75 |
1 files changed, 32 insertions, 43 deletions
diff --git a/src/ui/KeyMgmt.cpp b/src/ui/KeyMgmt.cpp index 99647571..bd5c91a9 100755 --- a/src/ui/KeyMgmt.cpp +++ b/src/ui/KeyMgmt.cpp @@ -33,15 +33,16 @@ #include "ui/UserInterfaceUtils.h" #include "ui/keygen/SubkeyGenerateDialog.h" #include "ui/settings/GlobalSettingStation.h" +#include "ui/widgets/ExportKeyPackageDialog.h" namespace GpgFrontend::UI { KeyMgmt::KeyMgmt(QWidget* parent) : QMainWindow(parent) { /* the list of Keys available*/ - mKeyList = new KeyList(true, this); + key_list_ = new KeyList(KeyMenuAbility::ALL, this); - mKeyList->addListGroupTab(_("All"), KeyListRow::SECRET_OR_PUBLIC_KEY); + key_list_->addListGroupTab(_("All"), KeyListRow::SECRET_OR_PUBLIC_KEY); - mKeyList->addListGroupTab( + key_list_->addListGroupTab( _("Only Public Key"), KeyListRow::SECRET_OR_PUBLIC_KEY, KeyListColumn::TYPE | KeyListColumn::NAME | KeyListColumn::EmailAddress | KeyListColumn::Usage | KeyListColumn::Validity, @@ -50,7 +51,7 @@ KeyMgmt::KeyMgmt(QWidget* parent) : QMainWindow(parent) { !(key.revoked() || key.disabled() || key.expired()); }); - mKeyList->addListGroupTab( + key_list_->addListGroupTab( _("Has Private Key"), KeyListRow::SECRET_OR_PUBLIC_KEY, KeyListColumn::TYPE | KeyListColumn::NAME | KeyListColumn::EmailAddress | KeyListColumn::Usage | KeyListColumn::Validity, @@ -59,8 +60,8 @@ KeyMgmt::KeyMgmt(QWidget* parent) : QMainWindow(parent) { !(key.revoked() || key.disabled() || key.expired()); }); - mKeyList->addListGroupTab( - _("No Master Key"), KeyListRow::SECRET_OR_PUBLIC_KEY, + key_list_->addListGroupTab( + _("No Primary Key"), KeyListRow::SECRET_OR_PUBLIC_KEY, KeyListColumn::TYPE | KeyListColumn::NAME | KeyListColumn::EmailAddress | KeyListColumn::Usage | KeyListColumn::Validity, [](const GpgKey& key) -> bool { @@ -68,24 +69,24 @@ KeyMgmt::KeyMgmt(QWidget* parent) : QMainWindow(parent) { !(key.revoked() || key.disabled() || key.expired()); }); - mKeyList->addListGroupTab( + key_list_->addListGroupTab( _("Revoked"), KeyListRow::SECRET_OR_PUBLIC_KEY, KeyListColumn::TYPE | KeyListColumn::NAME | KeyListColumn::EmailAddress | KeyListColumn::Usage | KeyListColumn::Validity, [](const GpgKey& key) -> bool { return key.revoked(); }); - mKeyList->addListGroupTab( + key_list_->addListGroupTab( _("Expired"), KeyListRow::SECRET_OR_PUBLIC_KEY, KeyListColumn::TYPE | KeyListColumn::NAME | KeyListColumn::EmailAddress | KeyListColumn::Usage | KeyListColumn::Validity, [](const GpgKey& key) -> bool { return key.expired(); }); - setCentralWidget(mKeyList); - mKeyList->setDoubleClickedAction([this](const GpgKey& key, QWidget* parent) { + setCentralWidget(key_list_); + key_list_->setDoubleClickedAction([this](const GpgKey& key, QWidget* parent) { new KeyDetailsDialog(key, parent); }); - mKeyList->slotRefresh(); + key_list_->slotRefresh(); createActions(); createMenus(); @@ -146,8 +147,8 @@ KeyMgmt::KeyMgmt(QWidget* parent) : QMainWindow(parent) { this->statusBar()->show(); setWindowTitle(_("KeyPair Management")); - mKeyList->addMenuAction(deleteSelectedKeysAct); - mKeyList->addMenuAction(showKeyDetailsAct); + key_list_->addMenuAction(deleteSelectedKeysAct); + key_list_->addMenuAction(showKeyDetailsAct); connect(this, SIGNAL(signalKeyStatusUpdated()), SignalStation::GetInstance(), SIGNAL(KeyDatabaseRefresh())); @@ -210,11 +211,11 @@ void KeyMgmt::createActions() { connect(exportKeyToClipboardAct, SIGNAL(triggered()), this, SLOT(slotExportKeyToClipboard())); - exportKeyToFileAct = new QAction(_("Export To File"), this); - exportKeyToFileAct->setIcon(QIcon(":export_key_to_file.png")); - exportKeyToFileAct->setToolTip(_("Export Selected Key(s) To File")); + exportKeyToFileAct = new QAction(_("Export To Key Package"), this); + exportKeyToFileAct->setIcon(QIcon(":key_package.png")); + exportKeyToFileAct->setToolTip(_("Export Checked Key(s) To a Key Package")); connect(exportKeyToFileAct, SIGNAL(triggered()), this, - SLOT(slotExportKeyToFile())); + SLOT(slotExportKeyToKeyPackage())); exportKeyAsOpenSSHFormat = new QAction(_("Export As OpenSSH"), this); exportKeyAsOpenSSHFormat->setIcon(QIcon(":ssh-key.png")); @@ -295,11 +296,11 @@ void KeyMgmt::createToolBars() { } void KeyMgmt::slotDeleteSelectedKeys() { - deleteKeysWithWarning(mKeyList->getSelected()); + deleteKeysWithWarning(key_list_->getSelected()); } void KeyMgmt::slotDeleteCheckedKeys() { - deleteKeysWithWarning(mKeyList->getChecked()); + deleteKeysWithWarning(key_list_->getChecked()); } void KeyMgmt::deleteKeysWithWarning(KeyIdArgsListPtr key_ids) { @@ -337,7 +338,7 @@ void KeyMgmt::deleteKeysWithWarning(KeyIdArgsListPtr key_ids) { } void KeyMgmt::slotShowKeyDetails() { - auto keys_selected = mKeyList->getSelected(); + auto keys_selected = key_list_->getSelected(); if (keys_selected->empty()) return; auto key = GpgKeyGetter::GetInstance().GetKey(keys_selected->front()); @@ -350,34 +351,22 @@ void KeyMgmt::slotShowKeyDetails() { new KeyDetailsDialog(key); } -void KeyMgmt::slotExportKeyToFile() { - ByteArrayPtr key_export_data = nullptr; - auto keys_checked = mKeyList->getChecked(); - if (!GpgKeyImportExporter::GetInstance().ExportKeys(keys_checked, - key_export_data)) { - return; - } - auto key = - GpgKeyGetter::GetInstance().GetKey(mKeyList->getSelected()->front()); - if (!key.good()) { - QMessageBox::critical(nullptr, _("Error"), _("Key Not Found.")); +void KeyMgmt::slotExportKeyToKeyPackage() { + auto keys_checked = key_list_->getChecked(); + if (keys_checked->empty()) { + QMessageBox::critical( + this, _("Error"), + _("Please check some keys before doing this operation.")); return; } - QString fileString = QString::fromStdString(key.name() + " " + key.email() + - "(" + key.id() + ")_pub.asc"); - - QString file_name = QFileDialog::getSaveFileName( - this, _("Export Key To File"), fileString, - QString(_("Key Files")) + " (*.asc *.txt);;All Files (*)"); - - write_buffer_to_file(file_name.toStdString(), *key_export_data); - + auto dialog = new ExportKeyPackageDialog(std::move(keys_checked), this); + dialog->exec(); emit signalStatusBarChanged(QString(_("key(s) exported"))); } void KeyMgmt::slotExportKeyToClipboard() { ByteArrayPtr key_export_data = nullptr; - auto keys_checked = mKeyList->getChecked(); + auto keys_checked = key_list_->getChecked(); if (!GpgKeyImportExporter::GetInstance().ExportKeys(keys_checked, key_export_data)) { return; @@ -396,7 +385,7 @@ void KeyMgmt::closeEvent(QCloseEvent* event) { } void KeyMgmt::slotGenerateSubKey() { - auto keys_selected = mKeyList->getSelected(); + auto keys_selected = key_list_->getSelected(); if (keys_selected->empty()) { QMessageBox::information( nullptr, _("Invalid Operation"), @@ -467,7 +456,7 @@ void KeyMgmt::slotSaveWindowState() { void KeyMgmt::slotExportAsOpenSSHFormat() { ByteArrayPtr key_export_data = nullptr; - auto keys_checked = mKeyList->getChecked(); + auto keys_checked = key_list_->getChecked(); if (keys_checked->empty()) { QMessageBox::critical(nullptr, _("Error"), _("No Key Checked.")); |