aboutsummaryrefslogtreecommitdiffstats
path: root/qt-mobile
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2016-02-05 22:54:47 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-02-05 22:54:47 -0800
commita4ec5206017b668842d2b9b317300b94dcb43057 (patch)
tree1adb3927c00ad39336b21da2f300cdbcae6b877f /qt-mobile
parentad7fb80d0ac874e55ce91e5845f85aa12906941f (diff)
downloadsubsurface-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.qml9
-rw-r--r--qt-mobile/qml/DiveDetailsEdit.qml3
-rw-r--r--qt-mobile/qmlmanager.cpp15
-rw-r--r--qt-mobile/qmlmanager.h4
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();