From c7a019ddcd164ecfbf82be6129967c96be2667d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=A6=8C=EA=A6=AB=EA=A6=B6=EA=A6=8F=EA=A7=80=EA=A6=A6?= =?UTF-8?q?=EA=A6=BF=EA=A6=A7=EA=A6=AE=EA=A6=91=EA=A6=A9=EA=A6=AD=EA=A7=80?= Date: Thu, 6 Apr 2023 12:19:31 +0800 Subject: Rename the files --- Bootstrap.cxx | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Bootstrap.cxx (limited to 'Bootstrap.cxx') diff --git a/Bootstrap.cxx b/Bootstrap.cxx new file mode 100644 index 0000000..4873f01 --- /dev/null +++ b/Bootstrap.cxx @@ -0,0 +1,67 @@ +#include "tomlc99/toml.h" +#include "Bootstrap.hxx" + +Bootstrap::Bootstrap(QObject *parent): + QObject(parent), + bsTheme(None), + bsDarkMode(false), + bsLightBodyBg("#fff"), + bsDarkBodyBg("#212529") +{ + QFile conf{QStringLiteral(":/qtquickcontrols2.conf")}; + if (!conf.open(QIODevice::ReadOnly | QIODevice::Text)) return; + auto toml = toml_parse(conf.readAll().data(), nullptr, 0); + conf.close(); + auto bootstrap = toml_table_in(toml, "Bootstrap"); + if (!bootstrap) { + toml_free(toml); + return; + } + auto darkMode = toml_bool_in(bootstrap, "DarkMode"); + if (darkMode.ok) bsDarkMode = darkMode.u.b; + auto bodyBg = toml_array_in(bootstrap, "BodyBg"); + if (bodyBg) { + auto lightBodyBg = toml_string_at(bodyBg, 0).u.s; + bsLightBodyBg = QColor{lightBodyBg}; + free(lightBodyBg); + auto darkBodyBg = toml_string_at(bodyBg, 1).u.s; + bsDarkBodyBg = QColor{darkBodyBg}; + free(darkBodyBg); + } + toml_free(toml); +} + +Bootstrap *Bootstrap::qmlAttachedProperties(QObject *object) +{ + return new Bootstrap(object); +} + +bool Bootstrap::darkMode() const +{ + return bsDarkMode; +} + +void Bootstrap::setDarkMode(bool darkMode) +{ + if (darkMode == bsDarkMode) return; + bsDarkMode = darkMode; + emit darkModeChanged(); + emit bodyBgChanged(); +} + +Bootstrap::Theme Bootstrap::theme() const +{ + return bsTheme; +} + +void Bootstrap::setTheme(Theme theme) +{ + if (theme == bsTheme) return; + bsTheme = theme; + emit themeChanged(); +} + +QColor Bootstrap::bodyBg() const +{ + return bsDarkMode ? bsDarkBodyBg : bsLightBodyBg; +} -- cgit v1.2.3