diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2016-02-05 22:54:47 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-02-05 22:54:47 -0800 |
commit | a4ec5206017b668842d2b9b317300b94dcb43057 (patch) | |
tree | 1adb3927c00ad39336b21da2f300cdbcae6b877f /qt-mobile | |
parent | ad7fb80d0ac874e55ce91e5845f85aa12906941f (diff) | |
download | subsurface-a4ec5206017b668842d2b9b317300b94dcb43057.tar.gz |
QML UI: enable editing of weight
But only if there is only one weight system defined in the dive. Otherwise
display a read only text that explains that this cannot be edited.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-mobile')
-rw-r--r-- | qt-mobile/qml/DiveDetails.qml | 9 | ||||
-rw-r--r-- | qt-mobile/qml/DiveDetailsEdit.qml | 3 | ||||
-rw-r--r-- | qt-mobile/qmlmanager.cpp | 15 | ||||
-rw-r--r-- | qt-mobile/qmlmanager.h | 4 |
4 files changed, 26 insertions, 5 deletions
diff --git a/qt-mobile/qml/DiveDetails.qml b/qt-mobile/qml/DiveDetails.qml index aab113eef..ef51a71b2 100644 --- a/qt-mobile/qml/DiveDetails.qml +++ b/qt-mobile/qml/DiveDetails.qml @@ -70,7 +70,14 @@ MobileComponents.Page { buddy = diveDetailsListView.currentItem.modelData.dive.buddy divemaster = diveDetailsListView.currentItem.modelData.dive.divemaster notes = diveDetailsListView.currentItem.modelData.dive.notes - weight = diveDetailsListView.currentItem.modelData.dive.sumWeight + if (diveDetailsListView.currentItem.modelData.dive.singleWeight) { + // we have only one weight, go ahead, have fun and edit it + weight = diveDetailsListView.currentItem.modelData.dive.sumWeight + } else { + // careful when translating, this text is "magic" in DiveDetailsEdit.qml + weight = "cannot edit multiple weight systems" + } + diveDetailsPage.state = "edit" } } diff --git a/qt-mobile/qml/DiveDetailsEdit.qml b/qt-mobile/qml/DiveDetailsEdit.qml index 3acf8ba98..90ca304e5 100644 --- a/qt-mobile/qml/DiveDetailsEdit.qml +++ b/qt-mobile/qml/DiveDetailsEdit.qml @@ -139,6 +139,7 @@ Item { } TextField { id: txtWeight + readOnly: (text == "cannot edit multiple weight systems" ? true : false) Layout.fillWidth: true } @@ -167,7 +168,7 @@ Item { // apply the changes to the dive_table 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) + detailsEdit.buddyText, detailsEdit.divemasterText, detailsEdit.weightText, detailsEdit.notesText) // apply the changes to the dive detail view - since the edit could have changed the order // first make sure that we are looking at the correct dive - our model allows us to look // up the index based on the unique dive_id diff --git a/qt-mobile/qmlmanager.cpp b/qt-mobile/qmlmanager.cpp index f71e15100..bc0c99f4a 100644 --- a/qt-mobile/qmlmanager.cpp +++ b/qt-mobile/qmlmanager.cpp @@ -329,7 +329,7 @@ void QMLManager::refreshDiveList() // 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) + QString airtemp, QString watertemp, QString suit, QString buddy, QString diveMaster, QString weight, QString notes) { #define DROP_EMPTY_PLACEHOLDER(_s) if ((_s) == QLatin1Literal("--")) (_s).clear() @@ -341,6 +341,7 @@ QString QMLManager::commitChanges(QString diveId, QString date, QString location DROP_EMPTY_PLACEHOLDER(suit); DROP_EMPTY_PLACEHOLDER(buddy); DROP_EMPTY_PLACEHOLDER(diveMaster); + DROP_EMPTY_PLACEHOLDER(weight); DROP_EMPTY_PLACEHOLDER(notes); #undef DROP_EMPTY_PLACEHOLDER @@ -470,6 +471,18 @@ QString QMLManager::commitChanges(QString diveId, QString date, QString location prefs.units.temperature = units::FAHRENHEIT; d->watertemp.mkelvin = parseTemperatureToMkelvin(watertemp); } + // not sure what we'd do if there was more than one weight system + // defined - for now just ignore that case + if (weightsystem_none((void *)&d->weightsystem[1])) { + if (get_weight_string(d->weightsystem[0].weight, true) != weight) { + diveChanged = true; + if (weight.contains(tr("kg"))) + prefs.units.weight = units::KG; + else if (weight.contains(tr("lbs"))) + prefs.units.weight = units::LBS; + d->weightsystem[0].weight.grams = parseWeightToGrams(weight); + } + } if (!same_string(d->suit, qPrintable(suit))) { diveChanged = true; free(d->suit); diff --git a/qt-mobile/qmlmanager.h b/qt-mobile/qmlmanager.h index bb8bb693d..0f43f473c 100644 --- a/qt-mobile/qmlmanager.h +++ b/qt-mobile/qmlmanager.h @@ -70,10 +70,10 @@ public slots: void loadDivesWithValidCredentials(); void loadDiveProgress(int percent); void provideAuth(QNetworkReply *reply, QAuthenticator *auth); - QString commitChanges(QString diveId,QString date, QString location, + QString 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); + QString buddy, QString diveMaster, QString weight, QString notes); void saveChanges(); QString addDive(); |