2019-02-11 15:13:01 +00:00
|
|
|
// SPDX-License-Identifier: GPL-2.0
|
|
|
|
#include "themeinterface.h"
|
2020-01-14 12:10:07 +00:00
|
|
|
#include "qmlmanager.h"
|
|
|
|
#include "core/metrics.h"
|
2019-02-11 15:13:01 +00:00
|
|
|
#include "core/settings/qPrefDisplay.h"
|
2020-02-10 00:43:08 +00:00
|
|
|
#include <QFontInfo>
|
2019-02-11 15:13:01 +00:00
|
|
|
|
2020-03-30 19:07:54 +00:00
|
|
|
static const QColor BLUE_BACKGROUND_COLOR = "#eff0f1";
|
|
|
|
static const QColor BLUE_CONTRAST_ACCENT_COLOR = "#FF5722";
|
|
|
|
static const QColor BLUE_DARKER_PRIMARY_COLOR = "#303F9f";
|
|
|
|
static const QColor BLUE_DARKER_PRIMARY_TEXT_COLOR = "#ECECEC";
|
|
|
|
static const QColor BLUE_DRAWER_COLOR = "#FFFFFF";
|
|
|
|
static const QColor BLUE_LIGHT_DRAWER_COLOR = "#FFFFFF";
|
|
|
|
static const QColor BLUE_LIGHT_PRIMARY_COLOR = "#C5CAE9";
|
|
|
|
static const QColor BLUE_LIGHT_PRIMARY_TEXT_COLOR = "#212121";
|
|
|
|
static const QColor BLUE_PRIMARY_COLOR = "#3F51B5";
|
|
|
|
static const QColor BLUE_PRIMARY_TEXT_COLOR = "#FFFFFF";
|
|
|
|
static const QColor BLUE_SECONDARY_TEXT_COLOR = "#757575";
|
|
|
|
static const QColor BLUE_TEXT_COLOR = "#212121";
|
2020-01-28 21:56:20 +00:00
|
|
|
|
2020-03-30 19:07:54 +00:00
|
|
|
static const QColor PINK_BACKGROUND_COLOR = "#eff0f1";
|
|
|
|
static const QColor PINK_CONTRAST_ACCENT_COLOR = "#FF5722";
|
|
|
|
static const QColor PINK_DARKER_PRIMARY_COLOR = "#C2185B";
|
|
|
|
static const QColor PINK_DARKER_PRIMARY_TEXT_COLOR = "#ECECEC";
|
|
|
|
static const QColor PINK_DRAWER_COLOR = "#FFFFFF";
|
|
|
|
static const QColor PINK_LIGHT_DRAWER_COLOR = "#FFFFFF";
|
|
|
|
static const QColor PINK_LIGHT_PRIMARY_COLOR = "#FFDDF4";
|
|
|
|
static const QColor PINK_LIGHT_PRIMARY_TEXT_COLOR = "#212121";
|
|
|
|
static const QColor PINK_PRIMARY_COLOR = "#FF69B4";
|
|
|
|
static const QColor PINK_PRIMARY_TEXT_COLOR = "#212121";
|
|
|
|
static const QColor PINK_SECONDARY_TEXT_COLOR = "#757575";
|
|
|
|
static const QColor PINK_TEXT_COLOR = "#212121";
|
2020-01-28 21:56:20 +00:00
|
|
|
|
2020-03-30 19:07:54 +00:00
|
|
|
static const QColor DARK_BACKGROUND_COLOR = "#303030";
|
|
|
|
static const QColor DARK_CONTRAST_ACCENT_COLOR = "#FF5722";
|
|
|
|
static const QColor DARK_DARKER_PRIMARY_COLOR = "#303F9f";
|
|
|
|
static const QColor DARK_DARKER_PRIMARY_TEXT_COLOR = "#ECECEC";
|
|
|
|
static const QColor DARK_DRAWER_COLOR = "#424242";
|
|
|
|
static const QColor DARK_LIGHT_DRAWER_COLOR = "#FFFFFF";
|
|
|
|
static const QColor DARK_LIGHT_PRIMARY_COLOR = "#C5CAE9";
|
|
|
|
static const QColor DARK_LIGHT_PRIMARY_TEXT_COLOR = "#ECECEC";
|
|
|
|
static const QColor DARK_PRIMARY_COLOR = "#3F51B5";
|
|
|
|
static const QColor DARK_PRIMARY_TEXT_COLOR = "#ECECEC";
|
|
|
|
static const QColor DARK_SECONDARY_TEXT_COLOR = "#757575";
|
|
|
|
static const QColor DARK_TEXT_COLOR = "#ECECEC";
|
2020-01-28 21:56:20 +00:00
|
|
|
|
2019-02-11 15:13:01 +00:00
|
|
|
themeInterface *themeInterface::instance()
|
|
|
|
{
|
|
|
|
static themeInterface *self = new themeInterface;
|
|
|
|
return self;
|
|
|
|
}
|
|
|
|
|
2020-01-28 14:04:22 +00:00
|
|
|
void themeInterface::setup(QQmlContext *ct)
|
2019-02-11 15:13:01 +00:00
|
|
|
{
|
2020-01-28 14:04:22 +00:00
|
|
|
// Register interface class
|
2020-03-30 19:01:54 +00:00
|
|
|
ct->setContextProperty("subsurfaceTheme", this);
|
2020-01-28 14:04:22 +00:00
|
|
|
|
2019-02-11 15:13:01 +00:00
|
|
|
// get current theme
|
2020-01-28 21:56:20 +00:00
|
|
|
m_currentTheme = qPrefDisplay::theme();
|
|
|
|
update_theme();
|
2020-01-14 12:10:07 +00:00
|
|
|
|
2020-02-10 00:43:08 +00:00
|
|
|
// check system font and create QFontInfo in order to reliably get the point size
|
|
|
|
QFontInfo qfi(defaultModelFont());
|
|
|
|
m_basePointSize = qfi.pointSize();
|
2020-01-14 12:10:07 +00:00
|
|
|
|
|
|
|
// set initial font size
|
2020-01-28 21:56:20 +00:00
|
|
|
set_currentScale(qPrefDisplay::mobile_scale());
|
2019-02-11 15:13:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void themeInterface::set_currentTheme(const QString &theme)
|
|
|
|
{
|
|
|
|
m_currentTheme = theme;
|
|
|
|
qPrefDisplay::set_theme(m_currentTheme);
|
2020-03-30 19:01:54 +00:00
|
|
|
update_theme();
|
|
|
|
emit currentThemeChanged(theme);
|
2019-02-11 15:13:01 +00:00
|
|
|
}
|
|
|
|
|
2020-01-14 18:30:47 +00:00
|
|
|
double themeInterface::currentScale()
|
|
|
|
{
|
|
|
|
return qPrefDisplay::mobile_scale();
|
|
|
|
}
|
|
|
|
void themeInterface::set_currentScale(double newScale)
|
|
|
|
{
|
|
|
|
if (newScale != qPrefDisplay::mobile_scale()) {
|
|
|
|
qPrefDisplay::set_mobile_scale(newScale);
|
2020-03-30 19:01:54 +00:00
|
|
|
emit currentScaleChanged(qPrefDisplay::mobile_scale());
|
2020-01-14 18:30:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Set current font size
|
|
|
|
defaultModelFont().setPointSize(m_basePointSize * qPrefDisplay::mobile_scale());
|
|
|
|
|
|
|
|
// adjust all used font sizes
|
2020-02-10 00:43:08 +00:00
|
|
|
m_regularPointSize = m_basePointSize * qPrefDisplay::mobile_scale();
|
2020-03-30 19:01:54 +00:00
|
|
|
emit regularPointSizeChanged(m_regularPointSize);
|
2020-01-14 18:30:47 +00:00
|
|
|
|
|
|
|
m_headingPointSize = m_regularPointSize * 1.2;
|
2020-03-30 19:01:54 +00:00
|
|
|
emit headingPointSizeChanged(m_headingPointSize);
|
2020-01-14 18:30:47 +00:00
|
|
|
|
|
|
|
m_smallPointSize = m_regularPointSize * 0.8;
|
2020-03-30 19:01:54 +00:00
|
|
|
emit smallPointSizeChanged(m_smallPointSize);
|
2020-01-14 18:30:47 +00:00
|
|
|
|
|
|
|
m_titlePointSize = m_regularPointSize * 1.5;
|
2020-03-30 19:01:54 +00:00
|
|
|
emit titlePointSizeChanged(m_titlePointSize);
|
2020-01-14 18:30:47 +00:00
|
|
|
}
|
|
|
|
|
2019-02-11 15:13:01 +00:00
|
|
|
void themeInterface::update_theme()
|
|
|
|
{
|
|
|
|
if (m_currentTheme == "Blue") {
|
2020-01-28 21:56:20 +00:00
|
|
|
m_backgroundColor = BLUE_BACKGROUND_COLOR;
|
|
|
|
m_contrastAccentColor = BLUE_CONTRAST_ACCENT_COLOR;
|
|
|
|
m_darkerPrimaryColor = BLUE_DARKER_PRIMARY_COLOR;
|
|
|
|
m_darkerPrimaryTextColor = BLUE_DARKER_PRIMARY_TEXT_COLOR;
|
|
|
|
m_drawerColor = BLUE_DRAWER_COLOR;
|
|
|
|
m_lightDrawerColor = BLUE_LIGHT_DRAWER_COLOR;
|
|
|
|
m_lightPrimaryColor = BLUE_LIGHT_PRIMARY_COLOR;
|
|
|
|
m_lightPrimaryTextColor = BLUE_LIGHT_PRIMARY_TEXT_COLOR;
|
|
|
|
m_primaryColor = BLUE_PRIMARY_COLOR;
|
|
|
|
m_primaryTextColor = BLUE_PRIMARY_TEXT_COLOR;
|
|
|
|
m_secondaryTextColor = BLUE_SECONDARY_TEXT_COLOR;
|
|
|
|
m_textColor = BLUE_TEXT_COLOR;
|
2019-02-11 15:13:01 +00:00
|
|
|
} else if (m_currentTheme == "Pink") {
|
2020-01-28 21:56:20 +00:00
|
|
|
m_backgroundColor = PINK_BACKGROUND_COLOR;
|
|
|
|
m_contrastAccentColor = PINK_CONTRAST_ACCENT_COLOR;
|
|
|
|
m_darkerPrimaryColor = PINK_DARKER_PRIMARY_COLOR;
|
|
|
|
m_darkerPrimaryTextColor = PINK_DARKER_PRIMARY_TEXT_COLOR;
|
|
|
|
m_drawerColor = PINK_DRAWER_COLOR;
|
|
|
|
m_lightDrawerColor = PINK_LIGHT_DRAWER_COLOR;
|
|
|
|
m_lightPrimaryColor = PINK_LIGHT_PRIMARY_COLOR;
|
|
|
|
m_lightPrimaryTextColor = PINK_LIGHT_PRIMARY_TEXT_COLOR;
|
|
|
|
m_primaryColor = PINK_PRIMARY_COLOR;
|
|
|
|
m_primaryTextColor = PINK_PRIMARY_TEXT_COLOR;
|
|
|
|
m_secondaryTextColor = PINK_SECONDARY_TEXT_COLOR;
|
|
|
|
m_textColor = PINK_TEXT_COLOR;
|
2019-02-11 15:13:01 +00:00
|
|
|
} else {
|
2020-01-28 21:56:20 +00:00
|
|
|
m_backgroundColor = DARK_BACKGROUND_COLOR;
|
|
|
|
m_contrastAccentColor = DARK_CONTRAST_ACCENT_COLOR;
|
|
|
|
m_darkerPrimaryColor = DARK_DARKER_PRIMARY_COLOR;
|
|
|
|
m_darkerPrimaryTextColor = DARK_DARKER_PRIMARY_TEXT_COLOR;
|
|
|
|
m_drawerColor = DARK_DRAWER_COLOR;
|
|
|
|
m_lightDrawerColor = DARK_LIGHT_DRAWER_COLOR;
|
|
|
|
m_lightPrimaryColor = DARK_LIGHT_PRIMARY_COLOR;
|
|
|
|
m_lightPrimaryTextColor = DARK_LIGHT_PRIMARY_TEXT_COLOR;
|
|
|
|
m_primaryColor = DARK_PRIMARY_COLOR;
|
|
|
|
m_primaryTextColor = DARK_PRIMARY_TEXT_COLOR;
|
|
|
|
m_secondaryTextColor = DARK_SECONDARY_TEXT_COLOR;
|
|
|
|
m_textColor = DARK_TEXT_COLOR;
|
2019-02-11 15:13:01 +00:00
|
|
|
}
|
2020-03-30 19:01:54 +00:00
|
|
|
emit backgroundColorChanged(m_backgroundColor);
|
|
|
|
emit contrastAccentColorChanged(m_contrastAccentColor);
|
|
|
|
emit darkerPrimaryColorChanged(m_darkerPrimaryColor);
|
|
|
|
emit darkerPrimaryTextColorChanged(m_darkerPrimaryTextColor);
|
|
|
|
emit drawerColorChanged(m_drawerColor);
|
|
|
|
emit lightDrawerColorChanged(m_lightDrawerColor);
|
|
|
|
emit lightPrimaryColorChanged(m_lightPrimaryColor);
|
|
|
|
emit lightPrimaryTextColorChanged(m_lightPrimaryTextColor);
|
|
|
|
emit primaryColorChanged(m_primaryColor);
|
|
|
|
emit primaryTextColorChanged(m_primaryTextColor);
|
|
|
|
emit secondaryTextColorChanged(m_secondaryTextColor);
|
|
|
|
emit textColorChanged(m_textColor);
|
2019-02-11 15:13:01 +00:00
|
|
|
}
|