summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar jan Iversen <jani@apache.org>2018-06-16 16:03:31 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-07-04 05:32:30 +0800
commitd02a03983d91da1d10aac5b0a5d84d15e94e9291 (patch)
tree15be085ead1635f40ce467ae8dec9aa5d4dc4eea
parent6c9c2168e1d685aa1a777097dbf2330621dcf963 (diff)
downloadsubsurface-d02a03983d91da1d10aac5b0a5d84d15e94e9291.tar.gz
core: add qPref.h_and qPrefprivate.h
add 2 header files and 1 cpp file (qPrefPrivate does not have an implementation) The rewrite/consoliadation of SettingsObjectWrapper, qmlmanager, qmlpref and planner needs a place to put common private parts (qPrefPrivate) and 1 common class (qPref). Signed-off-by: Jan Iversen <jani@apache.org>
-rw-r--r--core/CMakeLists.txt3
-rw-r--r--core/settings/qPref.cpp18
-rw-r--r--core/settings/qPref.h25
-rw-r--r--core/settings/qPref_private.h72
-rw-r--r--packaging/ios/Subsurface-mobile.pro3
5 files changed, 121 insertions, 0 deletions
diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt
index de9f9edae..694108b1c 100644
--- a/core/CMakeLists.txt
+++ b/core/CMakeLists.txt
@@ -98,6 +98,9 @@ set(SUBSURFACE_CORE_LIB_SRCS
windowtitleupdate.cpp
worldmap-save.c
+ # classes to manage struct preferences for QWidget and QML
+ settings/qPref.cpp
+
#Subsurface Qt have the Subsurface structs QObjectified for easy access via QML.
subsurface-qt/DiveObjectHelper.cpp
subsurface-qt/CylinderObjectHelper.cpp
diff --git a/core/settings/qPref.cpp b/core/settings/qPref.cpp
new file mode 100644
index 000000000..b703c1fcb
--- /dev/null
+++ b/core/settings/qPref.cpp
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "qPref_private.h"
+#include "qPref.h"
+
+
+qPref *qPref::m_instance = NULL;
+qPref *qPref::instance()
+{
+ if (!m_instance)
+ m_instance = new qPref;
+ return m_instance;
+}
+
+
+
+void qPref::loadSync(bool doSync)
+{
+}
diff --git a/core/settings/qPref.h b/core/settings/qPref.h
new file mode 100644
index 000000000..4170e5e64
--- /dev/null
+++ b/core/settings/qPref.h
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0
+#ifndef QPREF_H
+#define QPREF_H
+
+#include <QObject>
+#include "core/pref.h"
+
+class qPref : public QObject {
+ Q_OBJECT
+
+public:
+ qPref(QObject *parent = NULL) : QObject(parent) {};
+ ~qPref() {};
+ static qPref *instance();
+
+ // Load/Sync local settings (disk) and struct preference
+ void loadSync(bool doSync);
+
+public:
+
+private:
+ static qPref *m_instance;
+};
+
+#endif
diff --git a/core/settings/qPref_private.h b/core/settings/qPref_private.h
new file mode 100644
index 000000000..96a3b1e5e
--- /dev/null
+++ b/core/settings/qPref_private.h
@@ -0,0 +1,72 @@
+// SPDX-License-Identifier: GPL-2.0
+#ifndef QPREFPRIVATE_H
+#define QPREFPRIVATE_H
+
+// Header used by all qPref<class> implementations to avoid duplicating code
+
+#include <QObject>
+#include <QSettings>
+#include <QVariant>
+#include "core/qthelper.h"
+
+#define COPY_TXT(name, string) \
+{ \
+ free((void *)prefs.name); \
+ prefs.name = copy_qstring(string); \
+}
+
+#define LOADSYNC_INT(name, field) \
+{ \
+ QSettings s; \
+ if (doSync) \
+ s.setValue(group + name, prefs.field); \
+ else \
+ prefs.field = s.value(group + name, default_prefs.field).toInt(); \
+}
+
+#define LOADSYNC_INT_DEF(name, field, defval) \
+{ \
+ QSettings s; \
+ if (doSync) \
+ s.setValue(group + name, prefs.field); \
+ else \
+ prefs.field = s.value(group + name, defval).toInt(); \
+}
+
+#define LOADSYNC_ENUM(name, type, field) \
+{ \
+ QSettings s; \
+ if (doSync) \
+ s.setValue(group + name, prefs.field); \
+ else \
+ prefs.field = (enum type)s.value(group + name, default_prefs.field).toInt(); \
+}
+
+#define LOADSYNC_BOOL(name, field) \
+{ \
+ QSettings s; \
+ if (doSync) \
+ s.setValue(group + name, prefs.field); \
+ else \
+ prefs.field = s.value(group + name, default_prefs.field).toBool(); \
+}
+
+#define LOADSYNC_DOUBLE(name, field) \
+{ \
+ QSettings s; \
+ if (doSync) \
+ s.setValue(group + name, prefs.field); \
+ else \
+ prefs.field = s.value(group + name, default_prefs.field).toDouble(); \
+}
+
+#define LOADSYNC_TXT(name, field) \
+{ \
+ QSettings s; \
+ if (doSync) \
+ s.setValue(group + name, prefs.field); \
+ else \
+ prefs.field = copy_qstring(s.value(group + name, default_prefs.field).toString()); \
+}
+
+#endif
diff --git a/packaging/ios/Subsurface-mobile.pro b/packaging/ios/Subsurface-mobile.pro
index 2cff226e1..f42ce23be 100644
--- a/packaging/ios/Subsurface-mobile.pro
+++ b/packaging/ios/Subsurface-mobile.pro
@@ -77,6 +77,7 @@ SOURCES += ../../subsurface-mobile-main.cpp \
../../core/btdiscovery.cpp \
../../core/connectionlistmodel.cpp \
../../core/qt-ble.cpp \
+ ../../core/settings/qPref.cpp \
../../core/subsurface-qt/CylinderObjectHelper.cpp \
../../core/subsurface-qt/DiveObjectHelper.cpp \
../../core/subsurface-qt/SettingsObjectWrapper.cpp \
@@ -183,6 +184,8 @@ HEADERS += \
../../core/btdiscovery.h \
../../core/connectionlistmodel.h \
../../core/qt-ble.h \
+ ../../core/settings/qPref.h \
+ ../../core/settings/qPref_private.h \
../../core/subsurface-qt/CylinderObjectHelper.h \
../../core/subsurface-qt/DiveObjectHelper.h \
../../core/subsurface-qt/SettingsObjectWrapper.h \