From e7fb18bd2f578d05cee3ea0bb7fd9f365879e8dc Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Mon, 10 Apr 2017 02:51:19 -0700 Subject: [PATCH] MOving forward with the TaskConcept and TaskModel, all working --- libraries/render/src/render/Task.h | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/libraries/render/src/render/Task.h b/libraries/render/src/render/Task.h index 805f431fcb..49499896da 100644 --- a/libraries/render/src/render/Task.h +++ b/libraries/render/src/render/Task.h @@ -416,6 +416,8 @@ signals: class TaskConfig : public JobConfig { Q_OBJECT public: + using QConfigPointer = std::shared_ptr; + using Persistent = PersistentConfig; TaskConfig() = default ; @@ -429,11 +431,29 @@ public: return findChild(name); } + void connectSubJobConfig(QConfigPointer jobConfig, const std::string& name) { + // QConfigPointer config = _jobs.back().getConfiguration(); + jobConfig->setParent(this); + jobConfig->setObjectName(name.c_str()); + + // Connect loaded->refresh + // QObject::connect(config.get(), SIGNAL(loaded()), getConfiguration().get(), SLOT(refresh())); + QObject::connect(jobConfig.get(), SIGNAL(loaded()), this, SLOT(refresh())); + static const char* DIRTY_SIGNAL = "dirty()"; + // if (config->metaObject()->indexOfSignal(DIRTY_SIGNAL) != -1) { + if (jobConfig->metaObject()->indexOfSignal(DIRTY_SIGNAL) != -1) { + // Connect dirty->refresh if defined + // QObject::connect(config.get(), SIGNAL(dirty()), getConfiguration().get(), SLOT(refresh())); + QObject::connect(jobConfig.get(), SIGNAL(dirty()), this, SLOT(refresh())); + } + } + public slots: void refresh(); private: - JobConcept* _task; + friend Task; + JobConcept* _task; }; template void jobConfigure(T& data, const C& configuration) { @@ -595,7 +615,7 @@ public: // Create a new job in the container's queue; returns the job's output template const Varying addJob(std::string name, const Varying& input, NA&&... args) { _jobs.emplace_back(name, (NT::JobModel::factoryModel(input, std::forward(args)...))); - QConfigPointer config = _jobs.back().getConfiguration(); + /* QConfigPointer config = _jobs.back().getConfiguration(); config->setParent(getConfiguration().get()); config->setObjectName(name.c_str()); @@ -605,7 +625,9 @@ public: if (config->metaObject()->indexOfSignal(DIRTY_SIGNAL) != -1) { // Connect dirty->refresh if defined QObject::connect(config.get(), SIGNAL(dirty()), getConfiguration().get(), SLOT(refresh())); - } + }*/ + + std::static_pointer_cast(getConfiguration())->connectSubJobConfig(_jobs.back().getConfiguration(), name); return _jobs.back().getOutput(); }