summaryrefslogtreecommitdiffstats
path: root/ui/qt/models/interface_tree_cache_model.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--ui/qt/models/interface_tree_cache_model.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/ui/qt/models/interface_tree_cache_model.h b/ui/qt/models/interface_tree_cache_model.h
new file mode 100644
index 0000000..9b51c10
--- /dev/null
+++ b/ui/qt/models/interface_tree_cache_model.h
@@ -0,0 +1,66 @@
+/** @file
+ *
+ * Model caching interface changes before sending them to global storage
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef INTERFACE_TREE_CACHE_MODEL_H_
+#define INTERFACE_TREE_CACHE_MODEL_H_
+
+#include <ui/qt/models/interface_tree_model.h>
+
+#include <QMap>
+#include <QAbstractItemModel>
+#include <QIdentityProxyModel>
+
+class InterfaceTreeCacheModel : public QIdentityProxyModel
+{
+public:
+ explicit InterfaceTreeCacheModel(QObject *parent);
+ ~InterfaceTreeCacheModel();
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ QVariant data (const QModelIndex &index, int role = Qt::DisplayRole) const;
+
+ bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ QVariant getColumnContent(int idx, int col, int role = Qt::DisplayRole);
+
+#ifdef HAVE_LIBPCAP
+ QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
+
+ void reset(int row);
+ void save();
+
+ void addDevice(const interface_t * newDevice);
+ void deleteDevice(const QModelIndex &index);
+#endif
+
+private:
+ InterfaceTreeModel * sourceModel;
+
+#ifdef HAVE_LIBPCAP
+ QList<interface_t> newDevices;
+
+ void saveNewDevices();
+#endif
+ QMap<int, QMap<InterfaceTreeColumns, QVariant> *> * storage;
+ QList<InterfaceTreeColumns> editableColumns;
+ QList<InterfaceTreeColumns> checkableColumns;
+
+#ifdef HAVE_LIBPCAP
+ const interface_t * lookup(const QModelIndex &index) const;
+#endif
+
+ bool changeIsAllowed(InterfaceTreeColumns col) const;
+ bool isAvailableField(const QModelIndex &index) const;
+ bool isAllowedToBeEdited(const QModelIndex &index) const;
+
+};
+#endif /* INTERFACE_TREE_CACHE_MODEL_H_ */