diff options
Diffstat (limited to 'sigmodr/models/ObjectModel.cpp')
| -rw-r--r-- | sigmodr/models/ObjectModel.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/sigmodr/models/ObjectModel.cpp b/sigmodr/models/ObjectModel.cpp index 198f4aba..89c704f3 100644 --- a/sigmodr/models/ObjectModel.cpp +++ b/sigmodr/models/ObjectModel.cpp @@ -18,6 +18,12 @@ // Header include #include "ObjectModel.h" +// Sigmod includes +#include "../../sigmod/Object.h" + +// Qt includes +#include <QtXml/QDomDocument> + Sigmodr::ObjectModel::ObjectModel(BaseModel* parent, Sigmod::Object* object) : BaseObjectModel(parent, object) { @@ -37,6 +43,24 @@ QVariant Sigmodr::ObjectModel::data(int role) const return Sigmodr::BaseObjectModel::data(role); } +bool Sigmodr::ObjectModel::setData(const QVariant& value, int role) +{ + if (role == Sigmodr::BaseModel::XmlRole) + { + QString data = value.toString(); + if (!data.isEmpty()) + { + QDomDocument xml; + if (loadFromData(data, &xml) && (xml.doctype().name() == m_object->className())) + { + m_object->load(xml.documentElement()); + return true; + } + } + } + return false; +} + Sigmodr::BaseModel* Sigmodr::ObjectModel::childItem(const int /*row*/) { return NULL; |
