Mobile: provide better tracking of applied GPS fixes

Also reset the page stack to make sure we don't end up with stale data.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2019-10-22 21:57:02 -04:00
parent 4c55074bd7
commit bf6a644fc6
4 changed files with 15 additions and 7 deletions

View file

@ -225,14 +225,14 @@ static void copy_gps_location(struct gpsTracker &gps, struct dive *d)
#define SET_LOCATION(_dive, _gpsfix, _mark) \
{ \
copy_gps_location(_gpsfix, _dive); \
changed = true; \
changed++; \
last = _mark; \
}
bool GpsLocation::applyLocations()
int GpsLocation::applyLocations()
{
int i;
bool changed = false;
int changed = 0;
int last = 0;
int cnt = m_trackers.count();
if (cnt == 0)
@ -317,7 +317,7 @@ bool GpsLocation::applyLocations()
}
}
if (changed)
if (changed > 0)
mark_divelist_changed(true);
return changed;
}

View file

@ -27,7 +27,7 @@ public:
~GpsLocation();
static GpsLocation *instance();
static bool hasInstance();
bool applyLocations();
int applyLocations();
int getGpsNum() const;
bool hasLocationsSource();
QString currentPosition();

View file

@ -292,6 +292,10 @@ Kirigami.ApplicationWindow {
globalDrawer.close()
diveModel.resetInternalData()
manager.refreshDiveList()
while (pageStack.depth > 1) {
pageStack.pop()
}
pageStack.push(diveList)
}
}
Kirigami.Action {

View file

@ -1577,8 +1577,12 @@ QString QMLManager::getCurrentPosition()
void QMLManager::applyGpsData()
{
if (locationProvider->applyLocations())
refreshDiveList();
appendTextToLog("Applying GPS fiexs");
int cnt = locationProvider->applyLocations();
if (cnt == 0)
return;
appendTextToLog(QString("Attached %1 GPS fixes").arg(cnt));
refreshDiveList();
}
void QMLManager::populateGpsData()