diff options
Diffstat (limited to 'src/ui/dialog/KeyGroupManageDialog.cpp')
-rw-r--r-- | src/ui/dialog/KeyGroupManageDialog.cpp | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/ui/dialog/KeyGroupManageDialog.cpp b/src/ui/dialog/KeyGroupManageDialog.cpp index cbd70b61..88892ada 100644 --- a/src/ui/dialog/KeyGroupManageDialog.cpp +++ b/src/ui/dialog/KeyGroupManageDialog.cpp @@ -54,7 +54,8 @@ KeyGroupManageDialog::KeyGroupManageDialog( ui_->keyGroupKeyList->Init( channel, KeyMenuAbility::kCOLUMN_FILTER | KeyMenuAbility::kSEARCH_BAR, GpgKeyTableColumn::kTYPE | GpgKeyTableColumn::kNAME | - GpgKeyTableColumn::kEMAIL_ADDRESS | GpgKeyTableColumn::kKEY_ID); + GpgKeyTableColumn::kEMAIL_ADDRESS | GpgKeyTableColumn::kKEY_ID | + GpgKeyTableColumn::kUSAGE); ui_->keyGroupKeyList->AddListGroupTab( tr("Key Group"), "key-group", GpgKeyTableDisplayMode::kPRIVATE_KEY | @@ -78,6 +79,14 @@ KeyGroupManageDialog::KeyGroupManageDialog( }); ui_->keyList->SlotRefresh(); + connect(ui_->keyList, &KeyList::SignalKeyChecked, this, + &KeyGroupManageDialog::slot_set_add_button_state); + connect(ui_->keyGroupKeyList, &KeyList::SignalKeyChecked, this, + &KeyGroupManageDialog::slot_set_remove_button_state); + + ui_->addButton->setDisabled(true); + ui_->removeButton->setDisabled(true); + QTimer::singleShot(200, [=]() { slot_notify_invalid_key_ids(); }); this->setModal(true); @@ -104,6 +113,8 @@ void KeyGroupManageDialog::slot_add_to_key_group() { ui_->keyGroupKeyList->RefreshKeyTable(0); ui_->keyList->RefreshKeyTable(0); + slot_set_add_button_state(); + slot_set_remove_button_state(); if (!failed_keys.isEmpty()) { QStringList failed_ids; @@ -127,6 +138,8 @@ void KeyGroupManageDialog::slot_remove_from_key_group() { ui_->keyGroupKeyList->RefreshKeyTable(0); ui_->keyList->RefreshKeyTable(0); + slot_set_add_button_state(); + slot_set_remove_button_state(); } void KeyGroupManageDialog::slot_notify_invalid_key_ids() { @@ -138,9 +151,7 @@ void KeyGroupManageDialog::slot_notify_invalid_key_ids() { if (key == nullptr) invalid_key_ids.push_back(key_id); } - if (invalid_key_ids.isEmpty()) { - return; - } + if (invalid_key_ids.isEmpty()) return; const QString id_list = invalid_key_ids.join(", "); const auto message = @@ -163,4 +174,13 @@ void KeyGroupManageDialog::slot_notify_invalid_key_ids() { emit UISignalStation::GetInstance() -> SignalKeyDatabaseRefresh(); } + +void KeyGroupManageDialog::slot_set_add_button_state() { + ui_->addButton->setDisabled(ui_->keyList->GetCheckedKeys().isEmpty()); +} + +void KeyGroupManageDialog::slot_set_remove_button_state() { + ui_->removeButton->setDisabled( + ui_->keyGroupKeyList->GetCheckedKeys().isEmpty()); +} } // namespace GpgFrontend::UI |