diff options
-rw-r--r-- | qt-mobile/qmlmanager.cpp | 20 | ||||
-rw-r--r-- | qt-mobile/qmlmanager.h | 1 | ||||
-rw-r--r-- | subsurface-core/gpslocation.cpp | 5 | ||||
-rw-r--r-- | subsurface-core/gpslocation.h | 2 |
4 files changed, 19 insertions, 9 deletions
diff --git a/qt-mobile/qmlmanager.cpp b/qt-mobile/qmlmanager.cpp index df20de11d..7d50884ab 100644 --- a/qt-mobile/qmlmanager.cpp +++ b/qt-mobile/qmlmanager.cpp @@ -312,6 +312,17 @@ void QMLManager::loadDivesWithValidCredentials() setLoadFromCloud(true); } +void QMLManager::refreshDiveList() +{ + int i; + struct dive *d; + DiveListModel::instance()->clear(); + for_each_dive(i, d) { + DiveListModel::instance()->addDive(d); + } + +} + // update the dive and return the notes field, stripped of the HTML junk QString QMLManager::commitChanges(QString diveId, QString date, QString location, QString gps, QString duration, QString depth, QString airtemp, QString watertemp, QString suit, QString buddy, QString diveMaster, QString notes) @@ -455,11 +466,7 @@ QString QMLManager::commitChanges(QString diveId, QString date, QString location if (needResort) sort_table(&dive_table); if (diveChanged || needResort) { - int i; - DiveListModel::instance()->clear(); - for_each_dive(i, d) { - DiveListModel::instance()->addDive(d); - } + refreshDiveList(); mark_divelist_changed(true); } return notes; @@ -501,7 +508,8 @@ QString QMLManager::getCurrentPosition() void QMLManager::applyGpsData() { - locationProvider->applyLocations(); + if (locationProvider->applyLocations()) + refreshDiveList(); } void QMLManager::sendGpsData() diff --git a/qt-mobile/qmlmanager.h b/qt-mobile/qmlmanager.h index 05dae9925..e346e02f3 100644 --- a/qt-mobile/qmlmanager.h +++ b/qt-mobile/qmlmanager.h @@ -86,6 +86,7 @@ public slots: QString getDate(QString diveId); QString getCurrentPosition(); void deleteGpsFix(quint64 when); + void refreshDiveList(); private: QString m_cloudUserName; diff --git a/subsurface-core/gpslocation.cpp b/subsurface-core/gpslocation.cpp index 361a1b23c..e5f38dc1d 100644 --- a/subsurface-core/gpslocation.cpp +++ b/subsurface-core/gpslocation.cpp @@ -208,14 +208,14 @@ static void copy_gps_location(struct gpsTracker &gps, struct dive *d) } #define SAME_GROUP 6 * 3600 /* six hours */ -void GpsLocation::applyLocations() +bool GpsLocation::applyLocations() { int i; bool changed = false; int last = 0; int cnt = m_trackers.count(); if (cnt == 0) - return; + return false; // create a table with the GPS information QList<struct gpsTracker> gpsTable = m_trackers.values(); @@ -317,6 +317,7 @@ void GpsLocation::applyLocations() } if (changed) mark_divelist_changed(true); + return changed; } QMap<qint64, gpsTracker> GpsLocation::currentGPSInfo() const diff --git a/subsurface-core/gpslocation.h b/subsurface-core/gpslocation.h index 20ed26ed9..0e183d9f8 100644 --- a/subsurface-core/gpslocation.h +++ b/subsurface-core/gpslocation.h @@ -25,7 +25,7 @@ public: GpsLocation(void (*showMsgCB)(const char *msg), QObject *parent); ~GpsLocation(); static GpsLocation *instance(); - void applyLocations(); + bool applyLocations(); int getGpsNum() const; QString getUserid(QString user, QString passwd); bool hasLocationsSource(); |