QML UI: enable edit of gasmix

First cylinder only, show warning if there are more than one cylinder defined.

Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Joakim Bygdell 2016-02-13 18:34:31 +01:00 committed by Dirk Hohndel
parent 8cc4463a1a
commit ae116c5bc8
5 changed files with 25 additions and 3 deletions

View file

@ -24,6 +24,7 @@ MobileComponents.Page {
property alias weight: detailsEdit.weightText
property alias startpressure: detailsEdit.startpressureText
property alias endpressure: detailsEdit.endpressureText
property alias gasmix: detailsEdit.gasmixText
state: "view"
@ -128,10 +129,12 @@ MobileComponents.Page {
if (diveDetailsListView.currentItem.modelData.dive.getCylinder != "Multiple" ) {
startpressure = diveDetailsListView.currentItem.modelData.dive.startPressure
endpressure = diveDetailsListView.currentItem.modelData.dive.endPressure
gasmix = diveDetailsListView.currentItem.modelData.dive.firstGas
} else {
// careful when translating, this text is "magic" in DiveDetailsEdit.qml
startpressure = "cannot edit multiple cylinders"
endpressure = "cannot edit multiple cylinders"
gasmix = "cannot edit multiple gases"
}
diveDetailsPage.state = "edit"

View file

@ -24,6 +24,7 @@ Item {
property alias weightText: txtWeight.text
property alias startpressureText: txtStartPressure.text
property alias endpressureText: txtEndPressure.text
property alias gasmixText: txtGasMix.text
height: editArea.height
ColumnLayout {
@ -145,6 +146,16 @@ Item {
Layout.fillWidth: true
}
MobileComponents.Label {
Layout.alignment: Qt.AlignRight
text: "Gas mix:"
}
TextField {
id: txtGasMix
readOnly: (text == "cannot edit multiple gases" ? true : false)
Layout.fillWidth: true
}
MobileComponents.Label {
Layout.alignment: Qt.AlignRight
text: "Start Pressure:"
@ -192,7 +203,7 @@ Item {
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.weightText, detailsEdit.notesText,
detailsEdit.startpressureText, detailsEdit.endpressureText)
detailsEdit.startpressureText, detailsEdit.endpressureText, detailsEdit.gasmixText)
// 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

View file

@ -84,6 +84,7 @@ MobileComponents.ApplicationWindow {
detailsWindow.duration = ""
detailsWindow.suit = ""
detailsWindow.weight = ""
detailsWindow.gasmix = ""
detailsWindow.startpressure = ""
detailsWindow.endpressure = ""
stackView.push(detailsWindow)

View file

@ -353,7 +353,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 weight, QString notes,
QString startpressure, QString endpressure)
QString startpressure, QString endpressure, QString gasmix)
{
#define DROP_EMPTY_PLACEHOLDER(_s) if ((_s) == QLatin1Literal("--")) (_s).clear()
@ -366,6 +366,7 @@ QString QMLManager::commitChanges(QString diveId, QString date, QString location
DROP_EMPTY_PLACEHOLDER(buddy);
DROP_EMPTY_PLACEHOLDER(diveMaster);
DROP_EMPTY_PLACEHOLDER(weight);
DROP_EMPTY_PLACEHOLDER(gasmix);
DROP_EMPTY_PLACEHOLDER(startpressure);
DROP_EMPTY_PLACEHOLDER(endpressure);
DROP_EMPTY_PLACEHOLDER(notes);
@ -514,6 +515,12 @@ QString QMLManager::commitChanges(QString diveId, QString date, QString location
d->cylinder[0].start.mbar = parsePressureToMbar(startpressure);
d->cylinder[0].end.mbar = parsePressureToMbar(endpressure);
}
// gasmix for first cylinder
if (get_gas_string(d->cylinder[0].gasmix) != gasmix) {
diveChanged = true;
d->cylinder[0].gasmix.o2.permille = parseGasMixO2(gasmix);
d->cylinder[0].gasmix.he.permille = parseGasMixHE(gasmix);
}
if (!same_string(d->suit, qPrintable(suit))) {
diveChanged = true;
free(d->suit);

View file

@ -88,7 +88,7 @@ public slots:
QString gps, QString duration, QString depth,
QString airtemp, QString watertemp, QString suit,
QString buddy, QString diveMaster, QString weight, QString notes,
QString startpressure, QString endpressure);
QString startpressure, QString endpressure, QString gasmix);
void saveChanges();
QString addDive();