QML UI: handle editing of duration

I don't think these regular expressions are sufficiently exhaustive - but this
is forward progress.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2016-01-01 00:23:15 -08:00
parent 7f628404e6
commit 2c28b16b26
3 changed files with 40 additions and 2 deletions

View file

@ -58,7 +58,7 @@ MobileComponents.Page {
detailsEdit.buddyText, detailsEdit.divemasterText, detailsEdit.notesText)
location = detailsEdit.locationText
// gps = detailsEdit.gps
// duration = detailsEdit.durationText
duration = detailsEdit.durationText
// depth = detailsEdit.depthText
airtemp = detailsEdit.airtempText
watertemp = detailsEdit.watertempText

View file

@ -15,6 +15,7 @@ Item {
property alias buddyText: txtBuddy.text
property alias divemasterText: txtDiveMaster.text
property alias notesText: txtNotes.text
property alias durationText: txtDuration.text
ColumnLayout {
anchors {
left: parent.left
@ -48,6 +49,16 @@ Item {
// (think of someone adding a dive while on the boat or
// at the dive site)
MobileComponents.Label {
Layout.alignment: Qt.AlignRight
text: "Duration:"
}
TextField {
id: txtDuration
text: duration
Layout.fillWidth: true
}
MobileComponents.Label {
Layout.alignment: Qt.AlignRight
text: "Air Temp:"

View file

@ -328,12 +328,39 @@ void QMLManager::commitChanges(QString diveId, QString location, QString gps, QS
ds = get_dive_site_by_uuid(create_dive_site(qPrintable(location), d->when));
d->dive_site_uuid = ds->uuid;
}
// now we need to handle the string representations of duration, depth
// now we need to handle the string representations of depth
// and do something useful...
//
// FIXME
//
// TODO
if (get_dive_duration_string(d->duration.seconds, tr("h:"), tr("min")) != duration) {
diveChanged = true;
int h = 0, m = 0, s = 0;
QRegExp r1(QString("(\\d*)%1[\\s,:]*(\\d*)%2[\\s,:]*(\\d*)%3").arg(tr("h")).arg(tr("min")).arg(tr("sec")), Qt::CaseInsensitive);
QRegExp r2(QString("(\\d*)%1[\\s,:]*(\\d*)%2").arg(tr("h")).arg(tr("min")), Qt::CaseInsensitive);
QRegExp r3(QString("(\\d*)%1").arg(tr("min")), Qt::CaseInsensitive);
QRegExp r4(QString("(\\d*):(\\d*):(\\d*)"));
QRegExp r5(QString("(\\d*):(\\d*)"));
if (r1.indexIn(duration) >= 0) {
h = r1.cap(1).toInt();
m = r1.cap(2).toInt();
s = r1.cap(3).toInt();
} else if (r2.indexIn(duration) >= 0) {
h = r2.cap(1).toInt();
m = r2.cap(2).toInt();
} else if (r3.indexIn(duration) >= 0) {
m = r3.cap(1).toInt();
} else if (r4.indexIn(duration) >= 0) {
h = r4.cap(1).toInt();
m = r4.cap(2).toInt();
s = r4.cap(3).toInt();
} else if (r5.indexIn(duration) >= 0) {
h = r5.cap(1).toInt();
m = r5.cap(2).toInt();
}
d->duration.seconds = h * 3600 + m * 60 + s;
}
if (get_temperature_string(d->airtemp) != airtemp) {
diveChanged = true;
if (airtemp.contains(tr("C")))