wireshark/ui/qt/models/expert_info_proxy_model.h
Michael Mann b0112e60ad Add a model to use for Expert Info dialog.
With the model (and proxy), the following features were added/fixed.
1. Expert severities can be filtered by type
2. Search filter expanded to include summary, protocol and column info
3. Expert info starts with all items collapsed.
4. Context menus for collapse/expand all

Bug: 11753
Bug: 13831
Bug: 13842
Change-Id: I8e89c7be441e1f08e18915ef8805609e5c5d0bd1
Reviewed-on: https://code.wireshark.org/review/22458
Reviewed-by: Michael Mann <mmann78@netscape.net>
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot
Reviewed-by: Roland Knall <rknall@gmail.com>
2017-12-13 16:07:07 +00:00

74 lines
1.7 KiB
C++

/* expert_info_model.h
* Data model for Expert Info tap data.
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef EXPERT_INFO_PROXY_MODEL_H
#define EXPERT_INFO_PROXY_MODEL_H
#include <config.h>
#include <QSortFilterProxyModel>
class ExpertPacketItem;
class ExpertInfoProxyModel : public QSortFilterProxyModel
{
Q_OBJECT
public:
ExpertInfoProxyModel(QObject *parent = 0);
enum SeverityMode { Group, Packet };
enum ExpertProxyColumn {
colProxySeverity = 0,
colProxySummary,
colProxyGroup,
colProxyProtocol,
colProxyCount,
colProxyLast
};
QVariant data(const QModelIndex &index, int role) const;
QVariant headerData(int section, Qt::Orientation orientation,
int role = Qt::DisplayRole) const;
int columnCount(const QModelIndex &parent = QModelIndex()) const;
virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
//GUI helpers
void setSeverityMode(enum SeverityMode);
void setSeverityFilter(int severity, bool hide);
void setSummaryFilter(const QString &filter);
protected:
bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const;
bool filterAcceptItem(ExpertPacketItem& item) const;
enum SeverityMode severityMode_;
QList<int> hidden_severities_;
QString textFilter_;
};
#endif // EXPERT_INFO_PROXY_MODEL_H
/*
* Editor modelines
*
* Local Variables:
* c-basic-offset: 4
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* ex: set shiftwidth=4 tabstop=8 expandtab:
* :indentSize=4:tabSize=8:noTabs=true:
*/