summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Changelog10
-rw-r--r--sigbattle/ATBArena.cpp19
-rw-r--r--sigbattle/ATBArena.h6
-rw-r--r--sigbattle/Arena.cpp3
-rw-r--r--sigbattle/Arena.h2
-rw-r--r--sigbattle/Player.cpp22
-rw-r--r--sigbattle/Player.h6
-rw-r--r--sigbattle/TeamMember.cpp3
-rw-r--r--sigmod/CoinList.cpp4
-rw-r--r--sigmod/Map.cpp16
-rw-r--r--sigmod/MapWildList.cpp4
-rw-r--r--sigmod/Sigmod.cpp88
-rw-r--r--sigmod/Species.cpp12
-rw-r--r--sigmodr/CMakeLists.txt2
-rw-r--r--sigmodr/SigmodTree.cpp27
-rw-r--r--sigmodr/SigmodTree.h2
-rw-r--r--sigmodr/SigmodTreeModel.cpp42
-rw-r--r--sigmodr/SigmodTreeModel.h5
-rw-r--r--sigmodr/SigmodrUI.cpp8
-rw-r--r--sigmodr/TODO3
-rw-r--r--sigmodr/models/AbilityGroupModel.cpp7
-rw-r--r--sigmodr/models/AbilityGroupModel.h2
-rw-r--r--sigmodr/models/AbilityModel.cpp4
-rw-r--r--sigmodr/models/AuthorGroupModel.cpp7
-rw-r--r--sigmodr/models/AuthorGroupModel.h2
-rw-r--r--sigmodr/models/AuthorModel.cpp2
-rw-r--r--sigmodr/models/BadgeGroupModel.cpp7
-rw-r--r--sigmodr/models/BadgeGroupModel.h2
-rw-r--r--sigmodr/models/BadgeModel.cpp2
-rw-r--r--sigmodr/models/BaseModel.cpp16
-rw-r--r--sigmodr/models/BaseModel.h8
-rw-r--r--sigmodr/models/BaseObjectModel.cpp2
-rw-r--r--sigmodr/models/BaseObjectModel.h2
-rw-r--r--sigmodr/models/CoinListGroupModel.cpp7
-rw-r--r--sigmodr/models/CoinListGroupModel.h2
-rw-r--r--sigmodr/models/CoinListModel.cpp10
-rw-r--r--sigmodr/models/CoinListObjectModel.cpp2
-rw-r--r--sigmodr/models/EggGroupGroupModel.cpp7
-rw-r--r--sigmodr/models/EggGroupGroupModel.h2
-rw-r--r--sigmodr/models/EggGroupModel.cpp2
-rw-r--r--sigmodr/models/GlobalScriptGroupModel.cpp7
-rw-r--r--sigmodr/models/GlobalScriptGroupModel.h2
-rw-r--r--sigmodr/models/GlobalScriptModel.cpp2
-rw-r--r--sigmodr/models/GroupModel.cpp16
-rw-r--r--sigmodr/models/GroupModel.h15
-rw-r--r--sigmodr/models/GroupObjectModel.cpp16
-rw-r--r--sigmodr/models/GroupObjectModel.h11
-rw-r--r--sigmodr/models/Grouping.cpp42
-rw-r--r--sigmodr/models/Grouping.h52
-rw-r--r--sigmodr/models/ItemGroupModel.cpp7
-rw-r--r--sigmodr/models/ItemGroupModel.h2
-rw-r--r--sigmodr/models/ItemModel.cpp2
-rw-r--r--sigmodr/models/ItemTypeGroupModel.cpp7
-rw-r--r--sigmodr/models/ItemTypeGroupModel.h2
-rw-r--r--sigmodr/models/ItemTypeModel.cpp2
-rw-r--r--sigmodr/models/MapEffectGroupModel.cpp7
-rw-r--r--sigmodr/models/MapEffectGroupModel.h2
-rw-r--r--sigmodr/models/MapEffectModel.cpp2
-rw-r--r--sigmodr/models/MapGroupModel.cpp7
-rw-r--r--sigmodr/models/MapGroupModel.h2
-rw-r--r--sigmodr/models/MapModel.cpp10
-rw-r--r--sigmodr/models/MapTrainerGroupModel.cpp7
-rw-r--r--sigmodr/models/MapTrainerGroupModel.h2
-rw-r--r--sigmodr/models/MapTrainerModel.cpp10
-rw-r--r--sigmodr/models/MapTrainerTeamMemberModel.cpp2
-rw-r--r--sigmodr/models/MapWarpGroupModel.cpp7
-rw-r--r--sigmodr/models/MapWarpGroupModel.h2
-rw-r--r--sigmodr/models/MapWarpModel.cpp2
-rw-r--r--sigmodr/models/MapWildListEncounterModel.cpp2
-rw-r--r--sigmodr/models/MapWildListGroupModel.cpp7
-rw-r--r--sigmodr/models/MapWildListGroupModel.h2
-rw-r--r--sigmodr/models/MapWildListModel.cpp10
-rw-r--r--sigmodr/models/MoveGroupModel.cpp7
-rw-r--r--sigmodr/models/MoveGroupModel.h2
-rw-r--r--sigmodr/models/MoveModel.cpp2
-rw-r--r--sigmodr/models/NatureGroupModel.cpp7
-rw-r--r--sigmodr/models/NatureGroupModel.h2
-rw-r--r--sigmodr/models/NatureModel.cpp2
-rw-r--r--sigmodr/models/RootModel.cpp5
-rw-r--r--sigmodr/models/RootModel.h2
-rw-r--r--sigmodr/models/SigmodModel.cpp46
-rw-r--r--sigmodr/models/SkinGroupModel.cpp7
-rw-r--r--sigmodr/models/SkinGroupModel.h2
-rw-r--r--sigmodr/models/SkinModel.cpp2
-rw-r--r--sigmodr/models/SoundGroupModel.cpp7
-rw-r--r--sigmodr/models/SoundGroupModel.h2
-rw-r--r--sigmodr/models/SoundModel.cpp2
-rw-r--r--sigmodr/models/SpeciesAbilityGroupModel.cpp7
-rw-r--r--sigmodr/models/SpeciesAbilityGroupModel.h2
-rw-r--r--sigmodr/models/SpeciesAbilityModel.cpp2
-rw-r--r--sigmodr/models/SpeciesGroupModel.cpp7
-rw-r--r--sigmodr/models/SpeciesGroupModel.h2
-rw-r--r--sigmodr/models/SpeciesItemGroupModel.cpp7
-rw-r--r--sigmodr/models/SpeciesItemGroupModel.h2
-rw-r--r--sigmodr/models/SpeciesItemModel.cpp2
-rw-r--r--sigmodr/models/SpeciesModel.cpp8
-rw-r--r--sigmodr/models/SpeciesMoveGroupModel.cpp7
-rw-r--r--sigmodr/models/SpeciesMoveGroupModel.h2
-rw-r--r--sigmodr/models/SpeciesMoveModel.cpp2
-rw-r--r--sigmodr/models/SpriteGroupModel.cpp7
-rw-r--r--sigmodr/models/SpriteGroupModel.h2
-rw-r--r--sigmodr/models/SpriteModel.cpp2
-rw-r--r--sigmodr/models/StatusGroupModel.cpp7
-rw-r--r--sigmodr/models/StatusGroupModel.h2
-rw-r--r--sigmodr/models/StatusModel.cpp2
-rw-r--r--sigmodr/models/StoreGroupModel.cpp7
-rw-r--r--sigmodr/models/StoreGroupModel.h2
-rw-r--r--sigmodr/models/StoreModel.cpp2
-rw-r--r--sigmodr/models/TileGroupModel.cpp7
-rw-r--r--sigmodr/models/TileGroupModel.h2
-rw-r--r--sigmodr/models/TileModel.cpp2
-rw-r--r--sigmodr/models/TimeGroupModel.cpp7
-rw-r--r--sigmodr/models/TimeGroupModel.h2
-rw-r--r--sigmodr/models/TimeModel.cpp2
-rw-r--r--sigmodr/models/TrainerGroupModel.cpp7
-rw-r--r--sigmodr/models/TrainerGroupModel.h2
-rw-r--r--sigmodr/models/TrainerModel.cpp2
-rw-r--r--sigmodr/models/TypeGroupModel.cpp7
-rw-r--r--sigmodr/models/TypeGroupModel.h2
-rw-r--r--sigmodr/models/TypeModel.cpp2
-rw-r--r--sigmodr/models/WeatherGroupModel.cpp7
-rw-r--r--sigmodr/models/WeatherGroupModel.h2
-rw-r--r--sigmodr/models/WeatherModel.cpp2
123 files changed, 567 insertions, 315 deletions
diff --git a/Changelog b/Changelog
index 259e74d1..bb51eae7 100644
--- a/Changelog
+++ b/Changelog
@@ -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);
}