summaryrefslogtreecommitdiffstats
path: root/qt-models/divelocationmodel.cpp
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@gmail.com>2015-06-01 23:13:51 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-06-01 21:36:48 -0700
commit6cd85d9b731ef646b605d483dbbcddbc70283338 (patch)
treeacb08cd7f45fbcf375a7f41525fb102ebd9fdbd0 /qt-models/divelocationmodel.cpp
parentee9746c622e84ed8385c8bbd0e6ffa61f4c813a4 (diff)
downloadsubsurface-6cd85d9b731ef646b605d483dbbcddbc70283338.tar.gz
Simplify model handling and crashes fixes
So, there's only one crash left (that I put a big TODO: on the maintab.cpp about) and I'll fix it tomorrow as it's quite late here and I'm almost sleeping at the keyboard. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-models/divelocationmodel.cpp')
-rw-r--r--qt-models/divelocationmodel.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/qt-models/divelocationmodel.cpp b/qt-models/divelocationmodel.cpp
index 42f283f1e..edf15b707 100644
--- a/qt-models/divelocationmodel.cpp
+++ b/qt-models/divelocationmodel.cpp
@@ -39,16 +39,10 @@ QVariant LocationInformationModel::data(const QModelIndex &index, int role) cons
void LocationInformationModel::update()
{
- if (rowCount()) {
- beginRemoveRows(QModelIndex(), 0, rowCount()-1);
- endRemoveRows();
- }
- if (dive_site_table.nr) {
- beginInsertRows(QModelIndex(), 0, dive_site_table.nr);
- internalRowCount = dive_site_table.nr;
- std::sort(dive_site_table.dive_sites, dive_site_table.dive_sites + dive_site_table.nr, dive_site_less_than);
- endInsertRows();
- }
+ beginResetModel();
+ internalRowCount = dive_site_table.nr;
+ std::sort(dive_site_table.dive_sites, dive_site_table.dive_sites + dive_site_table.nr, dive_site_less_than);
+ endResetModel();
}
int32_t LocationInformationModel::addDiveSite(const QString& name, int lon, int lat)
@@ -76,3 +70,14 @@ bool LocationInformationModel::setData(const QModelIndex &index, const QVariant
emit dataChanged(index, index);
return true;
}
+
+bool LocationInformationModel::removeRows(int row, int count, const QModelIndex & parent) {
+ if(row >= rowCount())
+ return false;
+
+ beginRemoveRows(QModelIndex(), row, row);
+ struct dive_site *ds = get_dive_site(row);
+ delete_dive_site(ds->uuid);
+ endRemoveRows();
+ return true;
+}