diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-12-13 16:24:31 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-12-16 14:54:14 +0100 |
commit | 630f45719a527f8ee739b03bc62f886badea6df3 (patch) | |
tree | b9d859cbfedb30ad8a9570e3b87a419bf24ba6c7 /framework/actions/context.cpp | |
parent | b1a2e2de201985a00980bead5272977cda4ef637 (diff) | |
download | kube-630f45719a527f8ee739b03bc62f886badea6df3.tar.gz kube-630f45719a527f8ee739b03bc62f886badea6df3.zip |
Revamp of composercontroller to use actions more.
Instead of setting all properties individually we directly assign all
properties to a context that we assign to the actions.
This way actions can automatically update themselves as new data becomes
available, and we avoid the setter/getter boilerplate, at the cost of a
less explicit interface (But that could be improved by allowing to
define the required properties of a context in c++).
By relying on prehandler/posthandler to execute certain actions we
simplify the control flow and enable the future extension with handlers
that i.e. do encryption etc.
Diffstat (limited to 'framework/actions/context.cpp')
-rw-r--r-- | framework/actions/context.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/framework/actions/context.cpp b/framework/actions/context.cpp index a7f87d16..205b1606 100644 --- a/framework/actions/context.cpp +++ b/framework/actions/context.cpp | |||
@@ -19,6 +19,7 @@ | |||
19 | #include "context.h" | 19 | #include "context.h" |
20 | 20 | ||
21 | #include <QDebug> | 21 | #include <QDebug> |
22 | #include <QMetaProperty> | ||
22 | 23 | ||
23 | using namespace Kube; | 24 | using namespace Kube; |
24 | 25 | ||
@@ -27,3 +28,18 @@ Context::Context(QObject *parent) | |||
27 | { | 28 | { |
28 | 29 | ||
29 | } | 30 | } |
31 | |||
32 | QDebug operator<<(QDebug dbg, const Kube::Context &context) | ||
33 | { | ||
34 | dbg << "Kube::Context {\n"; | ||
35 | auto metaObject = context.QObject::metaObject(); | ||
36 | for (auto i = metaObject->propertyOffset(); i < metaObject->propertyCount(); i++) { | ||
37 | auto property = metaObject->property(i); | ||
38 | dbg << property.name() << context.property(property.name()) << "\n"; | ||
39 | } | ||
40 | for (const auto &p : context.dynamicPropertyNames()) { | ||
41 | dbg << p << context.property(p) << "\n"; | ||
42 | } | ||
43 | dbg << "\n}"; | ||
44 | return dbg; | ||
45 | } | ||