aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-06-28 21:20:04 +0000
committersaturneric <[email protected]>2024-06-28 21:20:04 +0000
commit19926663f11c1013d0c68ccc92f2a4e236942ce9 (patch)
tree6847027cae650d78a6607d936a4cb512df2a8f54
parentfeat: user can select shown columns at key table (diff)
downloadGpgFrontend-19926663f11c1013d0c68ccc92f2a4e236942ce9.tar.gz
GpgFrontend-19926663f11c1013d0c68ccc92f2a4e236942ce9.zip
refactor: rewrite KeyMenuAbility
-rw-r--r--src/ui/dialog/SignersPicker.cpp2
-rw-r--r--src/ui/dialog/keypair_details/KeyUIDSignDialog.cpp2
-rw-r--r--src/ui/main_window/KeyMgmt.cpp2
-rw-r--r--src/ui/main_window/MainWindow.cpp5
-rw-r--r--src/ui/widgets/KeyList.cpp15
-rw-r--r--src/ui/widgets/KeyList.h46
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_;