diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2016-01-01 00:23:15 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-01-01 00:55:25 -0800 |
commit | 2c28b16b26bd917670f84102d6535abf99a30d4d (patch) | |
tree | 6b9a4757e3f872f7656b6a4e089c7139d4be723b /qt-mobile | |
parent | 7f628404e698b930cd47258daea4a481bc744c72 (diff) | |
download | subsurface-2c28b16b26bd917670f84102d6535abf99a30d4d.tar.gz |
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>
Diffstat (limited to 'qt-mobile')
-rw-r--r-- | qt-mobile/qml/DiveDetails.qml | 2 | ||||
-rw-r--r-- | qt-mobile/qml/DiveDetailsEdit.qml | 11 | ||||
-rw-r--r-- | qt-mobile/qmlmanager.cpp | 29 |
3 files changed, 40 insertions, 2 deletions
diff --git a/qt-mobile/qml/DiveDetails.qml b/qt-mobile/qml/DiveDetails.qml index 9d6e0b91d..4b0ee8e23 100644 --- a/qt-mobile/qml/DiveDetails.qml +++ b/qt-mobile/qml/DiveDetails.qml @@ -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 diff --git a/qt-mobile/qml/DiveDetailsEdit.qml b/qt-mobile/qml/DiveDetailsEdit.qml index 4ed90cd2d..e77b3234a 100644 --- a/qt-mobile/qml/DiveDetailsEdit.qml +++ b/qt-mobile/qml/DiveDetailsEdit.qml @@ -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 @@ -50,6 +51,16 @@ Item { 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:" } TextField { diff --git a/qt-mobile/qmlmanager.cpp b/qt-mobile/qmlmanager.cpp index 7454dcd5d..d711e8945 100644 --- a/qt-mobile/qmlmanager.cpp +++ b/qt-mobile/qmlmanager.cpp @@ -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"))) |