diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2013-11-15 21:08:25 -0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-11-15 15:13:53 -0800 |
commit | 8827ea6f5d029e6b433ed5622ac7258db512f0ae (patch) | |
tree | fde14be0625b4826f5dcdf70c126ca57263a4ee1 /qt-ui/models.cpp | |
parent | 06bf0e1849559e0109c419beae627b44f477dc88 (diff) | |
download | subsurface-8827ea6f5d029e6b433ed5622ac7258db512f0ae.tar.gz |
This moves the removal code to the model.
It's very important when programming via Model/View, in gtk or qt,
to not mess with the model data outside of the model. We were
deleting stuff that the model controlled outside of the model, so
it thought that there was still data there. This fixes the deletion
part, but there are also lots of other parts that I'll tackle in
the next commits.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/models.cpp')
-rw-r--r-- | qt-ui/models.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp index 14c3cb5ea..dd69e45c2 100644 --- a/qt-ui/models.cpp +++ b/qt-ui/models.cpp @@ -1198,6 +1198,23 @@ QVariant DiveComputerModel::data(const QModelIndex& index, int role) const return ret; } +void DiveTripModel::deleteSelectedDives() +{ + // after a dive is deleted the ones following it move forward in the dive_table + // so instead of using the for_each_dive macro I'm using an explicit for loop + // to make this easier to understand + beginRemoveRows(index(0,0), 0, rowCount()-1); + for (int i = 0; i < dive_table.nr; i++) { + struct dive *d = get_dive(i); + if (!d->selected) + continue; + delete_single_dive(i); + i--; // so the next dive isn't skipped... it's now #i + } + endRemoveRows(); + setupModelData(); +} + int DiveComputerModel::rowCount(const QModelIndex& parent) const { return numRows; |