diff options
Diffstat (limited to 'sigmodr/models/MapTrainerModel.cpp')
| -rw-r--r-- | sigmodr/models/MapTrainerModel.cpp | 60 |
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); |
