Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
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 <ui/recent.h>
16
18#include <ui/qt/filter_action.h>
19
20#include <QTreeView>
21#include <QMenu>
22#include <QHeaderView>
23#include <QSortFilterProxyModel>
24
25#include <QWidgetAction>
26#include <QLineEdit>
27#include <QActionGroup>
28
32class MenuEditAction : public QWidgetAction
33{
34 Q_OBJECT
35public:
42 MenuEditAction(QString text, QString hintText, QObject * parent = nullptr);
43
48 QString text() const;
49
50protected:
56 virtual QWidget * createWidget(QWidget *parent);
57
58private:
60 QString _hintText;
61
63 QString _text;
64
66 QLineEdit * _lineEdit;
67
68private slots:
72 void triggerEntry();
73};
74
75
79class TrafficTreeHeaderView : public QHeaderView
80{
81 Q_OBJECT
82public:
88 TrafficTreeHeaderView(GList ** recentColumnList, QWidget * parent = nullptr);
89
94
98 void applyRecent();
99
100signals:
105 void columnsHaveChanged(QList<int> visible);
106
113 void filterOnColumn(int column, int filterOn, QString filterText);
114
115private:
117 GList ** _recentColumnList;
118
120 QActionGroup * _actions;
121
123 QString _filterText;
124
125private slots:
130 void headerContextMenu(const QPoint &pos);
131
136 void columnTriggered(bool checked = false);
137
142 void menuActionTriggered(QAction * act);
143
148 void filterColumn(bool checked = false);
149};
150
151
155class TrafficDataFilterProxy : public QSortFilterProxyModel
156{
157 Q_OBJECT
158public:
159
161 enum {
168 };
169
174 TrafficDataFilterProxy(QObject *parent = nullptr);
175
181 void setColumnVisibility(int column, bool visible);
182
188 bool columnVisible(int column) const;
189
190public slots:
197 void filterForColumn(int column, int filterOn, QString filterText);
198
199protected:
206 virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
207
214 virtual bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const;
215
222 virtual bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const;
223
224private:
226 QList<int> hideColumns_;
227
229 int _filterColumn;
230
232 int _filterOn;
233
235 QString _filterText;
236
242 int mapToSourceColumn(int proxyColumn) const;
243};
244
245
249class TrafficTree : public QTreeView
250{
251 Q_OBJECT
252
253public:
266
273 TrafficTree(QString baseName, GList ** recentColumnList, QWidget *parent = nullptr);
274
284 QMenu * createCopyMenu(QWidget * parent = nullptr);
285
289 void applyRecentColumns();
290
301 void widenColumnToContents(int column);
302
307 virtual void setModel(QAbstractItemModel *model) override;
308
309signals:
317
322 void columnsHaveChanged(QList<int> columns);
323
324public slots:
329 void tapListenerEnabled(bool enable);
330
334 void disableTap();
335
340 void columnsChanged(QList<int> columns);
341
342private:
344 bool _tapEnabled;
345
347 int _exportRole;
348
350 bool _saveRaw;
351
353 QString _baseName;
354
356 TrafficTreeHeaderView * _header;
357
362 ATapDataModel * dataModel();
363
371 QMenu * createActionSubMenu(FilterAction::Action cur_action, QModelIndex idx, bool isConversation);
372
377 void copyToClipboard(eTrafficTreeClipboard type);
378
381
382private slots:
387 void customContextMenu(const QPoint &pos);
388
392 void useFilterAction();
393
397 void clipboardAction();
398
402 void resizeAction();
403
407 void toggleSaveRawAction();
408
414 void handleDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight,
415#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
416 const QVector<int>
417#else
418 const QList<int>
419#endif
420 );
421
425 void handleLayoutChanged(const QList<QPersistentModelIndex>, QAbstractItemModel::LayoutChangeHint);
426};
427
428#endif // TRAFFIC_TREE_H
DataModel for tap user data.
Definition atap_data_model.h:33
Action
Defines an action to be taken with a filter.
Definition filter_action.h:30
ActionType
Defines how the new filter should be combined with the existing one.
Definition filter_action.h:43
Action containing an editable text field for use in menus.
Definition traffic_tree.h:33
QString text() const
Retrieves the current text in the line edit.
Definition traffic_tree.cpp:73
virtual QWidget * createWidget(QWidget *parent)
Creates the custom widget for this action.
Definition traffic_tree.cpp:57
Proxy model handling sorting, filtering, and column visibility for traffic data.
Definition traffic_tree.h:156
void filterForColumn(int column, int filterOn, QString filterText)
Applies filtering criteria for a specific column.
Definition traffic_tree.cpp:274
virtual bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const
Compares two items for sorting.
Definition traffic_tree.cpp:453
virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
Determines if a row from the source model should be included.
Definition traffic_tree.cpp:323
virtual bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const
Determines if a column from the source model should be included.
Definition traffic_tree.cpp:568
bool columnVisible(int column) const
Checks if a column is currently visible.
Definition traffic_tree.cpp:615
void setColumnVisibility(int column, bool visible)
Sets the visibility for a specific column.
Definition traffic_tree.cpp:600
@ TRAFFIC_DATA_GREATER
Filter for values strictly greater than the target.
Definition traffic_tree.h:165
@ TRAFFIC_DATA_EQUAL
Filter for values equal to the target.
Definition traffic_tree.h:167
@ TRAFFIC_DATA_LESS
Filter for values strictly less than the target.
Definition traffic_tree.h:163
Header view for the traffic tree providing column customization and filtering.
Definition traffic_tree.h:80
void columnsHaveChanged(QList< int > visible)
Signal emitted when the visible columns have changed.
~TrafficTreeHeaderView()
Destroys the TrafficTreeHeaderView.
Definition traffic_tree.cpp:101
void filterOnColumn(int column, int filterOn, QString filterText)
Signal emitted to filter data based on a column's criteria.
void applyRecent()
Applies the recently used column settings.
Definition traffic_tree.cpp:162
Tree view tailored for displaying network traffic conversations and endpoints.
Definition traffic_tree.h:250
virtual void setModel(QAbstractItemModel *model) override
Sets the data model for the tree view.
Definition traffic_tree.cpp:642
void applyRecentColumns()
Applies the recently visible columns configuration.
Definition traffic_tree.cpp:973
void columnsChanged(QList< int > columns)
Slot triggered when columns are changed.
Definition traffic_tree.cpp:979
void widenColumnToContents(int column)
Increase column width if necessary to fit contents, but don't narrow it.
Definition traffic_tree.cpp:848
QMenu * createCopyMenu(QWidget *parent=nullptr)
Create a menu containing clipboard copy entries for this tab.
Definition traffic_tree.cpp:792
void tapListenerEnabled(bool enable)
Enables or disables the tap listener.
Definition traffic_tree.cpp:664
void filterAction(QString filter, FilterAction::Action action, FilterAction::ActionType type)
Signal emitted to perform a display filter action.
eTrafficTreeClipboard
Type for the selection of export.
Definition traffic_tree.h:258
@ CLIPBOARD_CSV
export as CSV
Definition traffic_tree.h:260
@ CLIPBOARD_YAML
export as YAML
Definition traffic_tree.h:262
@ CLIPBOARD_JSON
export as JSON
Definition traffic_tree.h:264
void columnsHaveChanged(QList< int > columns)
Signal emitted when the visible columns have changed.
void disableTap()
Disables the tap completely.
Definition traffic_tree.cpp:965