diff options
author | saturneric <[email protected]> | 2024-06-28 21:20:04 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-06-28 21:20:04 +0000 |
commit | 19926663f11c1013d0c68ccc92f2a4e236942ce9 (patch) | |
tree | 6847027cae650d78a6607d936a4cb512df2a8f54 | |
parent | feat: user can select shown columns at key table (diff) | |
download | GpgFrontend-19926663f11c1013d0c68ccc92f2a4e236942ce9.tar.gz GpgFrontend-19926663f11c1013d0c68ccc92f2a4e236942ce9.zip |
refactor: rewrite KeyMenuAbility
-rw-r--r-- | src/ui/dialog/SignersPicker.cpp | 2 | ||||
-rw-r--r-- | src/ui/dialog/keypair_details/KeyUIDSignDialog.cpp | 2 | ||||
-rw-r--r-- | src/ui/main_window/KeyMgmt.cpp | 2 | ||||
-rw-r--r-- | src/ui/main_window/MainWindow.cpp | 5 | ||||
-rw-r--r-- | src/ui/widgets/KeyList.cpp | 15 | ||||
-rw-r--r-- | src/ui/widgets/KeyList.h | 46 |
6 files changed, 49 insertions, 23 deletions
diff --git a/src/ui/dialog/SignersPicker.cpp b/src/ui/dialog/SignersPicker.cpp index c6bbbbe7..7152bc6e 100644 --- a/src/ui/dialog/SignersPicker.cpp +++ b/src/ui/dialog/SignersPicker.cpp @@ -45,7 +45,7 @@ SignersPicker::SignersPicker(QWidget* parent) /*Setup KeyList*/ key_list_ = - new KeyList(KeyMenuAbility::SEARCH_BAR, + new KeyList(KeyMenuAbility::kCOLUMN_FILTER | KeyMenuAbility::kSEARCH_BAR, GpgKeyTableColumn::kNAME | GpgKeyTableColumn::kEMAIL_ADDRESS | GpgKeyTableColumn::kKEY_ID | GpgKeyTableColumn::kUSAGE, this); diff --git a/src/ui/dialog/keypair_details/KeyUIDSignDialog.cpp b/src/ui/dialog/keypair_details/KeyUIDSignDialog.cpp index 4d96a945..983e7e2d 100644 --- a/src/ui/dialog/keypair_details/KeyUIDSignDialog.cpp +++ b/src/ui/dialog/keypair_details/KeyUIDSignDialog.cpp @@ -42,7 +42,7 @@ KeyUIDSignDialog::KeyUIDSignDialog(const GpgKey& key, UIDArgsListPtr uid, m_key_(key) { const auto key_id = m_key_.GetId(); m_key_list_ = - new KeyList(KeyMenuAbility::SEARCH_BAR, + new KeyList(KeyMenuAbility::kCOLUMN_FILTER | KeyMenuAbility::kSEARCH_BAR, GpgKeyTableColumn::kNAME | GpgKeyTableColumn::kEMAIL_ADDRESS | GpgKeyTableColumn::kKEY_ID, this); diff --git a/src/ui/main_window/KeyMgmt.cpp b/src/ui/main_window/KeyMgmt.cpp index c45fd46f..bb158a2b 100644 --- a/src/ui/main_window/KeyMgmt.cpp +++ b/src/ui/main_window/KeyMgmt.cpp @@ -52,7 +52,7 @@ namespace GpgFrontend::UI { KeyMgmt::KeyMgmt(QWidget* parent) : GeneralMainWindow("key_management", parent) { /* the list of Keys available*/ - key_list_ = new KeyList(KeyMenuAbility::ALL, GpgKeyTableColumn::kALL, this); + key_list_ = new KeyList(KeyMenuAbility::kALL, GpgKeyTableColumn::kALL, this); key_list_->AddListGroupTab(tr("All"), "all", GpgKeyTableDisplayMode::kPUBLIC_KEY | diff --git a/src/ui/main_window/MainWindow.cpp b/src/ui/main_window/MainWindow.cpp index 7e2bbe85..868112a0 100644 --- a/src/ui/main_window/MainWindow.cpp +++ b/src/ui/main_window/MainWindow.cpp @@ -62,8 +62,9 @@ void MainWindow::Init() noexcept { /* the list of Keys available*/ m_key_list_ = new KeyList( - KeyMenuAbility::REFRESH | KeyMenuAbility::UNCHECK_ALL | - KeyMenuAbility::SEARCH_BAR, + KeyMenuAbility::kREFRESH | KeyMenuAbility::kCHECK_ALL | + KeyMenuAbility::kUNCHECK_ALL | KeyMenuAbility::kCOLUMN_FILTER | + KeyMenuAbility::kSEARCH_BAR, GpgKeyTableColumn::kTYPE | GpgKeyTableColumn::kNAME | GpgKeyTableColumn::kKEY_ID | GpgKeyTableColumn::kEMAIL_ADDRESS | GpgKeyTableColumn::kUSAGE | GpgKeyTableColumn::kOWNER_TRUST, diff --git a/src/ui/widgets/KeyList.cpp b/src/ui/widgets/KeyList.cpp index 5ebddbb5..fbaef366 100644 --- a/src/ui/widgets/KeyList.cpp +++ b/src/ui/widgets/KeyList.cpp @@ -40,7 +40,7 @@ namespace GpgFrontend::UI { -KeyList::KeyList(KeyMenuAbility::AbilityType menu_ability, +KeyList::KeyList(KeyMenuAbility menu_ability, GpgKeyTableColumn fixed_columns_filter, QWidget* parent) : QWidget(parent), ui_(GpgFrontend::SecureCreateSharedObject<Ui_KeyList>()), @@ -59,12 +59,15 @@ KeyList::KeyList(KeyMenuAbility::AbilityType menu_ability, void KeyList::init() { ui_->setupUi(this); - ui_->menuWidget->setHidden(menu_ability_ == 0U); + ui_->menuWidget->setHidden(menu_ability_ == KeyMenuAbility::kNONE); ui_->refreshKeyListButton->setHidden(~menu_ability_ & - KeyMenuAbility::REFRESH); - ui_->syncButton->setHidden(~menu_ability_ & KeyMenuAbility::SYNC_PUBLIC_KEY); - ui_->uncheckButton->setHidden(~menu_ability_ & KeyMenuAbility::UNCHECK_ALL); - ui_->searchBarEdit->setHidden(~menu_ability_ & KeyMenuAbility::SEARCH_BAR); + KeyMenuAbility::kREFRESH); + ui_->syncButton->setHidden(~menu_ability_ & KeyMenuAbility::kSYNC_PUBLIC_KEY); + ui_->checkALLButton->setHidden(~menu_ability_ & KeyMenuAbility::kCHECK_ALL); + ui_->uncheckButton->setHidden(~menu_ability_ & KeyMenuAbility::kUNCHECK_ALL); + ui_->columnTypeButton->setHidden(~menu_ability_ & + KeyMenuAbility::kCOLUMN_FILTER); + ui_->searchBarEdit->setHidden(~menu_ability_ & KeyMenuAbility::kSEARCH_BAR); auto* column_type_menu = new QMenu(); diff --git a/src/ui/widgets/KeyList.h b/src/ui/widgets/KeyList.h index 1893a98a..03b02a0b 100644 --- a/src/ui/widgets/KeyList.h +++ b/src/ui/widgets/KeyList.h @@ -38,18 +38,40 @@ namespace GpgFrontend::UI { * @brief * */ -struct KeyMenuAbility { - using AbilityType = unsigned int; - - static constexpr AbilityType ALL = ~0; ///< - static constexpr AbilityType NONE = 0; ///< - static constexpr AbilityType REFRESH = 1 << 0; ///< - static constexpr AbilityType SYNC_PUBLIC_KEY = 1 << 1; ///< - static constexpr AbilityType UNCHECK_ALL = 1 << 3; ///< - static constexpr AbilityType CHECK_ALL = 1 << 5; ///< - static constexpr AbilityType SEARCH_BAR = 1 << 6; ///< +enum class KeyMenuAbility : unsigned int { + kNONE = 0, + kREFRESH = 1 << 0, + kSYNC_PUBLIC_KEY = 1 << 1, + kUNCHECK_ALL = 1 << 2, + kCHECK_ALL = 1 << 3, + kCOLUMN_FILTER = 1 << 4, + kSEARCH_BAR = 1 << 5, + + kALL = ~0U }; +inline auto operator|(KeyMenuAbility lhs, KeyMenuAbility rhs) + -> KeyMenuAbility { + using T = std::underlying_type_t<KeyMenuAbility>; + return static_cast<KeyMenuAbility>(static_cast<T>(lhs) | static_cast<T>(rhs)); +} + +inline auto operator|=(KeyMenuAbility& lhs, KeyMenuAbility rhs) + -> KeyMenuAbility& { + lhs = lhs | rhs; + return lhs; +} + +inline auto operator&(KeyMenuAbility lhs, KeyMenuAbility rhs) -> bool { + using T = std::underlying_type_t<KeyMenuAbility>; + return (static_cast<T>(lhs) & static_cast<T>(rhs)) != 0; +} + +inline auto operator~(KeyMenuAbility hs) -> KeyMenuAbility { + using T = std::underlying_type_t<GpgKeyTableColumn>; + return static_cast<KeyMenuAbility>(~static_cast<T>(hs)); +} + /** * @brief * @@ -65,7 +87,7 @@ class KeyList : public QWidget { * @param parent */ explicit KeyList( - KeyMenuAbility::AbilityType menu_ability, + KeyMenuAbility menu_ability, GpgKeyTableColumn fixed_column_filter = GpgKeyTableColumn::kALL, QWidget* parent = nullptr); @@ -259,7 +281,7 @@ class KeyList : public QWidget { std::shared_ptr<Ui_KeyList> ui_; ///< QMenu* popup_menu_{}; ///< std::function<void(const GpgKey&, QWidget*)> m_action_ = nullptr; ///< - KeyMenuAbility::AbilityType menu_ability_ = KeyMenuAbility::ALL; ///< + KeyMenuAbility menu_ability_ = KeyMenuAbility::kALL; ///< QSharedPointer<GpgKeyTableModel> model_; GpgKeyTableColumn fixed_columns_filter_; GpgKeyTableColumn global_column_filter_; |