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