diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2008-04-25 19:06:47 +0000 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2008-04-25 19:06:47 +0000 |
| commit | 74c06767a1a698705e8c486d77ccf11838c87a4d (patch) | |
| tree | 34519f082aac35aef9321756e0a3dce0a87c5419 /pokemodr/models/PokemodModel.cpp | |
| parent | dd643ee61d9166761c50803cd379c9343099385c (diff) | |
| download | sigen-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.cpp | 236 |
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; } |
