summaryrefslogtreecommitdiffstats
path: root/framework/actions/context.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-12-13 16:24:31 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-12-16 14:54:14 +0100
commit630f45719a527f8ee739b03bc62f886badea6df3 (patch)
treeb9d859cbfedb30ad8a9570e3b87a419bf24ba6c7 /framework/actions/context.cpp
parentb1a2e2de201985a00980bead5272977cda4ef637 (diff)
downloadkube-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.cpp16
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
23using namespace Kube; 24using namespace Kube;
24 25
@@ -27,3 +28,18 @@ Context::Context(QObject *parent)
27{ 28{
28 29
29} 30}
31
32QDebug 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}