diff options
author | saturneric <[email protected]> | 2024-06-28 21:31:45 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-06-28 21:31:45 +0000 |
commit | 2c42d6cb727001422c68a86f1cb4221a32892a59 (patch) | |
tree | 2de17f5e8ed07cd299567b3e814c0057264f9e48 | |
parent | refactor: rewrite KeyMenuAbility (diff) | |
download | GpgFrontend-2c42d6cb727001422c68a86f1cb4221a32892a59.tar.gz GpgFrontend-2c42d6cb727001422c68a86f1cb4221a32892a59.zip |
feat: enable sorting and add column "comment" at key table
-rw-r--r-- | src/core/model/GpgKeyTableModel.cpp | 21 | ||||
-rw-r--r-- | src/core/model/GpgKeyTableModel.h | 1 | ||||
-rw-r--r-- | src/core/model/GpgKeyTableProxyModel.cpp | 4 | ||||
-rw-r--r-- | src/ui/widgets/KeyList.cpp | 16 | ||||
-rw-r--r-- | src/ui/widgets/KeyList.h | 1 | ||||
-rw-r--r-- | src/ui/widgets/KeyTable.cpp | 1 |
6 files changed, 31 insertions, 13 deletions
diff --git a/src/core/model/GpgKeyTableModel.cpp b/src/core/model/GpgKeyTableModel.cpp index 4d542c3f..e2a4fe37 100644 --- a/src/core/model/GpgKeyTableModel.cpp +++ b/src/core/model/GpgKeyTableModel.cpp @@ -36,18 +36,10 @@ namespace GpgFrontend { GpgKeyTableModel::GpgKeyTableModel(GpgKeyList keys, QObject *parent) : QAbstractTableModel(parent), buffered_keys_(keys), - column_headers_({ - tr("Select"), - tr("Type"), - tr("Name"), - tr("Email Address"), - tr("Usage"), - tr("Trust"), - tr("Key ID"), - tr("Create Date"), - tr("Algorithm"), - tr("Subkey(s)"), - }), + column_headers_({tr("Select"), tr("Type"), tr("Name"), + tr("Email Address"), tr("Usage"), tr("Trust"), + tr("Key ID"), tr("Create Date"), tr("Algorithm"), + tr("Subkey(s)"), tr("Comment")}), key_check_state_(buffered_keys_.size()) {} auto GpgKeyTableModel::rowCount(const QModelIndex & /*parent*/) const -> int { @@ -56,7 +48,7 @@ auto GpgKeyTableModel::rowCount(const QModelIndex & /*parent*/) const -> int { auto GpgKeyTableModel::columnCount(const QModelIndex & /*parent*/) const -> int { - return 10; + return 11; } auto GpgKeyTableModel::data(const QModelIndex &index, int role) const @@ -116,6 +108,9 @@ auto GpgKeyTableModel::data(const QModelIndex &index, int role) const case 9: { return static_cast<int>(key.GetSubKeys()->size()); } + case 10: { + return key.GetComment(); + } default: return {}; } diff --git a/src/core/model/GpgKeyTableModel.h b/src/core/model/GpgKeyTableModel.h index 78289b41..f9389e54 100644 --- a/src/core/model/GpgKeyTableModel.h +++ b/src/core/model/GpgKeyTableModel.h @@ -48,6 +48,7 @@ enum class GpgKeyTableColumn : unsigned int { kCREATE_DATE = 1 << 6, kALGO = 1 << 7, kSUBKEYS_NUMBER = 1 << 8, + kCOMMENT = 1 << 9, kALL = ~0U }; diff --git a/src/core/model/GpgKeyTableProxyModel.cpp b/src/core/model/GpgKeyTableProxyModel.cpp index 0ecd000f..5ed9ade3 100644 --- a/src/core/model/GpgKeyTableProxyModel.cpp +++ b/src/core/model/GpgKeyTableProxyModel.cpp @@ -134,6 +134,10 @@ auto GpgKeyTableProxyModel::filterAcceptsColumn( return (filter_columns_ & GpgKeyTableColumn::kSUBKEYS_NUMBER) != GpgKeyTableColumn::kNONE; } + case 10: { + return (filter_columns_ & GpgKeyTableColumn::kCOMMENT) != + GpgKeyTableColumn::kNONE; + } default: return false; } diff --git a/src/ui/widgets/KeyList.cpp b/src/ui/widgets/KeyList.cpp index fbaef366..74aa29cc 100644 --- a/src/ui/widgets/KeyList.cpp +++ b/src/ui/widgets/KeyList.cpp @@ -131,6 +131,17 @@ void KeyList::init() { : global_column_filter_ & ~GpgKeyTableColumn::kSUBKEYS_NUMBER); }); + comment_column_action_ = new QAction("Comment"); + comment_column_action_->setCheckable(true); + comment_column_action_->setChecked( + (global_column_filter_ & GpgKeyTableColumn::kCOMMENT) != + GpgKeyTableColumn::kNONE); + connect(comment_column_action_, &QAction::toggled, this, [=](bool checked) { + UpdateKeyTableColumnType( + checked ? global_column_filter_ | GpgKeyTableColumn::kCOMMENT + : global_column_filter_ & ~GpgKeyTableColumn::kCOMMENT); + }); + if ((fixed_columns_filter_ & GpgKeyTableColumn::kKEY_ID) != GpgKeyTableColumn::kNONE) { column_type_menu->addAction(key_id_column_action_); @@ -155,6 +166,11 @@ void KeyList::init() { column_type_menu->addAction(subkeys_number_column_action_); } + if ((fixed_columns_filter_ & GpgKeyTableColumn::kCOMMENT) != + GpgKeyTableColumn::kNONE) { + column_type_menu->addAction(comment_column_action_); + } + ui_->columnTypeButton->setMenu(column_type_menu); ui_->keyGroupTab->clear(); diff --git a/src/ui/widgets/KeyList.h b/src/ui/widgets/KeyList.h index 03b02a0b..cbad6812 100644 --- a/src/ui/widgets/KeyList.h +++ b/src/ui/widgets/KeyList.h @@ -291,6 +291,7 @@ class KeyList : public QWidget { QAction* create_date_column_action_; QAction* owner_trust_column_action_; QAction* subkeys_number_column_action_; + QAction* comment_column_action_; private slots: diff --git a/src/ui/widgets/KeyTable.cpp b/src/ui/widgets/KeyTable.cpp index fc6d083f..76c3bc3c 100644 --- a/src/ui/widgets/KeyTable.cpp +++ b/src/ui/widgets/KeyTable.cpp @@ -64,6 +64,7 @@ KeyTable::KeyTable(QWidget* parent, QSharedPointer<GpgKeyTableModel> model, setFocusPolicy(Qt::NoFocus); setAlternatingRowColors(true); + setSortingEnabled(true); connect(CommonUtils::GetInstance(), &CommonUtils::SignalFavoritesChanged, &proxy_model_, &GpgKeyTableProxyModel::SignalFavoritesChanged); |