summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mobile-widgets/CMakeLists.txt1
-rw-r--r--mobile-widgets/themeinterface.cpp73
-rw-r--r--mobile-widgets/themeinterface.h153
-rw-r--r--packaging/ios/Subsurface-mobile.pro2
4 files changed, 229 insertions, 0 deletions
diff --git a/mobile-widgets/CMakeLists.txt b/mobile-widgets/CMakeLists.txt
index 6c1747dbc..9f5ddaf47 100644
--- a/mobile-widgets/CMakeLists.txt
+++ b/mobile-widgets/CMakeLists.txt
@@ -3,6 +3,7 @@
set(SUBSURFACE_MOBILE_SRCS
qmlinterface.cpp
qmlmanager.cpp
+ themeinterface.cpp
qml/kirigami/src/columnview.cpp
qml/kirigami/src/delegaterecycler.cpp
qml/kirigami/src/enums.cpp
diff --git a/mobile-widgets/themeinterface.cpp b/mobile-widgets/themeinterface.cpp
new file mode 100644
index 000000000..9f2e842ee
--- /dev/null
+++ b/mobile-widgets/themeinterface.cpp
@@ -0,0 +1,73 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "themeinterface.h"
+#include "core/settings/qPrefDisplay.h"
+
+themeInterface *themeInterface::instance()
+{
+ static themeInterface *self = new themeInterface;
+ return self;
+}
+
+void themeInterface::setup()
+{
+ // get current theme
+ m_currentTheme = qPrefDisplay::theme();
+ update_theme();
+}
+
+void themeInterface::set_currentTheme(const QString &theme)
+{
+ m_currentTheme = theme;
+ qPrefDisplay::set_theme(m_currentTheme);
+ update_theme();
+ emit currentThemeChanged(theme);
+}
+
+void themeInterface::update_theme()
+{
+ if (m_currentTheme == "Blue") {
+ m_backgroundColor = m_blueBackgroundColor;
+ m_contrastAccentColor = m_blueContrastAccentColor;
+ m_darkerPrimaryColor = m_blueDarkerPrimaryColor;
+ m_darkerPrimaryTextColor = m_blueDarkerPrimaryTextColor;
+ m_drawerColor = m_blueDrawerColor;
+ m_lightDrawerColor = m_blueDrawerColor;
+ m_lightPrimaryColor = m_blueLightPrimaryColor;
+ m_lightPrimaryTextColor = m_blueLightPrimaryTextColor;
+ m_primaryColor = m_bluePrimaryColor;
+ m_primaryTextColor = m_bluePrimaryTextColor;
+ m_secondaryTextColor = m_blueSecondaryTextColor;
+ m_textColor = m_blueTextColor;
+ m_iconStyle = ":/icons";
+ } else if (m_currentTheme == "Pink") {
+ m_backgroundColor = m_pinkBackgroundColor;
+ m_contrastAccentColor = m_pinkContrastAccentColor;
+ m_darkerPrimaryColor = m_pinkDarkerPrimaryColor;
+ m_darkerPrimaryTextColor = m_pinkDarkerPrimaryTextColor;
+ m_drawerColor = m_pinkDrawerColor;
+ m_lightDrawerColor = m_pinkDrawerColor;
+ m_lightPrimaryColor = m_pinkLightPrimaryColor;
+ m_lightPrimaryTextColor = m_pinkLightPrimaryTextColor;
+ m_primaryColor = m_pinkPrimaryColor;
+ m_primaryTextColor = m_pinkPrimaryTextColor;
+ m_secondaryTextColor = m_pinkSecondaryTextColor;
+ m_textColor = m_pinkTextColor;
+ m_iconStyle = ":/icons";
+ } else {
+ m_backgroundColor = m_darkBackgroundColor;
+ m_contrastAccentColor = m_darkContrastAccentColor;
+ m_darkerPrimaryColor = m_darkDarkerPrimaryColor;
+ m_darkerPrimaryTextColor = m_darkDarkerPrimaryTextColor;
+ m_drawerColor = m_darkDrawerColor;
+ m_lightDrawerColor = m_darkDrawerColor;
+ m_lightPrimaryColor = m_darkLightPrimaryColor;
+ m_lightPrimaryTextColor = m_darkLightPrimaryTextColor;
+ m_primaryColor = m_darkPrimaryColor;
+ m_primaryTextColor = m_darkPrimaryTextColor;
+ m_secondaryTextColor = m_darkSecondaryTextColor;
+ m_textColor = m_darkTextColor;
+ m_iconStyle = ":/icons-dark";
+ }
+}
+
+
diff --git a/mobile-widgets/themeinterface.h b/mobile-widgets/themeinterface.h
new file mode 100644
index 000000000..9e135538c
--- /dev/null
+++ b/mobile-widgets/themeinterface.h
@@ -0,0 +1,153 @@
+// SPDX-License-Identifier: GPL-2.0
+#ifndef THEMEINTERFACE_H
+#define THEMEINTERFACE_H
+#include <QObject>
+#include <QColor>
+#include <QSettings>
+
+class themeInterface : public QObject {
+ Q_OBJECT
+
+ // Color themes
+ Q_PROPERTY(QColor backgroundColor MEMBER m_backgroundColor NOTIFY backgroundColorChanged)
+ Q_PROPERTY(QColor contrastAccentColor MEMBER m_contrastAccentColor NOTIFY contrastAccentColorChanged)
+ Q_PROPERTY(QColor darkerPrimaryColor MEMBER m_darkerPrimaryColor NOTIFY darkerPrimaryColorChanged)
+ Q_PROPERTY(QColor darkerPrimaryTextColor MEMBER m_darkerPrimaryTextColor NOTIFY darkerPrimaryTextColorChanged)
+ Q_PROPERTY(QColor drawerColor MEMBER m_drawerColor NOTIFY drawerColorChanged)
+ Q_PROPERTY(QColor lightDrawerColor MEMBER m_lightDrawerColor NOTIFY lightDrawerColorChanged)
+ Q_PROPERTY(QColor lightPrimaryColor MEMBER m_lightPrimaryColor NOTIFY lightPrimaryColorChanged)
+ Q_PROPERTY(QColor lightPrimaryTextColor MEMBER m_lightPrimaryTextColor NOTIFY lightPrimaryTextColorChanged)
+ Q_PROPERTY(QColor primaryColor MEMBER m_primaryColor NOTIFY primaryColorChanged)
+ Q_PROPERTY(QColor primaryTextColor MEMBER m_primaryTextColor NOTIFY primaryTextColorChanged)
+ Q_PROPERTY(QColor secondaryTextColor MEMBER m_secondaryTextColor NOTIFY secondaryTextColorChanged)
+ Q_PROPERTY(QColor textColor MEMBER m_textColor NOTIFY textColorChanged)
+
+ // Support
+ Q_PROPERTY(QString currentTheme MEMBER m_currentTheme WRITE set_currentTheme NOTIFY currentThemeChanged)
+ Q_PROPERTY(QString iconStyle MEMBER m_iconStyle CONSTANT)
+
+ // Compatibility existing code
+ Q_PROPERTY(QColor blueBackgroundColor MEMBER m_blueBackgroundColor CONSTANT)
+ Q_PROPERTY(QColor blueContrastAccentColor MEMBER m_blueTextColor CONSTANT)
+ Q_PROPERTY(QColor blueDarkerPrimaryColor MEMBER m_blueDarkerPrimaryColor CONSTANT)
+ Q_PROPERTY(QColor blueDarkerPrimaryTextColor MEMBER m_blueDarkerPrimaryTextColor CONSTANT)
+ Q_PROPERTY(QColor blueDrawerColor MEMBER m_blueDrawerColor CONSTANT)
+ Q_PROPERTY(QColor blueLightDrawerColor MEMBER m_blueLightDrawerColor CONSTANT)
+ Q_PROPERTY(QColor blueLightPrimaryColor MEMBER m_blueLightPrimaryColor CONSTANT)
+ Q_PROPERTY(QColor blueLightPrimaryTextColor MEMBER m_blueLightPrimaryTextColor CONSTANT)
+ Q_PROPERTY(QColor bluePrimaryColor MEMBER m_bluePrimaryColor CONSTANT)
+ Q_PROPERTY(QColor bluePrimaryTextColor MEMBER m_bluePrimaryTextColor CONSTANT)
+ Q_PROPERTY(QColor blueSecondaryTextColor MEMBER m_blueSecondaryTextColor CONSTANT)
+ Q_PROPERTY(QColor blueTextColor MEMBER m_blueTextColor CONSTANT)
+
+ Q_PROPERTY(QColor pinkBackgroundColor MEMBER m_pinkBackgroundColor CONSTANT)
+ Q_PROPERTY(QColor pinkContrastAccentColor MEMBER m_pinkContrastAccentColor CONSTANT)
+ Q_PROPERTY(QColor pinkDarkerPrimaryColor MEMBER m_blueDarkerPrimaryColor CONSTANT)
+ Q_PROPERTY(QColor pinkDarkerPrimaryTextColor MEMBER m_blueDarkerPrimaryTextColor CONSTANT)
+ Q_PROPERTY(QColor pinkDrawerColor MEMBER m_pinkDrawerColor CONSTANT)
+ Q_PROPERTY(QColor pinkLightDrawerColor MEMBER m_pinkLightDrawerColor CONSTANT)
+ Q_PROPERTY(QColor pinkLightPrimaryColor MEMBER m_blueLightPrimaryColor CONSTANT)
+ Q_PROPERTY(QColor pinkLightPrimaryTextColor MEMBER m_blueLightPrimaryTextColor CONSTANT)
+ Q_PROPERTY(QColor pinkPrimaryColor MEMBER m_pinkPrimaryColor CONSTANT)
+ Q_PROPERTY(QColor pinkPrimaryTextColor MEMBER m_pinkPrimaryTextColor CONSTANT)
+ Q_PROPERTY(QColor pinkSecondaryTextColor MEMBER m_blueSecondaryTextColor CONSTANT)
+ Q_PROPERTY(QColor pinkTextColor MEMBER m_pinkTextColor CONSTANT)
+
+ Q_PROPERTY(QColor darkBackgroundColor MEMBER m_darkBackgroundColor CONSTANT)
+ Q_PROPERTY(QColor darkContrastAccentColor MEMBER m_darkContrastAccentColor CONSTANT)
+ Q_PROPERTY(QColor darkDarkerPrimaryColor MEMBER m_blueDarkerPrimaryColor CONSTANT)
+ Q_PROPERTY(QColor darkDarkerPrimaryTextColor MEMBER m_blueDarkerPrimaryTextColor CONSTANT)
+ Q_PROPERTY(QColor darkDrawerColor MEMBER m_drawerColor CONSTANT)
+ Q_PROPERTY(QColor darkLightDrawerColor MEMBER m_darkLightDrawerColor CONSTANT)
+ Q_PROPERTY(QColor darkLightPrimaryColor MEMBER m_blueLightPrimaryColor CONSTANT)
+ Q_PROPERTY(QColor darkLightPrimaryTextColor MEMBER m_blueLightPrimaryTextColor CONSTANT)
+ Q_PROPERTY(QColor darkPrimaryColor MEMBER m_darkPrimaryColor CONSTANT)
+ Q_PROPERTY(QColor darkPrimaryTextColor MEMBER m_darkPrimaryTextColor CONSTANT)
+ Q_PROPERTY(QColor darkSecondaryTextColor MEMBER m_blueSecondaryTextColor CONSTANT)
+ Q_PROPERTY(QColor darkTextColor MEMBER m_darkTextColor CONSTANT)
+
+public:
+ static themeInterface *instance();
+
+ void setup();
+
+public slots:
+ void set_currentTheme(const QString &theme);
+
+signals:
+ void backgroundColorChanged(QColor);
+ void contrastAccentColorChanged(QColor);
+ void darkerPrimaryColorChanged(QColor);
+ void darkerPrimaryTextColorChanged(QColor);
+ void drawerColorChanged(QColor);
+ void lightDrawerColorChanged(QColor);
+ void lightPrimaryColorChanged(QColor);
+ void lightPrimaryTextColorChanged(QColor);
+ void primaryColorChanged(QColor);
+ void primaryTextColorChanged(QColor);
+ void secondaryTextColorChanged(QColor);
+ void textColorChanged(QColor);
+
+ void currentThemeChanged(const QString &);
+
+private:
+ themeInterface() {}
+ void update_theme();
+
+ QColor m_backgroundColor;
+ QColor m_contrastAccentColor;
+ QColor m_darkerPrimaryColor;
+ QColor m_darkerPrimaryTextColor;
+ QColor m_drawerColor;
+ QColor m_lightDrawerColor;
+ QColor m_lightPrimaryColor;
+ QColor m_lightPrimaryTextColor;
+ QColor m_primaryColor;
+ QColor m_primaryTextColor;
+ QColor m_secondaryTextColor;
+ QColor m_textColor;
+
+ QString m_currentTheme;
+ QString m_iconStyle;
+
+ // Compatibility existing code
+ const QColor m_blueBackgroundColor = "#eff0f1";
+ const QColor m_blueContrastAccentColor = "#FF5722";
+ const QColor m_blueDarkerPrimaryColor = "#303F9f";
+ const QColor m_blueDarkerPrimaryTextColor = "#ECECEC";
+ const QColor m_blueDrawerColor = "#FFFFFF";
+ const QColor m_blueLightDrawerColor = "#FFFFFF";
+ const QColor m_blueLightPrimaryColor = "#C5CAE9";
+ const QColor m_blueLightPrimaryTextColor = "#212121";
+ const QColor m_bluePrimaryColor = "#3F51B5";
+ const QColor m_bluePrimaryTextColor = "#FFFFFF";
+ const QColor m_blueSecondaryTextColor = "#757575";
+ const QColor m_blueTextColor = "#212121";
+
+ const QColor m_pinkBackgroundColor = "#eff0f1";
+ const QColor m_pinkContrastAccentColor = "#FF5722";
+ const QColor m_pinkDarkerPrimaryColor = "#C2185B";
+ const QColor m_pinkDarkerPrimaryTextColor = "#ECECEC";
+ const QColor m_pinkDrawerColor = "#FFFFFF";
+ const QColor m_pinkLightDrawerColor = "#FFFFFF";
+ const QColor m_pinkLightPrimaryColor = "#FFDDF4";
+ const QColor m_pinkLightPrimaryTextColor = "#212121";
+ const QColor m_pinkPrimaryColor = "#FF69B4";
+ const QColor m_pinkPrimaryTextColor = "#212121";
+ const QColor m_pinkSecondaryTextColor = "#757575";
+ const QColor m_pinkTextColor = "#212121";
+
+ const QColor m_darkBackgroundColor = "#303030";
+ const QColor m_darkContrastAccentColor = "#FF5722";
+ const QColor m_darkDarkerPrimaryColor = "#303F9f";
+ const QColor m_darkDarkerPrimaryTextColor = "#ECECEC";
+ const QColor m_darkDrawerColor = "#424242";
+ const QColor m_darkLightDrawerColor = "#FFFFFF";
+ const QColor m_darkLightPrimaryColor = "#C5CAE9";
+ const QColor m_darkLightPrimaryTextColor = "#ECECEC";
+ const QColor m_darkPrimaryColor = "#3F51B5";
+ const QColor m_darkPrimaryTextColor = "#ECECEC";
+ const QColor m_darkSecondaryTextColor = "#757575";
+ const QColor m_darkTextColor = "#ECECEC";
+};
+#endif
diff --git a/packaging/ios/Subsurface-mobile.pro b/packaging/ios/Subsurface-mobile.pro
index afe2e10c5..aafb52549 100644
--- a/packaging/ios/Subsurface-mobile.pro
+++ b/packaging/ios/Subsurface-mobile.pro
@@ -112,6 +112,7 @@ SOURCES += ../../subsurface-mobile-main.cpp \
../../backend-shared/plannershared.cpp \
../../mobile-widgets/qmlinterface.cpp \
../../mobile-widgets/qmlmanager.cpp \
+ ../../mobile-widgets/themeinterface.cpp \
../../qt-models/divelistmodel.cpp \
../../qt-models/diveplotdatamodel.cpp \
../../qt-models/gpslistmodel.cpp \
@@ -245,6 +246,7 @@ HEADERS += \
../../backend-shared/plannershared.h \
../../mobile-widgets/qmlinterface.h \
../../mobile-widgets/qmlmanager.h \
+ ../../mobile-widgets/themeinterface.h \
../../map-widget/qmlmapwidgethelper.h \
../../qt-models/divelistmodel.h \
../../qt-models/diveplotdatamodel.h \