diff options
Diffstat (limited to 'src/ui/main_window/MainWindow.cpp')
-rw-r--r-- | src/ui/main_window/MainWindow.cpp | 61 |
1 files changed, 43 insertions, 18 deletions
diff --git a/src/ui/main_window/MainWindow.cpp b/src/ui/main_window/MainWindow.cpp index 5ebfbb00..e17dacca 100644 --- a/src/ui/main_window/MainWindow.cpp +++ b/src/ui/main_window/MainWindow.cpp @@ -105,27 +105,36 @@ void MainWindow::Init() noexcept { [=](const QString& message, int timeout) { statusBar()->showMessage(message, timeout); }); - connect(UISignalStation::GetInstance(), - &UISignalStation::SignalMainWindowUpdateBasicOperaMenu, this, - &MainWindow::SlotUpdateCryptoMenuStatus); + connect( + UISignalStation::GetInstance(), + &UISignalStation::SignalMainWindowUpdateBasicOperaMenu, this, + [=](unsigned int mask) { + operations_menu_mask_ = mask; + slot_update_operations_menu_by_checked_keys(operations_menu_mask_); + }); connect(UISignalStation::GetInstance(), &UISignalStation::SignalMainWindowOpenFile, this, &MainWindow::SlotOpenFile); - m_key_list_->AddMenuAction(append_selected_keys_act_); - m_key_list_->AddMenuAction(append_key_create_date_to_editor_act_); - m_key_list_->AddMenuAction(append_key_expire_date_to_editor_act_); - m_key_list_->AddMenuAction(append_key_fingerprint_to_editor_act_); - m_key_list_->AddSeparator(); - m_key_list_->AddMenuAction(copy_mail_address_to_clipboard_act_); - m_key_list_->AddMenuAction(copy_key_default_uid_to_clipboard_act_); - m_key_list_->AddMenuAction(copy_key_id_to_clipboard_act_); - m_key_list_->AddMenuAction(set_owner_trust_of_key_act_); - m_key_list_->AddMenuAction(add_key_2_favourite_act_); - m_key_list_->AddMenuAction(remove_key_from_favourtie_act_); - - m_key_list_->AddSeparator(); - m_key_list_->AddMenuAction(show_key_details_act_); + popup_menu_ = new QMenu(this); + + popup_menu_->addAction(append_selected_keys_act_); + popup_menu_->addAction(append_key_create_date_to_editor_act_); + popup_menu_->addAction(append_key_expire_date_to_editor_act_); + popup_menu_->addAction(append_key_fingerprint_to_editor_act_); + popup_menu_->addSeparator(); + popup_menu_->addAction(copy_mail_address_to_clipboard_act_); + popup_menu_->addAction(copy_key_default_uid_to_clipboard_act_); + popup_menu_->addAction(copy_key_id_to_clipboard_act_); + popup_menu_->addAction(set_owner_trust_of_key_act_); + popup_menu_->addAction(add_key_2_favourite_act_); + popup_menu_->addAction(remove_key_from_favourtie_act_); + + popup_menu_->addSeparator(); + popup_menu_->addAction(show_key_details_act_); + + connect(m_key_list_, &KeyList::SignalRequestContextMenu, this, + &MainWindow::slot_popup_menu_by_key_list); restore_settings(); @@ -139,7 +148,7 @@ void MainWindow::Init() noexcept { // recover unsaved page from cache if it exists recover_editor_unsaved_pages_from_cache(); - slot_update_operations_menu_by_checked_keys(); + slot_update_operations_menu_by_checked_keys(~0); // check if need to open wizard window if (GetSettings().value("wizard/show_wizard", true).toBool()) { @@ -307,4 +316,20 @@ void MainWindow::check_update_at_startup() { Module::TriggerEvent("CHECK_APPLICATION_VERSION"); } } + +void MainWindow::slot_popup_menu_by_key_list(QContextMenuEvent* event, + KeyTable* key_table) { + if (event == nullptr || key_table == nullptr) return; + + const auto key_table_name = key_table->objectName(); + if (key_table_name == "favourite") { + remove_key_from_favourtie_act_->setDisabled(true); + add_key_2_favourite_act_->setDisabled(false); + } else { + remove_key_from_favourtie_act_->setDisabled(false); + add_key_2_favourite_act_->setDisabled(true); + } + + popup_menu_->popup(event->globalPos()); +} } // namespace GpgFrontend::UI |