BaseUI/qml/Style.qml
2023-06-06 18:43:41 +02:00

61 lines
2.7 KiB
QML

pragma Singleton
import QtQuick
import QtQuick.Controls.Material
QtObject {
property bool isDarkTheme: false
property string theme: "System"
property bool toolBarPrimary: true
property color primaryColor: Material.color(Material.BlueGrey)
property color accentColor: Material.color(Material.Orange)
property color primaryDarkColor: Qt.darker(primaryColor)
// ui constants
property color textOnPrimary: isDarkColor(primaryColor) ? "#FFFFFF" : "#000000"
property color textOnAccent: isDarkColor(accentColor) ? "#FFFFFF" : "#000000"
property color textOnPrimaryDark: textOnPrimary
property color dividerColor: isDarkTheme ? "#FFFFFF" : "#000000"
property real primaryTextOpacity: isDarkTheme ? 1.0 : 0.87
property real secondaryTextOpacity: isDarkTheme ? 0.7 : 0.54
property real dividerOpacity: isDarkTheme ? 0.12 : 0.12
property color flatButtonTextColor: isDarkTheme ? "#FFFFFF" : "#424242"
property color popupTextColor: isDarkTheme ? "#FFFFFF" : "#424242"
property color toastColor: isDarkTheme ? "Darkgrey" : "#323232"
property real toastOpacity: isDarkTheme ? 0.9 : 0.75
property color toolBarForeground: toolBarPrimary ? textOnPrimary : (isDarkTheme ? "#FFFFFF" : "#000000")
property color toolBarBackground: toolBarPrimary ? primaryColor : (isDarkTheme ? "#1C1B1F" : "#FFFBFE")
// font sizes - defaults from Google Material Design Guide
property int fontSizeDisplay4: 112
property int fontSizeDisplay3: 56
property int fontSizeDisplay2: 45
property int fontSizeDisplay1: 34
property int fontSizeHeadline: 24
property int fontSizeTitle: 20
property int fontSizeSubheading: 16
property int fontSizeBodyAndButton: 14 // is Default
property int fontSizeCaption: 12
// fonts are grouped into primary and secondary with different Opacity
// to make it easier to get the right property,
// here's the opacity per size:
property real opacityDisplay4: secondaryTextOpacity
property real opacityDisplay3: secondaryTextOpacity
property real opacityDisplay2: secondaryTextOpacity
property real opacityDisplay1: secondaryTextOpacity
property real opacityHeadline: primaryTextOpacity
property real opacityTitle: primaryTextOpacity
property real opacitySubheading: primaryTextOpacity
// body can be both: primary or secondary text
property real opacityBodyAndButton: primaryTextOpacity
property real opacityBodySecondary: secondaryTextOpacity
property real opacityCaption: secondaryTextOpacity
function isDarkColor(color) {
var a = 1.0 - (0.299 * color.r + 0.587 * color.g + 0.114 * color.b)
return color.a > 0.0 && a >= 0.3
}
}