aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/keypair_details/KeyPairSubkeyTab.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/dialog/keypair_details/KeyPairSubkeyTab.cpp')
-rw-r--r--src/ui/dialog/keypair_details/KeyPairSubkeyTab.cpp85
1 files changed, 39 insertions, 46 deletions
diff --git a/src/ui/dialog/keypair_details/KeyPairSubkeyTab.cpp b/src/ui/dialog/keypair_details/KeyPairSubkeyTab.cpp
index 011ea1ed..fa0c5c34 100644
--- a/src/ui/dialog/keypair_details/KeyPairSubkeyTab.cpp
+++ b/src/ui/dialog/keypair_details/KeyPairSubkeyTab.cpp
@@ -297,58 +297,51 @@ void KeyPairSubkeyTab::slot_add_adsk() {
return !except_key_ids.contains(key->ID());
},
this);
- dialog->exec();
- if (!dialog->GetStatus()) {
- dialog->deleteLater();
- return;
- }
-
- auto sub_keys = dialog->GetCheckedSubkeys();
- dialog->deleteLater();
-
- if (sub_keys.isEmpty()) {
- QMessageBox::information(this, tr("No Subkeys Selected"),
- tr("Please select at least one s_key."));
- return;
- }
+ connect(dialog, &ADSKsPicker::SignalSubkeyChecked, this,
+ [=](const QContainer<GpgSubKey>& s_keys) {
+ if (s_keys.isEmpty()) {
+ QMessageBox::information(this, tr("No Subkeys Selected"),
+ tr("Please select at least one s_key."));
- QContainer<GpgSubKey> err_sub_keys;
- for (const auto& sub_key : sub_keys) {
- auto [err, data_object] =
- GpgKeyOpera::GetInstance(current_gpg_context_channel_)
- .AddADSKSync(key_, sub_key);
- if (CheckGpgError(err) == GPG_ERR_NO_ERROR) continue;
+ return;
+ }
- err_sub_keys.append(sub_key);
- }
+ QContainer<GpgSubKey> err_sub_keys;
+ for (const auto& s_key : s_keys) {
+ auto [err, data_object] =
+ GpgKeyOpera::GetInstance(current_gpg_context_channel_)
+ .AddADSKSync(key_, s_key);
+ if (CheckGpgError(err) == GPG_ERR_NO_ERROR) continue;
- if (err_sub_keys.isEmpty()) {
- QMessageBox::information(
- this, tr("Success"),
- tr("All selected subkeys were successfully added as ADSKs."));
- } else {
- QStringList failed_info;
- for (const auto& s_key : err_sub_keys) {
- QString key_id = s_key.ID();
- failed_info << tr("Key ID: %1").arg(key_id);
- }
+ err_sub_keys.append(s_key);
+ }
- QString details = failed_info.join("\n\n");
-
- QMessageBox msg_box(this);
- msg_box.setIcon(QMessageBox::Warning);
- msg_box.setWindowTitle(err_sub_keys.size() == sub_keys.size()
- ? tr("Failed")
- : tr("Partially Failed"));
- msg_box.setText(err_sub_keys.size() == sub_keys.size()
- ? tr("Failed to add all selected subkeys.")
- : tr("Some subkeys failed to be added as ADSKs."));
- msg_box.setDetailedText(details);
- msg_box.exec();
- }
+ if (!err_sub_keys.isEmpty()) {
+ QStringList failed_info;
+ for (const auto& s_key : err_sub_keys) {
+ QString key_id = s_key.ID();
+ failed_info << tr("Key ID: %1").arg(key_id);
+ }
+
+ QString details = failed_info.join("\n\n");
+
+ QMessageBox msg_box(this);
+ msg_box.setIcon(QMessageBox::Warning);
+ msg_box.setWindowTitle(err_sub_keys.size() == s_keys.size()
+ ? tr("Failed")
+ : tr("Partially Failed"));
+ msg_box.setText(
+ err_sub_keys.size() == s_keys.size()
+ ? tr("Failed to add all selected subkeys.")
+ : tr("Some subkeys failed to be added as ADSKs."));
+ msg_box.setDetailedText(details);
+ msg_box.exec();
+ }
- emit SignalKeyDatabaseRefresh();
+ emit SignalKeyDatabaseRefresh();
+ });
+ dialog->show();
}
void KeyPairSubkeyTab::slot_refresh_subkey_detail() {