| 
									
										
										
										
											2020-02-21 21:32:40 -08:00
										 |  |  | // SPDX-License-Identifier: GPL-2.0
 | 
					
						
							|  |  |  | import QtQuick 2.6 | 
					
						
							|  |  |  | import QtQuick.Controls 2.2 as Controls | 
					
						
							|  |  |  | import QtQuick.Layouts 1.2 | 
					
						
							|  |  |  | import org.subsurfacedivelog.mobile 1.0 | 
					
						
							|  |  |  | import org.kde.kirigami 2.4 as Kirigami | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Kirigami.Page { | 
					
						
							|  |  |  | 	id: tripEditPage | 
					
						
							|  |  |  | 	objectName: "TripDetails" | 
					
						
							| 
									
										
										
										
											2020-02-22 14:07:46 -08:00
										 |  |  | 	property string tripId | 
					
						
							| 
									
										
										
										
											2020-02-21 21:32:40 -08:00
										 |  |  | 	property string tripLocation | 
					
						
							|  |  |  | 	property string tripNotes | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	title: "" !== tripLocation ? tripLocation : qsTr("Trip details") | 
					
						
							|  |  |  | 	state: "view" | 
					
						
							| 
									
										
										
										
											2020-12-21 18:13:25 -08:00
										 |  |  | 	padding: Kirigami.Units.largeSpacing | 
					
						
							| 
									
										
										
										
											2020-02-21 21:32:40 -08:00
										 |  |  | 	background: Rectangle { color: subsurfaceTheme.backgroundColor } | 
					
						
							| 
									
										
										
										
											2020-12-22 15:02:39 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// we want to use our own colors for Kirigami, so let's define our colorset
 | 
					
						
							|  |  |  | 	Kirigami.Theme.inherit: false | 
					
						
							|  |  |  | 	Kirigami.Theme.colorSet: Kirigami.Theme.Button | 
					
						
							|  |  |  | 	Kirigami.Theme.backgroundColor: subsurfaceTheme.backgroundColor | 
					
						
							|  |  |  | 	Kirigami.Theme.textColor: subsurfaceTheme.textColor | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-22 14:07:46 -08:00
										 |  |  | 	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
 | 
					
						
							| 
									
										
										
										
											2020-11-24 15:55:24 -08:00
										 |  |  | 		if (parent) | 
					
						
							|  |  |  | 			width = parent.width | 
					
						
							| 
									
										
										
										
											2020-02-22 14:07:46 -08:00
										 |  |  | 		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 { | 
					
						
							| 
									
										
										
										
											2020-03-20 12:20:43 -07:00
										 |  |  | 			name: ":/icons/document-save.svg" | 
					
						
							| 
									
										
										
										
											2020-02-22 14:07:46 -08:00
										 |  |  | 			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) | 
					
						
							| 
									
										
										
										
											2020-03-21 09:46:04 -07:00
										 |  |  | 			Qt.inputMethod.hide() | 
					
						
							| 
									
										
										
										
											2020-03-26 11:48:47 -07:00
										 |  |  | 			pageStack.pop() | 
					
						
							| 
									
										
										
										
											2020-02-22 14:07:46 -08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	property QtObject cancelAction: Kirigami.Action { | 
					
						
							|  |  |  | 		text: qsTr("Cancel edit") | 
					
						
							|  |  |  | 		icon { | 
					
						
							|  |  |  | 			name: ":/icons/dialog-cancel.svg" | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		onTriggered: { | 
					
						
							|  |  |  | 			manager.appendTextToLog("Cancel trip details edit") | 
					
						
							|  |  |  | 			state = "view" | 
					
						
							| 
									
										
										
										
											2020-03-26 11:48:47 -07:00
										 |  |  | 			pageStack.pop() | 
					
						
							| 
									
										
										
										
											2020-02-22 14:07:46 -08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-21 21:32:40 -08:00
										 |  |  | 	Flickable { | 
					
						
							|  |  |  | 		id: tripEditFlickable | 
					
						
							|  |  |  | 		anchors.fill: parent | 
					
						
							|  |  |  | 		GridLayout { | 
					
						
							|  |  |  | 			columns: 2 | 
					
						
							|  |  |  | 			width: tripEditFlickable.width | 
					
						
							|  |  |  | 			TemplateLabel { | 
					
						
							|  |  |  | 				Layout.columnSpan: 2 | 
					
						
							|  |  |  | 				id: title | 
					
						
							| 
									
										
										
										
											2020-11-24 10:52:05 -08:00
										 |  |  | 				text: qsTr("Edit trip details") | 
					
						
							|  |  |  | 				font.pointSize: subsurfaceTheme.titlePointSize | 
					
						
							|  |  |  | 				font.bold: true | 
					
						
							| 
									
										
										
										
											2020-02-21 21:32:40 -08:00
										 |  |  | 			} | 
					
						
							|  |  |  | 			Rectangle { | 
					
						
							|  |  |  | 				id: spacer | 
					
						
							|  |  |  | 				Layout.columnSpan: 2 | 
					
						
							|  |  |  | 				color: subsurfaceTheme.backgroundColor | 
					
						
							|  |  |  | 				height: Kirigami.Units.gridUnit | 
					
						
							|  |  |  | 				width: 1 | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			TemplateLabel { | 
					
						
							|  |  |  | 				text: qsTr("Trip location:") | 
					
						
							|  |  |  | 				opacity: 0.6 | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			SsrfTextField { | 
					
						
							| 
									
										
										
										
											2020-02-22 14:07:46 -08:00
										 |  |  | 				id: tripLocationField | 
					
						
							| 
									
										
										
										
											2020-02-21 21:32:40 -08:00
										 |  |  | 				Layout.fillWidth: true | 
					
						
							|  |  |  | 				text: tripLocation | 
					
						
							|  |  |  | 				flickable: tripEditFlickable | 
					
						
							| 
									
										
										
										
											2020-02-22 14:07:46 -08:00
										 |  |  | 				onFocusChanged: { | 
					
						
							|  |  |  | 					tripEditPage.state = "edit" | 
					
						
							|  |  |  | 				} | 
					
						
							| 
									
										
										
										
											2020-02-21 21:32:40 -08:00
										 |  |  | 			} | 
					
						
							|  |  |  | 			TemplateLabel { | 
					
						
							|  |  |  | 				Layout.columnSpan: 2 | 
					
						
							|  |  |  | 				text: qsTr("Trip notes") | 
					
						
							|  |  |  | 				opacity: 0.6 | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			Controls.TextArea { | 
					
						
							| 
									
										
										
										
											2020-02-22 14:07:46 -08:00
										 |  |  | 				id: tripNotesField | 
					
						
							| 
									
										
										
										
											2020-02-21 21:32:40 -08:00
										 |  |  | 				text: tripNotes | 
					
						
							| 
									
										
										
										
											2020-02-22 14:07:46 -08:00
										 |  |  | 				textFormat: TextEdit.PlainText | 
					
						
							| 
									
										
										
										
											2020-12-21 14:01:08 -08:00
										 |  |  | 				color: subsurfaceTheme.textColor | 
					
						
							| 
									
										
										
										
											2020-02-21 21:32:40 -08:00
										 |  |  | 				Layout.columnSpan: 2 | 
					
						
							|  |  |  | 				Layout.fillWidth: true | 
					
						
							|  |  |  | 				Layout.fillHeight: true | 
					
						
							|  |  |  | 				Layout.minimumHeight: Kirigami.Units.gridUnit * 6 | 
					
						
							|  |  |  | 				selectByMouse: true | 
					
						
							|  |  |  | 				wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere | 
					
						
							| 
									
										
										
										
											2020-02-22 14:07:46 -08:00
										 |  |  | 				onActiveFocusChanged: { | 
					
						
							|  |  |  | 					tripEditPage.state = "edit" | 
					
						
							|  |  |  | 				} | 
					
						
							| 
									
										
										
										
											2020-02-21 21:32:40 -08:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |