summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2015-12-01 17:27:19 +0100
committerKevin Ottens <kevin.ottens@kdab.com>2015-12-02 16:20:15 +0000
commita76d4e32a39befd03dca4faf6d8012a195b537dd (patch)
treecb303355db999f636af41adf6a3967abb53df0cc /src
parentd745d6c83ef4a7e1370abbe963920d9d427adae1 (diff)
Add command support on aspects and QAspectEngine
Change-Id: I5c3847a2779b691a2748083fb768b37d1f629274 Task-Id: QTBUG-49683 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/core/aspects/qabstractaspect.cpp6
-rw-r--r--src/core/aspects/qabstractaspect.h2
-rw-r--r--src/core/aspects/qaspectengine.cpp31
-rw-r--r--src/core/aspects/qaspectengine.h2
4 files changed, 41 insertions, 0 deletions
diff --git a/src/core/aspects/qabstractaspect.cpp b/src/core/aspects/qabstractaspect.cpp
index e234a806a..8c2e58939 100644
--- a/src/core/aspects/qabstractaspect.cpp
+++ b/src/core/aspects/qabstractaspect.cpp
@@ -92,6 +92,12 @@ void QAbstractAspect::registerBackendType(const QMetaObject &obj, const QBackend
d->m_backendCreatorFunctors.insert(className(obj), functor);
}
+QVariant QAbstractAspect::executeCommand(const QStringList &args)
+{
+ Q_UNUSED(args);
+ return QVariant();
+}
+
QBackendNode *QAbstractAspect::createBackendNode(QNode *frontend) const
{
Q_D(const QAbstractAspect);
diff --git a/src/core/aspects/qabstractaspect.h b/src/core/aspects/qabstractaspect.h
index d3ec2d739..1aec7aa5f 100644
--- a/src/core/aspects/qabstractaspect.h
+++ b/src/core/aspects/qabstractaspect.h
@@ -81,6 +81,8 @@ public:
void registerBackendType(const QBackendNodeFunctorPtr &functor);
void registerBackendType(const QMetaObject &, const QBackendNodeFunctorPtr &functor);
+ virtual QVariant executeCommand(const QStringList &args);
+
protected:
QAbstractAspect(QAbstractAspectPrivate &dd, QObject *parent = 0);
diff --git a/src/core/aspects/qaspectengine.cpp b/src/core/aspects/qaspectengine.cpp
index f044ef359..21b90090d 100644
--- a/src/core/aspects/qaspectengine.cpp
+++ b/src/core/aspects/qaspectengine.cpp
@@ -239,6 +239,37 @@ QList<QAbstractAspect *> QAspectEngine::aspects() const
return d->m_aspects;
}
+QVariant QAspectEngine::executeCommand(const QString &command)
+{
+ Q_D(QAspectEngine);
+
+ if (command == QLatin1Literal("list aspects")) {
+ if (d->m_aspects.isEmpty())
+ return QLatin1Literal("No loaded aspect");
+
+ QStringList reply;
+ reply << QLatin1Literal("Loaded aspects:");
+ foreach (QAbstractAspect *aspect, d->m_aspects) {
+ const QString name = d->m_factory.aspectName(aspect);
+ if (!name.isEmpty())
+ reply << (QLatin1Literal(" * ") + name);
+ else
+ reply << QLatin1Literal(" * <unnamed>");
+ }
+ return reply.join(QLatin1Char('\n'));
+ }
+
+ QStringList args = command.split(QLatin1Char(' '));
+ QString aspectName = args.takeFirst();
+
+ foreach (QAbstractAspect *aspect, d->m_aspects) {
+ if (aspectName == d->m_factory.aspectName(aspect))
+ return aspect->executeCommand(args);
+ }
+
+ return QVariant();
+}
+
void QAspectEngine::setRootEntity(QEntity *root)
{
qCDebug(Aspects) << "Setting scene root on aspect manager";
diff --git a/src/core/aspects/qaspectengine.h b/src/core/aspects/qaspectengine.h
index fca3256f2..4dcc7a803 100644
--- a/src/core/aspects/qaspectengine.h
+++ b/src/core/aspects/qaspectengine.h
@@ -71,6 +71,8 @@ public:
QList<QAbstractAspect*> aspects() const;
+ QVariant executeCommand(const QString &command);
+
protected:
Q_DECLARE_PRIVATE(QAspectEngine)
QAspectEngine(QAspectEnginePrivate &dd, QObject *parent = 0);