From b5e31868dc0d4d5094752ab2dba127311434e66f Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Tue, 16 Sep 2008 06:36:17 +0000 Subject: [FIX] Refactored out some code to ObjectModel [FIX] Drag and drop now accepts URLs [FIX] The main window can now accept drops git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@265 6ecfd1a5-f3ed-3746-8530-beee90d26b22 --- sigmodr/models/MapTrainerModel.cpp | 60 ++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 32 deletions(-) (limited to 'sigmodr/models/MapTrainerModel.cpp') 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 -// Qt includes -#include - 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(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(m_parent)->deleteObject(this); } -bool Sigmodr::MapTrainerModel::setData(const QVariant& value, int role) -{ - if (role == Sigmodr::BaseModel::XmlRole) - { - if (value.canConvert()) - { - 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(m_object)->newTeamMember(xml.documentElement())); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::MapTrainerModel::setupData() { Sigmod::MapTrainer* trainer = qobject_cast(m_object); -- cgit