aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-09-26 13:37:44 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-09-27 16:33:37 -0700
commit649ac1f83a7c2a5254363682c2c7cce9fd680ffe (patch)
tree2ed124dfded9393aa01488054f7309604bea3886
parentf0fc1f3a56d7b4ace484d79d43089bceb64de777 (diff)
downloadsubsurface-649ac1f83a7c2a5254363682c2c7cce9fd680ffe.tar.gz
Mobile: clear dive data via model
Clearing the dive data directly in the core leaves us with an inconsistent model. Therefore, clear via the model. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r--mobile-widgets/qmlmanager.cpp4
-rw-r--r--qt-models/divelistmodel.cpp7
-rw-r--r--qt-models/divelistmodel.h1
3 files changed, 10 insertions, 2 deletions
diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp
index 858f2c730..126cca7b8 100644
--- a/mobile-widgets/qmlmanager.cpp
+++ b/mobile-widgets/qmlmanager.cpp
@@ -277,7 +277,7 @@ void QMLManager::applicationStateChanged(Qt::ApplicationState state)
void QMLManager::openLocalThenRemote(QString url)
{
- clear_dive_file_data();
+ DiveListModel::instance()->clear();
setNotificationText(tr("Open local dive data file"));
QByteArray fileNamePrt = QFile::encodeName(url);
bool glo = git_local_only;
@@ -730,7 +730,7 @@ void QMLManager::loadDivesWithValidCredentials()
// if we aren't switching from no-cloud mode, let's clear the dive data
if (!noCloudToCloud) {
appendTextToLog("Clear out in memory dive data");
- clear_dive_file_data();
+ DiveListModel::instance()->clear();
} else {
appendTextToLog("Switching from no cloud mode; keep in memory dive data");
}
diff --git a/qt-models/divelistmodel.cpp b/qt-models/divelistmodel.cpp
index 779e695ab..6f7d69412 100644
--- a/qt-models/divelistmodel.cpp
+++ b/qt-models/divelistmodel.cpp
@@ -171,6 +171,13 @@ void DiveListModel::updateDive(int i, dive *d)
insertDive(i);
}
+void DiveListModel::clear()
+{
+ beginResetModel();
+ clear_dive_file_data();
+ endResetModel();
+}
+
void DiveListModel::reload()
{
beginResetModel();
diff --git a/qt-models/divelistmodel.h b/qt-models/divelistmodel.h
index d6eb07463..686dcd1c3 100644
--- a/qt-models/divelistmodel.h
+++ b/qt-models/divelistmodel.h
@@ -62,6 +62,7 @@ public:
QHash<int, QByteArray> roleNames() const;
QString startAddDive();
void resetInternalData();
+ void clear(); // Clear all dives in core
Q_INVOKABLE DiveObjectHelper at(int i);
private:
static DiveListModel *m_instance;