diff options
Diffstat (limited to 'src/ui/widgets/KeyList.h')
-rw-r--r-- | src/ui/widgets/KeyList.h | 140 |
1 files changed, 88 insertions, 52 deletions
diff --git a/src/ui/widgets/KeyList.h b/src/ui/widgets/KeyList.h index 868c5b07..0b0b9be6 100644 --- a/src/ui/widgets/KeyList.h +++ b/src/ui/widgets/KeyList.h @@ -47,6 +47,7 @@ enum class KeyMenuAbility : unsigned int { kCOLUMN_FILTER = 1 << 4, kSEARCH_BAR = 1 << 5, kKEY_DATABASE = 1 << 6, + kKEY_GROUP = 1 << 7, kALL = ~0U }; @@ -84,6 +85,12 @@ class KeyList : public QWidget { /** * @brief Construct a new Key List object * + */ + explicit KeyList(QWidget* parent = nullptr); + + /** + * @brief Construct a new Key List object + * * @param menu_ability * @param parent */ @@ -95,18 +102,29 @@ class KeyList : public QWidget { /** * @brief * + * @param channel + * @param menu_ability + * @param fixed_column_filter + */ + void Init(int channel, KeyMenuAbility menu_ability, + GpgKeyTableColumn fixed_column_filter = GpgKeyTableColumn::kALL); + + /** + * @brief + * * @param name * @param selectType * @param infoType * @param filter */ - void AddListGroupTab( + auto AddListGroupTab( const QString& name, const QString& id, GpgKeyTableDisplayMode display_mode = GpgKeyTableDisplayMode::kPRIVATE_KEY, GpgKeyTableProxyModel::KeyFilter search_filter = - [](const GpgKey&) -> bool { return true; }, - GpgKeyTableColumn custom_columns_filter = GpgKeyTableColumn::kALL); + [](const GpgAbstractKey*) -> bool { return true; }, + GpgKeyTableColumn custom_columns_filter = GpgKeyTableColumn::kALL) + -> KeyTable*; /** * @brief Set the Column Width object @@ -130,18 +148,11 @@ class KeyList : public QWidget { void AddSeparator(); /** - * @brief Get the Checked object - * - * @return KeyIdArgsListPtr - */ - auto GetChecked() -> KeyIdArgsList; - - /** * @brief Get the Checked Keys object * * @return QStringList */ - auto GetCheckedKeys() -> QStringList; + auto GetCheckedKeys() -> GpgAbstractKeyPtrList; /** * @brief Get the Checked object @@ -149,28 +160,21 @@ class KeyList : public QWidget { * @param key_table * @return KeyIdArgsListPtr */ - static auto GetChecked(const KeyTable& key_table) -> KeyIdArgsList; + static auto GetChecked(const KeyTable& key_table) -> GpgAbstractKeyPtrList; /** * @brief Get the Private Checked object * * @return KeyIdArgsListPtr */ - auto GetCheckedPrivateKey() -> KeyIdArgsList; + auto GetCheckedPrivateKey() -> GpgAbstractKeyPtrList; /** * @brief * * @return KeyIdArgsListPtr */ - auto GetCheckedPublicKey() -> KeyIdArgsList; - - /** - * @brief Get the All Private Keys object - * - * @return KeyIdArgsListPtr - */ - auto GetAllPrivateKeys() -> KeyIdArgsList; + auto GetCheckedPublicKey() -> GpgAbstractKeyPtrList; /** * @brief Set the Checked object @@ -182,25 +186,32 @@ class KeyList : public QWidget { const KeyTable& key_table); /** - * @brief Get the Selected object + * @brief Get the Selected Key object * - * @return KeyIdArgsListPtr + * @return QString */ - auto GetSelected() -> KeyIdArgsList; + auto GetSelectedKey() -> GpgAbstractKeyPtr; + + /** + * @brief Get the Selected Keys object + * + * @return GpgAbstractKeyPtrList + */ + auto GetSelectedKeys() -> GpgAbstractKeyPtrList; /** * @brief Get the Selected Key object * * @return QString */ - auto GetSelectedKey() -> QString; + auto GetSelectedGpgKey() -> GpgKeyPtr; /** - * @brief Get the Selected Gpg Key object + * @brief Get the Selected Keys object * - * @return GpgKey + * @return GpgAbstractKeyPtrList */ - auto GetSelectedGpgKey() -> std::tuple<bool, GpgKey>; + auto GetSelectedGpgKeys() -> GpgKeyPtrList; /** * @brief @@ -223,6 +234,33 @@ class KeyList : public QWidget { */ [[nodiscard]] auto GetCurrentGpgContextChannel() const -> int; + /** + * @brief + * + */ + void UpdateKeyTableFilter(int index, const GpgKeyTableProxyModel::KeyFilter&); + + /** + * @brief + * + * @param index + */ + void RefreshKeyTable(int index); + + public slots: + + /** + * @brief + * + */ + void SlotRefresh(); + + /** + * @brief + * + */ + void SlotRefreshUI(); + signals: /** * @brief @@ -244,52 +282,49 @@ class KeyList : public QWidget { */ void SignalColumnTypeChange(GpgKeyTableColumn); - public slots: - /** * @brief * */ - void SlotRefresh(); + void SignalKeyChecked(); + protected: /** * @brief * + * @param event */ - void SlotRefreshUI(); + void contextMenuEvent(QContextMenuEvent* event) override; - private: /** * @brief * + * @param event */ - void init(); + void dragEnterEvent(QDragEnterEvent* event) override; /** * @brief * - * @param inBuffer + * @param event */ - void import_keys(const QByteArray& in_buffer); + void dropEvent(QDropEvent* event) override; - /** - * @brief - * - */ - void uncheck_all(); + private slots: /** * @brief * */ - void check_all(); + void slot_sync_with_key_server(); /** * @brief * */ - void filter_by_keyword(); + void slot_new_key_group(); + private: std::shared_ptr<Ui_KeyList> ui_; ///< QMenu* popup_menu_{}; ///< std::function<void(const GpgKey&, QWidget*)> m_action_ = nullptr; ///< @@ -306,35 +341,36 @@ class KeyList : public QWidget { QAction* subkeys_number_column_action_; QAction* comment_column_action_; - private slots: + /** + * @brief + * + */ + void init(); /** * @brief * + * @param inBuffer */ - void slot_sync_with_key_server(); + void import_keys(const QByteArray& in_buffer); - protected: /** * @brief * - * @param event */ - void contextMenuEvent(QContextMenuEvent* event) override; + void uncheck_all(); /** * @brief * - * @param event */ - void dragEnterEvent(QDragEnterEvent* event) override; + void check_all(); /** * @brief * - * @param event */ - void dropEvent(QDropEvent* event) override; + void filter_by_keyword(); }; } // namespace GpgFrontend::UI |