Wireshark  4.3.0
The Wireshark network protocol analyzer
astringlist_list_model.h
Go to the documentation of this file.
1 
10 #ifndef ASTRINGLIST_LIST_MODEL_H
11 #define ASTRINGLIST_LIST_MODEL_H
12 
13 #include <config.h>
14 
15 #include <QAbstractTableModel>
16 #include <QModelIndex>
17 #include <QList>
18 #include <QStringList>
19 #include <QSortFilterProxyModel>
20 #include <QIdentityProxyModel>
21 
22 class AStringListListModel : public QAbstractTableModel
23 {
24 public:
25  explicit AStringListListModel(QObject * parent = Q_NULLPTR);
26  virtual ~AStringListListModel();
27 
28  virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
29  virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
30  virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
31  virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
32 
33  //
34  // This is not protected because we may need to invoke it from
35  // a wmem_map_foreach() callback implemented as an extern "C"
36  // static member function of a subclass. wmem_map_foreach() is
37  // passed, as the user data, a pointer to the class instance to
38  // which we want to append rows.
39  //
40  virtual void appendRow(const QStringList &, const QString & row_tooltip = QString(), const QModelIndex &parent = QModelIndex());
41 
42 protected:
43  virtual QStringList headerColumns() const = 0;
44 
45 private:
46  QList<QStringList> display_data_;
47  QStringList tooltip_data_;
48 };
49 
50 class AStringListListSortFilterProxyModel : public QSortFilterProxyModel
51 {
52  Q_OBJECT
53 public:
54 
55  enum AStringListListFilterType
56  {
57  FilterByContains = 0,
58  FilterByStart,
59  FilterByEquivalent,
60  FilterNone
61  };
62  Q_ENUM(AStringListListFilterType)
63 
64  explicit AStringListListSortFilterProxyModel(QObject * parent = Q_NULLPTR);
65 
66  virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
67  virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
68  virtual bool filterAcceptsColumn(int column, const QModelIndex &sourceParent) const;
69 
70  void setFilterType(AStringListListFilterType type, int column = -1);
71 
72  void setColumnToFilter(int);
73  void setColumnsToFilter(QList<int>);
74  void clearColumnsToFilter();
75 
76  void clearHiddenColumns();
77  void setColumnToHide(int col);
78 
79  void clearNumericColumns();
80  void setColumnAsNumeric(int col);
81 
82 public slots:
83  void setFilter(const QString&);
84 
85 private:
86  QString filter_;
87  QMap<int, AStringListListFilterType> types_;
88  QList<int> columnsToFilter_;
89  QList<int> hiddenColumns_;
90  QList<int> numericColumns_;
91 };
92 
93 class AStringListListUrlProxyModel : public QIdentityProxyModel
94 {
95 public:
96  explicit AStringListListUrlProxyModel(QObject * parent = Q_NULLPTR);
97 
98  void setUrlColumn(int);
99  bool isUrlColumn(int) const;
100 
101  virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
102 
103 private:
104  QList<int> urls_;
105 };
106 
107 #endif // ASTRINGLIST_LIST_MODEL_H
Definition: astringlist_list_model.h:23
Definition: astringlist_list_model.h:51
Definition: astringlist_list_model.h:94