diff options
author | Ben Boeckel <MathStuf@gmail.com> | 2008-04-25 00:08:22 +0000 |
---|---|---|
committer | Ben Boeckel <MathStuf@gmail.com> | 2008-04-25 00:08:22 +0000 |
commit | dd643ee61d9166761c50803cd379c9343099385c (patch) | |
tree | 30d935e81896f3680d5d1c232669e180088d3f37 | |
parent | 446fcd9248d4cef74e905c485ef767a94a8463ec (diff) | |
download | sigen-dd643ee61d9166761c50803cd379c9343099385c.tar.gz sigen-dd643ee61d9166761c50803cd379c9343099385c.tar.xz sigen-dd643ee61d9166761c50803cd379c9343099385c.zip |
[FIX] Fleshed out a lot more Model classes
[ADD] New intermediate classes for Objects with subclasses and those without
git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@107 6ecfd1a5-f3ed-3746-8530-beee90d26b22
35 files changed, 517 insertions, 733 deletions
@@ -1,4 +1,12 @@ ----------------- +Rev: 107 +Date: 24 April 2008 +User: MathStuf +----------------- +[FIX] Fleshed out a lot more Model classes +[ADD] New intermediate classes for Objects with subclasses and those without + +----------------- Rev: 106 Date: 24 April 2008 User: MathStuf diff --git a/pokemodr/models/AbilityEffectModel.cpp b/pokemodr/models/AbilityEffectModel.cpp index dd52ec92..eb795b45 100644 --- a/pokemodr/models/AbilityEffectModel.cpp +++ b/pokemodr/models/AbilityEffectModel.cpp @@ -32,7 +32,6 @@ AbilityEffectModel::AbilityEffectModel(BaseModel* parent, Object* object) : AbilityEffectModel::~AbilityEffectModel() { - // TODO: destruct } QVariant AbilityEffectModel::data(int role) const @@ -41,25 +40,49 @@ QVariant AbilityEffectModel::data(int role) const return AbilityEffect::EffectStr[static_cast<AbilityEffect*>(m_object)->effect()]; else if (role == Qt::UserRole) { + // TODO: AbilityEffectUI // QWidget* widget = new AbilityEffectUI(static_cast<AbilityEffect*>(m_object), NULL); // return QVariant::fromValue(widget); } return QVariant(); } -int AbilityEffectModel::rowCount() const -{ - return 0; -} - bool AbilityEffectModel::setData(const QVariant& value, int role) { - // TODO: set data -} - -BaseModel* AbilityEffectModel::childItem(const int /*row*/) -{ - return NULL; + if (role == Qt::UserRole) + { + if (value.canConvert<void*>()) + { + *static_cast<AbilityEffect*>(m_object) = *static_cast<AbilityEffect*>(value.value<void*>()); + return true; + } + else if (value.canConvert<QString>()) + { + QFile file(value.toString()); + QDomDocument xml; + if (file.open(QIODevice::ReadOnly)) + { + if (xml.setContent(&file)) + { + if (xml.doctype().name() == m_object->className()) + { + m_object->load(xml.documentElement()); + return true; + } + } + file.close(); + } + else if (xml.setContent(value.toString())) + { + if (xml.doctype().name() == m_object->className()) + { + m_object->load(xml.documentElement()); + return true; + } + } + } + } + return false; } int AbilityEffectModel::indexNumber() const @@ -67,26 +90,6 @@ int AbilityEffectModel::indexNumber() const // TODO: get effect index } -bool AbilityEffectModel::canInsertRows() const -{ - return false; -} - -bool AbilityEffectModel::insertRows(const int /*rows*/) -{ - return false; -} - -bool AbilityEffectModel::canRemoveRows() const -{ - return false; -} - -bool AbilityEffectModel::removeRows(const int /*position*/, const int /*rows*/) -{ - return false; -} - // bool AbilityEffectModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) // { // // TODO: drag/drop diff --git a/pokemodr/models/AbilityEffectModel.h b/pokemodr/models/AbilityEffectModel.h index ed9d581e..76b338d3 100644 --- a/pokemodr/models/AbilityEffectModel.h +++ b/pokemodr/models/AbilityEffectModel.h @@ -28,19 +28,11 @@ class AbilityEffectModel : public ObjectModel ~AbilityEffectModel(); QVariant data(int role = Qt::DisplayRole) const; - int rowCount() const; bool setData(const QVariant& value, int role = Qt::EditRole); - BaseModel* childItem(const int /*row*/); int indexNumber() const; - bool canInsertRows() const; - bool insertRows(const int /*rows*/); - - bool canRemoveRows() const; - bool removeRows(const int /*position*/, const int /*rows*/); - // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; diff --git a/pokemodr/models/AbilityModel.cpp b/pokemodr/models/AbilityModel.cpp index dde7a8b8..8d26f760 100644 --- a/pokemodr/models/AbilityModel.cpp +++ b/pokemodr/models/AbilityModel.cpp @@ -34,17 +34,14 @@ #include "AbilityModel.h" AbilityModel::AbilityModel(BaseModel* parent, Object* object) : - ObjectModel(parent, object) + GroupObjectModel(parent, object) { - Ability* ability = static_cast<Ability*>(object); - for (int i = 0; i < ability->effectCount(); ++i) - m_effects.append(new AbilityEffectModel(this, ability->effect(i))); + setupData(); } AbilityModel::~AbilityModel() { - foreach (AbilityEffectModel* model, m_effects) - delete model; + clearData(); } QVariant AbilityModel::data(int role) const @@ -70,8 +67,9 @@ bool AbilityModel::setData(const QVariant& value, int role) { if (value.canConvert<void*>()) { - // TODO: reset effects + clearData(); *static_cast<Ability*>(m_object) = *static_cast<Ability*>(value.value<void*>()); + setupData(); return true; } else if (value.canConvert<QString>()) @@ -84,8 +82,10 @@ bool AbilityModel::setData(const QVariant& value, int role) { if (xml.doctype().name() == m_object->className()) { - // TODO: reset effects + clearData(); m_object->load(xml.documentElement()); + setupData(); + return true; } } file.close(); @@ -94,8 +94,10 @@ bool AbilityModel::setData(const QVariant& value, int role) { if (xml.doctype().name() == m_object->className()) { - // TODO: reset effects + clearData(); m_object->load(xml.documentElement()); + setupData(); + return true; } } } @@ -113,11 +115,6 @@ int AbilityModel::indexNumber() const return m_object->pokemod()->abilityIndex(m_object->id()); } -bool AbilityModel::canInsertRows() const -{ - return true; -} - bool AbilityModel::insertRows(const int rows) { for (int i = 0; i < rows; ++i) @@ -125,11 +122,6 @@ bool AbilityModel::insertRows(const int rows) return true; } -bool AbilityModel::canRemoveRows() const -{ - return true; -} - bool AbilityModel::removeRows(const int position, const int rows) { for (int i = 0; i < rows; ++i) @@ -145,3 +137,16 @@ bool AbilityModel::removeRows(const int position, const int rows) // { // // TODO: drag/drop // } + +void AbilityModel::setupData() +{ + Ability* ability = static_cast<Ability*>(m_object); + for (int i = 0; i < ability->effectCount(); ++i) + m_effects.append(new AbilityEffectModel(this, ability->effect(i))); +} + +void AbilityModel::clearData() +{ + foreach (AbilityEffectModel* model, m_effects) + delete model; +} diff --git a/pokemodr/models/AbilityModel.h b/pokemodr/models/AbilityModel.h index 6221fddf..0a012845 100644 --- a/pokemodr/models/AbilityModel.h +++ b/pokemodr/models/AbilityModel.h @@ -24,7 +24,7 @@ // Forward declarations class AbilityEffectModel; -class AbilityModel : public ObjectModel +class AbilityModel : public GroupObjectModel { public: AbilityModel(BaseModel* parent, Object* object); @@ -38,14 +38,15 @@ class AbilityModel : public ObjectModel BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; bool insertRows(const int rows); - bool canRemoveRows() const; bool removeRows(const int position, const int rows); // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); private: + void setupData(); + void clearData(); + QList<AbilityEffectModel*> m_effects; }; diff --git a/pokemodr/models/BadgeModel.cpp b/pokemodr/models/BadgeModel.cpp index 0954acff..f64a2e51 100644 --- a/pokemodr/models/BadgeModel.cpp +++ b/pokemodr/models/BadgeModel.cpp @@ -36,7 +36,6 @@ BadgeModel::BadgeModel(BaseModel* parent, Object* object) : BadgeModel::~BadgeModel() { - // TODO: destruct } QVariant BadgeModel::data(int role) const @@ -51,11 +50,6 @@ QVariant BadgeModel::data(int role) const return QVariant(); } -int BadgeModel::rowCount() const -{ - return 0; -} - bool BadgeModel::setData(const QVariant& value, int role) { if (role == Qt::UserRole) @@ -74,50 +68,31 @@ bool BadgeModel::setData(const QVariant& value, int role) if (xml.setContent(&file)) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } file.close(); } else if (xml.setContent(value.toString())) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } } } return false; } -BaseModel* BadgeModel::childItem(const int row) -{ - return NULL; -} - int BadgeModel::indexNumber() const { return m_object->pokemod()->badgeIndex(m_object->id()); } -bool BadgeModel::canInsertRows() const -{ - return false; -} - -bool BadgeModel::insertRows(const int rows) -{ - return false; -} - -bool BadgeModel::canRemoveRows() const -{ - return false; -} - -bool BadgeModel::removeRows(const int position, const int rows) -{ - return false; -} - // bool BadgeModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) // { // // TODO: drag/drop diff --git a/pokemodr/models/BadgeModel.h b/pokemodr/models/BadgeModel.h index e409087e..20777d39 100644 --- a/pokemodr/models/BadgeModel.h +++ b/pokemodr/models/BadgeModel.h @@ -28,19 +28,11 @@ class BadgeModel : public ObjectModel ~BadgeModel(); QVariant data(int role = Qt::DisplayRole) const; - int rowCount() const; bool setData(const QVariant& value, int role = Qt::EditRole); - BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; - bool insertRows(const int rows); - - bool canRemoveRows() const; - bool removeRows(const int position, const int rows); - // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; diff --git a/pokemodr/models/BaseModel.cpp b/pokemodr/models/BaseModel.cpp index bb0392ff..b1241803 100644 --- a/pokemodr/models/BaseModel.cpp +++ b/pokemodr/models/BaseModel.cpp @@ -40,16 +40,66 @@ BaseModel* BaseModel::parent() // return Qt::CopyAction | Qt::MoveAction; // } -ObjectModel::ObjectModel(BaseModel* parent, Object* object) : +BaseObjectModel::BaseObjectModel(BaseModel* parent, Object* object) : BaseModel(parent, object, "") { } -Qt::ItemFlags ObjectModel::flags() const +Qt::ItemFlags BaseObjectModel::flags() const { return Qt::ItemIsDragEnabled | Qt::ItemIsSelectable | Qt::ItemIsDropEnabled | Qt::ItemIsEnabled; } +ObjectModel::ObjectModel(BaseModel* parent, Object* object) : + BaseObjectModel(parent, object) +{ +} + +int ObjectModel::rowCount() const +{ + return 0; +} + +BaseModel* ObjectModel::childItem(const int /*row*/) +{ + return NULL; +} + +bool ObjectModel::canInsertRows() const +{ + return false; +} + +bool ObjectModel::insertRows(const int /*rows*/) +{ + return false; +} + +bool ObjectModel::canRemoveRows() const +{ + return false; +} + +bool ObjectModel::removeRows(const int /*position*/, const int /*rows*/) +{ + return false; +} + +GroupObjectModel::GroupObjectModel(BaseModel* parent, Object* object) : + BaseObjectModel(parent, object) +{ +} + +bool GroupObjectModel::canInsertRows() const +{ + return true; +} + +bool GroupObjectModel::canRemoveRows() const +{ + return true; +} + GroupModel::GroupModel(BaseModel* parent, Object* object, const QString& name) : BaseModel(parent, object, name) { @@ -57,8 +107,7 @@ GroupModel::GroupModel(BaseModel* parent, Object* object, const QString& name) : GroupModel::~GroupModel() { - foreach (ObjectModel* model, m_objects) - delete model; + clearData(); } QVariant GroupModel::data(int role) const @@ -78,6 +127,11 @@ bool GroupModel::setData(const QVariant& /*value*/, int /*role = Qt::EditRole*/) return false; } +BaseModel* GroupModel::childItem(const int row) +{ + return m_objects[row]; +} + bool GroupModel::canInsertRows() const { return true; @@ -87,3 +141,9 @@ bool GroupModel::canRemoveRows() const { return true; } + +void GroupModel::clearData() +{ + foreach (BaseObjectModel* model, m_objects) + delete model; +} diff --git a/pokemodr/models/BaseModel.h b/pokemodr/models/BaseModel.h index f90e1748..e422266a 100644 --- a/pokemodr/models/BaseModel.h +++ b/pokemodr/models/BaseModel.h @@ -68,11 +68,11 @@ class BaseModel BaseModel* m_parent; }; -class ObjectModel : public BaseModel +class BaseObjectModel : public BaseModel { public: - ObjectModel(BaseModel* parent, Object* object); - virtual ~ObjectModel() + BaseObjectModel(BaseModel* parent, Object* object); + virtual ~BaseObjectModel() { } @@ -94,6 +94,59 @@ class ObjectModel : public BaseModel // virtual bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) = 0; }; +class ObjectModel : public BaseObjectModel +{ + public: + ObjectModel(BaseModel* parent, Object* object); + virtual ~ObjectModel() + { + } + + virtual QVariant data(int role = Qt::DisplayRole) const = 0; + int rowCount() const; + + virtual bool setData(const QVariant& value, int role = Qt::EditRole) = 0; + + BaseModel* childItem(const int /*row*/); + virtual int indexNumber() const = 0; + + bool canInsertRows() const; + bool insertRows(const int /*rows*/); + + bool canRemoveRows() const; + bool removeRows(const int /*position*/, const int /*rows*/); + +// virtual bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) = 0; +}; + +class GroupObjectModel : public BaseObjectModel +{ + public: + GroupObjectModel(BaseModel* parent, Object* object); + virtual ~GroupObjectModel() + { + } + + virtual QVariant data(int role = Qt::DisplayRole) const = 0; + virtual int rowCount() const = 0; + + virtual bool setData(const QVariant& value, int role = Qt::EditRole) = 0; + + virtual BaseModel* childItem(const int row) = 0; + virtual int indexNumber() const = 0; + + bool canInsertRows() const; + virtual bool insertRows(const int rows) = 0; + + bool canRemoveRows() const; + virtual bool removeRows(const int position, const int rows) = 0; + +// virtual bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) = 0; + protected: + virtual void setupData() = 0; + virtual void clearData() = 0; +}; + class GroupModel : public BaseModel { public: @@ -106,7 +159,7 @@ class GroupModel : public BaseModel Qt::ItemFlags flags() const; bool setData(const QVariant& /*value*/, int /*role = Qt::EditRole*/); - virtual BaseModel* childItem(const int row) = 0; + BaseModel* childItem(const int row); virtual int indexNumber() const = 0; bool canInsertRows() const; @@ -116,8 +169,10 @@ class GroupModel : public BaseModel virtual bool removeRows(const int position, const int rows) = 0; // virtual bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) = 0; + protected: + QList<BaseObjectModel*> m_objects; private: - QList<ObjectModel*> m_objects; + void clearData(); }; #endif diff --git a/pokemodr/models/CoinListModel.cpp b/pokemodr/models/CoinListModel.cpp index a7c6b892..483fdc20 100644 --- a/pokemodr/models/CoinListModel.cpp +++ b/pokemodr/models/CoinListModel.cpp @@ -34,16 +34,14 @@ #include "CoinListModel.h" CoinListModel::CoinListModel(BaseModel* parent, Object* object) : - ObjectModel(parent, object) + GroupObjectModel(parent, object) { - CoinList* coinList = static_cast<CoinList*>(m_object); - for (int i = 0; i < coinList->objectCount(); ++i) - m_objects.append(new CoinListObjectModel(this, coinList->object(i))); + setupData(); } CoinListModel::~CoinListModel() { - // TODO: destruct + clearData(); } QVariant CoinListModel::data(int role) const @@ -67,10 +65,11 @@ bool CoinListModel::setData(const QVariant& value, int role) { if (role == Qt::UserRole) { - // TODO: reset objects if (value.canConvert<void*>()) { + clearData(); *static_cast<CoinList*>(m_object) = *static_cast<CoinList*>(value.value<void*>()); + setupData(); return true; } else if (value.canConvert<QString>()) @@ -82,14 +81,24 @@ bool CoinListModel::setData(const QVariant& value, int role) if (xml.setContent(&file)) { if (xml.doctype().name() == m_object->className()) + { + clearData(); m_object->load(xml.documentElement()); + setupData(); + return true; + } } file.close(); } else if (xml.setContent(value.toString())) { if (xml.doctype().name() == m_object->className()) + { + clearData(); m_object->load(xml.documentElement()); + setupData(); + return true; + } } } } @@ -106,11 +115,6 @@ int CoinListModel::indexNumber() const return m_object->pokemod()->coinListIndex(m_object->id()); } -bool CoinListModel::canInsertRows() const -{ - return true; -} - bool CoinListModel::insertRows(const int rows) { for (int i = 0; i < rows; ++i) @@ -118,11 +122,6 @@ bool CoinListModel::insertRows(const int rows) return true; } -bool CoinListModel::canRemoveRows() const -{ - return true; -} - bool CoinListModel::removeRows(const int position, const int rows) { for (int i = 0; i < rows; ++i) @@ -138,3 +137,16 @@ bool CoinListModel::removeRows(const int position, const int rows) // { // // TODO: drag/drop // } + +void CoinListModel::setupData() +{ + CoinList* coinList = static_cast<CoinList*>(m_object); + for (int i = 0; i < coinList->objectCount(); ++i) + m_objects.append(new CoinListObjectModel(this, coinList->object(i))); +} + +void CoinListModel::clearData() +{ + foreach (CoinListObjectModel* model, m_objects) + delete model; +} diff --git a/pokemodr/models/CoinListModel.h b/pokemodr/models/CoinListModel.h index d8aab92d..b3503771 100644 --- a/pokemodr/models/CoinListModel.h +++ b/pokemodr/models/CoinListModel.h @@ -24,7 +24,7 @@ // Forward declarations class CoinListObjectModel; -class CoinListModel : public ObjectModel +class CoinListModel : public GroupObjectModel { public: CoinListModel(BaseModel* parent, Object* object); @@ -38,14 +38,15 @@ class CoinListModel : public ObjectModel BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; bool insertRows(const int rows); - bool canRemoveRows() const; bool removeRows(const int position, const int rows); // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); private: + void setupData(); + void clearData(); + QList<CoinListObjectModel*> m_objects; }; diff --git a/pokemodr/models/CoinListObjectModel.cpp b/pokemodr/models/CoinListObjectModel.cpp index 9fc94bd4..c2af381a 100644 --- a/pokemodr/models/CoinListObjectModel.cpp +++ b/pokemodr/models/CoinListObjectModel.cpp @@ -37,7 +37,6 @@ CoinListObjectModel::CoinListObjectModel(BaseModel* parent, Object* object) : CoinListObjectModel::~CoinListObjectModel() { - // TODO: destruct } QVariant CoinListObjectModel::data(int role) const @@ -58,11 +57,6 @@ QVariant CoinListObjectModel::data(int role) const return QVariant(); } -int CoinListObjectModel::rowCount() const -{ - return 0; -} - bool CoinListObjectModel::setData(const QVariant& value, int role) { if (role == Qt::UserRole) @@ -81,50 +75,31 @@ bool CoinListObjectModel::setData(const QVariant& value, int role) if (xml.setContent(&file)) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } file.close(); } else if (xml.setContent(value.toString())) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } } } return false; } -BaseModel* CoinListObjectModel::childItem(const int row) -{ - return NULL; -} - int CoinListObjectModel::indexNumber() const { // TODO: get index number } -bool CoinListObjectModel::canInsertRows() const -{ - return false; -} - -bool CoinListObjectModel::insertRows(const int /*rows*/) -{ - return false; -} - -bool CoinListObjectModel::canRemoveRows() const -{ - return false; -} - -bool CoinListObjectModel::removeRows(const int /*position*/, const int /*rows*/) -{ - return false; -} - // bool CoinListObjectModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) // { // // TODO: drag/drop diff --git a/pokemodr/models/CoinListObjectModel.h b/pokemodr/models/CoinListObjectModel.h index 98e69be3..f9482b40 100644 --- a/pokemodr/models/CoinListObjectModel.h +++ b/pokemodr/models/CoinListObjectModel.h @@ -28,19 +28,11 @@ class CoinListObjectModel : public ObjectModel ~CoinListObjectModel(); QVariant data(int role = Qt::DisplayRole) const; - int rowCount() const; bool setData(const QVariant& value, int role = Qt::EditRole); - BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; - bool insertRows(const int /*rows*/); - - bool canRemoveRows() const; - bool removeRows(const int /*position*/, const int /*rows*/); - // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; diff --git a/pokemodr/models/DialogModel.cpp b/pokemodr/models/DialogModel.cpp index 874b0c25..304ccff9 100644 --- a/pokemodr/models/DialogModel.cpp +++ b/pokemodr/models/DialogModel.cpp @@ -36,7 +36,6 @@ DialogModel::DialogModel(BaseModel* parent, Object* object) : DialogModel::~DialogModel() { - // TODO: destruct } QVariant DialogModel::data(int role) const @@ -45,17 +44,13 @@ QVariant DialogModel::data(int role) const return static_cast<Dialog*>(m_object)->dialog(); else if (role == Qt::UserRole) { + // TODO: DialogUI // QWidget* widget = new DialogUI(static_cast<Dialog*>(m_object), NULL); // return QVariant::fromValue(widget); } return QVariant(); } -int DialogModel::rowCount() const -{ - return 0; -} - bool DialogModel::setData(const QVariant& value, int role) { if (role == Qt::UserRole) @@ -74,50 +69,31 @@ bool DialogModel::setData(const QVariant& value, int role) if (xml.setContent(&file)) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } file.close(); } else if (xml.setContent(value.toString())) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } } } return false; } -BaseModel* DialogModel::childItem(const int row) -{ - return NULL; -} - int DialogModel::indexNumber() const { return m_object->pokemod()->dialogIndex(m_object->id()); } -bool DialogModel::canInsertRows() const -{ - return false; -} - -bool DialogModel::insertRows(const int rows) -{ - return false; -} - -bool DialogModel::canRemoveRows() const -{ - return false; -} - -bool DialogModel::removeRows(const int position, const int rows) -{ - return false; -} - // bool DialogModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) // { // // TODO: drag/drop diff --git a/pokemodr/models/DialogModel.h b/pokemodr/models/DialogModel.h index fd8499db..06380829 100644 --- a/pokemodr/models/DialogModel.h +++ b/pokemodr/models/DialogModel.h @@ -28,19 +28,11 @@ class DialogModel : public ObjectModel ~DialogModel(); QVariant data(int role = Qt::DisplayRole) const; - int rowCount() const; bool setData(const QVariant& value, int role = Qt::EditRole); - BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; - bool insertRows(const int rows); - - bool canRemoveRows() const; - bool removeRows(const int position, const int rows); - // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; diff --git a/pokemodr/models/EggGroupModel.cpp b/pokemodr/models/EggGroupModel.cpp index f39a9356..d8b3aec8 100644 --- a/pokemodr/models/EggGroupModel.cpp +++ b/pokemodr/models/EggGroupModel.cpp @@ -36,7 +36,6 @@ EggGroupModel::EggGroupModel(BaseModel* parent, Object* object) : EggGroupModel::~EggGroupModel() { - // TODO: destruct } QVariant EggGroupModel::data(int role) const @@ -51,11 +50,6 @@ QVariant EggGroupModel::data(int role) const return QVariant(); } -int EggGroupModel::rowCount() const -{ - return 0; -} - bool EggGroupModel::setData(const QVariant& value, int role) { if (role == Qt::UserRole) @@ -74,50 +68,31 @@ bool EggGroupModel::setData(const QVariant& value, int role) if (xml.setContent(&file)) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } file.close(); } else if (xml.setContent(value.toString())) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } } } return false; } -BaseModel* EggGroupModel::childItem(const int row) -{ - return NULL; -} - int EggGroupModel::indexNumber() const { return m_object->pokemod()->eggGroupIndex(m_object->id()); } -bool EggGroupModel::canInsertRows() const -{ - return false; -} - -bool EggGroupModel::insertRows(const int rows) -{ - return false; -} - -bool EggGroupModel::canRemoveRows() const -{ - return false; -} - -bool EggGroupModel::removeRows(const int position, const int rows) -{ - return false; -} - // bool EggGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) // { // // TODO: drag/drop diff --git a/pokemodr/models/EggGroupModel.h b/pokemodr/models/EggGroupModel.h index f29733bd..a01167fb 100644 --- a/pokemodr/models/EggGroupModel.h +++ b/pokemodr/models/EggGroupModel.h @@ -28,19 +28,11 @@ class EggGroupModel : public ObjectModel ~EggGroupModel(); QVariant data(int role = Qt::DisplayRole) const; - int rowCount() const; bool setData(const QVariant& value, int role = Qt::EditRole); - BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; - bool insertRows(const int rows); - - bool canRemoveRows() const; - bool removeRows(const int position, const int rows); - // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; diff --git a/pokemodr/models/ItemTypeModel.cpp b/pokemodr/models/ItemTypeModel.cpp index 2885feff..f76ad3ca 100644 --- a/pokemodr/models/ItemTypeModel.cpp +++ b/pokemodr/models/ItemTypeModel.cpp @@ -36,7 +36,6 @@ ItemTypeModel::ItemTypeModel(BaseModel* parent, Object* object) : ItemTypeModel::~ItemTypeModel() { - // TODO: destruct } QVariant ItemTypeModel::data(int role) const @@ -51,11 +50,6 @@ QVariant ItemTypeModel::data(int role) const return QVariant(); } -int ItemTypeModel::rowCount() const -{ - return 0; -} - bool ItemTypeModel::setData(const QVariant& value, int role) { if (role == Qt::UserRole) @@ -74,50 +68,31 @@ bool ItemTypeModel::setData(const QVariant& value, int role) if (xml.setContent(&file)) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } file.close(); } else if (xml.setContent(value.toString())) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } } } return false; } -BaseModel* ItemTypeModel::childItem(const int row) -{ - return NULL; -} - int ItemTypeModel::indexNumber() const { return m_object->pokemod()->itemTypeIndex(m_object->id()); } -bool ItemTypeModel::canInsertRows() const -{ - return false; -} - -bool ItemTypeModel::insertRows(const int rows) -{ - return false; -} - -bool ItemTypeModel::canRemoveRows() const -{ - return false; -} - -bool ItemTypeModel::removeRows(const int position, const int rows) -{ - return false; -} - // bool ItemTypeModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) // { // // TODO: drag/drop diff --git a/pokemodr/models/ItemTypeModel.h b/pokemodr/models/ItemTypeModel.h index 8d46371b..08702d6d 100644 --- a/pokemodr/models/ItemTypeModel.h +++ b/pokemodr/models/ItemTypeModel.h @@ -28,19 +28,11 @@ class ItemTypeModel : public ObjectModel ~ItemTypeModel(); QVariant data(int role = Qt::DisplayRole) const; - int rowCount() const; bool setData(const QVariant& value, int role = Qt::EditRole); - BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; - bool insertRows(const int rows); - - bool canRemoveRows() const; - bool removeRows(const int position, const int rows); - // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; diff --git a/pokemodr/models/NatureModel.cpp b/pokemodr/models/NatureModel.cpp index 96a9cbed..5c1be3d3 100644 --- a/pokemodr/models/NatureModel.cpp +++ b/pokemodr/models/NatureModel.cpp @@ -36,7 +36,6 @@ NatureModel::NatureModel(BaseModel* parent, Object* object) : NatureModel::~NatureModel() { - // TODO: destruct } QVariant NatureModel::data(int role) const @@ -51,11 +50,6 @@ QVariant NatureModel::data(int role) const return QVariant(); } -int NatureModel::rowCount() const -{ - return 0; -} - bool NatureModel::setData(const QVariant& value, int role) { if (role == Qt::UserRole) @@ -74,50 +68,31 @@ bool NatureModel::setData(const QVariant& value, int role) if (xml.setContent(&file)) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } file.close(); } else if (xml.setContent(value.toString())) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } } } return false; } -BaseModel* NatureModel::childItem(const int row) -{ - return NULL; -} - int NatureModel::indexNumber() const { return m_object->pokemod()->natureIndex(m_object->id()); } -bool NatureModel::canInsertRows() const -{ - return false; -} - -bool NatureModel::insertRows(const int rows) -{ - return false; -} - -bool NatureModel::canRemoveRows() const -{ - return false; -} - -bool NatureModel::removeRows(const int position, const int rows) -{ - return false; -} - // bool NatureModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) // { // // TODO: drag/drop diff --git a/pokemodr/models/NatureModel.h b/pokemodr/models/NatureModel.h index 4b3450f6..78e9714b 100644 --- a/pokemodr/models/NatureModel.h +++ b/pokemodr/models/NatureModel.h @@ -28,19 +28,11 @@ class NatureModel : public ObjectModel ~NatureModel(); QVariant data(int role = Qt::DisplayRole) const; - int rowCount() const; bool setData(const QVariant& value, int role = Qt::EditRole); - BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; - bool insertRows(const int rows); - - bool canRemoveRows() const; - bool removeRows(const int position, const int rows); - // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; diff --git a/pokemodr/models/PokemodModel.cpp b/pokemodr/models/PokemodModel.cpp index b37d732e..67523ce0 100644 --- a/pokemodr/models/PokemodModel.cpp +++ b/pokemodr/models/PokemodModel.cpp @@ -16,7 +16,21 @@ */ // Pokemod includes +#include <Ability.h> +#include <Badge.h> +#include <CoinList.h> +#include <Dialog.h> +#include <EggGroup.h> +#include <Item.h> +#include <ItemType.h> +#include <Nature.h> #include <Pokemod.h> +#include <Species.h> +#include <Store.h> +#include <Tile.h> +#include <Time.h> +#include <Trainer.h> +#include <Type.h> // PokeModr includes #include "PokemodUI.h" @@ -45,22 +59,18 @@ AbilityGroupModel::AbilityGroupModel(BaseModel* parent, Object* object) : GroupModel(parent, object, "Abilities") { - // TODO: construct + Pokemod* pokemod = static_cast<Pokemod*>(m_object); + for (int i = 0; i < pokemod->abilityCount(); ++i) + m_objects.append(new AbilityModel(this, pokemod->ability(i))); } AbilityGroupModel::~AbilityGroupModel() { - // TODO: destruct } int AbilityGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* AbilityGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->abilityCount(); } int AbilityGroupModel::indexNumber() const @@ -70,35 +80,42 @@ int AbilityGroupModel::indexNumber() const bool AbilityGroupModel::insertRows(const int rows) { - // TODO: insert row + for (int i = 0; i < rows; ++i) + m_objects.append(new AbilityModel(this, static_cast<Pokemod*>(m_object)->newAbility())); + return true; } bool AbilityGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteAbility(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } -// bool AbilityGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); +// bool AbilityGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) +// { +// +// } BadgeGroupModel::BadgeGroupModel(BaseModel* parent, Object* object) : GroupModel(parent, object, "Badges") { - // TODO: construct + Pokemod* pokemod = static_cast<Pokemod*>(m_object); + for (int i = 0; i < pokemod->badgeCount(); ++i) + m_objects.append(new BadgeModel(this, pokemod->badge(i))); } BadgeGroupModel::~BadgeGroupModel() { - // TODO: destruct } int BadgeGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* BadgeGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->badgeCount(); } int BadgeGroupModel::indexNumber() const @@ -108,12 +125,20 @@ int BadgeGroupModel::indexNumber() const bool BadgeGroupModel::insertRows(const int rows) { - // TODO: insert row + for (int i = 0; i < rows; ++i) + m_objects.append(new BadgeModel(this, static_cast<Pokemod*>(m_object)->newBadge())); + return true; } bool BadgeGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteBadge(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool BadgeGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -126,17 +151,11 @@ CoinListGroupModel::CoinListGroupModel(BaseModel* parent, Object* object) : CoinListGroupModel::~CoinListGroupModel() { - // TODO: destruct } int CoinListGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* CoinListGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->coinListCount(); } int CoinListGroupModel::indexNumber() const @@ -146,12 +165,20 @@ int CoinListGroupModel::indexNumber() const bool CoinListGroupModel::insertRows(const int rows) { - // TODO: insert row + for (int i = 0; i < rows; ++i) + m_objects.append(new CoinListModel(this, static_cast<Pokemod*>(m_object)->newCoinList())); + return true; } bool CoinListGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteCoinList(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool CoinListGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -164,17 +191,11 @@ DialogGroupModel::DialogGroupModel(BaseModel* parent, Object* object) : DialogGroupModel::~DialogGroupModel() { - // TODO: destruct } int DialogGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* DialogGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->dialogCount(); } int DialogGroupModel::indexNumber() const @@ -184,12 +205,20 @@ int DialogGroupModel::indexNumber() const bool DialogGroupModel::insertRows(const int rows) { - // TODO: insert row + for (int i = 0; i < rows; ++i) + m_objects.append(new DialogModel(this, static_cast<Pokemod*>(m_object)->newDialog())); + return true; } bool DialogGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteDialog(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool DialogGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -202,17 +231,11 @@ EggGroupGroupModel::EggGroupGroupModel(BaseModel* parent, Object* object) : EggGroupGroupModel::~EggGroupGroupModel() { - // TODO: destruct } int EggGroupGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* EggGroupGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->eggGroupCount(); } int EggGroupGroupModel::indexNumber() const @@ -222,12 +245,20 @@ int EggGroupGroupModel::indexNumber() const bool EggGroupGroupModel::insertRows(const int rows) { - // TODO: insert row + for (int i = 0; i < rows; ++i) + m_objects.append(new EggGroupModel(this, static_cast<Pokemod*>(m_object)->newEggGroup())); + return true; } bool EggGroupGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteEggGroup(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool EggGroupGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -240,17 +271,11 @@ ItemGroupModel::ItemGroupModel(BaseModel* parent, Object* object) : ItemGroupModel::~ItemGroupModel() { - // TODO: destruct } int ItemGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* ItemGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->itemCount(); } int ItemGroupModel::indexNumber() const @@ -260,12 +285,21 @@ int ItemGroupModel::indexNumber() const bool ItemGroupModel::insertRows(const int rows) { - // TODO: insert row + // TODO: ItemModel +// for (int i = 0; i < rows; ++i) +// m_objects.append(new ItemModel(this, static_cast<Pokemod*>(m_object)->newItem())); +// return true; } bool ItemGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteItem(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool ItemGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -278,17 +312,11 @@ ItemTypeGroupModel::ItemTypeGroupModel(BaseModel* parent, Object* object) : ItemTypeGroupModel::~ItemTypeGroupModel() { - // TODO: destruct } int ItemTypeGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* ItemTypeGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->itemTypeCount(); } int ItemTypeGroupModel::indexNumber() const @@ -298,12 +326,20 @@ int ItemTypeGroupModel::indexNumber() const bool ItemTypeGroupModel::insertRows(const int rows) { - // TODO: insert row + for (int i = 0; i < rows; ++i) + m_objects.append(new ItemTypeModel(this, static_cast<Pokemod*>(m_object)->newItemType())); + return true; } bool ItemTypeGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteItemType(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool ItemTypeGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -316,17 +352,11 @@ MapGroupModel::MapGroupModel(BaseModel* parent, Object* object) : MapGroupModel::~MapGroupModel() { - // TODO: destruct } int MapGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* MapGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->mapCount(); } int MapGroupModel::indexNumber() const @@ -336,12 +366,21 @@ int MapGroupModel::indexNumber() const bool MapGroupModel::insertRows(const int rows) { - // TODO: insert row + // TODO: MapModel +// for (int i = 0; i < rows; ++i) +// m_objects.append(new MapModel(this, static_cast<Pokemod*>(m_object)->newMap())); +// return true; } bool MapGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteMap(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool MapGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -354,17 +393,11 @@ MoveGroupModel::MoveGroupModel(BaseModel* parent, Object* object) : MoveGroupModel::~MoveGroupModel() { - // TODO: destruct } int MoveGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* MoveGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->moveCount(); } int MoveGroupModel::indexNumber() const @@ -374,12 +407,21 @@ int MoveGroupModel::indexNumber() const bool MoveGroupModel::insertRows(const int rows) { - // TODO: insert row + // TODO: MoveModel +// for (int i = 0; i < rows; ++i) +// m_objects.append(new MoveModel(this, static_cast<Pokemod*>(m_object)->newMove())); +// return true; } bool MoveGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteMove(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool MoveGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -392,17 +434,11 @@ NatureGroupModel::NatureGroupModel(BaseModel* parent, Object* object) : NatureGroupModel::~NatureGroupModel() { - // TODO: destruct } int NatureGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* NatureGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->natureCount(); } int NatureGroupModel::indexNumber() const @@ -412,12 +448,20 @@ int NatureGroupModel::indexNumber() const bool NatureGroupModel::insertRows(const int rows) { - // TODO: insert row + for (int i = 0; i < rows; ++i) + m_objects.append(new NatureModel(this, static_cast<Pokemod*>(m_object)->newNature())); + return true; } bool NatureGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteNature(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool NatureGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -430,17 +474,11 @@ SpeciesGroupModel::SpeciesGroupModel(BaseModel* parent, Object* object) : SpeciesGroupModel::~SpeciesGroupModel() { - // TODO: destruct } int SpeciesGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* SpeciesGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->speciesCount(); } int SpeciesGroupModel::indexNumber() const @@ -450,12 +488,21 @@ int SpeciesGroupModel::indexNumber() const bool SpeciesGroupModel::insertRows(const int rows) { - // TODO: insert row + // TODO: SpeciesModel +// for (int i = 0; i < rows; ++i) +// m_objects.append(new SpeciesModel(this, static_cast<Pokemod*>(m_object)->newSpecies())); +// return true; } bool SpeciesGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteSpecies(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool SpeciesGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -468,17 +515,11 @@ StoreGroupModel::StoreGroupModel(BaseModel* parent, Object* object) : StoreGroupModel::~StoreGroupModel() { - // TODO: destruct } int StoreGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* StoreGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->storeCount(); } int StoreGroupModel::indexNumber() const @@ -488,12 +529,20 @@ int StoreGroupModel::indexNumber() const bool StoreGroupModel::insertRows(const int rows) { - // TODO: insert row + for (int i = 0; i < rows; ++i) + m_objects.append(new StoreModel(this, static_cast<Pokemod*>(m_object)->newStore())); + return true; } bool StoreGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteStore(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool StoreGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -506,17 +555,11 @@ TileGroupModel::TileGroupModel(BaseModel* parent, Object* object) : TileGroupModel::~TileGroupModel() { - // TODO: destruct } int TileGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* TileGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->tileCount(); } int TileGroupModel::indexNumber() const @@ -526,12 +569,20 @@ int TileGroupModel::indexNumber() const bool TileGroupModel::insertRows(const int rows) { - // TODO: insert row + for (int i = 0; i < rows; ++i) + m_objects.append(new TileModel(this, static_cast<Pokemod*>(m_object)->newTile())); + return true; } bool TileGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteTile(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool TileGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -544,17 +595,11 @@ TimeGroupModel::TimeGroupModel(BaseModel* parent, Object* object) : TimeGroupModel::~TimeGroupModel() { - // TODO: destruct } int TimeGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* TimeGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->timeCount(); } int TimeGroupModel::indexNumber() const @@ -564,12 +609,20 @@ int TimeGroupModel::indexNumber() const bool TimeGroupModel::insertRows(const int rows) { - // TODO: insert row + for (int i = 0; i < rows; ++i) + m_objects.append(new TimeModel(this, static_cast<Pokemod*>(m_object)->newTime())); + return true; } bool TimeGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteTime(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool TimeGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -582,17 +635,11 @@ TrainerGroupModel::TrainerGroupModel(BaseModel* parent, Object* object) : TrainerGroupModel::~TrainerGroupModel() { - // TODO: destruct } int TrainerGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* TrainerGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->trainerCount(); } int TrainerGroupModel::indexNumber() const @@ -602,12 +649,20 @@ int TrainerGroupModel::indexNumber() const bool TrainerGroupModel::insertRows(const int rows) { - // TODO: insert row + for (int i = 0; i < rows; ++i) + m_objects.append(new TrainerModel(this, static_cast<Pokemod*>(m_object)->newTrainer())); + return true; } bool TrainerGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteTrainer(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool TrainerGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); @@ -620,17 +675,11 @@ TypeGroupModel::TypeGroupModel(BaseModel* parent, Object* object) : TypeGroupModel::~TypeGroupModel() { - // TODO: destruct } int TypeGroupModel::rowCount() const { - // TODO: row count -} - -BaseModel* TypeGroupModel::childItem(const int row) -{ - // TODO: child item + return static_cast<Pokemod*>(m_object)->typeCount(); } int TypeGroupModel::indexNumber() const @@ -640,18 +689,26 @@ int TypeGroupModel::indexNumber() const bool TypeGroupModel::insertRows(const int rows) { - // TODO: insert row + for (int i = 0; i < rows; ++i) + m_objects.append(new TypeModel(this, static_cast<Pokemod*>(m_object)->newType())); + return true; } bool TypeGroupModel::removeRows(const int position, const int rows) { - // TODO: remove row + for (int i = 0; i < rows; ++i) + { + static_cast<Pokemod*>(m_object)->deleteType(position); + delete m_objects[position]; + m_objects.removeAt(position); + } + return true; } // bool TypeGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); PokemodModel::PokemodModel(BaseModel* parent, Object* object) : - ObjectModel(parent, object) + GroupObjectModel(parent, object) { Pokemod* pokemod = static_cast<Pokemod*>(m_object); } @@ -751,24 +808,24 @@ int PokemodModel::indexNumber() const return m_object->pokemod()->abilityIndex(m_object->id()); } -bool PokemodModel::canInsertRows() const +bool PokemodModel::insertRows(const int rows) { return false; } -bool PokemodModel::insertRows(const int rows) +bool PokemodModel::removeRows(const int position, const int rows) { return false; } -bool PokemodModel::canRemoveRows() const +// bool PokemodModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); + +void PokemodModel::setupData() { - return false; + // TODO: setup } -bool PokemodModel::removeRows(const int position, const int rows) +void PokemodModel::clearData() { - return false; + // TODO: clean up data } - -// bool PokemodModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); diff --git a/pokemodr/models/PokemodModel.h b/pokemodr/models/PokemodModel.h index 20c63a23..eed1275d 100644 --- a/pokemodr/models/PokemodModel.h +++ b/pokemodr/models/PokemodModel.h @@ -30,7 +30,6 @@ class AbilityGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -48,7 +47,6 @@ class BadgeGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -66,7 +64,6 @@ class CoinListGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -84,7 +81,6 @@ class DialogGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -102,7 +98,6 @@ class EggGroupGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -120,7 +115,6 @@ class ItemGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -138,7 +132,6 @@ class ItemTypeGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -156,7 +149,6 @@ class MapGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -174,7 +166,6 @@ class MoveGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -192,7 +183,6 @@ class NatureGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -210,7 +200,6 @@ class SpeciesGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -228,7 +217,6 @@ class StoreGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -246,7 +234,6 @@ class TileGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -264,7 +251,6 @@ class TimeGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -282,7 +268,6 @@ class TrainerGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -300,7 +285,6 @@ class TypeGroupModel : public GroupModel int rowCount() const; - BaseModel* childItem(const int row); int indexNumber() const; bool insertRows(const int rows); @@ -310,7 +294,7 @@ class TypeGroupModel : public GroupModel // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; -class PokemodModel : public ObjectModel +class PokemodModel : public GroupObjectModel { public: PokemodModel(BaseModel* parent, Object* object); @@ -324,14 +308,15 @@ class PokemodModel : public ObjectModel BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; bool insertRows(const int rows); - bool canRemoveRows() const; bool removeRows(const int position, const int rows); // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); private: + void setupData(); + void clearData(); + RulesModel* m_rules; AbilityGroupModel* m_abilities; BadgeGroupModel* m_badges; diff --git a/pokemodr/models/RulesModel.cpp b/pokemodr/models/RulesModel.cpp index 899aaf9d..4d613a1a 100644 --- a/pokemodr/models/RulesModel.cpp +++ b/pokemodr/models/RulesModel.cpp @@ -35,7 +35,6 @@ RulesModel::RulesModel(BaseModel* parent, Object* object) : RulesModel::~RulesModel() { - // TODO: destruct } QVariant RulesModel::data(int role) const @@ -50,11 +49,6 @@ QVariant RulesModel::data(int role) const return QVariant(); } -int RulesModel::rowCount() const -{ - return 0; -} - bool RulesModel::setData(const QVariant& value, int role) { if (role == Qt::UserRole) @@ -73,50 +67,31 @@ bool RulesModel::setData(const QVariant& value, int role) if (xml.setContent(&file)) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } file.close(); } else if (xml.setContent(value.toString())) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } } } return false; } -BaseModel* RulesModel::childItem(const int /*row*/) -{ - return NULL; -} - int RulesModel::indexNumber() const { return 0; } -bool RulesModel::canInsertRows() const -{ - return false; -} - -bool RulesModel::insertRows(const int /*rows*/) -{ - return false; -} - -bool RulesModel::canRemoveRows() const -{ - return false; -} - -bool RulesModel::removeRows(const int /*position*/, const int /*rows*/) -{ - return false; -} - // bool RulesModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) // { // // TODO: drag/drop diff --git a/pokemodr/models/RulesModel.h b/pokemodr/models/RulesModel.h index 8a94c5c0..6177434e 100644 --- a/pokemodr/models/RulesModel.h +++ b/pokemodr/models/RulesModel.h @@ -28,19 +28,11 @@ class RulesModel : public ObjectModel ~RulesModel(); QVariant data(int role = Qt::DisplayRole) const; - int rowCount() const; bool setData(const QVariant& value, int role = Qt::EditRole); - BaseModel* childItem(const int /*row*/); int indexNumber() const; - bool canInsertRows() const; - bool insertRows(const int /*rows*/); - - bool canRemoveRows() const; - bool removeRows(const int /*position*/, const int /*rows*/); - // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; diff --git a/pokemodr/models/StoreModel.cpp b/pokemodr/models/StoreModel.cpp index 565b6f6b..f1064541 100644 --- a/pokemodr/models/StoreModel.cpp +++ b/pokemodr/models/StoreModel.cpp @@ -36,7 +36,6 @@ StoreModel::StoreModel(BaseModel* parent, Object* object) : StoreModel::~StoreModel() { - // TODO: destruct } QVariant StoreModel::data(int role) const @@ -51,11 +50,6 @@ QVariant StoreModel::data(int role) const return QVariant(); } -int StoreModel::rowCount() const -{ - return 0; -} - bool StoreModel::setData(const QVariant& value, int role) { if (role == Qt::UserRole) @@ -74,50 +68,31 @@ bool StoreModel::setData(const QVariant& value, int role) if (xml.setContent(&file)) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } file.close(); } else if (xml.setContent(value.toString())) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } } } return false; } -BaseModel* StoreModel::childItem(const int row) -{ - return NULL; -} - int StoreModel::indexNumber() const { return m_object->pokemod()->storeIndex(m_object->id()); } -bool StoreModel::canInsertRows() const -{ - return false; -} - -bool StoreModel::insertRows(const int rows) -{ - return false; -} - -bool StoreModel::canRemoveRows() const -{ - return false; -} - -bool StoreModel::removeRows(const int position, const int rows) -{ - return false; -} - // bool StoreModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) // { // // TODO: drag/drop diff --git a/pokemodr/models/StoreModel.h b/pokemodr/models/StoreModel.h index 970a0227..af343146 100644 --- a/pokemodr/models/StoreModel.h +++ b/pokemodr/models/StoreModel.h @@ -28,19 +28,11 @@ class StoreModel : public ObjectModel ~StoreModel(); QVariant data(int role = Qt::DisplayRole) const; - int rowCount() const; bool setData(const QVariant& value, int role = Qt::EditRole); - BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; - bool insertRows(const int rows); - - bool canRemoveRows() const; - bool removeRows(const int position, const int rows); - // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; diff --git a/pokemodr/models/TileModel.cpp b/pokemodr/models/TileModel.cpp index 37396f4e..924519be 100644 --- a/pokemodr/models/TileModel.cpp +++ b/pokemodr/models/TileModel.cpp @@ -36,7 +36,6 @@ TileModel::TileModel(BaseModel* parent, Object* object) : TileModel::~TileModel() { - // TODO: destruct } QVariant TileModel::data(int role) const @@ -51,11 +50,6 @@ QVariant TileModel::data(int role) const return QVariant(); } -int TileModel::rowCount() const -{ - return 0; -} - bool TileModel::setData(const QVariant& value, int role) { if (role == Qt::UserRole) @@ -74,50 +68,31 @@ bool TileModel::setData(const QVariant& value, int role) if (xml.setContent(&file)) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } file.close(); } else if (xml.setContent(value.toString())) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } } } return false; } -BaseModel* TileModel::childItem(const int row) -{ - return NULL; -} - int TileModel::indexNumber() const { return m_object->pokemod()->tileIndex(m_object->id()); } -bool TileModel::canInsertRows() const -{ - return false; -} - -bool TileModel::insertRows(const int rows) -{ - return false; -} - -bool TileModel::canRemoveRows() const -{ - return false; -} - -bool TileModel::removeRows(const int position, const int rows) -{ - return false; -} - // bool TileModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) // { // // TODO: drag/drop diff --git a/pokemodr/models/TileModel.h b/pokemodr/models/TileModel.h index a2fd5588..6ea2f404 100644 --- a/pokemodr/models/TileModel.h +++ b/pokemodr/models/TileModel.h @@ -28,19 +28,11 @@ class TileModel : public ObjectModel ~TileModel(); QVariant data(int role = Qt::DisplayRole) const; - int rowCount() const; bool setData(const QVariant& value, int role = Qt::EditRole); - BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; - bool insertRows(const int rows); - - bool canRemoveRows() const; - bool removeRows(const int position, const int rows); - // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; diff --git a/pokemodr/models/TimeModel.cpp b/pokemodr/models/TimeModel.cpp index f2e7941c..a1c591e4 100644 --- a/pokemodr/models/TimeModel.cpp +++ b/pokemodr/models/TimeModel.cpp @@ -36,7 +36,6 @@ TimeModel::TimeModel(BaseModel* parent, Object* object) : TimeModel::~TimeModel() { - // TODO: destruct } QVariant TimeModel::data(int role) const @@ -51,11 +50,6 @@ QVariant TimeModel::data(int role) const return QVariant(); } -int TimeModel::rowCount() const -{ - return 0; -} - bool TimeModel::setData(const QVariant& value, int role) { if (role == Qt::UserRole) @@ -74,50 +68,31 @@ bool TimeModel::setData(const QVariant& value, int role) if (xml.setContent(&file)) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } file.close(); } else if (xml.setContent(value.toString())) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } } } return false; } -BaseModel* TimeModel::childItem(const int row) -{ - return NULL; -} - int TimeModel::indexNumber() const { return m_object->pokemod()->timeIndex(m_object->id()); } -bool TimeModel::canInsertRows() const -{ - return false; -} - -bool TimeModel::insertRows(const int rows) -{ - return false; -} - -bool TimeModel::canRemoveRows() const -{ - return false; -} - -bool TimeModel::removeRows(const int position, const int rows) -{ - return false; -} - // bool TimeModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) // { // // TODO: drag/drop diff --git a/pokemodr/models/TimeModel.h b/pokemodr/models/TimeModel.h index b0bafe0e..20ef1901 100644 --- a/pokemodr/models/TimeModel.h +++ b/pokemodr/models/TimeModel.h @@ -28,19 +28,11 @@ class TimeModel : public ObjectModel ~TimeModel(); QVariant data(int role = Qt::DisplayRole) const; - int rowCount() const; bool setData(const QVariant& value, int role = Qt::EditRole); - BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; - bool insertRows(const int rows); - - bool canRemoveRows() const; - bool removeRows(const int position, const int rows); - // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; diff --git a/pokemodr/models/TrainerModel.cpp b/pokemodr/models/TrainerModel.cpp index 15f1b979..ab3c7325 100644 --- a/pokemodr/models/TrainerModel.cpp +++ b/pokemodr/models/TrainerModel.cpp @@ -36,7 +36,6 @@ TrainerModel::TrainerModel(BaseModel* parent, Object* object) : TrainerModel::~TrainerModel() { - // TODO: destruct } QVariant TrainerModel::data(int role) const @@ -51,11 +50,6 @@ QVariant TrainerModel::data(int role) const return QVariant(); } -int TrainerModel::rowCount() const -{ - return 0; -} - bool TrainerModel::setData(const QVariant& value, int role) { if (role == Qt::UserRole) @@ -74,50 +68,31 @@ bool TrainerModel::setData(const QVariant& value, int role) if (xml.setContent(&file)) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } file.close(); } else if (xml.setContent(value.toString())) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } } } return false; } -BaseModel* TrainerModel::childItem(const int row) -{ - return NULL; -} - int TrainerModel::indexNumber() const { return m_object->pokemod()->trainerIndex(m_object->id()); } -bool TrainerModel::canInsertRows() const -{ - return false; -} - -bool TrainerModel::insertRows(const int rows) -{ - return false; -} - -bool TrainerModel::canRemoveRows() const -{ - return false; -} - -bool TrainerModel::removeRows(const int position, const int rows) -{ - return false; -} - // bool TrainerModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) // { // // TODO: drag/drop diff --git a/pokemodr/models/TrainerModel.h b/pokemodr/models/TrainerModel.h index 2db32953..c90ad911 100644 --- a/pokemodr/models/TrainerModel.h +++ b/pokemodr/models/TrainerModel.h @@ -28,19 +28,11 @@ class TrainerModel : public ObjectModel ~TrainerModel(); QVariant data(int role = Qt::DisplayRole) const; - int rowCount() const; bool setData(const QVariant& value, int role = Qt::EditRole); - BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; - bool insertRows(const int rows); - - bool canRemoveRows() const; - bool removeRows(const int position, const int rows); - // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; diff --git a/pokemodr/models/TypeModel.cpp b/pokemodr/models/TypeModel.cpp index 883d7319..0e0d61fc 100644 --- a/pokemodr/models/TypeModel.cpp +++ b/pokemodr/models/TypeModel.cpp @@ -36,7 +36,6 @@ TypeModel::TypeModel(BaseModel* parent, Object* object) : TypeModel::~TypeModel() { - // TODO: destruct } QVariant TypeModel::data(int role) const @@ -51,11 +50,6 @@ QVariant TypeModel::data(int role) const return QVariant(); } -int TypeModel::rowCount() const -{ - return 0; -} - bool TypeModel::setData(const QVariant& value, int role) { if (role == Qt::UserRole) @@ -74,50 +68,31 @@ bool TypeModel::setData(const QVariant& value, int role) if (xml.setContent(&file)) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } file.close(); } else if (xml.setContent(value.toString())) { if (xml.doctype().name() == m_object->className()) + { m_object->load(xml.documentElement()); + return true; + } } } } return false; } -BaseModel* TypeModel::childItem(const int row) -{ - return NULL; -} - int TypeModel::indexNumber() const { return m_object->pokemod()->typeIndex(m_object->id()); } -bool TypeModel::canInsertRows() const -{ - return false; -} - -bool TypeModel::insertRows(const int rows) -{ - return false; -} - -bool TypeModel::canRemoveRows() const -{ - return false; -} - -bool TypeModel::removeRows(const int position, const int rows) -{ - return false; -} - // bool TypeModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column) // { // // TODO: drag/drop diff --git a/pokemodr/models/TypeModel.h b/pokemodr/models/TypeModel.h index 19632237..bc4e1952 100644 --- a/pokemodr/models/TypeModel.h +++ b/pokemodr/models/TypeModel.h @@ -28,19 +28,11 @@ class TypeModel : public ObjectModel ~TypeModel(); QVariant data(int role = Qt::DisplayRole) const; - int rowCount() const; bool setData(const QVariant& value, int role = Qt::EditRole); - BaseModel* childItem(const int row); int indexNumber() const; - bool canInsertRows() const; - bool insertRows(const int rows); - - bool canRemoveRows() const; - bool removeRows(const int position, const int rows); - // bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column); }; |