forked from osmocom/wireshark
Qt: Implement sort model for traffic type list
This commit is contained in:
parent
300befc12a
commit
83e420913d
|
@ -35,14 +35,6 @@
|
|||
#include <QToolButton>
|
||||
#include <QTreeView>
|
||||
|
||||
// To do:
|
||||
// - Add "copy" items to the menu.
|
||||
|
||||
// Bugs:
|
||||
// - Tabs and menu items don't always end up in the same order.
|
||||
// - Columns don't resize correctly.
|
||||
// - Closing the capture file clears conversation data.
|
||||
|
||||
TrafficTableDialog::TrafficTableDialog(QWidget &parent, CaptureFile &cf, const QString &table_name) :
|
||||
WiresharkDialog(parent, cf),
|
||||
ui(new Ui::TrafficTableDialog)
|
||||
|
|
|
@ -180,6 +180,22 @@ void TrafficTypesModel::selectProtocols(QList<int> protocols)
|
|||
endResetModel();
|
||||
}
|
||||
|
||||
|
||||
TrafficListSortModel::TrafficListSortModel(QObject * parent) :
|
||||
QSortFilterProxyModel(parent)
|
||||
{}
|
||||
|
||||
bool TrafficListSortModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const
|
||||
{
|
||||
if (source_left.isValid() && source_left.column() == TrafficTypesModel::COL_NAME) {
|
||||
QString valA = source_left.data().toString();
|
||||
QString valB = source_right.data().toString();
|
||||
return valA.compare(valB, Qt::CaseInsensitive) <= 0;
|
||||
}
|
||||
return QSortFilterProxyModel::lessThan(source_left, source_right);
|
||||
}
|
||||
|
||||
|
||||
TrafficTypesList::TrafficTypesList(QWidget *parent) :
|
||||
QTreeView(parent)
|
||||
{
|
||||
|
@ -194,8 +210,11 @@ void TrafficTypesList::setProtocolInfo(QString name, GList ** recentList)
|
|||
{
|
||||
_name = name;
|
||||
|
||||
TrafficListSortModel * sortModel = new TrafficListSortModel();
|
||||
|
||||
_model = new TrafficTypesModel(recentList);
|
||||
setModel(_model);
|
||||
sortModel->setSourceModel(_model);
|
||||
setModel(sortModel);
|
||||
|
||||
connect(_model, &TrafficTypesModel::protocolsChanged, this, &TrafficTypesList::protocolsChanged);
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include <QMap>
|
||||
#include <QList>
|
||||
#include <QString>
|
||||
#include <QSortFilterProxyModel>
|
||||
|
||||
class TrafficTypesRowData
|
||||
{
|
||||
|
@ -37,6 +38,7 @@ private:
|
|||
bool _checked;
|
||||
};
|
||||
|
||||
|
||||
class TrafficTypesModel : public QAbstractListModel
|
||||
{
|
||||
Q_OBJECT
|
||||
|
@ -78,6 +80,18 @@ private:
|
|||
|
||||
};
|
||||
|
||||
|
||||
class TrafficListSortModel : public QSortFilterProxyModel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
TrafficListSortModel(QObject * parent = nullptr);
|
||||
|
||||
protected:
|
||||
virtual bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const;
|
||||
};
|
||||
|
||||
|
||||
class TrafficTypesList : public QTreeView
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
Loading…
Reference in New Issue