mobile: use undo-command to apply gps fixes

The goal is to send the signal for the correct dives / divesites
and thus not having to reload the whole model.

Right now the mobile UI does not yet catch the diveSiteChanged signals.

[Dirk Hohndel: small fix to ensure that we trigger a save to storage]

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Berthold Stoeger 2019-11-16 21:44:57 +01:00 committed by Dirk Hohndel
parent 93bdaa9bb5
commit c8ec2f5b1c
3 changed files with 5 additions and 23 deletions

View file

@ -310,23 +310,6 @@ std::vector<DiveAndLocation> GpsLocation::getLocations()
return fixes;
}
int GpsLocation::applyLocations()
{
std::vector<DiveAndLocation> fixes = getLocations();
for (DiveAndLocation &dl: fixes) {
struct dive_site *ds = dl.d->dive_site;
if (!ds) {
ds = create_dive_site(qPrintable(dl.name), &dive_site_table);
add_dive_to_dive_site(dl.d, ds);
invalidate_dive_cache(dl.d);
}
ds->location = dl.location;
}
if (!fixes.empty())
mark_divelist_changed(true);
return !fixes.empty();
}
QMap<qint64, gpsTracker> GpsLocation::currentGPSInfo() const
{
return m_trackers;

View file

@ -34,7 +34,6 @@ public:
static GpsLocation *instance();
static bool hasInstance();
std::vector<DiveAndLocation> getLocations();
int applyLocations();
int getGpsNum() const;
bool hasLocationsSource();
QString currentPosition();

View file

@ -1572,11 +1572,11 @@ QString QMLManager::getCurrentPosition()
void QMLManager::applyGpsData()
{
appendTextToLog("Applying GPS fiexs");
int cnt = locationProvider->applyLocations();
if (cnt == 0)
return;
appendTextToLog(QString("Attached %1 GPS fixes").arg(cnt));
refreshDiveList();
std::vector<DiveAndLocation> fixes = locationProvider->getLocations();
Command::applyGPSFixes(fixes);
appendTextToLog(QString("Attached %1 GPS fixes").arg(fixes.size()));
if (fixes.size())
changesNeedSaving();
}
void QMLManager::populateGpsData()