2019-02-11 15:13:01 +00:00
|
|
|
// SPDX-License-Identifier: GPL-2.0
|
|
|
|
#ifndef THEMEINTERFACE_H
|
|
|
|
#define THEMEINTERFACE_H
|
|
|
|
#include <QObject>
|
|
|
|
#include <QColor>
|
|
|
|
#include <QSettings>
|
2020-01-28 14:04:22 +00:00
|
|
|
#include <QQmlContext>
|
2019-02-11 15:13:01 +00:00
|
|
|
|
2020-03-30 19:09:18 +00:00
|
|
|
class ThemeInterface : public QObject {
|
2019-02-11 15:13:01 +00:00
|
|
|
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)
|
|
|
|
|
2020-01-14 12:10:07 +00:00
|
|
|
// Font
|
|
|
|
Q_PROPERTY(double basePointSize MEMBER m_basePointSize CONSTANT)
|
2020-01-14 18:30:47 +00:00
|
|
|
Q_PROPERTY(double headingPointSize MEMBER m_headingPointSize NOTIFY headingPointSizeChanged)
|
|
|
|
Q_PROPERTY(double regularPointSize MEMBER m_regularPointSize NOTIFY regularPointSizeChanged)
|
|
|
|
Q_PROPERTY(double smallPointSize MEMBER m_smallPointSize NOTIFY smallPointSizeChanged)
|
|
|
|
Q_PROPERTY(double titlePointSize MEMBER m_titlePointSize NOTIFY titlePointSizeChanged)
|
|
|
|
Q_PROPERTY(double currentScale READ currentScale WRITE set_currentScale NOTIFY currentScaleChanged)
|
2020-01-14 12:10:07 +00:00
|
|
|
|
2019-02-11 15:13:01 +00:00
|
|
|
// Support
|
|
|
|
Q_PROPERTY(QString currentTheme MEMBER m_currentTheme WRITE set_currentTheme NOTIFY currentThemeChanged)
|
|
|
|
|
|
|
|
public:
|
2020-03-30 19:09:18 +00:00
|
|
|
static ThemeInterface *instance();
|
2020-03-30 19:01:54 +00:00
|
|
|
double currentScale();
|
2020-01-28 21:56:20 +00:00
|
|
|
|
2019-02-11 15:13:01 +00:00
|
|
|
public slots:
|
2020-03-30 19:01:54 +00:00
|
|
|
void set_currentTheme(const QString &theme);
|
|
|
|
void set_currentScale(double);
|
2020-01-14 18:30:47 +00:00
|
|
|
|
2019-02-11 15:13:01 +00:00
|
|
|
signals:
|
2020-03-30 19:20:49 +00:00
|
|
|
void backgroundColorChanged();
|
|
|
|
void contrastAccentColorChanged();
|
|
|
|
void darkerPrimaryColorChanged();
|
|
|
|
void darkerPrimaryTextColorChanged();
|
|
|
|
void drawerColorChanged();
|
|
|
|
void lightDrawerColorChanged();
|
|
|
|
void lightPrimaryColorChanged();
|
|
|
|
void lightPrimaryTextColorChanged();
|
|
|
|
void primaryColorChanged();
|
|
|
|
void primaryTextColorChanged();
|
|
|
|
void secondaryTextColorChanged();
|
|
|
|
void textColorChanged();
|
2019-02-11 15:13:01 +00:00
|
|
|
|
2020-03-30 19:20:49 +00:00
|
|
|
void headingPointSizeChanged();
|
|
|
|
void regularPointSizeChanged();
|
|
|
|
void smallPointSizeChanged();
|
|
|
|
void titlePointSizeChanged();
|
|
|
|
void currentScaleChanged();
|
2020-01-14 18:30:47 +00:00
|
|
|
|
2020-03-30 19:20:49 +00:00
|
|
|
void currentThemeChanged();
|
2019-02-11 15:13:01 +00:00
|
|
|
|
|
|
|
private:
|
2020-03-30 19:33:05 +00:00
|
|
|
ThemeInterface();
|
2020-03-30 19:01:54 +00:00
|
|
|
void update_theme();
|
2020-01-28 21:56:20 +00:00
|
|
|
|
2020-03-30 19:01:54 +00:00
|
|
|
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;
|
2020-01-28 21:56:20 +00:00
|
|
|
|
2020-03-30 19:01:54 +00:00
|
|
|
double m_basePointSize;
|
|
|
|
double m_headingPointSize;
|
|
|
|
double m_regularPointSize;
|
|
|
|
double m_smallPointSize;
|
|
|
|
double m_titlePointSize;
|
2020-01-28 21:56:20 +00:00
|
|
|
|
2020-03-30 19:01:54 +00:00
|
|
|
QString m_currentTheme;
|
2019-02-11 15:13:01 +00:00
|
|
|
};
|
|
|
|
#endif
|