13#ifndef DISTRIBUTION_MODEL_H
14#define DISTRIBUTION_MODEL_H
20#include <QAbstractTableModel>
72 enum { SortRole = Qt::UserRole + 1 };
106 static QString
parseFields(
const QStringList &names, QList<DistributionField> &fields);
112 void setFields(
const QList<DistributionField> &fields);
180 QList<QVariant>
rowData(
int row)
const;
187 quint64
count(
int row)
const;
194 QList<int>
topRows(
int n)
const;
219 quint64
packets()
const {
return published_packets_; }
233 int rowCount(
const QModelIndex &parent = QModelIndex())
const override;
234 int columnCount(
const QModelIndex &parent = QModelIndex())
const override;
235 QVariant data(
const QModelIndex &index,
int role = Qt::DisplayRole)
const override;
236 QVariant headerData(
int section, Qt::Orientation orientation,
237 int role = Qt::DisplayRole)
const override;
251 QList<QVariant> sort;
255 QString shownText(
const Row &row,
int field)
const;
256 double percent(
const Row &row)
const;
259 QList<DistributionField> fields_;
260 std::vector<Row> rows_;
261 QHash<QStringList, int> index_;
264 quint64 observations_;
265 quint64 published_packets_;
266 quint64 published_observations_;
269 bool resolve_values_;
bool addPacket(proto_tree *tree)
Counts the field values of one packet.
Definition distribution_model.cpp:216
DistributionField::SortKind SortKind
The sort kind of a field, see DistributionField::SortKind.
Definition distribution_model.h:66
int percentColumn() const
Returns the column of the percentages.
Definition distribution_model.cpp:349
void setFields(const QList< DistributionField > &fields)
Sets the counted fields and removes all rows.
Definition distribution_model.cpp:186
int countColumn() const
Returns the column of the counts.
Definition distribution_model.cpp:344
quint64 packets() const
Returns the number of counted packets at the last publish().
Definition distribution_model.h:219
QList< QVariant > rowData(int row) const
Returns the data of a row for copying and saving.
Definition distribution_model.cpp:378
static SortKind sortKind(enum ftenum type)
Returns how the values of a field type sort.
Definition distribution_model.cpp:108
void clear()
Removes all rows and counts, keeps the fields.
Definition distribution_model.cpp:195
bool hasResult() const
Tells whether there is a result to describe.
Definition distribution_model.h:153
void publish()
Makes the rows and counts added since the last call visible.
Definition distribution_model.cpp:303
quint64 observations() const
Returns the number of observations at the last publish().
Definition distribution_model.h:225
static bool supportsField(const header_field_info *hfinfo)
Tells whether the values of a field can be counted.
Definition distribution_model.cpp:103
void summaryChanged()
Emitted when the summary values or hasResult() changed.
QString filterExpression(int row) const
Returns the display filter matching a row.
Definition distribution_model.cpp:362
int distinctValues() const
Returns the number of published distinct value combinations.
Definition distribution_model.h:213
QList< int > topRows(int n) const
Returns the rows with the highest counts.
Definition distribution_model.cpp:407
double entropy() const
Returns the normalized Shannon entropy at the last publish().
Definition distribution_model.h:231
QString rowLabel(int row) const
Returns a short name of a row.
Definition distribution_model.cpp:422
static constexpr int maxFields
The maximum number of fields that can be counted together.
Definition distribution_model.h:69
void setResolveValues(bool resolve)
Shows resolved labels instead of the raw values.
Definition distribution_model.cpp:333
quint64 count(int row) const
Returns the count of a row.
Definition distribution_model.cpp:394
static QString parseFields(const QStringList &names, QList< DistributionField > &fields)
Resolves field names into counted fields.
Definition distribution_model.cpp:131
QStringList fieldNames() const
Returns the names of the counted fields.
Definition distribution_model.cpp:436
DistributionModel(QObject *parent=nullptr)
Constructs an empty model without fields.
Definition distribution_model.cpp:90
bool hasFields() const
Tells whether fields were set.
Definition distribution_model.h:147
ftenum
Fundamental field value types used throughout the Wireshark dissector framework.
Definition ftypes.h:26
struct _header_field_info header_field_info
Definition proto.h:795
One field counted by DistributionModel.
Definition distribution_model.h:33
SortKind
How the values of a field sort.
Definition distribution_model.h:37
@ SortString
Definition distribution_model.h:43
@ SortDouble
Definition distribution_model.h:42
@ SortUnsigned
Definition distribution_model.h:39
@ SortIPv6
Definition distribution_model.h:41
@ SortSigned
Definition distribution_model.h:38
@ SortIPv4
Definition distribution_model.h:40
QString name
Definition distribution_model.h:46
QList< int > hf_indices
Definition distribution_model.h:47
SortKind kind
Definition distribution_model.h:48