diff options
-rw-r--r-- | qt-mobile/qml/DiveDetails.qml | 3 | ||||
-rw-r--r-- | qt-mobile/qmlmanager.cpp | 21 | ||||
-rw-r--r-- | qt-mobile/qmlmanager.h | 2 |
3 files changed, 23 insertions, 3 deletions
diff --git a/qt-mobile/qml/DiveDetails.qml b/qt-mobile/qml/DiveDetails.qml index a99aa628c..27a8996da 100644 --- a/qt-mobile/qml/DiveDetails.qml +++ b/qt-mobile/qml/DiveDetails.qml @@ -52,9 +52,10 @@ MobileComponents.Page { iconName: checked ? "view-readermode" : "document-edit" onTriggered: { if (diveDetailsWindow.state == "edit") { - manager.commitChanges(dive_id, detailsEdit.locationText, detailsEdit.gpsText, detailsEdit.durationText, + manager.commitChanges(dive_id, detailsEdit.dateText, detailsEdit.locationText, detailsEdit.gpsText, detailsEdit.durationText, detailsEdit.depthText, detailsEdit.airtempText, detailsEdit.watertempText, detailsEdit.suitText, detailsEdit.buddyText, detailsEdit.divemasterText, detailsEdit.notesText) + date = detailsEdit.dateText location = detailsEdit.locationText // gps = detailsEdit.gps duration = detailsEdit.durationText diff --git a/qt-mobile/qmlmanager.cpp b/qt-mobile/qmlmanager.cpp index 90293e8bf..9b6911b3a 100644 --- a/qt-mobile/qmlmanager.cpp +++ b/qt-mobile/qmlmanager.cpp @@ -303,7 +303,7 @@ void QMLManager::loadDivesWithValidCredentials() setLoadFromCloud(true); } -void QMLManager::commitChanges(QString diveId, QString location, QString gps, QString duration, QString depth, +void 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) { struct dive *d = get_dive_by_uniq_id(diveId.toInt()); @@ -315,6 +315,25 @@ void QMLManager::commitChanges(QString diveId, QString location, QString gps, QS } bool diveChanged = false; + if (date != get_dive_date_string(d->when)) { + diveChanged = true; + QDateTime newDate; + // what a pain - Qt will not parse dates if the day of the week is incorrect + // so if the user changed the date but didn't update the day of the week (most likely behavior, actually), + // we need to make sure we don't try to parse that + QString format(QString(prefs.date_format) + " " + prefs.time_format); + if (format.contains("ddd") || format.contains("dddd")) { + QString dateFormatToDrop = format.contains("ddd") ? "ddd" : "dddd"; + QDateTime ts; + QLocale loc = getLocale(); + ts.setMSecsSinceEpoch(d->when * 1000L); + QString drop = loc.toString(ts.toUTC(), dateFormatToDrop); + format.replace(dateFormatToDrop, ""); + date.replace(drop, ""); + } + newDate = QDateTime::fromString(date, format); + d->when = newDate.toMSecsSinceEpoch() / 1000 + gettimezoneoffset(newDate.toMSecsSinceEpoch() / 1000); + } struct dive_site *ds = get_dive_site_by_uuid(d->dive_site_uuid); char *locationtext = NULL; if (ds) diff --git a/qt-mobile/qmlmanager.h b/qt-mobile/qmlmanager.h index 097aca3a2..24ca265e6 100644 --- a/qt-mobile/qmlmanager.h +++ b/qt-mobile/qmlmanager.h @@ -71,7 +71,7 @@ public slots: void loadDivesWithValidCredentials(); void loadDiveProgress(int percent); void provideAuth(QNetworkReply *reply, QAuthenticator *auth); - void commitChanges(QString diveId, QString location, QString gps, QString duration, QString depth, + void 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); void saveChanges(); QString addDive(); |