// Version: $Id: b7c8a1847a2d5db8deea8d4145d47969628b164e $ // // // Commentary: // // // Change Log: // // // Code: #include "dtkComposerNodeLeafDataSupport.h" #include #include // /////////////////////////////////////////////////////////////////// // dtkComposerNodeLeafDataSupport implementation // /////////////////////////////////////////////////////////////////// dtkComposerNodeObject::dtkComposerNodeObject(void) : dtkComposerNodeLeafObject(), m_implementation_has_changed(false), m_data(0) { } dtkComposerNodeObject::~dtkComposerNodeObject(void) { if (m_data) delete m_data; m_data = 0; } QVariant dtkComposerNodeObject::variant(void) const { if (this->object()) return dtkMetaType::variantFromValue(this->object()); else return QVariant(); } dtkAbstractData *dtkComposerNodeObject::object(void) const { return this->data(); } bool dtkComposerNodeObject::createObject(const QString& implementation) { m_implementation_has_changed = false; if (implementation.isEmpty() || implementation == "Choose implementation") return false; if (implementation == "default") const_cast(implementation) = this->abstractDataType(); if (!m_data) { m_data = dtkAbstractDataFactory::instance()->create(implementation); m_implementation_has_changed = true; } else if (m_data->identifier() != implementation) { delete m_data; m_data = dtkAbstractDataFactory::instance()->create(implementation); m_implementation_has_changed = true; } return (m_data != NULL); } dtkAbstractData *dtkComposerNodeObject::data(void) const { return m_data; } QStringList dtkComposerNodeObject::implementations(void) const { QStringList implementations = dtkAbstractDataFactory::instance()->implementations(this->abstractDataType()); if (this->enableDefaultImplementation()) implementations.prepend("default"); return implementations; } QString dtkComposerNodeObject::currentImplementation(void) const { if (m_data) return m_data->identifier(); return QString(); } bool dtkComposerNodeObject::implementationHasChanged(void) const { return (m_implementation_has_changed); } bool dtkComposerNodeObject::implementationHasChanged(const QString& implementation) const { if (m_data) return (m_data->identifier() != implementation); return true; } bool dtkComposerNodeObject::enableDefaultImplementation(void) const { return false; } // // dtkComposerNodeLeafDataSupport.cpp ends here