From d0228f291521d0f1664abea9a9ad5331f45ff87b Mon Sep 17 00:00:00 2001 From: Roland Knall Date: Wed, 3 Jul 2019 17:00:16 +0200 Subject: [PATCH] Qt: Credentials move tap to dialog Move Taps to the dialog and implement a reset method Change-Id: I8324170a207bc9a9c6fef25bd7457757931a93c8 Reviewed-on: https://code.wireshark.org/review/33830 Petri-Dish: Roland Knall Tested-by: Petri Dish Buildbot Reviewed-by: Roland Knall --- ui/qt/credentials_dialog.cpp | 19 +++++++++++++++++-- ui/qt/credentials_dialog.h | 6 ++++++ ui/qt/models/credentials_model.cpp | 24 +++++++++--------------- ui/qt/models/credentials_model.h | 7 +++++-- 4 files changed, 37 insertions(+), 19 deletions(-) diff --git a/ui/qt/credentials_dialog.cpp b/ui/qt/credentials_dialog.cpp index eaf6aad278..6bb1b6a19f 100644 --- a/ui/qt/credentials_dialog.cpp +++ b/ui/qt/credentials_dialog.cpp @@ -53,10 +53,10 @@ CredentialsDialog::CredentialsDialog(QWidget &parent, CaptureFile &cf, PacketLis ui->setupUi(this); packet_list_ = packet_list; - CredentialsModel* model = new CredentialsModel(this, cf); + model_ = new CredentialsModel(this, cf); QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this); - proxyModel->setSourceModel(model); + proxyModel->setSourceModel(model_); ui->auths->setModel(proxyModel); setWindowSubtitle(tr("Credentials")); @@ -73,6 +73,8 @@ CredentialsDialog::CredentialsDialog(QWidget &parent, CaptureFile &cf, PacketLis ui->auths->sortByColumn(CredentialsModel::COL_NUM, Qt::AscendingOrder); connect(ui->auths, SIGNAL(clicked(const QModelIndex&)), this, SLOT(actionGoToPacket(const QModelIndex&))); + + registerTapListener("credentials", this, "", 0, tapReset, tapPacket, Q_NULLPTR); } CredentialsDialog::~CredentialsDialog() @@ -80,6 +82,19 @@ CredentialsDialog::~CredentialsDialog() delete ui; } +void CredentialsDialog::tapReset(void *tapdata) +{ + CredentialsDialog * d = (CredentialsDialog*) tapdata; + d->model_->clear(); +} + +tap_packet_status CredentialsDialog::tapPacket(void *tapdata, _packet_info *, epan_dissect *, const void *data) +{ + CredentialsDialog * d = (CredentialsDialog*) tapdata; + d->model_->addRecord((tap_credential_t*)data); + return TAP_PACKET_REDRAW; +} + void CredentialsDialog::actionGoToPacket(const QModelIndex& idx) { if (!idx.isValid()) diff --git a/ui/qt/credentials_dialog.h b/ui/qt/credentials_dialog.h index a2a881bd39..d0178070f9 100644 --- a/ui/qt/credentials_dialog.h +++ b/ui/qt/credentials_dialog.h @@ -19,6 +19,8 @@ #include "packet_list.h" #include +class CredentialsModel; + namespace Ui { class CredentialsDialog; } @@ -37,6 +39,10 @@ private slots: private: Ui::CredentialsDialog *ui; PacketList *packet_list_; + CredentialsModel * model_; + + static void tapReset(void *tapdata); + static tap_packet_status tapPacket(void *tapdata, struct _packet_info *pinfo, struct epan_dissect *edt, const void *data); }; #endif // CREDENTIALS_DIALOG_H diff --git a/ui/qt/models/credentials_model.cpp b/ui/qt/models/credentials_model.cpp index 8e954d2e61..c666f6607d 100644 --- a/ui/qt/models/credentials_model.cpp +++ b/ui/qt/models/credentials_model.cpp @@ -18,15 +18,6 @@ CredentialsModel::CredentialsModel(QObject *parent, CaptureFile& cf) :QAbstractListModel(parent) { - GString* error_string = register_tap_listener("credentials", this, NULL, TL_REQUIRES_NOTHING, - NULL, credentialsPacket, NULL, NULL); - if (error_string) { - g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_ERROR, "Error registering credentials tap: %s", error_string->str); - return; - } - - cf_retap_packets(cf.capFile()); - remove_tap_listener(this); } int CredentialsModel::rowCount(const QModelIndex &) const @@ -108,16 +99,19 @@ QVariant CredentialsModel::data(const QModelIndex &index, int role) const } -tap_packet_status CredentialsModel::credentialsPacket(void *p, packet_info *, epan_dissect_t *, const void *pri) -{ - CredentialsModel* model = (CredentialsModel*)p; - model->addRecord((tap_credential_t*)pri); - return TAP_PACKET_REDRAW; -} void CredentialsModel::addRecord(tap_credential_t* auth) { + emit beginInsertRows(QModelIndex(), rowCount(), rowCount() + 1); credentials_.append(auth); + emit endInsertRows(); +} + +void CredentialsModel::clear() +{ + emit beginRemoveRows(QModelIndex(), 0, rowCount()); + credentials_.clear(); + emit endInsertRows(); } QVariant CredentialsModel::headerData(int section, Qt::Orientation orientation, int role) const diff --git a/ui/qt/models/credentials_model.h b/ui/qt/models/credentials_model.h index 63614a8628..e3d8733783 100644 --- a/ui/qt/models/credentials_model.h +++ b/ui/qt/models/credentials_model.h @@ -27,6 +27,9 @@ public: virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + void addRecord(tap_credential_t* rec); + void clear(); + enum { COL_NUM, COL_PROTO, @@ -37,10 +40,10 @@ public: enum { ColumnHFID = Qt::UserRole + 1 }; + private: QList credentials_; - static tap_packet_status credentialsPacket(void *p, packet_info *, epan_dissect_t *, const void *pri); - void addRecord(tap_credential_t* rec); + }; /*