diff options
author | Ben Boeckel <MathStuf@gmail.com> | 2008-09-16 06:36:17 +0000 |
---|---|---|
committer | Ben Boeckel <MathStuf@gmail.com> | 2008-09-16 06:36:17 +0000 |
commit | b5e31868dc0d4d5094752ab2dba127311434e66f (patch) | |
tree | 9ffa57312ec216426059ec16d011865e4c1af72f /sigmodr/models | |
parent | 0f0dbfb0395810c1c205a1dc10cf1f226669fd00 (diff) | |
download | sigen-b5e31868dc0d4d5094752ab2dba127311434e66f.tar.gz sigen-b5e31868dc0d4d5094752ab2dba127311434e66f.tar.xz sigen-b5e31868dc0d4d5094752ab2dba127311434e66f.zip |
[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
Diffstat (limited to 'sigmodr/models')
96 files changed, 279 insertions, 1193 deletions
diff --git a/sigmodr/models/AbilityGroupModel.cpp b/sigmodr/models/AbilityGroupModel.cpp index 86805209..742f4f7f 100644 --- a/sigmodr/models/AbilityGroupModel.cpp +++ b/sigmodr/models/AbilityGroupModel.cpp @@ -25,9 +25,6 @@ #include "../../sigmod/Ability.h" #include "../../sigmod/Sigmod.h" -// Qt includes -#include <QtCore/QFile> - // KDE includes #include <KMenu> @@ -57,18 +54,14 @@ bool Sigmodr::AbilityGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Ability")) { - if (xml.doctype().name() == "Ability") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newAbility(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newAbility(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/AbilityModel.cpp b/sigmodr/models/AbilityModel.cpp index 135cfc58..c2de4ed4 100644 --- a/sigmodr/models/AbilityModel.cpp +++ b/sigmodr/models/AbilityModel.cpp @@ -30,9 +30,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::AbilityModel::AbilityModel(BaseModel* parent, Sigmod::Ability* ability) : ObjectModel(parent, ability) { @@ -66,28 +63,6 @@ QVariant Sigmodr::AbilityModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::AbilityModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::AbilityModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/AbilityModel.h b/sigmodr/models/AbilityModel.h index 163c111c..ef65c581 100644 --- a/sigmodr/models/AbilityModel.h +++ b/sigmodr/models/AbilityModel.h @@ -38,8 +38,6 @@ class AbilityModel : public ObjectModel ~AbilityModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/AuthorGroupModel.cpp b/sigmodr/models/AuthorGroupModel.cpp index b33103b9..da668e36 100644 --- a/sigmodr/models/AuthorGroupModel.cpp +++ b/sigmodr/models/AuthorGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::AuthorGroupModel::AuthorGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Authors") { @@ -57,18 +54,14 @@ bool Sigmodr::AuthorGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Author")) { - if (xml.doctype().name() == "Author") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newAuthor(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newAuthor(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/AuthorModel.cpp b/sigmodr/models/AuthorModel.cpp index 1441cd0c..ef910e37 100644 --- a/sigmodr/models/AuthorModel.cpp +++ b/sigmodr/models/AuthorModel.cpp @@ -30,9 +30,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::AuthorModel::AuthorModel(BaseModel* parent, Sigmod::Author* author) : ObjectModel(parent, author) { @@ -66,28 +63,6 @@ QVariant Sigmodr::AuthorModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::AuthorModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::AuthorModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/AuthorModel.h b/sigmodr/models/AuthorModel.h index 0cee7c02..bf8cf4af 100644 --- a/sigmodr/models/AuthorModel.h +++ b/sigmodr/models/AuthorModel.h @@ -38,8 +38,6 @@ class AuthorModel : public ObjectModel ~AuthorModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/BadgeGroupModel.cpp b/sigmodr/models/BadgeGroupModel.cpp index 86dbd8bc..40d4366c 100644 --- a/sigmodr/models/BadgeGroupModel.cpp +++ b/sigmodr/models/BadgeGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::BadgeGroupModel::BadgeGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Badges") { @@ -57,18 +54,14 @@ bool Sigmodr::BadgeGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Badge")) { - if (xml.doctype().name() == "Badge") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newBadge(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newBadge(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/BadgeModel.cpp b/sigmodr/models/BadgeModel.cpp index fb76bb76..632d9e71 100644 --- a/sigmodr/models/BadgeModel.cpp +++ b/sigmodr/models/BadgeModel.cpp @@ -30,9 +30,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::BadgeModel::BadgeModel(BaseModel* parent, Sigmod::Badge* badge) : ObjectModel(parent, badge) { @@ -66,28 +63,6 @@ QVariant Sigmodr::BadgeModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::BadgeModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::BadgeModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/BadgeModel.h b/sigmodr/models/BadgeModel.h index b5f5e896..fff5da79 100644 --- a/sigmodr/models/BadgeModel.h +++ b/sigmodr/models/BadgeModel.h @@ -38,8 +38,6 @@ class BadgeModel : public ObjectModel ~BadgeModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/BaseModel.cpp b/sigmodr/models/BaseModel.cpp index 8258fb0f..12c88711 100644 --- a/sigmodr/models/BaseModel.cpp +++ b/sigmodr/models/BaseModel.cpp @@ -21,6 +21,16 @@ // Sigmod includes #include "../../sigmod/Object.h" +// KDE includes +#include <KApplication> +#include <KMessageBox> +#include <KUrl> +#include <KIO/NetAccess> + +// Qt includes +#include <QtCore/QFile> +#include <QtXml/QDomDocument> + Sigmodr::BaseModel::BaseModel(BaseModel* parent, Sigmod::Object* object, const QString& name) : m_parent(parent), m_object(object), @@ -63,6 +73,52 @@ const Sigmod::Object* Sigmodr::BaseModel::object() const return m_object; } +bool Sigmodr::BaseModel::loadFromData(const QString& data, QDomDocument* xml) const +{ + bool loaded = false; + QString error; + int line; + int column; + KUrl url(data); + if (url.isValid()) + { + QString path; + const bool local = url.isLocalFile(); + if (local) + path = url.path(); + else + { + if (!KIO::NetAccess::download(url, path, KApplication::kApplication()->activeWindow())) + { + KMessageBox::error(KApplication::kApplication()->activeWindow(), KIO::NetAccess::lastErrorString(), "KIO Error"); + return false; + } + } + QFile file(path); + if (file.open(QIODevice::ReadOnly)) + { + if (!xml->setContent(&file, &error, &line, &column)) + { + KMessageBox::error(KApplication::kApplication()->activeWindow(), QString("%1 at line %2, column %3").arg(error).arg(line).arg(column), "XML Error"); + loaded = false; + } + } + else + { + KMessageBox::error(KApplication::kApplication()->activeWindow(), file.errorString(), "File Error"); + loaded = false; + } + file.close(); + if (!local) + KIO::NetAccess::removeTempFile(path); + } + else if (xml->setContent(data, &error, &line, &column)) + loaded = true; + else + KMessageBox::error(KApplication::kApplication()->activeWindow(), QString("%1 at line %2, column %3").arg(error).arg(line).arg(column), "XML Error"); + return loaded; +} + void Sigmodr::BaseModel::childRowChanged(const int row) { QList<int> indexes; diff --git a/sigmodr/models/BaseModel.h b/sigmodr/models/BaseModel.h index 9ca22e38..1636578c 100644 --- a/sigmodr/models/BaseModel.h +++ b/sigmodr/models/BaseModel.h @@ -24,6 +24,8 @@ // Forward declarations class KMenu; +class KUrl; +class QDomDocument; namespace Sigmod { class Object; @@ -58,6 +60,8 @@ class BaseModel : public QObject const Sigmod::Object* object() const; + bool loadFromData(const QString& data, QDomDocument* xml) const; + static const int TypeRole = Qt::UserRole; static const int DropAcceptRole = Qt::UserRole + 1; static const int XmlRole = Qt::UserRole + 2; diff --git a/sigmodr/models/CoinListGroupModel.cpp b/sigmodr/models/CoinListGroupModel.cpp index d989ee66..725d49ca 100644 --- a/sigmodr/models/CoinListGroupModel.cpp +++ b/sigmodr/models/CoinListGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::CoinListGroupModel::CoinListGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Coin Lists") { @@ -57,18 +54,14 @@ bool Sigmodr::CoinListGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "CoinList")) { - if (xml.doctype().name() == "CoinList") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newCoinList(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newCoinList(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/CoinListModel.cpp b/sigmodr/models/CoinListModel.cpp index 9452e5b4..0c6264f8 100644 --- a/sigmodr/models/CoinListModel.cpp +++ b/sigmodr/models/CoinListModel.cpp @@ -32,9 +32,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::CoinListModel::CoinListModel(BaseModel* parent, Sigmod::CoinList* coinList) : GroupObjectModel(parent, coinList) { @@ -76,11 +73,11 @@ bool Sigmodr::CoinListModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml)) { if (xml.doctype().name() == m_object->className()) { @@ -94,7 +91,6 @@ bool Sigmodr::CoinListModel::setData(const QVariant& value, int role) addObject(qobject_cast<Sigmod::CoinList*>(m_object)->newObject(xml.documentElement())); return true; } - file.close(); } } } diff --git a/sigmodr/models/CoinListObjectModel.cpp b/sigmodr/models/CoinListObjectModel.cpp index 028b667f..ee74e2e4 100644 --- a/sigmodr/models/CoinListObjectModel.cpp +++ b/sigmodr/models/CoinListObjectModel.cpp @@ -34,9 +34,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::CoinListObjectModel::CoinListObjectModel(BaseModel* parent, Sigmod::CoinListObject* object) : ObjectModel(parent, object) { @@ -85,28 +82,6 @@ QVariant Sigmodr::CoinListObjectModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::CoinListObjectModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::CoinListObjectModel::deleteSelf() { qobject_cast<GroupObjectModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/CoinListObjectModel.h b/sigmodr/models/CoinListObjectModel.h index 5862db3a..e8a83561 100644 --- a/sigmodr/models/CoinListObjectModel.h +++ b/sigmodr/models/CoinListObjectModel.h @@ -38,8 +38,6 @@ class CoinListObjectModel : public ObjectModel ~CoinListObjectModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/EggGroupGroupModel.cpp b/sigmodr/models/EggGroupGroupModel.cpp index 9447d4bc..e021f3df 100644 --- a/sigmodr/models/EggGroupGroupModel.cpp +++ b/sigmodr/models/EggGroupGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::EggGroupGroupModel::EggGroupGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Egg Groups") { @@ -57,18 +54,14 @@ bool Sigmodr::EggGroupGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "EggGroup")) { - if (xml.doctype().name() == "EggGroup") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newEggGroup(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newEggGroup(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/EggGroupModel.cpp b/sigmodr/models/EggGroupModel.cpp index cf093951..9c2b443b 100644 --- a/sigmodr/models/EggGroupModel.cpp +++ b/sigmodr/models/EggGroupModel.cpp @@ -30,9 +30,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::EggGroupModel::EggGroupModel(BaseModel* parent, Sigmod::EggGroup* eggGroup) : ObjectModel(parent, eggGroup) { @@ -66,28 +63,6 @@ QVariant Sigmodr::EggGroupModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::EggGroupModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::EggGroupModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/EggGroupModel.h b/sigmodr/models/EggGroupModel.h index 453d1fae..1295fbd9 100644 --- a/sigmodr/models/EggGroupModel.h +++ b/sigmodr/models/EggGroupModel.h @@ -38,8 +38,6 @@ class EggGroupModel : public ObjectModel ~EggGroupModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/GlobalScriptGroupModel.cpp b/sigmodr/models/GlobalScriptGroupModel.cpp index 83d2902d..e9651378 100644 --- a/sigmodr/models/GlobalScriptGroupModel.cpp +++ b/sigmodr/models/GlobalScriptGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::GlobalScriptGroupModel::GlobalScriptGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Global Scripts") { @@ -57,18 +54,14 @@ bool Sigmodr::GlobalScriptGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "GlobalScript")) { - if (xml.doctype().name() == "GlobalScript") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newGlobalScript(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newGlobalScript(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/GlobalScriptModel.cpp b/sigmodr/models/GlobalScriptModel.cpp index cc6198b7..9d24f215 100644 --- a/sigmodr/models/GlobalScriptModel.cpp +++ b/sigmodr/models/GlobalScriptModel.cpp @@ -30,9 +30,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::GlobalScriptModel::GlobalScriptModel(BaseModel* parent, Sigmod::GlobalScript* globalScript) : ObjectModel(parent, globalScript) { @@ -66,28 +63,6 @@ QVariant Sigmodr::GlobalScriptModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::GlobalScriptModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::GlobalScriptModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/GlobalScriptModel.h b/sigmodr/models/GlobalScriptModel.h index 5d408e99..56436306 100644 --- a/sigmodr/models/GlobalScriptModel.h +++ b/sigmodr/models/GlobalScriptModel.h @@ -38,8 +38,6 @@ class GlobalScriptModel : public ObjectModel ~GlobalScriptModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/ItemGroupModel.cpp b/sigmodr/models/ItemGroupModel.cpp index e547e641..a8b0934f 100644 --- a/sigmodr/models/ItemGroupModel.cpp +++ b/sigmodr/models/ItemGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::ItemGroupModel::ItemGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Items") { @@ -57,18 +54,14 @@ bool Sigmodr::ItemGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Item")) { - if (xml.doctype().name() == "Item") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newItem(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newItem(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/ItemModel.cpp b/sigmodr/models/ItemModel.cpp index abc57ce2..fe1e50ee 100644 --- a/sigmodr/models/ItemModel.cpp +++ b/sigmodr/models/ItemModel.cpp @@ -30,9 +30,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::ItemModel::ItemModel(BaseModel* parent, Sigmod::Item* item) : ObjectModel(parent, item) { @@ -66,28 +63,6 @@ QVariant Sigmodr::ItemModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::ItemModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::ItemModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/ItemModel.h b/sigmodr/models/ItemModel.h index 6026b872..194b28dd 100644 --- a/sigmodr/models/ItemModel.h +++ b/sigmodr/models/ItemModel.h @@ -38,8 +38,6 @@ class ItemModel : public ObjectModel ~ItemModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/ItemTypeGroupModel.cpp b/sigmodr/models/ItemTypeGroupModel.cpp index d9b8a0d0..fa1dc6e5 100644 --- a/sigmodr/models/ItemTypeGroupModel.cpp +++ b/sigmodr/models/ItemTypeGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::ItemTypeGroupModel::ItemTypeGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Item Types") { @@ -57,18 +54,14 @@ bool Sigmodr::ItemTypeGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "ItemType")) { - if (xml.doctype().name() == "ItemType") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newItemType(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newItemType(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/ItemTypeModel.cpp b/sigmodr/models/ItemTypeModel.cpp index dd041b03..b43106b6 100644 --- a/sigmodr/models/ItemTypeModel.cpp +++ b/sigmodr/models/ItemTypeModel.cpp @@ -30,9 +30,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::ItemTypeModel::ItemTypeModel(BaseModel* parent, Sigmod::ItemType* itemType) : ObjectModel(parent, itemType) { @@ -66,28 +63,6 @@ QVariant Sigmodr::ItemTypeModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::ItemTypeModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::ItemTypeModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/ItemTypeModel.h b/sigmodr/models/ItemTypeModel.h index 1fbb2919..01964f58 100644 --- a/sigmodr/models/ItemTypeModel.h +++ b/sigmodr/models/ItemTypeModel.h @@ -38,8 +38,6 @@ class ItemTypeModel : public ObjectModel ~ItemTypeModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/MapEffectGroupModel.cpp b/sigmodr/models/MapEffectGroupModel.cpp index b440b22f..95f69c9e 100644 --- a/sigmodr/models/MapEffectGroupModel.cpp +++ b/sigmodr/models/MapEffectGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::MapEffectGroupModel::MapEffectGroupModel(BaseModel* parent, Sigmod::Map* map) : GroupModel(parent, map, "Effects") { @@ -57,18 +54,14 @@ bool Sigmodr::MapEffectGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "MapEffect")) { - if (xml.doctype().name() == "MapEffect") - { - addObject(qobject_cast<Sigmod::Map*>(m_object)->newEffect(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Map*>(m_object)->newEffect(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/MapEffectModel.cpp b/sigmodr/models/MapEffectModel.cpp index 438e6a33..187e93eb 100644 --- a/sigmodr/models/MapEffectModel.cpp +++ b/sigmodr/models/MapEffectModel.cpp @@ -31,9 +31,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::MapEffectModel::MapEffectModel(BaseModel* parent, Sigmod::MapEffect* effect) : ObjectModel(parent, effect) { @@ -67,28 +64,6 @@ QVariant Sigmodr::MapEffectModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::MapEffectModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::MapEffectModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/MapEffectModel.h b/sigmodr/models/MapEffectModel.h index 8dd172fe..b2ceb97c 100644 --- a/sigmodr/models/MapEffectModel.h +++ b/sigmodr/models/MapEffectModel.h @@ -38,8 +38,6 @@ class MapEffectModel : public ObjectModel ~MapEffectModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/MapGroupModel.cpp b/sigmodr/models/MapGroupModel.cpp index 12dbb647..2d122828 100644 --- a/sigmodr/models/MapGroupModel.cpp +++ b/sigmodr/models/MapGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::MapGroupModel::MapGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Maps") { @@ -57,18 +54,14 @@ bool Sigmodr::MapGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Map")) { - if (xml.doctype().name() == "Map") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newMap(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newMap(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/MapModel.cpp b/sigmodr/models/MapModel.cpp index 326e388b..fc8883a9 100644 --- a/sigmodr/models/MapModel.cpp +++ b/sigmodr/models/MapModel.cpp @@ -33,9 +33,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::MapModel::MapModel(BaseModel* parent, Sigmod::Map* map) : GroupObjectModel(parent, map) { @@ -75,11 +72,11 @@ bool Sigmodr::MapModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml)) { if (xml.doctype().name() == m_object->className()) { @@ -91,14 +88,9 @@ bool Sigmodr::MapModel::setData(const QVariant& value, int role) foreach (BaseModel* model, m_objects) { GroupModel* group = qobject_cast<GroupModel*>(model); - if (group) - { - const bool used = group->setData(value, role); - if (used) - return true; - } + if (group && group->setData(value, role)) + return true; } - file.close(); } } } diff --git a/sigmodr/models/MapTrainerGroupModel.cpp b/sigmodr/models/MapTrainerGroupModel.cpp index 117c41c9..811ca23c 100644 --- a/sigmodr/models/MapTrainerGroupModel.cpp +++ b/sigmodr/models/MapTrainerGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::MapTrainerGroupModel::MapTrainerGroupModel(BaseModel* parent, Sigmod::Map* map) : GroupModel(parent, map, "Trainers") { @@ -57,18 +54,14 @@ bool Sigmodr::MapTrainerGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "MapTrainer")) { - if (xml.doctype().name() == "MapTrainer") - { - addObject(qobject_cast<Sigmod::Map*>(m_object)->newTrainer(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Map*>(m_object)->newTrainer(xml.documentElement())); + return true; } } } 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); diff --git a/sigmodr/models/MapTrainerTeamMemberModel.cpp b/sigmodr/models/MapTrainerTeamMemberModel.cpp index 5f6753b3..80395d5c 100644 --- a/sigmodr/models/MapTrainerTeamMemberModel.cpp +++ b/sigmodr/models/MapTrainerTeamMemberModel.cpp @@ -33,9 +33,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::MapTrainerTeamMemberModel::MapTrainerTeamMemberModel(BaseModel* parent, Sigmod::MapTrainerTeamMember* teamMember) : ObjectModel(parent, teamMember) { @@ -74,28 +71,6 @@ QVariant Sigmodr::MapTrainerTeamMemberModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::MapTrainerTeamMemberModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::MapTrainerTeamMemberModel::deleteSelf() { qobject_cast<GroupObjectModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/MapTrainerTeamMemberModel.h b/sigmodr/models/MapTrainerTeamMemberModel.h index 560b0032..695d2b48 100644 --- a/sigmodr/models/MapTrainerTeamMemberModel.h +++ b/sigmodr/models/MapTrainerTeamMemberModel.h @@ -38,8 +38,6 @@ class MapTrainerTeamMemberModel : public ObjectModel ~MapTrainerTeamMemberModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/MapWarpGroupModel.cpp b/sigmodr/models/MapWarpGroupModel.cpp index 1641c804..d09c3252 100644 --- a/sigmodr/models/MapWarpGroupModel.cpp +++ b/sigmodr/models/MapWarpGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::MapWarpGroupModel::MapWarpGroupModel(BaseModel* parent, Sigmod::Map* map) : GroupModel(parent, map, "Warps") { @@ -57,18 +54,14 @@ bool Sigmodr::MapWarpGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "MapWarp")) { - if (xml.doctype().name() == "MapWarp") - { - addObject(qobject_cast<Sigmod::Map*>(m_object)->newWarp(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Map*>(m_object)->newWarp(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/MapWarpModel.cpp b/sigmodr/models/MapWarpModel.cpp index c01ef5bf..f61df5c0 100644 --- a/sigmodr/models/MapWarpModel.cpp +++ b/sigmodr/models/MapWarpModel.cpp @@ -31,9 +31,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::MapWarpModel::MapWarpModel(BaseModel* parent, Sigmod::MapWarp* warp) : ObjectModel(parent, warp) { @@ -67,28 +64,6 @@ QVariant Sigmodr::MapWarpModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::MapWarpModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::MapWarpModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/MapWarpModel.h b/sigmodr/models/MapWarpModel.h index cb4bbbec..ddf180ff 100644 --- a/sigmodr/models/MapWarpModel.h +++ b/sigmodr/models/MapWarpModel.h @@ -38,8 +38,6 @@ class MapWarpModel : public ObjectModel ~MapWarpModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/MapWildListEncounterModel.cpp b/sigmodr/models/MapWildListEncounterModel.cpp index bb8491b5..e5130c10 100644 --- a/sigmodr/models/MapWildListEncounterModel.cpp +++ b/sigmodr/models/MapWildListEncounterModel.cpp @@ -33,9 +33,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::MapWildListEncounterModel::MapWildListEncounterModel(BaseModel* parent, Sigmod::MapWildListEncounter* encounter) : ObjectModel(parent, encounter) { @@ -74,28 +71,6 @@ QVariant Sigmodr::MapWildListEncounterModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::MapWildListEncounterModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::MapWildListEncounterModel::deleteSelf() { qobject_cast<GroupObjectModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/MapWildListEncounterModel.h b/sigmodr/models/MapWildListEncounterModel.h index 2fcd8a7f..06471fc6 100644 --- a/sigmodr/models/MapWildListEncounterModel.h +++ b/sigmodr/models/MapWildListEncounterModel.h @@ -38,8 +38,6 @@ class MapWildListEncounterModel : public ObjectModel ~MapWildListEncounterModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/MapWildListGroupModel.cpp b/sigmodr/models/MapWildListGroupModel.cpp index 6e35eb4f..907d3834 100644 --- a/sigmodr/models/MapWildListGroupModel.cpp +++ b/sigmodr/models/MapWildListGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::MapWildListGroupModel::MapWildListGroupModel(BaseModel* parent, Sigmod::Map* map) : GroupModel(parent, map, "Wild Lists") { @@ -57,18 +54,14 @@ bool Sigmodr::MapWildListGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "MapWildList")) { - if (xml.doctype().name() == "MapWildList") - { - addObject(qobject_cast<Sigmod::Map*>(m_object)->newWildList(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Map*>(m_object)->newWildList(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/MapWildListModel.cpp b/sigmodr/models/MapWildListModel.cpp index 6bf86699..f798f193 100644 --- a/sigmodr/models/MapWildListModel.cpp +++ b/sigmodr/models/MapWildListModel.cpp @@ -33,9 +33,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::MapWildListModel::MapWildListModel(BaseModel* parent, Sigmod::MapWildList* wildList) : GroupObjectModel(parent, wildList) { @@ -78,11 +75,11 @@ bool Sigmodr::MapWildListModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml)) { if (xml.doctype().name() == m_object->className()) { @@ -96,7 +93,6 @@ bool Sigmodr::MapWildListModel::setData(const QVariant& value, int role) addObject(qobject_cast<Sigmod::MapWildList*>(m_object)->newEncounter(xml.documentElement())); return true; } - file.close(); } } } diff --git a/sigmodr/models/MoveGroupModel.cpp b/sigmodr/models/MoveGroupModel.cpp index 19675c66..3d9e77f0 100644 --- a/sigmodr/models/MoveGroupModel.cpp +++ b/sigmodr/models/MoveGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::MoveGroupModel::MoveGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Moves") { @@ -57,18 +54,14 @@ bool Sigmodr::MoveGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Move")) { - if (xml.doctype().name() == "Move") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newMove(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newMove(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/MoveModel.cpp b/sigmodr/models/MoveModel.cpp index fd6eaa4e..656f9ba2 100644 --- a/sigmodr/models/MoveModel.cpp +++ b/sigmodr/models/MoveModel.cpp @@ -30,9 +30,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::MoveModel::MoveModel(BaseModel* parent, Sigmod::Move* move) : ObjectModel(parent, move) { @@ -66,28 +63,6 @@ QVariant Sigmodr::MoveModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::MoveModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::MoveModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/MoveModel.h b/sigmodr/models/MoveModel.h index cfea06ab..9d52e652 100644 --- a/sigmodr/models/MoveModel.h +++ b/sigmodr/models/MoveModel.h @@ -38,8 +38,6 @@ class MoveModel : public ObjectModel ~MoveModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/NatureGroupModel.cpp b/sigmodr/models/NatureGroupModel.cpp index 6a67dafa..a484ccf5 100644 --- a/sigmodr/models/NatureGroupModel.cpp +++ b/sigmodr/models/NatureGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::NatureGroupModel::NatureGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Natures") { @@ -57,18 +54,14 @@ bool Sigmodr::NatureGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Nature")) { - if (xml.doctype().name() == "Nature") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newNature(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newNature(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/NatureModel.cpp b/sigmodr/models/NatureModel.cpp index 4dcc2d03..04ea7870 100644 --- a/sigmodr/models/NatureModel.cpp +++ b/sigmodr/models/NatureModel.cpp @@ -31,9 +31,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::NatureModel::NatureModel(BaseModel* parent, Sigmod::Nature* nature) : ObjectModel(parent, nature) { @@ -67,28 +64,6 @@ QVariant Sigmodr::NatureModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::NatureModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::NatureModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/NatureModel.h b/sigmodr/models/NatureModel.h index 8ca70cb8..0239c082 100644 --- a/sigmodr/models/NatureModel.h +++ b/sigmodr/models/NatureModel.h @@ -38,8 +38,6 @@ class NatureModel : public ObjectModel ~NatureModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; 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; diff --git a/sigmodr/models/ObjectModel.h b/sigmodr/models/ObjectModel.h index cea8912c..793c29d8 100644 --- a/sigmodr/models/ObjectModel.h +++ b/sigmodr/models/ObjectModel.h @@ -34,7 +34,7 @@ class ObjectModel : public BaseObjectModel virtual QVariant data(int role = Qt::DisplayRole) const = 0; int rowCount() const; - virtual bool setData(const QVariant& value, int role = Qt::EditRole) = 0; + bool setData(const QVariant& value, int role = Qt::EditRole); BaseModel* childItem(const int /*row*/); diff --git a/sigmodr/models/RootModel.cpp b/sigmodr/models/RootModel.cpp index 53bc523c..7c794052 100644 --- a/sigmodr/models/RootModel.cpp +++ b/sigmodr/models/RootModel.cpp @@ -24,9 +24,6 @@ // Sigmod includes #include "../../sigmod/Sigmod.h" -// Test code includes -#include <QtCore/QFile> - Sigmodr::RootModel::RootModel() : GroupModel(NULL, NULL) { diff --git a/sigmodr/models/RulesModel.cpp b/sigmodr/models/RulesModel.cpp index 39889fc0..e01acbf6 100644 --- a/sigmodr/models/RulesModel.cpp +++ b/sigmodr/models/RulesModel.cpp @@ -27,9 +27,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::RulesModel::RulesModel(BaseModel* parent, Sigmod::Rules* rules) : ObjectModel(parent, rules) { @@ -62,28 +59,6 @@ QVariant Sigmodr::RulesModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::RulesModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::RulesModel::deleteSelf() { } diff --git a/sigmodr/models/RulesModel.h b/sigmodr/models/RulesModel.h index 7ee07084..27b79999 100644 --- a/sigmodr/models/RulesModel.h +++ b/sigmodr/models/RulesModel.h @@ -38,8 +38,6 @@ class RulesModel : public ObjectModel ~RulesModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/SigmodModel.cpp b/sigmodr/models/SigmodModel.cpp index 7c96cb2b..d8f1e444 100644 --- a/sigmodr/models/SigmodModel.cpp +++ b/sigmodr/models/SigmodModel.cpp @@ -52,9 +52,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SigmodModel::SigmodModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupObjectModel(parent, sigmod) { @@ -93,11 +90,11 @@ bool Sigmodr::SigmodModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml)) { if (xml.doctype().name() == m_object->className()) { @@ -109,14 +106,9 @@ bool Sigmodr::SigmodModel::setData(const QVariant& value, int role) foreach (BaseModel* model, m_objects) { GroupModel* group = qobject_cast<GroupModel*>(model); - if (group) - { - const bool used = group->setData(value, role); - if (used) - return true; - } + if (group && group->setData(value, role)) + return true; } - file.close(); } } } diff --git a/sigmodr/models/SkinGroupModel.cpp b/sigmodr/models/SkinGroupModel.cpp index 61775e61..e35a9f20 100644 --- a/sigmodr/models/SkinGroupModel.cpp +++ b/sigmodr/models/SkinGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SkinGroupModel::SkinGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Skins") { @@ -57,18 +54,14 @@ bool Sigmodr::SkinGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Skin")) { - if (xml.doctype().name() == "Skin") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newSkin(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newSkin(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/SkinModel.cpp b/sigmodr/models/SkinModel.cpp index 1a7cee17..6b15d6b2 100644 --- a/sigmodr/models/SkinModel.cpp +++ b/sigmodr/models/SkinModel.cpp @@ -30,9 +30,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SkinModel::SkinModel(BaseModel* parent, Sigmod::Skin* skin) : ObjectModel(parent, skin) { @@ -66,28 +63,6 @@ QVariant Sigmodr::SkinModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::SkinModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::SkinModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/SkinModel.h b/sigmodr/models/SkinModel.h index 5e203f03..449ec61b 100644 --- a/sigmodr/models/SkinModel.h +++ b/sigmodr/models/SkinModel.h @@ -38,8 +38,6 @@ class SkinModel : public ObjectModel ~SkinModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/SoundGroupModel.cpp b/sigmodr/models/SoundGroupModel.cpp index 0adfe1c4..0ad1c3d6 100644 --- a/sigmodr/models/SoundGroupModel.cpp +++ b/sigmodr/models/SoundGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SoundGroupModel::SoundGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Sounds") { @@ -57,18 +54,14 @@ bool Sigmodr::SoundGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Sound")) { - if (xml.doctype().name() == "Sound") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newSound(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newSound(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/SoundModel.cpp b/sigmodr/models/SoundModel.cpp index 4412bd35..f907513d 100644 --- a/sigmodr/models/SoundModel.cpp +++ b/sigmodr/models/SoundModel.cpp @@ -31,9 +31,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SoundModel::SoundModel(BaseModel* parent, Sigmod::Sound* sound) : ObjectModel(parent, sound) { @@ -67,28 +64,6 @@ QVariant Sigmodr::SoundModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::SoundModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::SoundModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/SoundModel.h b/sigmodr/models/SoundModel.h index 9fb02d3b..072d7e29 100644 --- a/sigmodr/models/SoundModel.h +++ b/sigmodr/models/SoundModel.h @@ -38,8 +38,6 @@ class SoundModel : public ObjectModel ~SoundModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/SpeciesAbilityGroupModel.cpp b/sigmodr/models/SpeciesAbilityGroupModel.cpp index 416b112f..b3447525 100644 --- a/sigmodr/models/SpeciesAbilityGroupModel.cpp +++ b/sigmodr/models/SpeciesAbilityGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SpeciesAbilityGroupModel::SpeciesAbilityGroupModel(BaseModel* parent, Sigmod::Species* species) : GroupModel(parent, species, "Abilities") { @@ -57,18 +54,14 @@ bool Sigmodr::SpeciesAbilityGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "SpeciesAbility")) { - if (xml.doctype().name() == "SpeciesAbility") - { - addObject(qobject_cast<Sigmod::Species*>(m_object)->newAbility(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Species*>(m_object)->newAbility(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/SpeciesAbilityModel.cpp b/sigmodr/models/SpeciesAbilityModel.cpp index cb6e038c..3aefd6fd 100644 --- a/sigmodr/models/SpeciesAbilityModel.cpp +++ b/sigmodr/models/SpeciesAbilityModel.cpp @@ -33,9 +33,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SpeciesAbilityModel::SpeciesAbilityModel(BaseModel* parent, Sigmod::SpeciesAbility* ability) : ObjectModel(parent, ability) { @@ -74,28 +71,6 @@ QVariant Sigmodr::SpeciesAbilityModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::SpeciesAbilityModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::SpeciesAbilityModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/SpeciesAbilityModel.h b/sigmodr/models/SpeciesAbilityModel.h index 9c8adfc8..1588b49f 100644 --- a/sigmodr/models/SpeciesAbilityModel.h +++ b/sigmodr/models/SpeciesAbilityModel.h @@ -38,8 +38,6 @@ namespace Sigmodr ~SpeciesAbilityModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/SpeciesGroupModel.cpp b/sigmodr/models/SpeciesGroupModel.cpp index b1f6c579..345177cd 100644 --- a/sigmodr/models/SpeciesGroupModel.cpp +++ b/sigmodr/models/SpeciesGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SpeciesGroupModel::SpeciesGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Species") { @@ -57,18 +54,14 @@ bool Sigmodr::SpeciesGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Species")) { - if (xml.doctype().name() == "Species") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newSpecies(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newSpecies(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/SpeciesItemGroupModel.cpp b/sigmodr/models/SpeciesItemGroupModel.cpp index 3e6d378c..8431c6c7 100644 --- a/sigmodr/models/SpeciesItemGroupModel.cpp +++ b/sigmodr/models/SpeciesItemGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SpeciesItemGroupModel::SpeciesItemGroupModel(BaseModel* parent, Sigmod::Species* species) : GroupModel(parent, species, "Items") { @@ -57,18 +54,14 @@ bool Sigmodr::SpeciesItemGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "SpeceisItem")) { - if (xml.doctype().name() == "SpeciesItem") - { - addObject(qobject_cast<Sigmod::Species*>(m_object)->newItem(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Species*>(m_object)->newItem(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/SpeciesItemModel.cpp b/sigmodr/models/SpeciesItemModel.cpp index 7ebb6f1c..2d26bde5 100644 --- a/sigmodr/models/SpeciesItemModel.cpp +++ b/sigmodr/models/SpeciesItemModel.cpp @@ -33,9 +33,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SpeciesItemModel::SpeciesItemModel(BaseModel* parent, Sigmod::SpeciesItem* item) : ObjectModel(parent, item) { @@ -74,28 +71,6 @@ QVariant Sigmodr::SpeciesItemModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::SpeciesItemModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::SpeciesItemModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/SpeciesItemModel.h b/sigmodr/models/SpeciesItemModel.h index 678a36fc..eebe8b3e 100644 --- a/sigmodr/models/SpeciesItemModel.h +++ b/sigmodr/models/SpeciesItemModel.h @@ -38,8 +38,6 @@ class SpeciesItemModel : public ObjectModel ~SpeciesItemModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/SpeciesModel.cpp b/sigmodr/models/SpeciesModel.cpp index db2f36a0..fec696a9 100644 --- a/sigmodr/models/SpeciesModel.cpp +++ b/sigmodr/models/SpeciesModel.cpp @@ -33,9 +33,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SpeciesModel::SpeciesModel(BaseModel* parent, Sigmod::Species* species) : GroupObjectModel(parent, species) { @@ -75,11 +72,11 @@ bool Sigmodr::SpeciesModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml)) { if (xml.doctype().name() == m_object->className()) { @@ -91,14 +88,9 @@ bool Sigmodr::SpeciesModel::setData(const QVariant& value, int role) foreach (BaseModel* model, m_objects) { GroupModel* group = qobject_cast<GroupModel*>(model); - if (group) - { - const bool used = group->setData(value, role); - if (used) - return true; - } + if (group && group->setData(value, role)) + return true; } - file.close(); } } } diff --git a/sigmodr/models/SpeciesMoveGroupModel.cpp b/sigmodr/models/SpeciesMoveGroupModel.cpp index d6636f24..e0ec2e3a 100644 --- a/sigmodr/models/SpeciesMoveGroupModel.cpp +++ b/sigmodr/models/SpeciesMoveGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SpeciesMoveGroupModel::SpeciesMoveGroupModel(BaseModel* parent, Sigmod::Species* species) : GroupModel(parent, species, "Moves") { @@ -57,18 +54,14 @@ bool Sigmodr::SpeciesMoveGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "SpeciesMove")) { - if (xml.doctype().name() == "SpeciesMove") - { - addObject(qobject_cast<Sigmod::Species*>(m_object)->newMove(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Species*>(m_object)->newMove(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/SpeciesMoveModel.cpp b/sigmodr/models/SpeciesMoveModel.cpp index 9a80b0f1..b2441a45 100644 --- a/sigmodr/models/SpeciesMoveModel.cpp +++ b/sigmodr/models/SpeciesMoveModel.cpp @@ -33,9 +33,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SpeciesMoveModel::SpeciesMoveModel(BaseModel* parent, Sigmod::SpeciesMove* move) : ObjectModel(parent, move) { @@ -74,28 +71,6 @@ QVariant Sigmodr::SpeciesMoveModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::SpeciesMoveModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::SpeciesMoveModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/SpeciesMoveModel.h b/sigmodr/models/SpeciesMoveModel.h index 896351ab..43364368 100644 --- a/sigmodr/models/SpeciesMoveModel.h +++ b/sigmodr/models/SpeciesMoveModel.h @@ -38,8 +38,6 @@ class SpeciesMoveModel : public ObjectModel ~SpeciesMoveModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/SpriteGroupModel.cpp b/sigmodr/models/SpriteGroupModel.cpp index f6e4ac4c..a94cd44a 100644 --- a/sigmodr/models/SpriteGroupModel.cpp +++ b/sigmodr/models/SpriteGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SpriteGroupModel::SpriteGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Sprites") { @@ -57,18 +54,14 @@ bool Sigmodr::SpriteGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Sprite")) { - if (xml.doctype().name() == "Sprite") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newSprite(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newSprite(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/SpriteModel.cpp b/sigmodr/models/SpriteModel.cpp index be9ee918..69e4eaf9 100644 --- a/sigmodr/models/SpriteModel.cpp +++ b/sigmodr/models/SpriteModel.cpp @@ -30,9 +30,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::SpriteModel::SpriteModel(BaseModel* parent, Sigmod::Sprite* sprite) : ObjectModel(parent, sprite) { @@ -66,28 +63,6 @@ QVariant Sigmodr::SpriteModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::SpriteModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::SpriteModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/SpriteModel.h b/sigmodr/models/SpriteModel.h index bf86fc91..df5b29da 100644 --- a/sigmodr/models/SpriteModel.h +++ b/sigmodr/models/SpriteModel.h @@ -38,8 +38,6 @@ class SpriteModel : public ObjectModel ~SpriteModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/StatusGroupModel.cpp b/sigmodr/models/StatusGroupModel.cpp index 2bba3102..6fa46182 100644 --- a/sigmodr/models/StatusGroupModel.cpp +++ b/sigmodr/models/StatusGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::StatusGroupModel::StatusGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Status Effects") { @@ -57,18 +54,14 @@ bool Sigmodr::StatusGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Status")) { - if (xml.doctype().name() == "Status") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newStatus(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newStatus(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/StatusModel.cpp b/sigmodr/models/StatusModel.cpp index 04bc76cd..84e2643d 100644 --- a/sigmodr/models/StatusModel.cpp +++ b/sigmodr/models/StatusModel.cpp @@ -30,9 +30,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::StatusModel::StatusModel(BaseModel* parent, Sigmod::Status* status) : ObjectModel(parent, status) { @@ -66,28 +63,6 @@ QVariant Sigmodr::StatusModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::StatusModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::StatusModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/StatusModel.h b/sigmodr/models/StatusModel.h index 2573de6e..0a180812 100644 --- a/sigmodr/models/StatusModel.h +++ b/sigmodr/models/StatusModel.h @@ -38,8 +38,6 @@ class StatusModel : public ObjectModel ~StatusModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/StoreGroupModel.cpp b/sigmodr/models/StoreGroupModel.cpp index 6588b70e..f5561fec 100644 --- a/sigmodr/models/StoreGroupModel.cpp +++ b/sigmodr/models/StoreGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::StoreGroupModel::StoreGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Stores") { @@ -57,18 +54,14 @@ bool Sigmodr::StoreGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Store")) { - if (xml.doctype().name() == "Store") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newStore(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newStore(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/StoreModel.cpp b/sigmodr/models/StoreModel.cpp index 85aca1b1..b3784b66 100644 --- a/sigmodr/models/StoreModel.cpp +++ b/sigmodr/models/StoreModel.cpp @@ -31,9 +31,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::StoreModel::StoreModel(BaseModel* parent, Sigmod::Store* store) : ObjectModel(parent, store) { @@ -67,28 +64,6 @@ QVariant Sigmodr::StoreModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::StoreModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::StoreModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/StoreModel.h b/sigmodr/models/StoreModel.h index ed108fe8..cd3bee43 100644 --- a/sigmodr/models/StoreModel.h +++ b/sigmodr/models/StoreModel.h @@ -38,8 +38,6 @@ class StoreModel : public ObjectModel ~StoreModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/TileGroupModel.cpp b/sigmodr/models/TileGroupModel.cpp index 291549ac..25f77bb6 100644 --- a/sigmodr/models/TileGroupModel.cpp +++ b/sigmodr/models/TileGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::TileGroupModel::TileGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Tiles") { @@ -57,18 +54,14 @@ bool Sigmodr::TileGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Tile")) { - if (xml.doctype().name() == "Tile") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newTile(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newTile(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/TileModel.cpp b/sigmodr/models/TileModel.cpp index 63f6344f..adb36740 100644 --- a/sigmodr/models/TileModel.cpp +++ b/sigmodr/models/TileModel.cpp @@ -31,9 +31,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::TileModel::TileModel(BaseModel* parent, Sigmod::Tile* tile) : ObjectModel(parent, tile) { @@ -67,28 +64,6 @@ QVariant Sigmodr::TileModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::TileModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::TileModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/TileModel.h b/sigmodr/models/TileModel.h index 11a089a2..95538553 100644 --- a/sigmodr/models/TileModel.h +++ b/sigmodr/models/TileModel.h @@ -38,8 +38,6 @@ class TileModel : public ObjectModel ~TileModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/TimeGroupModel.cpp b/sigmodr/models/TimeGroupModel.cpp index 061ef821..79f9061c 100644 --- a/sigmodr/models/TimeGroupModel.cpp +++ b/sigmodr/models/TimeGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::TimeGroupModel::TimeGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Times") { @@ -57,18 +54,14 @@ bool Sigmodr::TimeGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Time")) { - if (xml.doctype().name() == "Time") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newTime(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newTime(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/TimeModel.cpp b/sigmodr/models/TimeModel.cpp index af90c502..08180e73 100644 --- a/sigmodr/models/TimeModel.cpp +++ b/sigmodr/models/TimeModel.cpp @@ -31,9 +31,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::TimeModel::TimeModel(BaseModel* parent, Sigmod::Time* time) : ObjectModel(parent, time) { @@ -67,28 +64,6 @@ QVariant Sigmodr::TimeModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::TimeModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::TimeModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/TimeModel.h b/sigmodr/models/TimeModel.h index 922081a6..430f0250 100644 --- a/sigmodr/models/TimeModel.h +++ b/sigmodr/models/TimeModel.h @@ -38,8 +38,6 @@ class TimeModel : public ObjectModel ~TimeModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/TrainerGroupModel.cpp b/sigmodr/models/TrainerGroupModel.cpp index fbf45700..88fb98ef 100644 --- a/sigmodr/models/TrainerGroupModel.cpp +++ b/sigmodr/models/TrainerGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::TrainerGroupModel::TrainerGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Trainers") { @@ -57,18 +54,14 @@ bool Sigmodr::TrainerGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Trainer")) { - if (xml.doctype().name() == "Trainer") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newTrainer(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newTrainer(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/TrainerModel.cpp b/sigmodr/models/TrainerModel.cpp index b6b9d76b..fd2f188d 100644 --- a/sigmodr/models/TrainerModel.cpp +++ b/sigmodr/models/TrainerModel.cpp @@ -31,9 +31,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::TrainerModel::TrainerModel(BaseModel* parent, Sigmod::Trainer* trainer) : ObjectModel(parent, trainer) { @@ -67,28 +64,6 @@ QVariant Sigmodr::TrainerModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::TrainerModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::TrainerModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/TrainerModel.h b/sigmodr/models/TrainerModel.h index 7c1f8bd3..e124379f 100644 --- a/sigmodr/models/TrainerModel.h +++ b/sigmodr/models/TrainerModel.h @@ -38,8 +38,6 @@ class TrainerModel : public ObjectModel ~TrainerModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/TypeGroupModel.cpp b/sigmodr/models/TypeGroupModel.cpp index ce8f85a6..184030a3 100644 --- a/sigmodr/models/TypeGroupModel.cpp +++ b/sigmodr/models/TypeGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::TypeGroupModel::TypeGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Types") { @@ -57,18 +54,14 @@ bool Sigmodr::TypeGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Type")) { - if (xml.doctype().name() == "Type") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newType(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newType(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/TypeModel.cpp b/sigmodr/models/TypeModel.cpp index 27755053..7122f174 100644 --- a/sigmodr/models/TypeModel.cpp +++ b/sigmodr/models/TypeModel.cpp @@ -31,9 +31,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::TypeModel::TypeModel(BaseModel* parent, Sigmod::Type* type) : ObjectModel(parent, type) { @@ -67,28 +64,6 @@ QVariant Sigmodr::TypeModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::TypeModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::TypeModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/TypeModel.h b/sigmodr/models/TypeModel.h index a32ffdb9..da502ed9 100644 --- a/sigmodr/models/TypeModel.h +++ b/sigmodr/models/TypeModel.h @@ -38,8 +38,6 @@ class TypeModel : public ObjectModel ~TypeModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; diff --git a/sigmodr/models/WeatherGroupModel.cpp b/sigmodr/models/WeatherGroupModel.cpp index 7d36cb21..6d51fd2a 100644 --- a/sigmodr/models/WeatherGroupModel.cpp +++ b/sigmodr/models/WeatherGroupModel.cpp @@ -28,9 +28,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::WeatherGroupModel::WeatherGroupModel(BaseModel* parent, Sigmod::Sigmod* sigmod) : GroupModel(parent, sigmod, "Weathers") { @@ -57,18 +54,14 @@ bool Sigmodr::WeatherGroupModel::setData(const QVariant& value, int role) { if (role == Sigmodr::BaseModel::XmlRole) { - if (value.canConvert<QString>()) + QString data = value.toString(); + if (!data.isEmpty()) { - QFile file(value.toString()); QDomDocument xml; - if ((file.open(QIODevice::ReadOnly) && xml.setContent(&file)) || xml.setContent(value.toString())) + if (loadFromData(data, &xml) && (xml.doctype().name() == "Weather")) { - if (xml.doctype().name() == "Weather") - { - addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newWeather(xml.documentElement())); - return true; - } - file.close(); + addObject(qobject_cast<Sigmod::Sigmod*>(m_object)->newWeather(xml.documentElement())); + return true; } } } diff --git a/sigmodr/models/WeatherModel.cpp b/sigmodr/models/WeatherModel.cpp index 186d06bf..07f65f59 100644 --- a/sigmodr/models/WeatherModel.cpp +++ b/sigmodr/models/WeatherModel.cpp @@ -30,9 +30,6 @@ // KDE includes #include <KMenu> -// Qt includes -#include <QtCore/QFile> - Sigmodr::WeatherModel::WeatherModel(BaseModel* parent, Sigmod::Weather* weather) : ObjectModel(parent, weather) { @@ -66,28 +63,6 @@ QVariant Sigmodr::WeatherModel::data(int role) const return Sigmodr::ObjectModel::data(role); } -bool Sigmodr::WeatherModel::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()) - { - m_object->load(xml.documentElement()); - return true; - } - file.close(); - } - } - } - return false; -} - void Sigmodr::WeatherModel::deleteSelf() { qobject_cast<GroupModel*>(m_parent)->deleteObject(this); diff --git a/sigmodr/models/WeatherModel.h b/sigmodr/models/WeatherModel.h index 700555e2..3de1e2c3 100644 --- a/sigmodr/models/WeatherModel.h +++ b/sigmodr/models/WeatherModel.h @@ -38,8 +38,6 @@ class WeatherModel : public ObjectModel ~WeatherModel(); QVariant data(int role = Qt::DisplayRole) const; - - bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void deleteSelf(); }; |