aboutsummaryrefslogtreecommitdiffstats
path: root/ui/qt/models
diff options
context:
space:
mode:
authorRoland Knall <rknall@gmail.com>2019-10-21 00:19:58 +0200
committerRoland Knall <rknall@gmail.com>2019-10-20 22:40:38 +0000
commit366bd1947d53203725baf25182d7aabaaf51016c (patch)
treeb7ca47ea0a8ed3061e43795a0e05bff990583757 /ui/qt/models
parent6820e3515aded1768f6885e2cb9349ba8b8e9118 (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.cpp28
-rw-r--r--ui/qt/models/column_list_model.h18
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();