aboutsummaryrefslogtreecommitdiffstats
path: root/ui/qt/manager/preference_manager.h
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2017-12-29 11:23:07 -0500
committerRoland Knall <rknall@gmail.com>2018-01-05 11:13:21 +0000
commit1a07d97fd70d1d0f2f22ccf41d09a1a5e0050666 (patch)
treef8fe54f0e9bb0b9fdcc3656e836c8c2cb48d10f7 /ui/qt/manager/preference_manager.h
parent1e16be7556eddc913fb1d5410a22f95a77cb37ff (diff)
Qt: Add manager for preference dialog
Abstract out the different types of preferences into a visitor and factory pattern to handle the preference dialog. Change-Id: Ia611ec192dcc1ad638a997182cec1ab5bdb7859c Reviewed-on: https://code.wireshark.org/review/25142 Petri-Dish: Roland Knall <rknall@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Roland Knall <rknall@gmail.com>
Diffstat (limited to 'ui/qt/manager/preference_manager.h')
-rw-r--r--ui/qt/manager/preference_manager.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/ui/qt/manager/preference_manager.h b/ui/qt/manager/preference_manager.h
new file mode 100644
index 0000000000..6ae224ee66
--- /dev/null
+++ b/ui/qt/manager/preference_manager.h
@@ -0,0 +1,80 @@
+/* preference_manager.h
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef PREFERENCE_MANAGER_H
+#define PREFERENCE_MANAGER_H
+
+#include <config.h>
+
+#include <QObject>
+#include <QMetaObject>
+#include <QHash>
+#include <QActionGroup>
+
+#include <ui/qt/models/pref_models.h>
+#include <ui/qt/capture_file.h>
+
+class PreferenceFactory;
+class WiresharkPreference;
+
+class PreferenceManager : public QObject
+{
+ Q_OBJECT
+
+public:
+ static PreferenceManager* instance();
+ virtual ~PreferenceManager();
+
+ void registerType(int pref, PreferenceFactory * factory);
+ void reuseType(int pref, int reuseFor);
+ WiresharkPreference * getPreference(PrefsItem * item);
+
+protected:
+ explicit PreferenceManager(QObject * parent = Q_NULLPTR);
+
+private:
+ static QMap<int, PreferenceFactory*> factories;
+};
+
+class PreferenceFactory : public QObject
+{
+ Q_OBJECT
+public:
+ virtual ~PreferenceFactory();
+ virtual WiresharkPreference * create(QObject * parent = Q_NULLPTR) = 0;
+};
+
+#define REGISTER_PREFERENCE_TYPE(pref_id, preference_class) \
+ class preference_class##pref_id##Factory : public PreferenceFactory { \
+ public: \
+ preference_class##pref_id##Factory() \
+ { \
+ PreferenceManager::instance()->registerType(pref_id, this); \
+ } \
+ virtual WiresharkPreference *create(QObject * parent) { \
+ WiresharkPreference * newPrefHandler = new preference_class(parent); \
+ return newPrefHandler; \
+ } \
+ }; \
+ static preference_class##pref_id##Factory global_##preference_class##pref_id##Factory;
+
+#endif // PREFERENCE_MANAGER_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:
+ */