diff options
author | Roland Knall <rknall@gmail.com> | 2019-10-21 00:19:58 +0200 |
---|---|---|
committer | Roland Knall <rknall@gmail.com> | 2019-10-20 22:40:38 +0000 |
commit | 366bd1947d53203725baf25182d7aabaaf51016c (patch) | |
tree | b7ca47ea0a8ed3061e43795a0e05bff990583757 /ui/qt/models | |
parent | 6820e3515aded1768f6885e2cb9349ba8b8e9118 (diff) |
Qt: ColumnPreferences hide hidden columns
Filter on columns being hidden or not
Change-Id: Ia41f556e00c7de471b1d4b7f9b5f6c099b7ddcf3
Reviewed-on: https://code.wireshark.org/review/34820
Petri-Dish: Roland Knall <rknall@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Roland Knall <rknall@gmail.com>
Diffstat (limited to 'ui/qt/models')
-rw-r--r-- | ui/qt/models/column_list_model.cpp | 28 | ||||
-rw-r--r-- | ui/qt/models/column_list_model.h | 18 |
2 files changed, 43 insertions, 3 deletions
diff --git a/ui/qt/models/column_list_model.cpp b/ui/qt/models/column_list_model.cpp index 0b78d40a30..5d80e803f5 100644 --- a/ui/qt/models/column_list_model.cpp +++ b/ui/qt/models/column_list_model.cpp @@ -37,6 +37,30 @@ struct ListElement static QList<ListElement> store_; +ColumnProxyModel::ColumnProxyModel(QObject * parent) : + QSortFilterProxyModel(parent), + showDisplayedOnly_(false) +{} + +bool ColumnProxyModel::filterAcceptsRow(int source_row, const QModelIndex &/*source_parent*/) const +{ + bool displayed = false; + if ( sourceModel() && + sourceModel()->index(source_row, ColumnListModel::COL_DISPLAYED).data(ColumnListModel::DisplayedState).toBool() ) + displayed = true; + + if ( showDisplayedOnly_ && ! displayed ) + return false; + + return true; +} + +void ColumnProxyModel::setShowDisplayedOnly(bool set) +{ + showDisplayedOnly_ = set; + invalidateFilter(); +} + ColumnTypeDelegate::ColumnTypeDelegate(QObject * parent) : QStyledItemDelegate(parent) {} @@ -268,9 +292,9 @@ QVariant ColumnListModel::data(const QModelIndex &index, int role) const } } else if ( role == OriginalType ) - { return qVariantFromValue(ne.originalType); - } + else if ( role == DisplayedState ) + return qVariantFromValue(ne.displayed); return QVariant(); } diff --git a/ui/qt/models/column_list_model.h b/ui/qt/models/column_list_model.h index 67b96ff92e..8376ae4b3e 100644 --- a/ui/qt/models/column_list_model.h +++ b/ui/qt/models/column_list_model.h @@ -13,8 +13,23 @@ #include <QAbstractListModel> #include <QSortFilterProxyModel> #include <QStyledItemDelegate> +#include <QSortFilterProxyModel> #include <QMimeData> +class ColumnProxyModel : public QSortFilterProxyModel +{ +public: + ColumnProxyModel(QObject *parent = Q_NULLPTR); + + void setShowDisplayedOnly(bool set); + +protected: + virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; + +private: + bool showDisplayedOnly_; +}; + class ColumnTypeDelegate : public QStyledItemDelegate { Q_OBJECT @@ -48,7 +63,8 @@ public: } Columns; enum { - OriginalType = Qt::UserRole + OriginalType = Qt::UserRole, + DisplayedState } UserTypes; void saveColumns(); |