Mobile: save gasmixes

Same as for cylinder info, we need to make sure that the gasmixes gets saved to the correct cylinder.

Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
This commit is contained in:
Jocke 2018-08-06 09:29:00 +02:00 committed by Dirk Hohndel
parent 9c9450748b
commit 891e8acaa8
3 changed files with 23 additions and 12 deletions

View file

@ -73,18 +73,23 @@ Item {
// join cylinder info from separate string into a list. // join cylinder info from separate string into a list.
if (usedCyl[0] != null) { if (usedCyl[0] != null) {
usedCyl[0] = cylinderBox0.currentText usedCyl[0] = cylinderBox0.currentText
usedGas[0] = txtGasMix0.text
} }
if (usedCyl[1] != null) { if (usedCyl[1] != null) {
usedCyl[1] = cylinderBox1.currentText usedCyl[1] = cylinderBox1.currentText
usedGas[1] = txtGasMix0.text
} }
if (usedCyl[2] != null) { if (usedCyl[2] != null) {
usedCyl[2] = cylinderBox2.currentText usedCyl[2] = cylinderBox2.currentText
usedGas[2] = txtGasMix0.text
} }
if (usedCyl[3] != null) { if (usedCyl[3] != null) {
usedCyl[3] = cylinderBox3.currentText usedCyl[3] = cylinderBox3.currentText
usedGas[3] = txtGasMix0.text
} }
if (usedCyl[4] != null) { if (usedCyl[4] != null) {
usedCyl[4] = cylinderBox4.currentText usedCyl[4] = cylinderBox4.currentText
usedGas[4] = txtGasMix0.text
} }
// apply the changes to the dive_table // apply the changes to the dive_table
@ -93,7 +98,7 @@ Item {
suitBox.currentText != "" ? suitBox.currentText : suitBox.editText, buddyBox.editText, suitBox.currentText != "" ? suitBox.currentText : suitBox.editText, buddyBox.editText,
divemasterBox.currentText != "" ? divemasterBox.currentText : divemasterBox.editText, divemasterBox.currentText != "" ? divemasterBox.currentText : divemasterBox.editText,
detailsEdit.weightText, detailsEdit.notesText, detailsEdit.startpressureText, detailsEdit.weightText, detailsEdit.notesText, detailsEdit.startpressureText,
detailsEdit.endpressureText, detailsEdit.gasmixText, usedCyl , detailsEdit.endpressureText, usedGas, usedCyl ,
detailsEdit.rating, detailsEdit.rating,
detailsEdit.visibility) detailsEdit.visibility)
// trigger the profile to be redrawn // trigger the profile to be redrawn

View file

@ -1004,7 +1004,7 @@ bool QMLManager::checkDepth(DiveObjectHelper *myDive, dive *d, QString depth)
// update the dive and return the notes field, stripped of the HTML junk // update the dive and return the notes field, stripped of the HTML junk
void QMLManager::commitChanges(QString diveId, QString date, 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 weight, QString notes, QString airtemp, QString watertemp, QString suit, QString buddy, QString diveMaster, QString weight, QString notes,
QString startpressure, QString endpressure, QString gasmix, QStringList usedCylinder, int rating, int visibility) QString startpressure, QString endpressure, QStringList gasmix, QStringList usedCylinder, int rating, int visibility)
{ {
struct dive *d = get_dive_by_uniq_id(diveId.toInt()); struct dive *d = get_dive_by_uniq_id(diveId.toInt());
@ -1057,15 +1057,21 @@ void QMLManager::commitChanges(QString diveId, QString date, QString location, Q
} }
// gasmix for first cylinder // gasmix for first cylinder
if (myDive->firstGas() != gasmix) { if (myDive->firstGas() != gasmix) {
int o2 = parseGasMixO2(gasmix); for ( int i = 0, j = 0 ; j < gasmix.length() ; i++ ) {
int he = parseGasMixHE(gasmix); if (!is_cylinder_used(d, i))
// the QML code SHOULD only accept valid gas mixes, but just to make sure continue;
if (o2 >= 0 && o2 <= 1000 &&
he >= 0 && he <= 1000 && int o2 = parseGasMixO2(gasmix[j]);
o2 + he <= 1000) { int he = parseGasMixHE(gasmix[j]);
diveChanged = true; // the QML code SHOULD only accept valid gas mixes, but just to make sure
d->cylinder[0].gasmix.o2.permille = o2; if (o2 >= 0 && o2 <= 1000 &&
d->cylinder[0].gasmix.he.permille = he; he >= 0 && he <= 1000 &&
o2 + he <= 1000) {
diveChanged = true;
d->cylinder[i].gasmix.o2.permille = o2;
d->cylinder[i].gasmix.he.permille = he;
}
j++;
} }
} }
// info for first cylinder // info for first cylinder

View file

@ -158,7 +158,7 @@ public slots:
QString duration, QString depth, QString airtemp, QString duration, QString depth, QString airtemp,
QString watertemp, QString suit, QString buddy, QString watertemp, QString suit, QString buddy,
QString diveMaster, QString weight, QString notes, QString startpressure, QString diveMaster, QString weight, QString notes, QString startpressure,
QString endpressure, QString gasmix, QStringList usedCylinder, int rating, int visibility); QString endpressure, QStringList gasmix, QStringList usedCylinder, int rating, int visibility);
void changesNeedSaving(); void changesNeedSaving();
void openNoCloudRepo(); void openNoCloudRepo();
void saveChangesLocal(); void saveChangesLocal();