summaryrefslogtreecommitdiffstats
path: root/pokemodr/models/PokemodModel.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2008-04-25 19:06:47 +0000
committerBen Boeckel <MathStuf@gmail.com>2008-04-25 19:06:47 +0000
commit74c06767a1a698705e8c486d77ccf11838c87a4d (patch)
tree34519f082aac35aef9321756e0a3dce0a87c5419 /pokemodr/models/PokemodModel.cpp
parentdd643ee61d9166761c50803cd379c9343099385c (diff)
downloadsigen-74c06767a1a698705e8c486d77ccf11838c87a4d.tar.gz
sigen-74c06767a1a698705e8c486d77ccf11838c87a4d.tar.xz
sigen-74c06767a1a698705e8c486d77ccf11838c87a4d.zip
[FIX] Cleaner setting of model data
[FIX] Fleshed out the GroupModel classes for Pokemod [FIX] Tree for pokemod is now draggable git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@108 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'pokemodr/models/PokemodModel.cpp')
-rw-r--r--pokemodr/models/PokemodModel.cpp236
1 files changed, 183 insertions, 53 deletions
diff --git a/pokemodr/models/PokemodModel.cpp b/pokemodr/models/PokemodModel.cpp
index 67523ce0..4ea6e7a1 100644
--- a/pokemodr/models/PokemodModel.cpp
+++ b/pokemodr/models/PokemodModel.cpp
@@ -98,7 +98,7 @@ bool AbilityGroupModel::removeRows(const int position, const int rows)
// bool AbilityGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
// {
-//
+// // TODO: drag/drop
// }
BadgeGroupModel::BadgeGroupModel(BaseModel* parent, Object* object) :
@@ -120,7 +120,7 @@ int BadgeGroupModel::rowCount() const
int BadgeGroupModel::indexNumber() const
{
- return 1;
+ return 2;
}
bool BadgeGroupModel::insertRows(const int rows)
@@ -141,12 +141,17 @@ bool BadgeGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool BadgeGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool BadgeGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
CoinListGroupModel::CoinListGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Coin Lists")
{
- // TODO: construct
+ Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+ for (int i = 0; i < pokemod->coinListCount(); ++i)
+ m_objects.append(new CoinListModel(this, pokemod->coinList(i)));
}
CoinListGroupModel::~CoinListGroupModel()
@@ -160,7 +165,7 @@ int CoinListGroupModel::rowCount() const
int CoinListGroupModel::indexNumber() const
{
- return 1;
+ return 3;
}
bool CoinListGroupModel::insertRows(const int rows)
@@ -181,12 +186,17 @@ bool CoinListGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool CoinListGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool CoinListGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
DialogGroupModel::DialogGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Dialogs")
{
- // TODO: construct
+ Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+ for (int i = 0; i < pokemod->dialogCount(); ++i)
+ m_objects.append(new DialogModel(this, pokemod->dialog(i)));
}
DialogGroupModel::~DialogGroupModel()
@@ -200,7 +210,7 @@ int DialogGroupModel::rowCount() const
int DialogGroupModel::indexNumber() const
{
- return 1;
+ return 4;
}
bool DialogGroupModel::insertRows(const int rows)
@@ -221,12 +231,17 @@ bool DialogGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool DialogGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool DialogGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
EggGroupGroupModel::EggGroupGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Egg Groups")
{
- // TODO: construct
+ Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+ for (int i = 0; i < pokemod->eggGroupCount(); ++i)
+ m_objects.append(new EggGroupModel(this, pokemod->eggGroup(i)));
}
EggGroupGroupModel::~EggGroupGroupModel()
@@ -240,7 +255,7 @@ int EggGroupGroupModel::rowCount() const
int EggGroupGroupModel::indexNumber() const
{
- return 1;
+ return 5;
}
bool EggGroupGroupModel::insertRows(const int rows)
@@ -261,12 +276,18 @@ bool EggGroupGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool EggGroupGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool EggGroupGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
ItemGroupModel::ItemGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Items")
{
- // TODO: construct
+ // TODO: ItemModel
+// Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+// for (int i = 0; i < pokemod->itemCount(); ++i)
+// m_objects.append(new ItemModel(this, pokemod->item(i)));
}
ItemGroupModel::~ItemGroupModel()
@@ -280,7 +301,7 @@ int ItemGroupModel::rowCount() const
int ItemGroupModel::indexNumber() const
{
- return 1;
+ return 6;
}
bool ItemGroupModel::insertRows(const int rows)
@@ -302,12 +323,17 @@ bool ItemGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool ItemGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool ItemGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
ItemTypeGroupModel::ItemTypeGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Item Types")
{
- // TODO: construct
+ Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+ for (int i = 0; i < pokemod->itemTypeCount(); ++i)
+ m_objects.append(new ItemTypeModel(this, pokemod->itemType(i)));
}
ItemTypeGroupModel::~ItemTypeGroupModel()
@@ -321,7 +347,7 @@ int ItemTypeGroupModel::rowCount() const
int ItemTypeGroupModel::indexNumber() const
{
- return 1;
+ return 7;
}
bool ItemTypeGroupModel::insertRows(const int rows)
@@ -342,12 +368,18 @@ bool ItemTypeGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool ItemTypeGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool ItemTypeGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
MapGroupModel::MapGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Maps")
{
- // TODO: construct
+ // TODO: MapModel
+// Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+// for (int i = 0; i < pokemod->mapCount(); ++i)
+// m_objects.append(new MapModel(this, pokemod->map(i)));
}
MapGroupModel::~MapGroupModel()
@@ -361,7 +393,7 @@ int MapGroupModel::rowCount() const
int MapGroupModel::indexNumber() const
{
- return 1;
+ return 8;
}
bool MapGroupModel::insertRows(const int rows)
@@ -383,12 +415,18 @@ bool MapGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool MapGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool MapGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
MoveGroupModel::MoveGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Moves")
{
- // TODO: construct
+ // TODO: MoveModel
+// Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+// for (int i = 0; i < pokemod->moveCount(); ++i)
+// m_objects.append(new MoveModel(this, pokemod->move(i)));
}
MoveGroupModel::~MoveGroupModel()
@@ -402,7 +440,7 @@ int MoveGroupModel::rowCount() const
int MoveGroupModel::indexNumber() const
{
- return 1;
+ return 9;
}
bool MoveGroupModel::insertRows(const int rows)
@@ -424,12 +462,17 @@ bool MoveGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool MoveGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool MoveGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
NatureGroupModel::NatureGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Natures")
{
- // TODO: construct
+ Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+ for (int i = 0; i < pokemod->natureCount(); ++i)
+ m_objects.append(new NatureModel(this, pokemod->nature(i)));
}
NatureGroupModel::~NatureGroupModel()
@@ -443,7 +486,7 @@ int NatureGroupModel::rowCount() const
int NatureGroupModel::indexNumber() const
{
- return 1;
+ return 10;
}
bool NatureGroupModel::insertRows(const int rows)
@@ -464,12 +507,18 @@ bool NatureGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool NatureGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool NatureGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
SpeciesGroupModel::SpeciesGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Species")
{
- // TODO: construct
+ // TODO: SpeciesModel
+// Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+// for (int i = 0; i < pokemod->speciesCount(); ++i)
+// m_objects.append(new SpeciesModel(this, pokemod->species(i)));
}
SpeciesGroupModel::~SpeciesGroupModel()
@@ -483,7 +532,7 @@ int SpeciesGroupModel::rowCount() const
int SpeciesGroupModel::indexNumber() const
{
- return 1;
+ return 11;
}
bool SpeciesGroupModel::insertRows(const int rows)
@@ -505,12 +554,17 @@ bool SpeciesGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool SpeciesGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool SpeciesGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
StoreGroupModel::StoreGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Stores")
{
- // TODO: construct
+ Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+ for (int i = 0; i < pokemod->storeCount(); ++i)
+ m_objects.append(new StoreModel(this, pokemod->store(i)));
}
StoreGroupModel::~StoreGroupModel()
@@ -524,7 +578,7 @@ int StoreGroupModel::rowCount() const
int StoreGroupModel::indexNumber() const
{
- return 1;
+ return 12;
}
bool StoreGroupModel::insertRows(const int rows)
@@ -545,12 +599,17 @@ bool StoreGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool StoreGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool StoreGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
TileGroupModel::TileGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Tiles")
{
- // TODO: construct
+ Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+ for (int i = 0; i < pokemod->tileCount(); ++i)
+ m_objects.append(new TileModel(this, pokemod->tile(i)));
}
TileGroupModel::~TileGroupModel()
@@ -564,7 +623,7 @@ int TileGroupModel::rowCount() const
int TileGroupModel::indexNumber() const
{
- return 1;
+ return 13;
}
bool TileGroupModel::insertRows(const int rows)
@@ -585,12 +644,17 @@ bool TileGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool TileGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool TileGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
TimeGroupModel::TimeGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Times")
{
- // TODO: construct
+ Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+ for (int i = 0; i < pokemod->timeCount(); ++i)
+ m_objects.append(new TimeModel(this, pokemod->time(i)));
}
TimeGroupModel::~TimeGroupModel()
@@ -604,7 +668,7 @@ int TimeGroupModel::rowCount() const
int TimeGroupModel::indexNumber() const
{
- return 1;
+ return 14;
}
bool TimeGroupModel::insertRows(const int rows)
@@ -625,12 +689,17 @@ bool TimeGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool TimeGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool TimeGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
TrainerGroupModel::TrainerGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Trainers")
{
- // TODO: construct
+ Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+ for (int i = 0; i < pokemod->trainerCount(); ++i)
+ m_objects.append(new TrainerModel(this, pokemod->trainer(i)));
}
TrainerGroupModel::~TrainerGroupModel()
@@ -644,7 +713,7 @@ int TrainerGroupModel::rowCount() const
int TrainerGroupModel::indexNumber() const
{
- return 1;
+ return 15;
}
bool TrainerGroupModel::insertRows(const int rows)
@@ -665,12 +734,17 @@ bool TrainerGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool TrainerGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool TrainerGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
TypeGroupModel::TypeGroupModel(BaseModel* parent, Object* object) :
GroupModel(parent, object, "Types")
{
- // TODO: construct
+ Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+ for (int i = 0; i < pokemod->typeCount(); ++i)
+ m_objects.append(new TypeModel(this, pokemod->type(i)));
}
TypeGroupModel::~TypeGroupModel()
@@ -684,7 +758,7 @@ int TypeGroupModel::rowCount() const
int TypeGroupModel::indexNumber() const
{
- return 1;
+ return 16;
}
bool TypeGroupModel::insertRows(const int rows)
@@ -705,17 +779,20 @@ bool TypeGroupModel::removeRows(const int position, const int rows)
return true;
}
-// bool TypeGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool TypeGroupModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
PokemodModel::PokemodModel(BaseModel* parent, Object* object) :
GroupObjectModel(parent, object)
{
- Pokemod* pokemod = static_cast<Pokemod*>(m_object);
+ setupData();
}
PokemodModel::~PokemodModel()
{
- // TODO: destruct
+ clearData();
}
QVariant PokemodModel::data(int role) const
@@ -737,7 +814,26 @@ int PokemodModel::rowCount() const
bool PokemodModel::setData(const QVariant& value, int role)
{
- // TODO: set data
+ if (role == Qt::UserRole)
+ {
+ 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;
+ }
+ file.close();
+ }
+ }
+ }
+ return false;
}
BaseModel* PokemodModel::childItem(const int row)
@@ -804,8 +900,7 @@ BaseModel* PokemodModel::childItem(const int row)
int PokemodModel::indexNumber() const
{
- // TODO: get effect index
- return m_object->pokemod()->abilityIndex(m_object->id());
+ // TODO: get pokemod index
}
bool PokemodModel::insertRows(const int rows)
@@ -818,14 +913,49 @@ bool PokemodModel::removeRows(const int position, const int rows)
return false;
}
-// bool PokemodModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column);
+// bool PokemodModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column)
+// {
+// // TODO: drag/drop
+// }
void PokemodModel::setupData()
{
- // TODO: setup
+ m_rules = new RulesModel(this, static_cast<Pokemod*>(m_object)->rules());
+ m_abilities = new AbilityGroupModel(this, m_object);
+ m_badges = new BadgeGroupModel(this, m_object);
+ m_coinLists = new CoinListGroupModel(this, m_object);
+ m_dialogs = new DialogGroupModel(this, m_object);
+ m_eggGroups = new EggGroupGroupModel(this, m_object);
+ m_items = new ItemGroupModel(this, m_object);
+ m_itemTypes = new ItemTypeGroupModel(this, m_object);
+ m_maps = new MapGroupModel(this, m_object);
+ m_moves = new MoveGroupModel(this, m_object);
+ m_natures = new NatureGroupModel(this, m_object);
+ m_species = new SpeciesGroupModel(this, m_object);
+ m_stores = new StoreGroupModel(this, m_object);
+ m_tiles = new TileGroupModel(this, m_object);
+ m_times = new TimeGroupModel(this, m_object);
+ m_trainers = new TrainerGroupModel(this, m_object);
+ m_types = new TypeGroupModel(this, m_object);
}
void PokemodModel::clearData()
{
- // TODO: clean up data
+ delete m_rules;
+ delete m_abilities;
+ delete m_badges;
+ delete m_coinLists;
+ delete m_dialogs;
+ delete m_eggGroups;
+ delete m_items;
+ delete m_itemTypes;
+ delete m_maps;
+ delete m_moves;
+ delete m_natures;
+ delete m_species;
+ delete m_stores;
+ delete m_tiles;
+ delete m_times;
+ delete m_trainers;
+ delete m_types;
}