aboutsummaryrefslogtreecommitdiffstats
path: root/ui/qt/voip_calls_info_model.h
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2017-02-13 01:36:58 +0100
committerPeter Wu <peter@lekensteyn.nl>2017-03-24 23:02:30 +0000
commitb4bc6c72c79fa121753cf94ae179ea73f1e911dd (patch)
treec07058dcabd11590f7e56f25e35aa4ffae45fa97 /ui/qt/voip_calls_info_model.h
parentbff74696df796fca83df72fc7cec7cb917ebb205 (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.h96
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:
+ */