summaryrefslogtreecommitdiffstats
path: root/sigmodr/models/MapTrainerModel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigmodr/models/MapTrainerModel.cpp')
-rw-r--r--sigmodr/models/MapTrainerModel.cpp60
1 files changed, 28 insertions, 32 deletions
diff --git a/sigmodr/models/MapTrainerModel.cpp b/sigmodr/models/MapTrainerModel.cpp
index afa1af91..e242aa54 100644
--- a/sigmodr/models/MapTrainerModel.cpp
+++ b/sigmodr/models/MapTrainerModel.cpp
@@ -33,9 +33,6 @@
// KDE includes
#include <KMenu>
-// Qt includes
-#include <QtCore/QFile>
-
Sigmodr::MapTrainerModel::MapTrainerModel(BaseModel* parent, Sigmod::MapTrainer* trainer) :
GroupObjectModel(parent, trainer)
{
@@ -73,6 +70,34 @@ QVariant Sigmodr::MapTrainerModel::data(int role) const
return Sigmodr::GroupObjectModel::data(role);
}
+bool Sigmodr::MapTrainerModel::setData(const QVariant& value, int role)
+{
+ if (role == Sigmodr::BaseModel::XmlRole)
+ {
+ QString data = value.toString();
+ if (!data.isEmpty())
+ {
+ QDomDocument xml;
+ if (loadFromData(data, &xml))
+ {
+ if (xml.doctype().name() == m_object->className())
+ {
+ clearData();
+ m_object->load(xml.documentElement());
+ setupData();
+ return true;
+ }
+ else if (xml.doctype().name() == "MapTrainerTeamMember")
+ {
+ addObject(qobject_cast<Sigmod::MapTrainer*>(m_object)->newTeamMember(xml.documentElement()));
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+}
+
QString Sigmodr::MapTrainerModel::types() const
{
return type().append(";MapTrainerTeamMember");
@@ -103,35 +128,6 @@ void Sigmodr::MapTrainerModel::deleteSelf()
qobject_cast<GroupModel*>(m_parent)->deleteObject(this);
}
-bool Sigmodr::MapTrainerModel::setData(const QVariant& value, int role)
-{
- if (role == Sigmodr::BaseModel::XmlRole)
- {
- if (value.canConvert<QString>())
- {
- QFile file(value.toString());
- QDomDocument xml;
- if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString()))
- {
- if (xml.doctype().name() == m_object->className())
- {
- clearData();
- m_object->load(xml.documentElement());
- setupData();
- return true;
- }
- else if (xml.doctype().name() == "MapTrainerTeamMember")
- {
- addObject(qobject_cast<Sigmod::MapTrainer*>(m_object)->newTeamMember(xml.documentElement()));
- return true;
- }
- file.close();
- }
- }
- }
- return false;
-}
-
void Sigmodr::MapTrainerModel::setupData()
{
Sigmod::MapTrainer* trainer = qobject_cast<Sigmod::MapTrainer*>(m_object);