mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
mobile-widgets: add themeInterface
Currently subsurfaceTheme resides in main.qml, where it does not naturally belong. Add C++ class that will replace subsurfaceTheme in main.qml in a 1-1 manner. This opens future posibilities - on top of the 3 themes, allow users to select colors/fonts - add stylesheets to Template* components - make day/night shift automatically. Signed-off-by: jan Iversen <jan@casacondor.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
49616c1842
commit
9de296f3dd
4 changed files with 229 additions and 0 deletions
|
@ -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
|
||||
|
|
73
mobile-widgets/themeinterface.cpp
Normal file
73
mobile-widgets/themeinterface.cpp
Normal file
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
|
153
mobile-widgets/themeinterface.h
Normal file
153
mobile-widgets/themeinterface.h
Normal file
|
@ -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
|
|
@ -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 \
|
||||
|
|
Loading…
Add table
Reference in a new issue