diff options
author | Peter Wu <peter@lekensteyn.nl> | 2017-02-13 01:36:58 +0100 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2017-03-24 23:02:30 +0000 |
commit | b4bc6c72c79fa121753cf94ae179ea73f1e911dd (patch) | |
tree | c07058dcabd11590f7e56f25e35aa4ffae45fa97 /ui/qt/voip_calls_info_model.h | |
parent | bff74696df796fca83df72fc7cec7cb917ebb205 (diff) |
Qt: refactor Voip Calls Dialog into Model/View
Functional improvements:
- "Time of day" option is now propagated to the CSV/YAML export.
- The sorting order is preserved in the CSV/YAML export.
Other changes:
- Convert column name identifiers to enum.
- CSV output will now always be quoted (previously numbers like packet
count were not quoted, but since CSV has no numeric type it should
be OK to add quotes). Side-effect of model design decision.
- Instead of clearing the widgets and re-adding all calls, now it will
add new calls to the model. Not tested with a live capture, if the
column data can change, maybe a dataChanged signal is needed.
Due to this patch, it should be easier to add a filter for finding calls
easier (e.g. by From, IP, etc.).
Note: extra QList is used in the model to ensure a O(1) lookup of calls
(rather than O(n) for GQueue).
Change-Id: Ie08462aae038d9c3daf1cc7a152b948724689017
Reviewed-on: https://code.wireshark.org/review/20084
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'ui/qt/voip_calls_info_model.h')
-rw-r--r-- | ui/qt/voip_calls_info_model.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/ui/qt/voip_calls_info_model.h b/ui/qt/voip_calls_info_model.h new file mode 100644 index 0000000000..025a3c9444 --- /dev/null +++ b/ui/qt/voip_calls_info_model.h @@ -0,0 +1,96 @@ +/* voip_calls_info_model.h + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef VOIP_CALLS_INFO_MODEL_H +#define VOIP_CALLS_INFO_MODEL_H + +#include <config.h> +#include <glib.h> + +#include "ui/voip_calls.h" +#include "variant_pointer.h" + +#include <QAbstractTableModel> +#include <QSortFilterProxyModel> + +class VoipCallsInfoModel : public QAbstractTableModel +{ + Q_OBJECT + +public: + VoipCallsInfoModel(QObject *parent = 0); + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + QVariant headerData(int section, Qt::Orientation orientation, + int role = Qt::DisplayRole) const; + int rowCount(const QModelIndex &parent = QModelIndex()) const; + int columnCount(const QModelIndex &parent = QModelIndex()) const; + void setTimeOfDay(bool timeOfDay); + void updateCalls(GQueue *callsinfos); + + static voip_calls_info_t *indexToCallInfo(const QModelIndex &index); + + enum Column + { + StartTime, + StopTime, + InitialSpeaker, + From, + To, + Protocol, + Duration, + Packets, + State, + Comments, + ColumnCount /* not an actual column, but used to find max. cols. */ + }; + +private: + QList<void *> callinfos_; + bool mTimeOfDay_; + + QVariant timeData(nstime_t *abs_ts, nstime_t *rel_ts) const; +}; + +class VoipCallsInfoSortedModel : public QSortFilterProxyModel +{ + Q_OBJECT; + +public: + VoipCallsInfoSortedModel(QObject *parent = 0); + +protected: + bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const; +}; + +#endif // VOIP_CALLS_INFO_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: + */ |