summaryrefslogtreecommitdiff
path: root/Bootstrap.cxx
diff options
context:
space:
mode:
authorꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2023-04-08 08:25:24 +0800
committerꦌꦫꦶꦏ꧀ꦦꦿꦧꦮꦑꦩꦭ꧀ <erik@darapsa.co.id>2023-04-08 08:25:24 +0800
commit36bec9d95a61d1cdc33d86cf25c22acacdcf0217 (patch)
tree0c1bd0fecf76678cf78553b4c0f3ab5b93c8553c /Bootstrap.cxx
parent9e5a2d472be37c8295a660afe35aeef83e84b44a (diff)
Mode is enum, Theme is class enum, Colors are vectors
Diffstat (limited to 'Bootstrap.cxx')
-rw-r--r--Bootstrap.cxx94
1 files changed, 47 insertions, 47 deletions
diff --git a/Bootstrap.cxx b/Bootstrap.cxx
index c0d2fb9..7183cb7 100644
--- a/Bootstrap.cxx
+++ b/Bootstrap.cxx
@@ -2,54 +2,54 @@
#include "Bootstrap.hxx"
Bootstrap::Bootstrap(QObject *parent):
- QObject(parent),
- bsTheme(None),
- bsDarkMode(false),
- bsLightBodyColor("#212529"),
- bsDarkBodyColor("#adb5bd"),
- bsLightBodyBg("#fff"),
- bsDarkBodyBg("#212529"),
- bsLightBorderColor("#dee2e6"),
- bsDarkBorderColor("#495057")
+ QObject{parent},
+ bsMode{Light},
+ bsTheme{Theme::None},
+ bodyColors{{"#212529", "#adb5bd"}},
+ bodyBgs{{"#fff", "#212529"}},
+ borderColors{{"#dee2e6", "#495057"}}
{
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 bodyColor = toml_array_in(bootstrap, "BodyColor");
- if (bodyColor) {
- auto lightBodyColor = toml_string_at(bodyColor, 0).u.s;
- bsLightBodyColor = QColor{lightBodyColor};
- free(lightBodyColor);
- auto darkBodyColor = toml_string_at(bodyColor, 1).u.s;
- bsDarkBodyColor = QColor{darkBodyColor};
- free(darkBodyColor);
- }
- 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);
- }
- auto borderColor = toml_array_in(bootstrap, "BorderColor");
- if (borderColor) {
- auto lightBorderColor = toml_string_at(borderColor, 0).u.s;
- bsLightBorderColor = QColor{lightBorderColor};
- free(lightBorderColor);
- auto darkBorderColor = toml_string_at(borderColor, 1).u.s;
- bsDarkBorderColor = QColor{darkBorderColor};
- free(darkBorderColor);
- }
+
+ auto mode = toml_int_in(bootstrap, "Mode");
+ if (mode.ok) bsMode = static_cast<Mode>(mode.u.i);
+
+ auto colors = toml_array_in(bootstrap, "BodyColors");
+ if (colors)
+ for (int i = 0; ; i++) {
+ auto color = toml_string_at(colors, i);
+ if (!color.ok) break;
+ bodyColors.append(QColor{color.u.s});
+ free(color.u.s);
+ }
+
+ colors = toml_array_in(bootstrap, "BodyBgs");
+ if (colors)
+ for (int i = 0; ; i++) {
+ auto color = toml_string_at(colors, i);
+ if (!color.ok) break;
+ bodyBgs.append(QColor{color.u.s});
+ free(color.u.s);
+ }
+
+ colors = toml_array_in(bootstrap, "BorderColors");
+ if (colors)
+ for (int i = 0; ; i++) {
+ auto color = toml_string_at(colors, i);
+ if (!color.ok) break;
+ borderColors.append(QColor{color.u.s});
+ free(color.u.s);
+ }
+
toml_free(toml);
}
@@ -58,16 +58,16 @@ Bootstrap *Bootstrap::qmlAttachedProperties(QObject *object)
return new Bootstrap(object);
}
-bool Bootstrap::darkMode() const
+Bootstrap::Mode Bootstrap::mode() const
{
- return bsDarkMode;
+ return bsMode;
}
-void Bootstrap::setDarkMode(bool darkMode)
+void Bootstrap::setMode(Mode mode)
{
- if (darkMode == bsDarkMode) return;
- bsDarkMode = darkMode;
- emit darkModeChanged();
+ if (mode == bsMode) return;
+ bsMode = mode;
+ emit modeChanged();
emit bodyColorChanged();
emit bodyBgChanged();
emit borderColorChanged();
@@ -87,15 +87,15 @@ void Bootstrap::setTheme(Theme theme)
QColor Bootstrap::bodyColor() const
{
- return bsDarkMode ? bsDarkBodyColor : bsLightBodyColor;
+ return bodyColors.at(bsMode);
}
QColor Bootstrap::bodyBg() const
{
- return bsDarkMode ? bsDarkBodyBg : bsLightBodyBg;
+ return bodyBgs.at(bsMode);
}
QColor Bootstrap::borderColor() const
{
- return bsDarkMode ? bsDarkBorderColor : bsLightBorderColor;
+ return borderColors.at(bsMode);
}