diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-12-29 20:23:58 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-12-29 20:37:22 +0100 |
commit | 48da7de1b6bcd87c57b4c7f60133f3f13fc4bff2 (patch) | |
tree | afad136d1179480301646355fab0d95c1302d7e7 /framework/actions/context.h | |
parent | 08dbe5251cb818b4f548029a6e96b4500fe7a35f (diff) | |
download | kube-48da7de1b6bcd87c57b4c7f60133f3f13fc4bff2.tar.gz kube-48da7de1b6bcd87c57b4c7f60133f3f13fc4bff2.zip |
A typesafe action context
Diffstat (limited to 'framework/actions/context.h')
-rw-r--r-- | framework/actions/context.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/framework/actions/context.h b/framework/actions/context.h index 562e110e..42ae3a93 100644 --- a/framework/actions/context.h +++ b/framework/actions/context.h | |||
@@ -20,6 +20,18 @@ | |||
20 | 20 | ||
21 | #include <QObject> | 21 | #include <QObject> |
22 | 22 | ||
23 | #define KUBE_CONTEXT_PROPERTY(TYPE, NAME, LOWERCASENAME) \ | ||
24 | public: Q_PROPERTY(TYPE LOWERCASENAME MEMBER m##NAME NOTIFY LOWERCASENAME##Changed) \ | ||
25 | struct NAME { \ | ||
26 | static constexpr const char *name = #LOWERCASENAME; \ | ||
27 | typedef TYPE Type; \ | ||
28 | }; \ | ||
29 | void set##NAME(const TYPE &value) { setProperty(NAME::name, QVariant::fromValue(value)); } \ | ||
30 | TYPE get##NAME() const { return m##NAME; } \ | ||
31 | Q_SIGNALS: void LOWERCASENAME##Changed(); \ | ||
32 | private: TYPE m##NAME; | ||
33 | |||
34 | |||
23 | namespace Kube { | 35 | namespace Kube { |
24 | 36 | ||
25 | class Context : public QObject { | 37 | class Context : public QObject { |
@@ -27,6 +39,7 @@ class Context : public QObject { | |||
27 | public: | 39 | public: |
28 | Context(QObject *parent = 0); | 40 | Context(QObject *parent = 0); |
29 | virtual ~Context(){}; | 41 | virtual ~Context(){}; |
42 | virtual void clear(); | ||
30 | }; | 43 | }; |
31 | 44 | ||
32 | } | 45 | } |