From 76a00c3d08d582422b5b0b9b38880218054f6e93 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 08:24:59 +0800 Subject: Bootstrap is an attached property --- bootstrap.hxx | 44 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) (limited to 'bootstrap.hxx') diff --git a/bootstrap.hxx b/bootstrap.hxx index dc1a1dd..2297be0 100644 --- a/bootstrap.hxx +++ b/bootstrap.hxx @@ -2,18 +2,35 @@ #define BOOTSTRAP_HXX #include +#include -class Bootstrap : public QQmlEngineExtensionPlugin +class BootstrapPlugin : public QQmlEngineExtensionPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID QQmlEngineExtensionInterface_iid) - Q_PROPERTY(Purpose purpose READ purpose WRITE setPurpose NOTIFY purposeChanged) +}; + +class Bootstrap : public QObject +{ + Q_OBJECT + Q_PROPERTY(Mode mode READ mode WRITE setMode NOTIFY modeChanged) + Q_PROPERTY(Theme theme READ theme WRITE setTheme NOTIFY themeChanged) + Q_PROPERTY(QColor bodyBg READ bodyBg NOTIFY bodyBgChanged) + Q_PROPERTY(QColor lightBodyBg WRITE setLightBodyBg) + Q_PROPERTY(QColor darkBodyBg WRITE setDarkBodyBg) + QML_ELEMENT + QML_UNCREATABLE("Bootstrap is an attached property") public: explicit Bootstrap(QObject *parent = nullptr); static Bootstrap *qmlAttachedProperties(QObject *object); - enum Purpose { + enum Mode { + LightMode, + DarkMode + }; + Q_ENUM(Mode) + enum Theme { None, Primary, Secondary, @@ -25,15 +42,26 @@ class Bootstrap : public QQmlEngineExtensionPlugin Dark, Link }; - Q_ENUM(Purpose) - Purpose purpose() const; - void setPurpose(Purpose purpose); + Q_ENUM(Theme) + + Mode mode() const; + void setMode(Mode mode); + Theme theme() const; + void setTheme(Theme theme); + QColor bodyBg() const; + void setLightBodyBg(QColor lightBodyBg); + void setDarkBodyBg(QColor darkBodyBg); signals: - void purposeChanged(); + void modeChanged(); + void themeChanged(); + void bodyBgChanged(); private: - Purpose m_purpose; + Mode bs_mode; + Theme bs_theme; + QColor bs_lightBodyBg; + QColor bs_darkBodyBg; }; QML_DECLARE_TYPEINFO(Bootstrap, QML_HAS_ATTACHED_PROPERTIES) -- cgit v1.2.3