summaryrefslogblamecommitdiffstats
path: root/qt-mobile/qml/DiveDetailsEdit.qml
blob: 0ae67468159b31662c6df04803b7312c6ab9f1ae (plain) (tree)
1
2
3
4
5
6
7
8
9







                                                              

                            
                                             






                                                         
                                                     
                                               
                                                 
 
                               
                      
                            
                                                            
                                                                                        






                                                    






                                                               
                                                      
                         



                                                               
                                                

                                                      


                                                                               









                                                                                      
 
                                                               


                                              


                                                               


                                                 



                                                               


                                                 







                                                               




                                                               

                                           







                                                               







                                                               


                                                      







                                                               
                                                              

                                              
                                                    
                                            
                                                             






                                                                                         
                                  





                                                                                                                                                             


                                                                                                                          








                                                                                                                 
                                                              
                         



                                                                                                                     
 
import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
import org.subsurfacedivelog.mobile 1.0
import org.kde.plasma.mobilecomponents 0.2 as MobileComponents

Item {
	id: detailsEdit
	property int dive_id
	property int number
	property alias dateText: txtDate.text
	property alias locationText: txtLocation.text
	property string gpsText
	property alias airtempText: txtAirTemp.text
	property alias watertempText: txtWaterTemp.text
	property alias suitText: txtSuit.text
	property alias buddyText: txtBuddy.text
	property alias divemasterText: txtDiveMaster.text
	property alias notesText: txtNotes.text
	property alias durationText: txtDuration.text
	property alias depthText: txtDepth.text
	property alias weightText: txtWeight.text

	height: editArea.height
	ColumnLayout {
		id: editArea
		spacing: MobileComponents.Units.smallSpacing
		width: subsurfaceTheme.columnWidth - 2 * MobileComponents.Units.gridUnit

		GridLayout {
			id: editorDetails
			width: parent.width
			columns: 2

			MobileComponents.Heading {
				Layout.columnSpan: 2
				text: "Dive " + number
			}
			MobileComponents.Label {
				Layout.alignment: Qt.AlignRight
				text: "Date:"
			}
			TextField {
				id: txtDate;
				Layout.fillWidth: true
			}
			MobileComponents.Label {
				Layout.alignment: Qt.AlignRight
				text: "Location:"
			}
			TextField {
				id: txtLocation;
				Layout.fillWidth: true
			}

			// we should add a checkbox here that allows the user
			// to add the current location as the dive location
			// (think of someone adding a dive while on the boat or
			//  at the dive site)
			MobileComponents.Label {
				Layout.alignment: Qt.AlignRight
				text: "Use current\nGPS location:"
			}
			CheckBox {
				id: checkboxGPS
				onCheckedChanged: {
					if (checked)
						gpsText = manager.getCurrentPosition()
				}
			}

			MobileComponents.Label {
				Layout.alignment: Qt.AlignRight
				text: "Depth:"
			}
			TextField {
				id: txtDepth
				Layout.fillWidth: true
			}
			MobileComponents.Label {
				Layout.alignment: Qt.AlignRight
				text: "Duration:"
			}
			TextField {
				id: txtDuration
				Layout.fillWidth: true
			}

			MobileComponents.Label {
				Layout.alignment: Qt.AlignRight
				text: "Air Temp:"
			}
			TextField {
				id: txtAirTemp
				Layout.fillWidth: true
			}

			MobileComponents.Label {
				Layout.alignment: Qt.AlignRight
				text: "Water Temp:"
			}
			TextField {
				id: txtWaterTemp
				Layout.fillWidth: true
			}

			MobileComponents.Label {
				Layout.alignment: Qt.AlignRight
				text: "Suit:"
			}
			TextField {
				id: txtSuit
				Layout.fillWidth: true
			}

			MobileComponents.Label {
				Layout.alignment: Qt.AlignRight
				text: "Buddy:"
			}
			TextField {
				id: txtBuddy
				Layout.fillWidth: true
			}

			MobileComponents.Label {
				Layout.alignment: Qt.AlignRight
				text: "Dive Master:"
			}
			TextField {
				id: txtDiveMaster
				Layout.fillWidth: true
			}

			MobileComponents.Label {
				Layout.alignment: Qt.AlignRight
				text: "Weight:"
			}
			TextField {
				id: txtWeight
				Layout.fillWidth: true
			}

			MobileComponents.Label {
				Layout.columnSpan: 2
				Layout.alignment: Qt.AlignLeft
				text: "Notes:"
			}
			TextArea {
				Layout.columnSpan: 2
				width: parent.width
				id: txtNotes
				textFormat: TextEdit.RichText
				focus: true
				Layout.fillWidth: true
				Layout.fillHeight: true
				Layout.minimumHeight: MobileComponents.Units.gridUnit * 6
				selectByMouse: true
				wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
			}
		}
		SubsurfaceButton {
			anchors.horizontalCenter: parent.horizontalCenter
			text: "Save"
			onClicked: {
				// apply the changes to the dive_table
				manager.commitChanges(dive_id, detailsEdit.dateText, detailsEdit.locationText, detailsEdit.gpsText, detailsEdit.durationText,
						      detailsEdit.depthText, detailsEdit.airtempText, detailsEdit.watertempText, detailsEdit.suitText,
						      detailsEdit.buddyText, detailsEdit.divemasterText, detailsEdit.notesText)
				// apply the changes to the dive detail view - since the edit could have changed the order
				// first make sure that we are looking at the correct dive - our model allows us to look
				// up the index based on the unique dive_id
				diveDetailsListView.currentIndex = diveModel.getIdxForId(dive_id)
				diveDetailsListView.currentItem.modelData.date = detailsEdit.dateText
				diveDetailsListView.currentItem.modelData.location = detailsEdit.locationText
				diveDetailsListView.currentItem.modelData.duration = detailsEdit.durationText
				diveDetailsListView.currentItem.modelData.depth = detailsEdit.depthText
				diveDetailsListView.currentItem.modelData.airtemp = detailsEdit.airtempText
				diveDetailsListView.currentItem.modelData.watertemp = detailsEdit.watertempText
				diveDetailsListView.currentItem.modelData.suit = detailsEdit.suitText
				diveDetailsListView.currentItem.modelData.buddy = detailsEdit.buddyText
				diveDetailsListView.currentItem.modelData.divemaster = detailsEdit.divemasterText
				diveDetailsListView.currentItem.modelData.notes = detailsEdit.notesText
				diveDetailsPage.state = "view"
			}
		}
		Item {
			height: MobileComponents.Units.gridUnit * 3
			width: height // just to make sure the spacer doesn't produce scrollbars, but also isn't null
		}
	}
}