1 /* filter_list_model.h 2 * Model for all filter types 3 * 4 * Wireshark - Network traffic analyzer 5 * By Gerald Combs <gerald@wireshark.org> 6 * Copyright 1998 Gerald Combs 7 * 8 * SPDX-License-Identifier: GPL-2.0-or-later 9 */ 10 11 #ifndef FILTER_LIST_MODEL_h 12 #define FILTER_LIST_MODEL_h 13 14 #include <config.h> 15 16 #include <QAbstractListModel> 17 #include <QList> 18 #include <QStringList> 19 20 class FilterListModel : public QAbstractListModel 21 { 22 Q_OBJECT 23 24 public: 25 enum FilterListType { 26 Display, 27 Capture 28 }; 29 30 explicit FilterListModel(FilterListType type = FilterListModel::Display, QObject * parent = Q_NULLPTR); 31 explicit FilterListModel(QObject * parent = Q_NULLPTR); 32 33 enum { 34 ColumnName, 35 ColumnExpression 36 }; 37 38 void setFilterType(FilterListModel::FilterListType type); 39 FilterListModel::FilterListType filterType() const; 40 41 QModelIndex findByName(QString name); 42 QModelIndex findByExpression(QString expression); 43 44 QModelIndex addFilter(QString name, QString expression); 45 void removeFilter(QModelIndex idx); 46 47 void saveList(); 48 49 virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override; 50 virtual int columnCount(const QModelIndex &parent = QModelIndex()) const override; 51 virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 52 virtual bool setData(const QModelIndex &index, const QVariant &value, int role) override; 53 virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; 54 virtual Qt::ItemFlags flags(const QModelIndex &index) const override; 55 56 virtual Qt::DropActions supportedDropActions() const override; 57 virtual QStringList mimeTypes() const override; 58 virtual QMimeData *mimeData(const QModelIndexList &indexes) const override; 59 virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override; 60 61 private: 62 63 FilterListModel::FilterListType type_; 64 65 QStringList storage; 66 67 void reload(); 68 }; 69 70 #endif // FILTER_LIST_MODEL_h 71