Wireshark  4.3.0
The Wireshark network protocol analyzer
traffic_tree.h
Go to the documentation of this file.
1 
10 #ifndef TRAFFIC_TREE_H
11 #define TRAFFIC_TREE_H
12 
13 #include "config.h"
14 
15 #include <glib.h>
16 
17 #include <ui/recent.h>
18 
20 #include <ui/qt/filter_action.h>
21 
22 #include <QTreeView>
23 #include <QMenu>
24 #include <QHeaderView>
25 #include <QSortFilterProxyModel>
26 
27 #include <QWidgetAction>
28 #include <QLineEdit>
29 #include <QActionGroup>
30 
31 class MenuEditAction : public QWidgetAction
32 {
33  Q_OBJECT
34 public:
35  MenuEditAction(QString text, QString hintText, QObject * parent = nullptr);
36 
37  QString text() const;
38 
39 protected:
40  virtual QWidget * createWidget(QWidget *parent);
41 private:
42  QString _hintText;
43  QString _text;
44  QLineEdit * _lineEdit;
45 
46 private slots:
47  void triggerEntry();
48 };
49 
50 
51 class TrafficTreeHeaderView : public QHeaderView
52 {
53  Q_OBJECT
54 public:
55  TrafficTreeHeaderView(GList ** recentColumnList, QWidget * parent = nullptr);
57 
58  void applyRecent();
59 
60 signals:
61  void columnsHaveChanged(QList<int> visible);
62  void filterOnColumn(int column, int filterOn, QString filterText);
63 private:
64  GList ** _recentColumnList;
65  QActionGroup * _actions;
66  QString _filterText;
67 
68 private slots:
69  void headerContextMenu(const QPoint &pos);
70  void columnTriggered(bool checked = false);
71  void menuActionTriggered(QAction *);
72  void filterColumn(bool checked = false);
73 
74 };
75 
76 
77 class TrafficDataFilterProxy : public QSortFilterProxyModel
78 {
79  Q_OBJECT
80 public:
81 
82  enum {
83  TRAFFIC_DATA_LESS,
84  TRAFFIC_DATA_GREATER,
85  TRAFFIC_DATA_EQUAL,
86  };
87 
88  TrafficDataFilterProxy(QObject *parent = nullptr);
89 
90  void setColumnVisibility(int column, bool visible);
91  bool columnVisible(int column) const;
92 
93 public slots:
94  void filterForColumn(int column, int filterOn, QString filterText);
95 
96 protected:
97  virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
98  virtual bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const;
99  virtual bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const;
100 
101 private:
102  QList<int> hideColumns_;
103 
104  int _filterColumn;
105  int _filterOn;
106  QString _filterText;
107 
108  int mapToSourceColumn(int proxyColumn) const;
109 
110 };
111 
112 
113 class TrafficTree : public QTreeView
114 {
115  Q_OBJECT
116 
117 public:
122  typedef enum {
123  CLIPBOARD_CSV, /* export as CSV */
124  CLIPBOARD_YAML, /* export as YAML */
125  CLIPBOARD_JSON /* export as JSON */
127 
128  TrafficTree(QString baseName, GList ** recentColumnList, QWidget *parent = nullptr);
129 
139  QMenu * createCopyMenu(QWidget * parent = nullptr);
140 
141  void applyRecentColumns();
142 
143  virtual void setModel(QAbstractItemModel *model) override;
144 
145 signals:
146  void filterAction(QString filter, FilterAction::Action action, FilterAction::ActionType type);
147  void columnsHaveChanged(QList<int> columns);
148 
149 public slots:
150  void tapListenerEnabled(bool enable);
151  void disableTap();
152  void columnsChanged(QList<int> columns);
153 
154 private:
155  bool _tapEnabled;
156  int _exportRole;
157  bool _saveRaw;
158  QString _baseName;
159 
160  TrafficTreeHeaderView * _header;
161 
162  ATapDataModel * dataModel();
163 
164  QMenu * createActionSubMenu(FilterAction::Action cur_action, QModelIndex idx, bool isConversation);
165  void copyToClipboard(eTrafficTreeClipboard type);
166 
167  friend class TrafficTreeHeaderView;
168 
169 private slots:
170  void customContextMenu(const QPoint &pos);
171  void useFilterAction();
172  void clipboardAction();
173  void resizeAction();
174  void toggleSaveRawAction();
175 };
176 
177 #endif // TRAFFIC_TREE_H
DataModel for tap user data.
Definition: atap_data_model.h:35
Definition: traffic_tree.h:32
Definition: traffic_tree.h:78
Definition: traffic_tree.h:52
Definition: traffic_tree.h:114
QMenu * createCopyMenu(QWidget *parent=nullptr)
Create a menu containing clipboard copy entries for this tab.
Definition: traffic_tree.cpp:722
eTrafficTreeClipboard
Type for the selection of export.
Definition: traffic_tree.h:122