QML UI: refresh divelist after GPS data was successfully applied

And create a helper to do so to make the code simpler.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2016-01-10 19:34:21 -08:00
parent 956b864319
commit 4f10f7f7ae
4 changed files with 19 additions and 9 deletions

View file

@ -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()

View file

@ -86,6 +86,7 @@ public slots:
QString getDate(QString diveId);
QString getCurrentPosition();
void deleteGpsFix(quint64 when);
void refreshDiveList();
private:
QString m_cloudUserName;

View file

@ -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

View file

@ -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();