aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-06-28 21:31:45 +0000
committersaturneric <[email protected]>2024-06-28 21:31:45 +0000
commit2c42d6cb727001422c68a86f1cb4221a32892a59 (patch)
tree2de17f5e8ed07cd299567b3e814c0057264f9e48
parentrefactor: rewrite KeyMenuAbility (diff)
downloadGpgFrontend-2c42d6cb727001422c68a86f1cb4221a32892a59.tar.gz
GpgFrontend-2c42d6cb727001422c68a86f1cb4221a32892a59.zip
feat: enable sorting and add column "comment" at key table
-rw-r--r--src/core/model/GpgKeyTableModel.cpp21
-rw-r--r--src/core/model/GpgKeyTableModel.h1
-rw-r--r--src/core/model/GpgKeyTableProxyModel.cpp4
-rw-r--r--src/ui/widgets/KeyList.cpp16
-rw-r--r--src/ui/widgets/KeyList.h1
-rw-r--r--src/ui/widgets/KeyTable.cpp1
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);