diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2015-12-01 17:27:19 +0100 |
---|---|---|
committer | Kevin Ottens <kevin.ottens@kdab.com> | 2015-12-02 16:20:15 +0000 |
commit | a76d4e32a39befd03dca4faf6d8012a195b537dd (patch) | |
tree | cb303355db999f636af41adf6a3967abb53df0cc /src | |
parent | d745d6c83ef4a7e1370abbe963920d9d427adae1 (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.cpp | 6 | ||||
-rw-r--r-- | src/core/aspects/qabstractaspect.h | 2 | ||||
-rw-r--r-- | src/core/aspects/qaspectengine.cpp | 31 | ||||
-rw-r--r-- | src/core/aspects/qaspectengine.h | 2 |
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); |