summaryrefslogtreecommitdiffstats
path: root/sigmodr/models/ObjectModel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigmodr/models/ObjectModel.cpp')
-rw-r--r--sigmodr/models/ObjectModel.cpp24
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;