diff options
123 files changed, 567 insertions, 315 deletions
@@ -1,4 +1,14 @@ ----------------- +Rev: 258 +Date: 9 September 2008 +User: MathStuf +----------------- +[FIX] Players now have money +[FIX] Some more things added to Arena stuff +[FIX] Can now delete objects in the tree in Sigmodr +[FIX] Setting Sigmods as dirty is better now + +----------------- Rev: 257 Date: 8 September 2008 User: MathStuf diff --git a/sigbattle/ATBArena.cpp b/sigbattle/ATBArena.cpp index 12ca823a..1c90816d 100644 --- a/sigbattle/ATBArena.cpp +++ b/sigbattle/ATBArena.cpp @@ -51,16 +51,23 @@ void Sigbattle::ATBArena::processActions() } } if (numActiveTeams() <= 1) - { - // TODO: end battle - } + cleanUp(); +} + +void Sigbattle::ATBArena::cleanUp() +{ + delete m_atbTimer; + m_atbTimer = NULL; + delete m_processTicker; + m_processTicker = NULL; + Arena::cleanUp(); } void Sigbattle::ATBArena::setupBattle() { m_atbTimer = new ATBTimer(this, m_decisions); - QTimer* moveTimer = new QTimer(this); - connect(moveTimer, SIGNAL(timeout()), this, SLOT(processActions())); - moveTimer->start(100); + m_processTicker = new QTimer(this); + connect(m_processTicker, SIGNAL(timeout()), this, SLOT(processActions())); + m_processTicker->start(100); Arena::setupBattle(); } diff --git a/sigbattle/ATBArena.h b/sigbattle/ATBArena.h index 1140e8d0..12e4ac3c 100644 --- a/sigbattle/ATBArena.h +++ b/sigbattle/ATBArena.h @@ -22,9 +22,11 @@ #include "ActionQueue.h" #include "Arena.h" +// Forward declaraions +class QTimer; + namespace Sigbattle { -// Forward declaraions class ATBTimer; class SIGBATTLE_EXPORT ATBArena : public Arena @@ -39,11 +41,13 @@ class SIGBATTLE_EXPORT ATBArena : public Arena public slots: protected slots: void processActions(); + void cleanUp(); protected: void setupBattle(); private: ActionQueue m_decisions; ATBTimer* m_atbTimer; + QTimer* m_processTicker; }; } diff --git a/sigbattle/Arena.cpp b/sigbattle/Arena.cpp index 6ede9fba..af4dcf0d 100644 --- a/sigbattle/Arena.cpp +++ b/sigbattle/Arena.cpp @@ -106,6 +106,9 @@ void Sigbattle::Arena::cleanUp() QList<Kross::Action*> actions = m_actions->actions(); foreach (Kross::Action* action, actions) m_actions->removeAction(action); + // TODO: Split up money + foreach (Player* player, m_players) + player->exitArena(); } void Sigbattle::Arena::handleAction(TeamMember* teamMember, TeamMember::Action action) diff --git a/sigbattle/Arena.h b/sigbattle/Arena.h index 0e3e3bcd..2f005332 100644 --- a/sigbattle/Arena.h +++ b/sigbattle/Arena.h @@ -66,7 +66,7 @@ class SIGBATTLE_EXPORT Arena : public Sigscript::Config public slots: void registerScript(const Sigmod::Script& script); protected slots: - void cleanUp(); + virtual void cleanUp(); protected: Arena(Sigscript::SigmodWrapper* sigmod, QList<Player*> players, const bool isWild, QObject* parent); diff --git a/sigbattle/Player.cpp b/sigbattle/Player.cpp index 8fff4b74..8103d52f 100644 --- a/sigbattle/Player.cpp +++ b/sigbattle/Player.cpp @@ -24,7 +24,8 @@ Sigbattle::Player::Player(Sigscript::SigmodWrapper* sigmod, QObject* parent) : Team(sigmod, parent), - m_arena(NULL) + m_arena(NULL), + m_money(0) { } @@ -53,6 +54,11 @@ void Sigbattle::Player::switchOut(TeamMember* oldActive, TeamMember* newActive) m_active.append(newActive); } +int Sigbattle::Player::money() const +{ + return m_money; +} + void Sigbattle::Player::exitArena() { foreach (TeamMember* member, m_active) @@ -60,3 +66,17 @@ void Sigbattle::Player::exitArena() m_active.clear(); m_arena = NULL; } + +void Sigbattle::Player::giveMoney(const int amount) +{ + m_money += amount; + if (sigmod()->rules()->maxMoney() < m_money) + m_money = sigmod()->rules()->maxMoney(); +} + +void Sigbattle::Player::takeMoney(const int amount) +{ + m_money -= amount; + if (m_money < 0) + m_money = 0; +} diff --git a/sigbattle/Player.h b/sigbattle/Player.h index 69d85bd7..40427e2b 100644 --- a/sigbattle/Player.h +++ b/sigbattle/Player.h @@ -48,15 +48,21 @@ class SIGBATTLE_EXPORT Player : public Team QList<TeamMember*> active(); void switchOut(TeamMember* oldActive, TeamMember* newActive); + + int money() const; signals: public slots: void exitArena(); + void giveMoney(const int amount); + void takeMoney(const int amount); + virtual TeamMember::Action requestAction(const TeamMember* teamMember) const = 0; protected slots: protected: QList<TeamMember*> m_active; Arena* m_arena; + int m_money; }; } Q_DECLARE_METATYPE(Sigbattle::Player*) diff --git a/sigbattle/TeamMember.cpp b/sigbattle/TeamMember.cpp index c8e3042a..adbd2fcc 100644 --- a/sigbattle/TeamMember.cpp +++ b/sigbattle/TeamMember.cpp @@ -389,8 +389,7 @@ void Sigbattle::TeamMember::cureStatus(Sigscript::StatusWrapper* status) if (m_status.contains(status)) { QList<Kross::Action*> actions = m_status.values(status); - foreach (Kross::Action* action, actions) - delete action; + qDeleteAll(actions); m_status.remove(status); emit(statusCured(status)); } diff --git a/sigmod/CoinList.cpp b/sigmod/CoinList.cpp index 47c360cf..a94406b6 100644 --- a/sigmod/CoinList.cpp +++ b/sigmod/CoinList.cpp @@ -228,6 +228,6 @@ Sigmod::CoinList& Sigmod::CoinList::operator=(const CoinList& rhs) void Sigmod::CoinList::clear() { - while (objectCount()) - deleteObject(0); + qDeleteAll(m_objects); + m_objects.clear(); } diff --git a/sigmod/Map.cpp b/sigmod/Map.cpp index 07509021..fe599cc6 100644 --- a/sigmod/Map.cpp +++ b/sigmod/Map.cpp @@ -562,12 +562,12 @@ Sigmod::Map& Sigmod::Map::operator=(const Map& rhs) void Sigmod::Map::clear() { - while (effectCount()) - deleteEffect(0); - while (trainerCount()) - deleteTrainer(0); - while (warpCount()) - deleteWarp(0); - while (wildListCount()) - deleteWildList(0); + qDeleteAll(m_effects); + m_effects.clear(); + qDeleteAll(m_trainers); + m_trainers.clear(); + qDeleteAll(m_warps); + m_warps.clear(); + qDeleteAll(m_wildLists); + m_wildLists.clear(); } diff --git a/sigmod/MapWildList.cpp b/sigmod/MapWildList.cpp index 502b87ee..1f8b9c17 100644 --- a/sigmod/MapWildList.cpp +++ b/sigmod/MapWildList.cpp @@ -185,6 +185,6 @@ Sigmod::MapWildList& Sigmod::MapWildList::operator=(const MapWildList& rhs) void Sigmod::MapWildList::clear() { - while (encounterCount()) - deleteEncounter(0); + qDeleteAll(m_encounters); + m_encounters.clear(); } diff --git a/sigmod/Sigmod.cpp b/sigmod/Sigmod.cpp index cebd5f8d..05149f9c 100644 --- a/sigmod/Sigmod.cpp +++ b/sigmod/Sigmod.cpp @@ -2197,48 +2197,48 @@ Sigmod::Sigmod& Sigmod::Sigmod::operator=(const Sigmod& rhs) void Sigmod::Sigmod::clear() { - while (abilityCount()) - deleteAbility(0); - while (authorCount()) - deleteAuthor(0); - while (badgeCount()) - deleteBadge(0); - while (coinListCount()) - deleteCoinList(0); - while (eggGroupCount()) - deleteEggGroup(0); - while (globalScriptCount()) - deleteGlobalScript(0); - while (itemCount()) - deleteItem(0); - while (itemTypeCount()) - deleteItemType(0); - while (mapCount()) - deleteMap(0); - while (moveCount()) - deleteMove(0); - while (natureCount()) - deleteNature(0); - while (skinCount()) - deleteSkin(0); - while (soundCount()) - deleteSound(0); - while (speciesCount()) - deleteSpecies(0); - while (spriteCount()) - deleteSprite(0); - while (statusCount()) - deleteStatus(0); - while (storeCount()) - deleteStore(0); - while (tileCount()) - deleteTile(0); - while (timeCount()) - deleteTime(0); - while (trainerCount()) - deleteTrainer(0); - while (typeCount()) - deleteType(0); - while (weatherCount()) - deleteWeather(0); + qDeleteAll(m_abilities); + m_abilities.clear(); + qDeleteAll(m_authors); + m_authors.clear(); + qDeleteAll(m_badges); + m_badges.clear(); + qDeleteAll(m_coinLists); + m_coinLists.clear(); + qDeleteAll(m_eggGroups); + m_eggGroups.clear(); + qDeleteAll(m_globalScripts); + m_globalScripts.clear(); + qDeleteAll(m_items); + m_items.clear(); + qDeleteAll(m_itemTypes); + m_itemTypes.clear(); + qDeleteAll(m_maps); + m_maps.clear(); + qDeleteAll(m_moves); + m_moves.clear(); + qDeleteAll(m_natures); + m_natures.clear(); + qDeleteAll(m_skins); + m_skins.clear(); + qDeleteAll(m_sounds); + m_sounds.clear(); + qDeleteAll(m_species); + m_species.clear(); + qDeleteAll(m_sprites); + m_sprites.clear(); + qDeleteAll(m_status); + m_status.clear(); + qDeleteAll(m_stores); + m_stores.clear(); + qDeleteAll(m_tiles); + m_tiles.clear(); + qDeleteAll(m_times); + m_times.clear(); + qDeleteAll(m_trainers); + m_trainers.clear(); + qDeleteAll(m_types); + m_types.clear(); + qDeleteAll(m_weathers); + m_weathers.clear(); } diff --git a/sigmod/Species.cpp b/sigmod/Species.cpp index 3fc72932..570004bc 100644 --- a/sigmod/Species.cpp +++ b/sigmod/Species.cpp @@ -852,10 +852,10 @@ Sigmod::Species& Sigmod::Species::operator=(const Species& rhs) void Sigmod::Species::clear() { - while (abilityCount()) - deleteAbility(0); - while (itemCount()) - deleteItem(0); - while (moveCount()) - deleteMove(0); + qDeleteAll(m_abilities); + m_abilities.clear(); + qDeleteAll(m_items); + m_items.clear(); + qDeleteAll(m_moves); + m_moves.clear(); } diff --git a/sigmodr/CMakeLists.txt b/sigmodr/CMakeLists.txt index b057a469..473d926d 100644 --- a/sigmodr/CMakeLists.txt +++ b/sigmodr/CMakeLists.txt @@ -190,6 +190,7 @@ SET(sigmodr_DEVEL ${sigmodr_MAIN_HEADERS} ${sigmodr_UI_HEADERS} ${sigmodr_FORMS} + models/Grouping.h ) SET(sigmodr_WIDGET_SRCS AbilityUI.cpp @@ -311,6 +312,7 @@ SET(sigmodr_SRCS ValidationDialog.cpp ${sigmodr_WIDGET_SRCS} ${sigmodr_MODEL_SRCS} + models/Grouping.cpp ) SET(sigmodr_RC_FILES sigmodrui.rc diff --git a/sigmodr/SigmodTree.cpp b/sigmodr/SigmodTree.cpp index b0d32ca8..aa323af1 100644 --- a/sigmodr/SigmodTree.cpp +++ b/sigmodr/SigmodTree.cpp @@ -35,25 +35,31 @@ Sigmodr::SigmodTree::SigmodTree(QWidget* parent) : QTreeView(parent) { + SigmodTreeModel* model = new SigmodTreeModel(this); + connect(model, SIGNAL(dirty(const Sigmod::Sigmod*, bool)), this, SLOT(setDirty(const Sigmod::Sigmod*, bool))); header()->hide(); - setModel(new Sigmodr::SigmodTreeModel(this)); - setRootIndex(model()->index(-1, 0, QModelIndex())); + setModel(model); + setRootIndex(model->index(-1, 0, QModelIndex())); } QString Sigmodr::SigmodTree::description(const QModelIndex& index) { - return QString("%1: %2").arg(model()->data(index, Sigmodr::BaseModel::TypeRole).toString(), model()->data(index, Qt::DisplayRole).toString()); + QString type = model()->data(index, BaseModel::TypeRole).toString(); + QString name = model()->data(index, Qt::DisplayRole).toString(); + if (type.isEmpty() && name.isEmpty()) + return ""; + return QString("%1: %2").arg(type).arg(name); } Sigmodr::ObjectUI* Sigmodr::SigmodTree::editorWidget(const QModelIndex& index) { - Sigmodr::ObjectUI* widget = qobject_cast<Sigmodr::ObjectUI*>(model()->data(index, Sigmodr::BaseModel::WidgetRole).value<QWidget*>()); + Sigmodr::ObjectUI* widget = qobject_cast<ObjectUI*>(model()->data(index, BaseModel::WidgetRole).value<QWidget*>()); return widget; } KMenu* Sigmodr::SigmodTree::contextMenu(const QModelIndex& index) { - return model()->data(index, Sigmodr::BaseModel::ContextMenuRole).value<KMenu*>(); + return model()->data(index, BaseModel::ContextMenuRole).value<KMenu*>(); } const Sigmod::Sigmod* Sigmodr::SigmodTree::currentSigmod() const @@ -71,13 +77,13 @@ const Sigmod::Sigmod* Sigmodr::SigmodTree::currentSigmod() const QDomDocument Sigmodr::SigmodTree::copy(const QModelIndex& index) { QDomDocument xml; - xml.setContent(model()->data(index, Sigmodr::BaseModel::XmlRole).toString()); + xml.setContent(model()->data(index, BaseModel::XmlRole).toString()); return xml; } void Sigmodr::SigmodTree::paste(const QModelIndex& index, const QDomDocument& data) { - model()->setData(index, data.toString(), Sigmodr::BaseModel::XmlRole); + model()->setData(index, data.toString(), BaseModel::XmlRole); } QList<const Sigmod::Sigmod*> Sigmodr::SigmodTree::openedSigmods() const @@ -144,10 +150,17 @@ bool Sigmodr::SigmodTree::dirty(const Sigmod::Sigmod* sigmod) const return false; } +bool Sigmodr::SigmodTree::dirty() const +{ + return dirty(currentSigmod()); +} + void Sigmodr::SigmodTree::setDirty(const Sigmod::Sigmod* sigmod, const bool dirty) { if (m_sigmods.contains(sigmod)) + { m_sigmods[sigmod].second = dirty; + } } void Sigmodr::SigmodTree::setDirty() diff --git a/sigmodr/SigmodTree.h b/sigmodr/SigmodTree.h index 1c2a066c..d66c4c6b 100644 --- a/sigmodr/SigmodTree.h +++ b/sigmodr/SigmodTree.h @@ -66,6 +66,8 @@ class SigmodTree : public QTreeView void setUrl(const Sigmod::Sigmod* sigmod, const KUrl& url); bool dirty(const Sigmod::Sigmod* sigmod) const; + bool dirty() const; + public slots: void setDirty(const Sigmod::Sigmod* sigmod, const bool dirty); private slots: void setDirty(); diff --git a/sigmodr/SigmodTreeModel.cpp b/sigmodr/SigmodTreeModel.cpp index a2d8f5a0..1e01db61 100644 --- a/sigmodr/SigmodTreeModel.cpp +++ b/sigmodr/SigmodTreeModel.cpp @@ -21,6 +21,9 @@ // Model includes #include "models/RootModel.h" +// Sigmod includes +#include "../sigmod/Sigmod.h" + // Qt includes #include <QtCore/QMimeData> #include <QtCore/QStringList> @@ -30,6 +33,7 @@ Sigmodr::SigmodTreeModel::SigmodTreeModel(QObject* parent) : QAbstractItemModel(parent), m_root(new RootModel) { + connect(m_root, SIGNAL(rowsChanged(QList<int>)), this, SLOT(rowsChanged(QList<int>))); } Sigmodr::SigmodTreeModel::~SigmodTreeModel() @@ -99,8 +103,12 @@ bool Sigmodr::SigmodTreeModel::setData(const QModelIndex& index, const QVariant& BaseModel* object = static_cast<BaseModel*>(index.internalPointer()); emit(layoutAboutToBeChanged()); bool success = object->setData(value, role); - emit(dataChanged(index, index)); emit(layoutChanged()); + if (success) + { + emit(dataChanged(index, index)); + emit(dirty(findSigmod(index), true)); + } return success; } @@ -143,17 +151,45 @@ bool Sigmodr::SigmodTreeModel::dropMimeData(const QMimeData* data, Qt::DropActio emit(layoutAboutToBeChanged()); bool success = m_root->setData(data->data("application/x-sigmod+xml"), Sigmodr::BaseModel::XmlRole); emit(layoutChanged()); + if (success) + emit(dirty(findSigmod(parent), true)); return success; } void Sigmodr::SigmodTreeModel::addSigmod(Sigmod::Sigmod* sigmod) { m_root->addSigmod(sigmod); - emit(reset()); + reset(); } void Sigmodr::SigmodTreeModel::deleteSigmod(const Sigmod::Sigmod* sigmod) { m_root->deleteSigmod(sigmod); - emit(reset()); + reset(); +} + +const Sigmod::Sigmod* Sigmodr::SigmodTreeModel::findSigmod(const QModelIndex& index) const +{ + QModelIndex curIndex = index; + QModelIndex parIndex = parent(curIndex); + while (parIndex.isValid()) + { + curIndex = parIndex; + parIndex = parent(curIndex); + } + return qobject_cast<const Sigmod::Sigmod*>(getItem(curIndex)->object()); +} + +void Sigmodr::SigmodTreeModel::rowsChanged(const QList<int>& rows) +{ + QModelIndex curIndex; + foreach (int row, rows) + curIndex = index(row, 0, curIndex); + if (curIndex.isValid()) + { + emit(dataChanged(curIndex, curIndex)); + emit(dirty(findSigmod(curIndex), true)); + } + else + reset(); } diff --git a/sigmodr/SigmodTreeModel.h b/sigmodr/SigmodTreeModel.h index c6f6097f..bdf0ed64 100644 --- a/sigmodr/SigmodTreeModel.h +++ b/sigmodr/SigmodTreeModel.h @@ -56,6 +56,11 @@ class SigmodTreeModel : public QAbstractItemModel void addSigmod(Sigmod::Sigmod* sigmod); void deleteSigmod(const Sigmod::Sigmod* sigmod); + const Sigmod::Sigmod* findSigmod(const QModelIndex& index) const; + signals: + void dirty(const Sigmod::Sigmod* sigmod, const bool dirty); + protected slots: + void rowsChanged(const QList<int>& rows); private: BaseModel* getItem(const QModelIndex& index) const; diff --git a/sigmodr/SigmodrUI.cpp b/sigmodr/SigmodrUI.cpp index 59efb604..348d4018 100644 --- a/sigmodr/SigmodrUI.cpp +++ b/sigmodr/SigmodrUI.cpp @@ -109,6 +109,7 @@ void Sigmodr::SigmodrUI::setDirty(const bool dirty) { const Sigmod::Sigmod* sigmod = qobject_cast<const Sigmod::Sigmod*>(static_cast<Sigmod::Object*>(treeSigmod->currentIndex().internalPointer())->sigmod()); treeSigmod->setDirty(sigmod, dirty); + setChangedTitle(dirty); actionCollection()->action("file_save")->setEnabled(dirty); } @@ -284,6 +285,7 @@ void Sigmodr::SigmodrUI::uploadSigmod(const Sigmod::Sigmod* sigmod) void Sigmodr::SigmodrUI::closeSigmod() { closeSigmod(treeSigmod->currentSigmod()); + setChangedTitle(treeSigmod->dirty()); } bool Sigmodr::SigmodrUI::closeSigmod(const Sigmod::Sigmod* sigmod, const bool force) @@ -384,12 +386,11 @@ void Sigmodr::SigmodrUI::on_treeSigmod_clicked(const QModelIndex& index) } } boxButtons->setEnabled(false); - connect(widget, SIGNAL(changed(bool)), this, SLOT(setChangedTitle(bool))); connect(widget, SIGNAL(changed(bool)), boxButtons, SLOT(setEnabled(bool))); connect(buttonApply, SIGNAL(clicked()), widget, SLOT(apply())); - connect(buttonApply, SIGNAL(clicked()), treeSigmod, SLOT(setDirty())); + connect(buttonApply, SIGNAL(clicked()), this, SLOT(setDirty())); connect(buttonReset, SIGNAL(clicked()), widget, SLOT(discard())); - setChangedTitle(false); + setChangedTitle(treeSigmod->dirty(treeSigmod->currentSigmod())); formPanel->setWidget(widget); formPanel->show(); } @@ -411,7 +412,6 @@ void Sigmodr::SigmodrUI::on_treeSigmod_customContextMenuRequested(const QPoint& paste->setEnabled(m_clipboard.doctype().name() == type); } menu->addAction(paste); - connect(menu, SIGNAL(triggered(QAction*)), treeSigmod, SLOT(setDirty())); menu->popup(treeSigmod->mapToGlobal(position)); } } diff --git a/sigmodr/TODO b/sigmodr/TODO index 94a76b30..aca8cd2c 100644 --- a/sigmodr/TODO +++ b/sigmodr/TODO @@ -1,11 +1,8 @@ Models: ContextMenu - Fix up deleting Disable pasting if not compatable When adding to an expanded item, its view is not updated Get KXmlGui states to work (automatically handles enabled/disable of actions) Use QClipboard - -KatePart widgets dirty up the menus and toolbars diff --git a/sigmodr/models/AbilityGroupModel.cpp b/sigmodr/models/AbilityGroupModel.cpp index eb155428..7b22addd 100644 --- a/sigmodr/models/AbilityGroupModel.cpp +++ b/sigmodr/models/AbilityGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::AbilityGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newAbility(); if (object->className() == "Ability") - m_objects.append(new AbilityModel(this, qobject_cast<Sigmod::Ability*>(object))); + addChild(new AbilityModel(this, qobject_cast<Sigmod::Ability*>(object))); } -void Sigmodr::AbilityGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::AbilityGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteAbility(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/AbilityGroupModel.h b/sigmodr/models/AbilityGroupModel.h index 3afd2601..3a7d02dd 100644 --- a/sigmodr/models/AbilityGroupModel.h +++ b/sigmodr/models/AbilityGroupModel.h @@ -41,7 +41,7 @@ class AbilityGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/AbilityModel.cpp b/sigmodr/models/AbilityModel.cpp index 143ee904..08c1d281 100644 --- a/sigmodr/models/AbilityModel.cpp +++ b/sigmodr/models/AbilityModel.cpp @@ -60,7 +60,7 @@ QVariant Sigmodr::AbilityModel::data(int role) const else if (role == Sigmodr::BaseModel::ContextMenuRole) { KMenu* menu = new KMenu; - menu->addAction("*&Delete Ability", this, SLOT(deleteSelf())); + menu->addAction("&Delete Ability", this, SLOT(deleteSelf())); return QVariant::fromValue(menu); } return Sigmodr::ObjectModel::data(role); @@ -90,5 +90,5 @@ bool Sigmodr::AbilityModel::setData(const QVariant& value, int role) void Sigmodr::AbilityModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/AuthorGroupModel.cpp b/sigmodr/models/AuthorGroupModel.cpp index 8683c83b..b73475bb 100644 --- a/sigmodr/models/AuthorGroupModel.cpp +++ b/sigmodr/models/AuthorGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::AuthorGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newAuthor(); if (object->className() == "Author") - m_objects.append(new AuthorModel(this, qobject_cast<Sigmod::Author*>(object))); + addChild(new AuthorModel(this, qobject_cast<Sigmod::Author*>(object))); } -void Sigmodr::AuthorGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::AuthorGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteAuthor(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/AuthorGroupModel.h b/sigmodr/models/AuthorGroupModel.h index 42497728..560db21d 100644 --- a/sigmodr/models/AuthorGroupModel.h +++ b/sigmodr/models/AuthorGroupModel.h @@ -41,7 +41,7 @@ class AuthorGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/AuthorModel.cpp b/sigmodr/models/AuthorModel.cpp index fbcef0e1..dde61dad 100644 --- a/sigmodr/models/AuthorModel.cpp +++ b/sigmodr/models/AuthorModel.cpp @@ -90,5 +90,5 @@ bool Sigmodr::AuthorModel::setData(const QVariant& value, int role) void Sigmodr::AuthorModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/BadgeGroupModel.cpp b/sigmodr/models/BadgeGroupModel.cpp index ac947e6a..da41d897 100644 --- a/sigmodr/models/BadgeGroupModel.cpp +++ b/sigmodr/models/BadgeGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::BadgeGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newBadge(); if (object->className() == "Badge") - m_objects.append(new BadgeModel(this, qobject_cast<Sigmod::Badge*>(object))); + addChild(new BadgeModel(this, qobject_cast<Sigmod::Badge*>(object))); } -void Sigmodr::BadgeGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::BadgeGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteBadge(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/BadgeGroupModel.h b/sigmodr/models/BadgeGroupModel.h index 0a2929d4..e21e6fa3 100644 --- a/sigmodr/models/BadgeGroupModel.h +++ b/sigmodr/models/BadgeGroupModel.h @@ -41,7 +41,7 @@ class BadgeGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/BadgeModel.cpp b/sigmodr/models/BadgeModel.cpp index e1dd6643..775643b2 100644 --- a/sigmodr/models/BadgeModel.cpp +++ b/sigmodr/models/BadgeModel.cpp @@ -90,5 +90,5 @@ bool Sigmodr::BadgeModel::setData(const QVariant& value, int role) void Sigmodr::BadgeModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/BaseModel.cpp b/sigmodr/models/BaseModel.cpp index 5ef98e74..f64baf35 100644 --- a/sigmodr/models/BaseModel.cpp +++ b/sigmodr/models/BaseModel.cpp @@ -47,7 +47,7 @@ Sigmodr::BaseModel* Sigmodr::BaseModel::parent() int Sigmodr::BaseModel::indexNumber() const { if (m_parent) - return m_parent->findChild(this); + return m_parent->findChild(const_cast<BaseModel*>(this)); return -1; } @@ -61,7 +61,17 @@ const Sigmod::Object* Sigmodr::BaseModel::object() const return m_object; } -int Sigmodr::BaseModel::findChild(const BaseModel* /*model*/) const +void Sigmodr::BaseModel::childRowChanged(const int row) { - return -1; + QList<int> indexes; + indexes << indexNumber() << row; + emit(rowsChanged(indexes)); } + +void Sigmodr::BaseModel::childRowsChanged(const QList<int>& rows) +{ + QList<int> indexes; + indexes << indexNumber() << rows; + emit(rowsChanged(indexes)); +} + diff --git a/sigmodr/models/BaseModel.h b/sigmodr/models/BaseModel.h index 8a3363bd..3095b97a 100644 --- a/sigmodr/models/BaseModel.h +++ b/sigmodr/models/BaseModel.h @@ -61,8 +61,14 @@ class BaseModel : public QObject static const int XmlRole = Qt::UserRole + 1; static const int WidgetRole = Qt::UserRole + 2; static const int ContextMenuRole = Qt::UserRole + 3; + signals: + void rowChanged(const int row); + void rowsChanged(const QList<int>& rows); + protected slots: + void childRowChanged(const int row); + void childRowsChanged(const QList<int>& rows); protected: - virtual int findChild(const BaseModel* /*model*/) const; + virtual int findChild(BaseModel* /*model*/) const = 0; BaseModel* m_parent; Sigmod::Object* m_object; diff --git a/sigmodr/models/BaseObjectModel.cpp b/sigmodr/models/BaseObjectModel.cpp index 3294e629..a67d5c1e 100644 --- a/sigmodr/models/BaseObjectModel.cpp +++ b/sigmodr/models/BaseObjectModel.cpp @@ -55,7 +55,7 @@ QString Sigmodr::BaseObjectModel::type() const return m_object->className(); } -int Sigmodr::BaseObjectModel::findChild(const BaseModel* /*model*/) const +int Sigmodr::BaseObjectModel::findChild(BaseModel* /*model*/) const { return -1; } diff --git a/sigmodr/models/BaseObjectModel.h b/sigmodr/models/BaseObjectModel.h index 204df771..80e90aca 100644 --- a/sigmodr/models/BaseObjectModel.h +++ b/sigmodr/models/BaseObjectModel.h @@ -44,7 +44,7 @@ class BaseObjectModel : public BaseModel QString type() const; protected: - virtual int findChild(const BaseModel* /*model*/) const; + virtual int findChild(BaseModel* /*model*/) const; }; } diff --git a/sigmodr/models/CoinListGroupModel.cpp b/sigmodr/models/CoinListGroupModel.cpp index 9fa5a714..ba8c25e8 100644 --- a/sigmodr/models/CoinListGroupModel.cpp +++ b/sigmodr/models/CoinListGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::CoinListGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newCoinList(); if (object->className() == "CoinList") - m_objects.append(new CoinListModel(this, qobject_cast<Sigmod::CoinList*>(object))); + addChild(new CoinListModel(this, qobject_cast<Sigmod::CoinList*>(object))); } -void Sigmodr::CoinListGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::CoinListGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteCoinList(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/CoinListGroupModel.h b/sigmodr/models/CoinListGroupModel.h index 963982dd..9d41e4f4 100644 --- a/sigmodr/models/CoinListGroupModel.h +++ b/sigmodr/models/CoinListGroupModel.h @@ -41,7 +41,7 @@ class CoinListGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/CoinListModel.cpp b/sigmodr/models/CoinListModel.cpp index 8729e652..96117d25 100644 --- a/sigmodr/models/CoinListModel.cpp +++ b/sigmodr/models/CoinListModel.cpp @@ -20,6 +20,7 @@ // Model includes #include "CoinListObjectModel.h" +#include "GroupModel.h" // Sigmodr includes #include "../CoinListUI.h" @@ -105,28 +106,29 @@ void Sigmodr::CoinListModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::CoinList*>(m_object)->newObject(); if (object->className() == "CoinListObject") - m_objects.append(new CoinListObjectModel(this, qobject_cast<Sigmod::CoinListObject*>(object))); + addChild(new CoinListObjectModel(this, qobject_cast<Sigmod::CoinListObject*>(object))); } void Sigmodr::CoinListModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::CoinList*>(m_object)->deleteObject(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } void Sigmodr::CoinListModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } void Sigmodr::CoinListModel::setupData() { Sigmod::CoinList* coinList = qobject_cast<Sigmod::CoinList*>(m_object); for (int i = 0; i < coinList->objectCount(); ++i) - m_objects.append(new CoinListObjectModel(this, coinList->object(i))); + addChild(new CoinListObjectModel(this, coinList->object(i))); } diff --git a/sigmodr/models/CoinListObjectModel.cpp b/sigmodr/models/CoinListObjectModel.cpp index 745be065..21d4a66c 100644 --- a/sigmodr/models/CoinListObjectModel.cpp +++ b/sigmodr/models/CoinListObjectModel.cpp @@ -109,5 +109,5 @@ bool Sigmodr::CoinListObjectModel::setData(const QVariant& value, int role) void Sigmodr::CoinListObjectModel::deleteSelf() { -// qobject_cast<GroupObjectModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupObjectModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/EggGroupGroupModel.cpp b/sigmodr/models/EggGroupGroupModel.cpp index 4226d71e..fa82bb79 100644 --- a/sigmodr/models/EggGroupGroupModel.cpp +++ b/sigmodr/models/EggGroupGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::EggGroupGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newEggGroup(); if (object->className() == "EggGroup") - m_objects.append(new EggGroupModel(this, qobject_cast<Sigmod::EggGroup*>(object))); + addChild(new EggGroupModel(this, qobject_cast<Sigmod::EggGroup*>(object))); } -void Sigmodr::EggGroupGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::EggGroupGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteEggGroup(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/EggGroupGroupModel.h b/sigmodr/models/EggGroupGroupModel.h index 373e3804..9cba95f7 100644 --- a/sigmodr/models/EggGroupGroupModel.h +++ b/sigmodr/models/EggGroupGroupModel.h @@ -41,7 +41,7 @@ class EggGroupGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/EggGroupModel.cpp b/sigmodr/models/EggGroupModel.cpp index 9bfa61ed..ec5c6adb 100644 --- a/sigmodr/models/EggGroupModel.cpp +++ b/sigmodr/models/EggGroupModel.cpp @@ -90,5 +90,5 @@ bool Sigmodr::EggGroupModel::setData(const QVariant& value, int role) void Sigmodr::EggGroupModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/GlobalScriptGroupModel.cpp b/sigmodr/models/GlobalScriptGroupModel.cpp index 811aa677..90a1b90b 100644 --- a/sigmodr/models/GlobalScriptGroupModel.cpp +++ b/sigmodr/models/GlobalScriptGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::GlobalScriptGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newGlobalScript(); if (object->className() == "GlobalScript") - m_objects.append(new GlobalScriptModel(this, qobject_cast<Sigmod::GlobalScript*>(object))); + addChild(new GlobalScriptModel(this, qobject_cast<Sigmod::GlobalScript*>(object))); } -void Sigmodr::GlobalScriptGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::GlobalScriptGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteGlobalScript(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/GlobalScriptGroupModel.h b/sigmodr/models/GlobalScriptGroupModel.h index 22a0277d..ce67e1cf 100644 --- a/sigmodr/models/GlobalScriptGroupModel.h +++ b/sigmodr/models/GlobalScriptGroupModel.h @@ -41,7 +41,7 @@ class GlobalScriptGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/GlobalScriptModel.cpp b/sigmodr/models/GlobalScriptModel.cpp index 1a17ce7e..8382a117 100644 --- a/sigmodr/models/GlobalScriptModel.cpp +++ b/sigmodr/models/GlobalScriptModel.cpp @@ -90,5 +90,5 @@ bool Sigmodr::GlobalScriptModel::setData(const QVariant& value, int role) void Sigmodr::GlobalScriptModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/GroupModel.cpp b/sigmodr/models/GroupModel.cpp index dc3ca9b4..a03d5e49 100644 --- a/sigmodr/models/GroupModel.cpp +++ b/sigmodr/models/GroupModel.cpp @@ -22,7 +22,8 @@ #include "BaseObjectModel.h" Sigmodr::GroupModel::GroupModel(BaseModel* parent, Sigmod::Object* object, const QString& name) : - BaseModel(parent, object, name) + BaseModel(parent, object, name), + Grouping() { } @@ -65,14 +66,15 @@ Qt::DropActions Sigmodr::GroupModel::supportedDropActions() const return Qt::CopyAction | Qt::MoveAction; } -int Sigmodr::GroupModel::findChild(const BaseModel* model) const +void Sigmodr::GroupModel::addChild(BaseModel* model) { - return m_objects.indexOf(const_cast<BaseObjectModel*>(qobject_cast<const BaseObjectModel*>(model))); + connect(model, SIGNAL(rowChanged(int)), this, SLOT(childRowChanged(int))); + connect(model, SIGNAL(rowsChanged(QList<int>)), this, SLOT(childRowsChanged(QList<int>))); + m_objects.append(model); + emit(rowChanged(m_objects.size() - 1)); } -void Sigmodr::GroupModel::clearData() +int Sigmodr::GroupModel::findChild(BaseModel* model) const { - foreach (BaseObjectModel* model, m_objects) - delete model; - m_objects.clear(); + return find(model); } diff --git a/sigmodr/models/GroupModel.h b/sigmodr/models/GroupModel.h index 0a9de52b..09b51287 100644 --- a/sigmodr/models/GroupModel.h +++ b/sigmodr/models/GroupModel.h @@ -20,6 +20,7 @@ // Model includes #include "BaseModel.h" +#include "Grouping.h" // Qt includes #include <QtCore/QList> @@ -31,9 +32,9 @@ class Object; } namespace Sigmodr { -class BaseObjectModel; +class BaseModel; -class GroupModel : public BaseModel +class GroupModel : public BaseModel, public Grouping { Q_OBJECT @@ -52,14 +53,12 @@ class GroupModel : public BaseModel Qt::DropActions supportedDragActions() const; Qt::DropActions supportedDropActions() const; public slots: + void addChild(BaseModel* model); + virtual void addObject(Sigmod::Object* object = NULL) = 0; - virtual void deleteObject(BaseObjectModel* model) = 0; + virtual void deleteObject(BaseModel* model) = 0; protected: - int findChild(const BaseModel* model) const; - - QList<BaseObjectModel*> m_objects; - private: - void clearData(); + int findChild(BaseModel* model) const; }; } diff --git a/sigmodr/models/GroupObjectModel.cpp b/sigmodr/models/GroupObjectModel.cpp index f39c95a1..5694ecab 100644 --- a/sigmodr/models/GroupObjectModel.cpp +++ b/sigmodr/models/GroupObjectModel.cpp @@ -19,7 +19,8 @@ #include "GroupObjectModel.h" Sigmodr::GroupObjectModel::GroupObjectModel(BaseModel* parent, Sigmod::Object* object) : - BaseObjectModel(parent, object) + BaseObjectModel(parent, object), + Grouping() { } @@ -44,14 +45,15 @@ Sigmodr::BaseModel* Sigmodr::GroupObjectModel::childItem(const int row) return NULL; } -int Sigmodr::GroupObjectModel::findChild(const BaseModel* model) const +void Sigmodr::GroupObjectModel::addChild(BaseModel* model) { - return m_objects.indexOf(const_cast<BaseModel*>(model)); + connect(model, SIGNAL(rowChanged(int)), this, SLOT(childRowChanged(int))); + connect(model, SIGNAL(rowsChanged(QList<int>)), this, SLOT(childRowsChanged(QList<int>))); + m_objects.append(model); + emit(rowChanged(m_objects.size() - 1)); } -void Sigmodr::GroupObjectModel::clearData() +int Sigmodr::GroupObjectModel::findChild(BaseModel* model) const { - foreach (BaseModel* model, m_objects) - delete model; - m_objects.clear(); + return find(model); } diff --git a/sigmodr/models/GroupObjectModel.h b/sigmodr/models/GroupObjectModel.h index ab006477..baafe9e1 100644 --- a/sigmodr/models/GroupObjectModel.h +++ b/sigmodr/models/GroupObjectModel.h @@ -20,11 +20,11 @@ // Model includes #include "BaseObjectModel.h" -#include "GroupModel.h" +#include "Grouping.h" namespace Sigmodr { -class GroupObjectModel : public BaseObjectModel +class GroupObjectModel : public BaseObjectModel, public Grouping { Q_OBJECT @@ -39,17 +39,16 @@ class GroupObjectModel : public BaseObjectModel BaseModel* childItem(const int row); public slots: + void addChild(BaseModel* model); + virtual void addObject(Sigmod::Object* object = NULL) = 0; virtual void deleteObject(BaseModel* model) = 0; virtual void deleteSelf() = 0; protected: - int findChild(const BaseModel* model) const; + int findChild(BaseModel* model) const; - void clearData(); virtual void setupData() = 0; - - QList<BaseModel*> m_objects; }; } diff --git a/sigmodr/models/Grouping.cpp b/sigmodr/models/Grouping.cpp new file mode 100644 index 00000000..c9320a87 --- /dev/null +++ b/sigmodr/models/Grouping.cpp @@ -0,0 +1,42 @@ +/* + * Copyright 2008 Ben Boeckel <MathStuf@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +// Header include +#include "Grouping.h" + +// Model includes +#include "BaseModel.h" + +Sigmodr::Grouping::Grouping() +{ +} + +Sigmodr::Grouping::~Grouping() +{ + clearData(); +} + +int Sigmodr::Grouping::find(BaseModel* model) const +{ + return m_objects.indexOf(model); +} + +void Sigmodr::Grouping::clearData() +{ + qDeleteAll(m_objects); + m_objects.clear(); +} diff --git a/sigmodr/models/Grouping.h b/sigmodr/models/Grouping.h new file mode 100644 index 00000000..6e7eb461 --- /dev/null +++ b/sigmodr/models/Grouping.h @@ -0,0 +1,52 @@ +/* + * Copyright 2008 Ben Boeckel <MathStuf@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef __SIGMODR_GROUPING__ +#define __SIGMODR_GROUPING__ + +// Qt includes +#include <QtCore/QList> + +// Forward declarations +namespace Sigmod +{ +class Object; +} + +namespace Sigmodr +{ +class BaseModel; + +class Grouping +{ + public: + Grouping(); + virtual ~Grouping(); + + virtual void addChild(BaseModel* model) = 0; + + virtual void addObject(Sigmod::Object* object = NULL) = 0; + virtual void deleteObject(BaseModel* model) = 0; + protected: + int find(BaseModel* model) const; + void clearData(); + + QList<BaseModel*> m_objects; +}; +} + +#endif diff --git a/sigmodr/models/ItemGroupModel.cpp b/sigmodr/models/ItemGroupModel.cpp index 64e95f7c..2daab0fe 100644 --- a/sigmodr/models/ItemGroupModel.cpp +++ b/sigmodr/models/ItemGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::ItemGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newItem(); if (object->className() == "Item") - m_objects.append(new ItemModel(this, qobject_cast<Sigmod::Item*>(object))); + addChild(new ItemModel(this, qobject_cast<Sigmod::Item*>(object))); } -void Sigmodr::ItemGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::ItemGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteItem(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/ItemGroupModel.h b/sigmodr/models/ItemGroupModel.h index 547c60bc..5398386b 100644 --- a/sigmodr/models/ItemGroupModel.h +++ b/sigmodr/models/ItemGroupModel.h @@ -41,7 +41,7 @@ class ItemGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/ItemModel.cpp b/sigmodr/models/ItemModel.cpp index 7b7feeba..d7729ac4 100644 --- a/sigmodr/models/ItemModel.cpp +++ b/sigmodr/models/ItemModel.cpp @@ -90,5 +90,5 @@ bool Sigmodr::ItemModel::setData(const QVariant& value, int role) void Sigmodr::ItemModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/ItemTypeGroupModel.cpp b/sigmodr/models/ItemTypeGroupModel.cpp index 42ca6c1b..c3173d65 100644 --- a/sigmodr/models/ItemTypeGroupModel.cpp +++ b/sigmodr/models/ItemTypeGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::ItemTypeGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newItemType(); if (object->className() == "ItemType") - m_objects.append(new ItemTypeModel(this, qobject_cast<Sigmod::ItemType*>(object))); + addChild(new ItemTypeModel(this, qobject_cast<Sigmod::ItemType*>(object))); } -void Sigmodr::ItemTypeGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::ItemTypeGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteItemType(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/ItemTypeGroupModel.h b/sigmodr/models/ItemTypeGroupModel.h index d00f6a8e..3d860068 100644 --- a/sigmodr/models/ItemTypeGroupModel.h +++ b/sigmodr/models/ItemTypeGroupModel.h @@ -41,7 +41,7 @@ class ItemTypeGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/ItemTypeModel.cpp b/sigmodr/models/ItemTypeModel.cpp index e2bc3134..45ddeed5 100644 --- a/sigmodr/models/ItemTypeModel.cpp +++ b/sigmodr/models/ItemTypeModel.cpp @@ -90,5 +90,5 @@ bool Sigmodr::ItemTypeModel::setData(const QVariant& value, int role) void Sigmodr::ItemTypeModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/MapEffectGroupModel.cpp b/sigmodr/models/MapEffectGroupModel.cpp index d7da7116..41519a9d 100644 --- a/sigmodr/models/MapEffectGroupModel.cpp +++ b/sigmodr/models/MapEffectGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::MapEffectGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Map*>(m_object)->newEffect(); if (object->className() == "MapEffect") - m_objects.append(new MapEffectModel(this, qobject_cast<Sigmod::MapEffect*>(object))); + addChild(new MapEffectModel(this, qobject_cast<Sigmod::MapEffect*>(object))); } -void Sigmodr::MapEffectGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::MapEffectGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Map*>(m_object)->deleteEffect(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/MapEffectGroupModel.h b/sigmodr/models/MapEffectGroupModel.h index 53a083e1..7fd9f62f 100644 --- a/sigmodr/models/MapEffectGroupModel.h +++ b/sigmodr/models/MapEffectGroupModel.h @@ -41,7 +41,7 @@ class MapEffectGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/MapEffectModel.cpp b/sigmodr/models/MapEffectModel.cpp index e1398777..bf0f6f7b 100644 --- a/sigmodr/models/MapEffectModel.cpp +++ b/sigmodr/models/MapEffectModel.cpp @@ -91,5 +91,5 @@ bool Sigmodr::MapEffectModel::setData(const QVariant& value, int role) void Sigmodr::MapEffectModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/MapGroupModel.cpp b/sigmodr/models/MapGroupModel.cpp index d2cd59c4..e66b1978 100644 --- a/sigmodr/models/MapGroupModel.cpp +++ b/sigmodr/models/MapGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::MapGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newMap(); if (object->className() == "Map") - m_objects.append(new MapModel(this, qobject_cast<Sigmod::Map*>(object))); + addChild(new MapModel(this, qobject_cast<Sigmod::Map*>(object))); } -void Sigmodr::MapGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::MapGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteMap(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/MapGroupModel.h b/sigmodr/models/MapGroupModel.h index fcbe54d5..5467f451 100644 --- a/sigmodr/models/MapGroupModel.h +++ b/sigmodr/models/MapGroupModel.h @@ -41,7 +41,7 @@ class MapGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/MapModel.cpp b/sigmodr/models/MapModel.cpp index 9511b9c4..9333a313 100644 --- a/sigmodr/models/MapModel.cpp +++ b/sigmodr/models/MapModel.cpp @@ -105,14 +105,14 @@ void Sigmodr::MapModel::deleteObject(BaseModel* /*model*/) void Sigmodr::MapModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } void Sigmodr::MapModel::setupData() { Sigmod::Map* map = qobject_cast<Sigmod::Map*>(m_object); - m_objects.append(new MapEffectGroupModel(this, map)); - m_objects.append(new MapTrainerGroupModel(this, map)); - m_objects.append(new MapWarpGroupModel(this, map)); - m_objects.append(new MapWildListGroupModel(this, map)); + addChild(new MapEffectGroupModel(this, map)); + addChild(new MapTrainerGroupModel(this, map)); + addChild(new MapWarpGroupModel(this, map)); + addChild(new MapWildListGroupModel(this, map)); } diff --git a/sigmodr/models/MapTrainerGroupModel.cpp b/sigmodr/models/MapTrainerGroupModel.cpp index 8740c111..5144eba7 100644 --- a/sigmodr/models/MapTrainerGroupModel.cpp +++ b/sigmodr/models/MapTrainerGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::MapTrainerGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Map*>(m_object)->newTrainer(); if (object->className() == "MapTrainer") - m_objects.append(new MapTrainerModel(this, qobject_cast<Sigmod::MapTrainer*>(object))); + addChild(new MapTrainerModel(this, qobject_cast<Sigmod::MapTrainer*>(object))); } -void Sigmodr::MapTrainerGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::MapTrainerGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Map*>(m_object)->deleteTrainer(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/MapTrainerGroupModel.h b/sigmodr/models/MapTrainerGroupModel.h index 65f0d38a..71ae6c54 100644 --- a/sigmodr/models/MapTrainerGroupModel.h +++ b/sigmodr/models/MapTrainerGroupModel.h @@ -41,7 +41,7 @@ class MapTrainerGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/MapTrainerModel.cpp b/sigmodr/models/MapTrainerModel.cpp index e72c9ae1..14a1ab2b 100644 --- a/sigmodr/models/MapTrainerModel.cpp +++ b/sigmodr/models/MapTrainerModel.cpp @@ -20,6 +20,7 @@ // Model includes #include "MapTrainerTeamMemberModel.h" +#include "GroupModel.h" // Sigmodr includes #include "../MapTrainerUI.h" @@ -77,23 +78,24 @@ void Sigmodr::MapTrainerModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::MapTrainer*>(m_object)->newTeamMember(); if (object->className() == "MapTrainerTeamMember") - m_objects.append(new MapTrainerTeamMemberModel(this, qobject_cast<Sigmod::MapTrainerTeamMember*>(object))); + addChild(new MapTrainerTeamMemberModel(this, qobject_cast<Sigmod::MapTrainerTeamMember*>(object))); } void Sigmodr::MapTrainerModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::MapTrainer*>(m_object)->deleteTeamMember(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } void Sigmodr::MapTrainerModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } bool Sigmodr::MapTrainerModel::setData(const QVariant& value, int role) @@ -129,5 +131,5 @@ void Sigmodr::MapTrainerModel::setupData() { Sigmod::MapTrainer* trainer = qobject_cast<Sigmod::MapTrainer*>(m_object); for (int i = 0; i < trainer->teamMemberCount(); ++i) - m_objects.append(new MapTrainerTeamMemberModel(this, trainer->teamMember(i))); + addChild(new MapTrainerTeamMemberModel(this, trainer->teamMember(i))); } diff --git a/sigmodr/models/MapTrainerTeamMemberModel.cpp b/sigmodr/models/MapTrainerTeamMemberModel.cpp index 7e589f2a..12cf39d3 100644 --- a/sigmodr/models/MapTrainerTeamMemberModel.cpp +++ b/sigmodr/models/MapTrainerTeamMemberModel.cpp @@ -98,5 +98,5 @@ bool Sigmodr::MapTrainerTeamMemberModel::setData(const QVariant& value, int role void Sigmodr::MapTrainerTeamMemberModel::deleteSelf() { -// qobject_cast<GroupObjectModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupObjectModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/MapWarpGroupModel.cpp b/sigmodr/models/MapWarpGroupModel.cpp index d76cf0f7..52698193 100644 --- a/sigmodr/models/MapWarpGroupModel.cpp +++ b/sigmodr/models/MapWarpGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::MapWarpGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Map*>(m_object)->newWarp(); if (object->className() == "MapWarp") - m_objects.append(new MapWarpModel(this, qobject_cast<Sigmod::MapWarp*>(object))); + addChild(new MapWarpModel(this, qobject_cast<Sigmod::MapWarp*>(object))); } -void Sigmodr::MapWarpGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::MapWarpGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Map*>(m_object)->deleteWarp(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/MapWarpGroupModel.h b/sigmodr/models/MapWarpGroupModel.h index 4e358c16..93efbe13 100644 --- a/sigmodr/models/MapWarpGroupModel.h +++ b/sigmodr/models/MapWarpGroupModel.h @@ -41,7 +41,7 @@ class MapWarpGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/MapWarpModel.cpp b/sigmodr/models/MapWarpModel.cpp index 6dfcea8c..aae2b4f2 100644 --- a/sigmodr/models/MapWarpModel.cpp +++ b/sigmodr/models/MapWarpModel.cpp @@ -91,5 +91,5 @@ bool Sigmodr::MapWarpModel::setData(const QVariant& value, int role) void Sigmodr::MapWarpModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/MapWildListEncounterModel.cpp b/sigmodr/models/MapWildListEncounterModel.cpp index 40ecbf93..e4f3f965 100644 --- a/sigmodr/models/MapWildListEncounterModel.cpp +++ b/sigmodr/models/MapWildListEncounterModel.cpp @@ -98,5 +98,5 @@ bool Sigmodr::MapWildListEncounterModel::setData(const QVariant& value, int role void Sigmodr::MapWildListEncounterModel::deleteSelf() { -// qobject_cast<GroupObjectModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupObjectModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/MapWildListGroupModel.cpp b/sigmodr/models/MapWildListGroupModel.cpp index e7320e03..50b6a98c 100644 --- a/sigmodr/models/MapWildListGroupModel.cpp +++ b/sigmodr/models/MapWildListGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::MapWildListGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Map*>(m_object)->newWildList(); if (object->className() == "MapWildList") - m_objects.append(new MapWildListModel(this, qobject_cast<Sigmod::MapWildList*>(object))); + addChild(new MapWildListModel(this, qobject_cast<Sigmod::MapWildList*>(object))); } -void Sigmodr::MapWildListGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::MapWildListGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Map*>(m_object)->deleteWildList(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/MapWildListGroupModel.h b/sigmodr/models/MapWildListGroupModel.h index eb1c0931..033ec5a8 100644 --- a/sigmodr/models/MapWildListGroupModel.h +++ b/sigmodr/models/MapWildListGroupModel.h @@ -41,7 +41,7 @@ class MapWildListGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/MapWildListModel.cpp b/sigmodr/models/MapWildListModel.cpp index 37c4cc33..7204e394 100644 --- a/sigmodr/models/MapWildListModel.cpp +++ b/sigmodr/models/MapWildListModel.cpp @@ -20,6 +20,7 @@ // Model includes #include "MapWildListEncounterModel.h" +#include "GroupModel.h" // Sigmodr includes #include "../MapWildListUI.h" @@ -79,23 +80,24 @@ void Sigmodr::MapWildListModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::MapWildList*>(m_object)->newEncounter(); if (object->className() == "MapWildListEncounter") - m_objects.append(new MapWildListEncounterModel(this, qobject_cast<Sigmod::MapWildListEncounter*>(object))); + addChild(new MapWildListEncounterModel(this, qobject_cast<Sigmod::MapWildListEncounter*>(object))); } void Sigmodr::MapWildListModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::MapWildList*>(m_object)->deleteEncounter(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } void Sigmodr::MapWildListModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } bool Sigmodr::MapWildListModel::setData(const QVariant& value, int role) @@ -131,5 +133,5 @@ void Sigmodr::MapWildListModel::setupData() { Sigmod::MapWildList* wildList = qobject_cast<Sigmod::MapWildList*>(m_object); for (int i = 0; i < wildList->encounterCount(); ++i) - m_objects.append(new MapWildListEncounterModel(this, wildList->encounter(i))); + addChild(new MapWildListEncounterModel(this, wildList->encounter(i))); } diff --git a/sigmodr/models/MoveGroupModel.cpp b/sigmodr/models/MoveGroupModel.cpp index 5c037071..b6cdaa6b 100644 --- a/sigmodr/models/MoveGroupModel.cpp +++ b/sigmodr/models/MoveGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::MoveGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newMove(); if (object->className() == "Move") - m_objects.append(new MoveModel(this, qobject_cast<Sigmod::Move*>(object))); + addChild(new MoveModel(this, qobject_cast<Sigmod::Move*>(object))); } -void Sigmodr::MoveGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::MoveGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteMove(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/MoveGroupModel.h b/sigmodr/models/MoveGroupModel.h index f7510e79..26f227b8 100644 --- a/sigmodr/models/MoveGroupModel.h +++ b/sigmodr/models/MoveGroupModel.h @@ -41,7 +41,7 @@ class MoveGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/MoveModel.cpp b/sigmodr/models/MoveModel.cpp index 3a9c3692..05d273c5 100644 --- a/sigmodr/models/MoveModel.cpp +++ b/sigmodr/models/MoveModel.cpp @@ -90,5 +90,5 @@ bool Sigmodr::MoveModel::setData(const QVariant& value, int role) void Sigmodr::MoveModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/NatureGroupModel.cpp b/sigmodr/models/NatureGroupModel.cpp index f9dac0b8..00a6350b 100644 --- a/sigmodr/models/NatureGroupModel.cpp +++ b/sigmodr/models/NatureGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::NatureGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newNature(); if (object->className() == "Nature") - m_objects.append(new NatureModel(this, qobject_cast<Sigmod::Nature*>(object))); + addChild(new NatureModel(this, qobject_cast<Sigmod::Nature*>(object))); } -void Sigmodr::NatureGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::NatureGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteNature(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/NatureGroupModel.h b/sigmodr/models/NatureGroupModel.h index 1a7856e1..e6af658c 100644 --- a/sigmodr/models/NatureGroupModel.h +++ b/sigmodr/models/NatureGroupModel.h @@ -41,7 +41,7 @@ class NatureGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/NatureModel.cpp b/sigmodr/models/NatureModel.cpp index 23ba6f2a..6d585e93 100644 --- a/sigmodr/models/NatureModel.cpp +++ b/sigmodr/models/NatureModel.cpp @@ -91,5 +91,5 @@ bool Sigmodr::NatureModel::setData(const QVariant& value, int role) void Sigmodr::NatureModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/RootModel.cpp b/sigmodr/models/RootModel.cpp index 13031a9d..e433e487 100644 --- a/sigmodr/models/RootModel.cpp +++ b/sigmodr/models/RootModel.cpp @@ -43,7 +43,7 @@ bool Sigmodr::RootModel::setData(const QVariant& /*value*/, int /*role = Qt::Edi void Sigmodr::RootModel::addSigmod(Sigmod::Sigmod* sigmod) { - m_objects.append(new SigmodModel(this, sigmod)); + addChild(new SigmodModel(this, sigmod)); } void Sigmodr::RootModel::deleteSigmod(const Sigmod::Sigmod* sigmod) @@ -54,6 +54,7 @@ void Sigmodr::RootModel::deleteSigmod(const Sigmod::Sigmod* sigmod) { delete m_objects[i]; m_objects.removeAt(i); + emit(childRowChanged(i)); break; } } @@ -63,6 +64,6 @@ void Sigmodr::RootModel::addObject(Sigmod::Object* /*object*/) { } -void Sigmodr::RootModel::deleteObject(BaseObjectModel* /*model*/) +void Sigmodr::RootModel::deleteObject(BaseModel* /*model*/) { } diff --git a/sigmodr/models/RootModel.h b/sigmodr/models/RootModel.h index 06ffaf9d..af79f8c2 100644 --- a/sigmodr/models/RootModel.h +++ b/sigmodr/models/RootModel.h @@ -41,7 +41,7 @@ class RootModel : public GroupModel void deleteSigmod(const Sigmod::Sigmod* sigmod); public slots: void addObject(Sigmod::Object* /*object = NULL*/); - void deleteObject(BaseObjectModel* /*model*/); + void deleteObject(BaseModel* /*model*/); }; } diff --git a/sigmodr/models/SigmodModel.cpp b/sigmodr/models/SigmodModel.cpp index a1f43718..4b138b3c 100644 --- a/sigmodr/models/SigmodModel.cpp +++ b/sigmodr/models/SigmodModel.cpp @@ -133,27 +133,27 @@ void Sigmodr::SigmodModel::deleteSelf() void Sigmodr::SigmodModel::setupData() { Sigmod::Sigmod* sigmod = qobject_cast<Sigmod::Sigmod*>(m_object); - m_objects.append(new RulesModel(this, sigmod->rules())); - m_objects.append(new AbilityGroupModel(this, sigmod)); - m_objects.append(new AuthorGroupModel(this, sigmod)); - m_objects.append(new BadgeGroupModel(this, sigmod)); - m_objects.append(new CoinListGroupModel(this, sigmod)); - m_objects.append(new EggGroupGroupModel(this, sigmod)); - m_objects.append(new GlobalScriptGroupModel(this, sigmod)); - m_objects.append(new ItemGroupModel(this, sigmod)); - m_objects.append(new ItemTypeGroupModel(this, sigmod)); - m_objects.append(new MapGroupModel(this, sigmod)); - m_objects.append(new MoveGroupModel(this, sigmod)); - m_objects.append(new NatureGroupModel(this, sigmod)); - m_objects.append(new SkinGroupModel(this, sigmod)); - m_objects.append(new SoundGroupModel(this, sigmod)); - m_objects.append(new SpeciesGroupModel(this, sigmod)); - m_objects.append(new SpriteGroupModel(this, sigmod)); - m_objects.append(new StatusGroupModel(this, sigmod)); - m_objects.append(new StoreGroupModel(this, sigmod)); - m_objects.append(new TileGroupModel(this, sigmod)); - m_objects.append(new TimeGroupModel(this, sigmod)); - m_objects.append(new TrainerGroupModel(this, sigmod)); - m_objects.append(new TypeGroupModel(this, sigmod)); - m_objects.append(new WeatherGroupModel(this, sigmod)); + addChild(new RulesModel(this, sigmod->rules())); + addChild(new AbilityGroupModel(this, sigmod)); + addChild(new AuthorGroupModel(this, sigmod)); + addChild(new BadgeGroupModel(this, sigmod)); + addChild(new CoinListGroupModel(this, sigmod)); + addChild(new EggGroupGroupModel(this, sigmod)); + addChild(new GlobalScriptGroupModel(this, sigmod)); + addChild(new ItemGroupModel(this, sigmod)); + addChild(new ItemTypeGroupModel(this, sigmod)); + addChild(new MapGroupModel(this, sigmod)); + addChild(new MoveGroupModel(this, sigmod)); + addChild(new NatureGroupModel(this, sigmod)); + addChild(new SkinGroupModel(this, sigmod)); + addChild(new SoundGroupModel(this, sigmod)); + addChild(new SpeciesGroupModel(this, sigmod)); + addChild(new SpriteGroupModel(this, sigmod)); + addChild(new StatusGroupModel(this, sigmod)); + addChild(new StoreGroupModel(this, sigmod)); + addChild(new TileGroupModel(this, sigmod)); + addChild(new TimeGroupModel(this, sigmod)); + addChild(new TrainerGroupModel(this, sigmod)); + addChild(new TypeGroupModel(this, sigmod)); + addChild(new WeatherGroupModel(this, sigmod)); } diff --git a/sigmodr/models/SkinGroupModel.cpp b/sigmodr/models/SkinGroupModel.cpp index d2556575..b7303183 100644 --- a/sigmodr/models/SkinGroupModel.cpp +++ b/sigmodr/models/SkinGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::SkinGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newSkin(); if (object->className() == "Skin") - m_objects.append(new SkinModel(this, qobject_cast<Sigmod::Skin*>(object))); + addChild(new SkinModel(this, qobject_cast<Sigmod::Skin*>(object))); } -void Sigmodr::SkinGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::SkinGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteSkin(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/SkinGroupModel.h b/sigmodr/models/SkinGroupModel.h index d15bcb50..a77490ab 100644 --- a/sigmodr/models/SkinGroupModel.h +++ b/sigmodr/models/SkinGroupModel.h @@ -41,7 +41,7 @@ class SkinGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/SkinModel.cpp b/sigmodr/models/SkinModel.cpp index cd216931..059656a4 100644 --- a/sigmodr/models/SkinModel.cpp +++ b/sigmodr/models/SkinModel.cpp @@ -90,5 +90,5 @@ bool Sigmodr::SkinModel::setData(const QVariant& value, int role) void Sigmodr::SkinModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/SoundGroupModel.cpp b/sigmodr/models/SoundGroupModel.cpp index 1f755029..fb7616a4 100644 --- a/sigmodr/models/SoundGroupModel.cpp +++ b/sigmodr/models/SoundGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::SoundGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newSound(); if (object->className() == "Sound") - m_objects.append(new SoundModel(this, qobject_cast<Sigmod::Sound*>(object))); + addChild(new SoundModel(this, qobject_cast<Sigmod::Sound*>(object))); } -void Sigmodr::SoundGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::SoundGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteSound(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/SoundGroupModel.h b/sigmodr/models/SoundGroupModel.h index f7969c50..f4102f66 100644 --- a/sigmodr/models/SoundGroupModel.h +++ b/sigmodr/models/SoundGroupModel.h @@ -41,7 +41,7 @@ class SoundGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/SoundModel.cpp b/sigmodr/models/SoundModel.cpp index ef447018..93653a28 100644 --- a/sigmodr/models/SoundModel.cpp +++ b/sigmodr/models/SoundModel.cpp @@ -91,5 +91,5 @@ bool Sigmodr::SoundModel::setData(const QVariant& value, int role) void Sigmodr::SoundModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/SpeciesAbilityGroupModel.cpp b/sigmodr/models/SpeciesAbilityGroupModel.cpp index 575c0248..3558c1c7 100644 --- a/sigmodr/models/SpeciesAbilityGroupModel.cpp +++ b/sigmodr/models/SpeciesAbilityGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::SpeciesAbilityGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Species*>(m_object)->newAbility(); if (object->className() == "SpeciesAbility") - m_objects.append(new SpeciesAbilityModel(this, qobject_cast<Sigmod::SpeciesAbility*>(object))); + addChild(new SpeciesAbilityModel(this, qobject_cast<Sigmod::SpeciesAbility*>(object))); } -void Sigmodr::SpeciesAbilityGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::SpeciesAbilityGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Species*>(m_object)->deleteAbility(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/SpeciesAbilityGroupModel.h b/sigmodr/models/SpeciesAbilityGroupModel.h index 890042fa..4fb4be23 100644 --- a/sigmodr/models/SpeciesAbilityGroupModel.h +++ b/sigmodr/models/SpeciesAbilityGroupModel.h @@ -41,7 +41,7 @@ class SpeciesAbilityGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/SpeciesAbilityModel.cpp b/sigmodr/models/SpeciesAbilityModel.cpp index 5846c7e9..56d2281d 100644 --- a/sigmodr/models/SpeciesAbilityModel.cpp +++ b/sigmodr/models/SpeciesAbilityModel.cpp @@ -98,5 +98,5 @@ bool Sigmodr::SpeciesAbilityModel::setData(const QVariant& value, int role) void Sigmodr::SpeciesAbilityModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/SpeciesGroupModel.cpp b/sigmodr/models/SpeciesGroupModel.cpp index 0e928c81..ba6d01cc 100644 --- a/sigmodr/models/SpeciesGroupModel.cpp +++ b/sigmodr/models/SpeciesGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::SpeciesGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newSpecies(); if (object->className() == "Species") - m_objects.append(new SpeciesModel(this, qobject_cast<Sigmod::Species*>(object))); + addChild(new SpeciesModel(this, qobject_cast<Sigmod::Species*>(object))); } -void Sigmodr::SpeciesGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::SpeciesGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteSpecies(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/SpeciesGroupModel.h b/sigmodr/models/SpeciesGroupModel.h index 0b003a18..5cf8ea92 100644 --- a/sigmodr/models/SpeciesGroupModel.h +++ b/sigmodr/models/SpeciesGroupModel.h @@ -41,7 +41,7 @@ class SpeciesGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/SpeciesItemGroupModel.cpp b/sigmodr/models/SpeciesItemGroupModel.cpp index c81972c6..378fd91b 100644 --- a/sigmodr/models/SpeciesItemGroupModel.cpp +++ b/sigmodr/models/SpeciesItemGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::SpeciesItemGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Species*>(m_object)->newItem(); if (object->className() == "SpeciesItem") - m_objects.append(new SpeciesItemModel(this, qobject_cast<Sigmod::SpeciesItem*>(object))); + addChild(new SpeciesItemModel(this, qobject_cast<Sigmod::SpeciesItem*>(object))); } -void Sigmodr::SpeciesItemGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::SpeciesItemGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Species*>(m_object)->deleteItem(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/SpeciesItemGroupModel.h b/sigmodr/models/SpeciesItemGroupModel.h index 340882c9..ebd1fd40 100644 --- a/sigmodr/models/SpeciesItemGroupModel.h +++ b/sigmodr/models/SpeciesItemGroupModel.h @@ -41,7 +41,7 @@ class SpeciesItemGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/SpeciesItemModel.cpp b/sigmodr/models/SpeciesItemModel.cpp index e9f076eb..58807828 100644 --- a/sigmodr/models/SpeciesItemModel.cpp +++ b/sigmodr/models/SpeciesItemModel.cpp @@ -98,5 +98,5 @@ bool Sigmodr::SpeciesItemModel::setData(const QVariant& value, int role) void Sigmodr::SpeciesItemModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/SpeciesModel.cpp b/sigmodr/models/SpeciesModel.cpp index d74a22c3..8e2f5ca3 100644 --- a/sigmodr/models/SpeciesModel.cpp +++ b/sigmodr/models/SpeciesModel.cpp @@ -105,13 +105,13 @@ void Sigmodr::SpeciesModel::deleteObject(BaseModel* /*model*/) void Sigmodr::SpeciesModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } void Sigmodr::SpeciesModel::setupData() { Sigmod::Species* species = qobject_cast<Sigmod::Species*>(m_object); - m_objects.append(new SpeciesAbilityGroupModel(this, species)); - m_objects.append(new SpeciesItemGroupModel(this, species)); - m_objects.append(new SpeciesMoveGroupModel(this, species)); + addChild(new SpeciesAbilityGroupModel(this, species)); + addChild(new SpeciesItemGroupModel(this, species)); + addChild(new SpeciesMoveGroupModel(this, species)); } diff --git a/sigmodr/models/SpeciesMoveGroupModel.cpp b/sigmodr/models/SpeciesMoveGroupModel.cpp index 69b079d5..90b8e27a 100644 --- a/sigmodr/models/SpeciesMoveGroupModel.cpp +++ b/sigmodr/models/SpeciesMoveGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::SpeciesMoveGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Species*>(m_object)->newMove(); if (object->className() == "SpeciesMove") - m_objects.append(new SpeciesMoveModel(this, qobject_cast<Sigmod::SpeciesMove*>(object))); + addChild(new SpeciesMoveModel(this, qobject_cast<Sigmod::SpeciesMove*>(object))); } -void Sigmodr::SpeciesMoveGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::SpeciesMoveGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Species*>(m_object)->deleteMove(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/SpeciesMoveGroupModel.h b/sigmodr/models/SpeciesMoveGroupModel.h index 8c5324d5..5d15ecd1 100644 --- a/sigmodr/models/SpeciesMoveGroupModel.h +++ b/sigmodr/models/SpeciesMoveGroupModel.h @@ -41,7 +41,7 @@ class SpeciesMoveGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/SpeciesMoveModel.cpp b/sigmodr/models/SpeciesMoveModel.cpp index 5ac492a6..a935d514 100644 --- a/sigmodr/models/SpeciesMoveModel.cpp +++ b/sigmodr/models/SpeciesMoveModel.cpp @@ -98,5 +98,5 @@ bool Sigmodr::SpeciesMoveModel::setData(const QVariant& value, int role) void Sigmodr::SpeciesMoveModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/SpriteGroupModel.cpp b/sigmodr/models/SpriteGroupModel.cpp index 348f6aae..2955371c 100644 --- a/sigmodr/models/SpriteGroupModel.cpp +++ b/sigmodr/models/SpriteGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::SpriteGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newSprite(); if (object->className() == "Sprite") - m_objects.append(new SpriteModel(this, qobject_cast<Sigmod::Sprite*>(object))); + addChild(new SpriteModel(this, qobject_cast<Sigmod::Sprite*>(object))); } -void Sigmodr::SpriteGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::SpriteGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteSprite(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/SpriteGroupModel.h b/sigmodr/models/SpriteGroupModel.h index 797adddd..c7469257 100644 --- a/sigmodr/models/SpriteGroupModel.h +++ b/sigmodr/models/SpriteGroupModel.h @@ -41,7 +41,7 @@ class SpriteGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/SpriteModel.cpp b/sigmodr/models/SpriteModel.cpp index daa6b43c..08541d51 100644 --- a/sigmodr/models/SpriteModel.cpp +++ b/sigmodr/models/SpriteModel.cpp @@ -90,5 +90,5 @@ bool Sigmodr::SpriteModel::setData(const QVariant& value, int role) void Sigmodr::SpriteModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/StatusGroupModel.cpp b/sigmodr/models/StatusGroupModel.cpp index caf352a5..5f50d250 100644 --- a/sigmodr/models/StatusGroupModel.cpp +++ b/sigmodr/models/StatusGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::StatusGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newStatus(); if (object->className() == "Status") - m_objects.append(new StatusModel(this, qobject_cast<Sigmod::Status*>(object))); + addChild(new StatusModel(this, qobject_cast<Sigmod::Status*>(object))); } -void Sigmodr::StatusGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::StatusGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteStatus(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/StatusGroupModel.h b/sigmodr/models/StatusGroupModel.h index 696d1a9d..1b085d1f 100644 --- a/sigmodr/models/StatusGroupModel.h +++ b/sigmodr/models/StatusGroupModel.h @@ -41,7 +41,7 @@ class StatusGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/StatusModel.cpp b/sigmodr/models/StatusModel.cpp index d1b0148c..f0436f90 100644 --- a/sigmodr/models/StatusModel.cpp +++ b/sigmodr/models/StatusModel.cpp @@ -90,5 +90,5 @@ bool Sigmodr::StatusModel::setData(const QVariant& value, int role) void Sigmodr::StatusModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/StoreGroupModel.cpp b/sigmodr/models/StoreGroupModel.cpp index 0d2bf699..feb3975b 100644 --- a/sigmodr/models/StoreGroupModel.cpp +++ b/sigmodr/models/StoreGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::StoreGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newStore(); if (object->className() == "Store") - m_objects.append(new StoreModel(this, qobject_cast<Sigmod::Store*>(object))); + addChild(new StoreModel(this, qobject_cast<Sigmod::Store*>(object))); } -void Sigmodr::StoreGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::StoreGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteStore(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/StoreGroupModel.h b/sigmodr/models/StoreGroupModel.h index db929615..0239bfbe 100644 --- a/sigmodr/models/StoreGroupModel.h +++ b/sigmodr/models/StoreGroupModel.h @@ -41,7 +41,7 @@ class StoreGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/StoreModel.cpp b/sigmodr/models/StoreModel.cpp index e1a989a0..834e0d9d 100644 --- a/sigmodr/models/StoreModel.cpp +++ b/sigmodr/models/StoreModel.cpp @@ -91,5 +91,5 @@ bool Sigmodr::StoreModel::setData(const QVariant& value, int role) void Sigmodr::StoreModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/TileGroupModel.cpp b/sigmodr/models/TileGroupModel.cpp index 2fb782b6..8b2c1de2 100644 --- a/sigmodr/models/TileGroupModel.cpp +++ b/sigmodr/models/TileGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::TileGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newTile(); if (object->className() == "Tile") - m_objects.append(new TileModel(this, qobject_cast<Sigmod::Tile*>(object))); + addChild(new TileModel(this, qobject_cast<Sigmod::Tile*>(object))); } -void Sigmodr::TileGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::TileGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteTile(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/TileGroupModel.h b/sigmodr/models/TileGroupModel.h index 4dae436c..9156096c 100644 --- a/sigmodr/models/TileGroupModel.h +++ b/sigmodr/models/TileGroupModel.h @@ -41,7 +41,7 @@ class TileGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/TileModel.cpp b/sigmodr/models/TileModel.cpp index 005849d8..e99dc6d6 100644 --- a/sigmodr/models/TileModel.cpp +++ b/sigmodr/models/TileModel.cpp @@ -91,5 +91,5 @@ bool Sigmodr::TileModel::setData(const QVariant& value, int role) void Sigmodr::TileModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/TimeGroupModel.cpp b/sigmodr/models/TimeGroupModel.cpp index a05cf53a..e4f1457a 100644 --- a/sigmodr/models/TimeGroupModel.cpp +++ b/sigmodr/models/TimeGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::TimeGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newTime(); if (object->className() == "Time") - m_objects.append(new TimeModel(this, qobject_cast<Sigmod::Time*>(object))); + addChild(new TimeModel(this, qobject_cast<Sigmod::Time*>(object))); } -void Sigmodr::TimeGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::TimeGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteTime(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/TimeGroupModel.h b/sigmodr/models/TimeGroupModel.h index 904f273f..39bfb6a6 100644 --- a/sigmodr/models/TimeGroupModel.h +++ b/sigmodr/models/TimeGroupModel.h @@ -41,7 +41,7 @@ class TimeGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/TimeModel.cpp b/sigmodr/models/TimeModel.cpp index e1874b04..d954c75d 100644 --- a/sigmodr/models/TimeModel.cpp +++ b/sigmodr/models/TimeModel.cpp @@ -91,5 +91,5 @@ bool Sigmodr::TimeModel::setData(const QVariant& value, int role) void Sigmodr::TimeModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/TrainerGroupModel.cpp b/sigmodr/models/TrainerGroupModel.cpp index 253b46fe..0d647801 100644 --- a/sigmodr/models/TrainerGroupModel.cpp +++ b/sigmodr/models/TrainerGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::TrainerGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newTrainer(); if (object->className() == "Trainer") - m_objects.append(new TrainerModel(this, qobject_cast<Sigmod::Trainer*>(object))); + addChild(new TrainerModel(this, qobject_cast<Sigmod::Trainer*>(object))); } -void Sigmodr::TrainerGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::TrainerGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteTrainer(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/TrainerGroupModel.h b/sigmodr/models/TrainerGroupModel.h index 1fd010e7..bf8dae5b 100644 --- a/sigmodr/models/TrainerGroupModel.h +++ b/sigmodr/models/TrainerGroupModel.h @@ -41,7 +41,7 @@ class TrainerGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/TrainerModel.cpp b/sigmodr/models/TrainerModel.cpp index 8b3922fc..6507d8f1 100644 --- a/sigmodr/models/TrainerModel.cpp +++ b/sigmodr/models/TrainerModel.cpp @@ -91,5 +91,5 @@ bool Sigmodr::TrainerModel::setData(const QVariant& value, int role) void Sigmodr::TrainerModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/TypeGroupModel.cpp b/sigmodr/models/TypeGroupModel.cpp index 7332e1e9..8ff98bb6 100644 --- a/sigmodr/models/TypeGroupModel.cpp +++ b/sigmodr/models/TypeGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::TypeGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newType(); if (object->className() == "Type") - m_objects.append(new TypeModel(this, qobject_cast<Sigmod::Type*>(object))); + addChild(new TypeModel(this, qobject_cast<Sigmod::Type*>(object))); } -void Sigmodr::TypeGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::TypeGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteType(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/TypeGroupModel.h b/sigmodr/models/TypeGroupModel.h index 30e9d196..0ec45863 100644 --- a/sigmodr/models/TypeGroupModel.h +++ b/sigmodr/models/TypeGroupModel.h @@ -41,7 +41,7 @@ class TypeGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/TypeModel.cpp b/sigmodr/models/TypeModel.cpp index ee05ec5e..c648acc0 100644 --- a/sigmodr/models/TypeModel.cpp +++ b/sigmodr/models/TypeModel.cpp @@ -91,5 +91,5 @@ bool Sigmodr::TypeModel::setData(const QVariant& value, int role) void Sigmodr::TypeModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } diff --git a/sigmodr/models/WeatherGroupModel.cpp b/sigmodr/models/WeatherGroupModel.cpp index 643ba026..c2994324 100644 --- a/sigmodr/models/WeatherGroupModel.cpp +++ b/sigmodr/models/WeatherGroupModel.cpp @@ -80,16 +80,17 @@ void Sigmodr::WeatherGroupModel::addObject(Sigmod::Object* object) if (!object) object = qobject_cast<Sigmod::Sigmod*>(m_object)->newWeather(); if (object->className() == "Weather") - m_objects.append(new WeatherModel(this, qobject_cast<Sigmod::Weather*>(object))); + addChild(new WeatherModel(this, qobject_cast<Sigmod::Weather*>(object))); } -void Sigmodr::WeatherGroupModel::deleteObject(BaseObjectModel* model) +void Sigmodr::WeatherGroupModel::deleteObject(BaseModel* model) { - const int index = m_objects.indexOf(model); + const int index = find(model); if (0 <= index) { qobject_cast<Sigmod::Sigmod*>(m_object)->deleteWeather(index); m_objects[index]->deleteLater(); m_objects.removeAt(index); + childRowChanged(index); } } diff --git a/sigmodr/models/WeatherGroupModel.h b/sigmodr/models/WeatherGroupModel.h index a9d3ecf5..e997b9af 100644 --- a/sigmodr/models/WeatherGroupModel.h +++ b/sigmodr/models/WeatherGroupModel.h @@ -41,7 +41,7 @@ class WeatherGroupModel : public GroupModel bool setData(const QVariant& value, int role = Qt::EditRole); public slots: void addObject(Sigmod::Object* object = NULL); - void deleteObject(BaseObjectModel* model); + void deleteObject(BaseModel* model); }; } diff --git a/sigmodr/models/WeatherModel.cpp b/sigmodr/models/WeatherModel.cpp index 837a7bad..2cb4c423 100644 --- a/sigmodr/models/WeatherModel.cpp +++ b/sigmodr/models/WeatherModel.cpp @@ -90,5 +90,5 @@ bool Sigmodr::WeatherModel::setData(const QVariant& value, int role) void Sigmodr::WeatherModel::deleteSelf() { -// qobject_cast<GroupModel*>(m_parent)->deleteObject(this); + qobject_cast<GroupModel*>(m_parent)->deleteObject(this); } |
