diff options
Diffstat (limited to 'mobile-widgets/qml/TripDetails.qml')
-rw-r--r-- | mobile-widgets/qml/TripDetails.qml | 66 |
1 files changed, 64 insertions, 2 deletions
diff --git a/mobile-widgets/qml/TripDetails.qml b/mobile-widgets/qml/TripDetails.qml index 7f0a69be0..eca51653d 100644 --- a/mobile-widgets/qml/TripDetails.qml +++ b/mobile-widgets/qml/TripDetails.qml @@ -8,6 +8,7 @@ import org.kde.kirigami 2.4 as Kirigami Kirigami.Page { id: tripEditPage objectName: "TripDetails" + property string tripId property string tripLocation property string tripNotes @@ -15,7 +16,60 @@ Kirigami.Page { state: "view" padding: Kirigami.largeSpacing background: Rectangle { color: subsurfaceTheme.backgroundColor } - width: rootItem.colWidth + actions.main: saveAction + actions.right: cancelAction + onVisibleChanged: { + resetState() + } + onTripIdChanged: { + resetState() + } + + function resetState() { + // make sure we have the right width and reset focus / state if there aren't any unsaved changes + width = parent.width + if (tripLocation === tripLocationField.text && tripNotes === tripNotesField.text) { + tripLocationField.focus = false + tripNotesField.focus = false + state = "view" + } + + } + + states: [ + State { + name: "view" + PropertyChanges { target: saveAction; enabled: false } + }, + State { + name: "edit" + PropertyChanges { target: saveAction; enabled: true } + } + ] + + property QtObject saveAction: Kirigami.Action { + icon { + name: subsurfaceTheme.iconStyle + "/document-save.svg" + color: enabled ? subsurfaceTheme.primaryColor : subsurfaceTheme.backgroundColor + } + text: enabled ? qsTr("Save edits") : "" + onTriggered: { + manager.appendTextToLog("Save trip details triggered") + manager.updateTripDetails(tripId, tripLocationField.text, tripNotesField.text) + } + } + property QtObject cancelAction: Kirigami.Action { + text: qsTr("Cancel edit") + icon { + name: ":/icons/dialog-cancel.svg" + } + onTriggered: { + manager.appendTextToLog("Cancel trip details edit") + state = "view" + pageStack.pop("TripDetails") + } + } + Flickable { id: tripEditFlickable anchors.fill: parent @@ -42,9 +96,13 @@ Kirigami.Page { opacity: 0.6 } SsrfTextField { + id: tripLocationField Layout.fillWidth: true text: tripLocation flickable: tripEditFlickable + onFocusChanged: { + tripEditPage.state = "edit" + } } TemplateLabel { Layout.columnSpan: 2 @@ -52,14 +110,18 @@ Kirigami.Page { opacity: 0.6 } Controls.TextArea { + id: tripNotesField text: tripNotes - textFormat: TextEdit.RichText + textFormat: TextEdit.PlainText Layout.columnSpan: 2 Layout.fillWidth: true Layout.fillHeight: true Layout.minimumHeight: Kirigami.Units.gridUnit * 6 selectByMouse: true wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere + onActiveFocusChanged: { + tripEditPage.state = "edit" + } } } } |