summaryrefslogtreecommitdiffstats
path: root/qt-mobile/qml/DiveDetails.qml
blob: 0dd38031165927c2f1c46e55fd46056ded753eba (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
import QtQuick 2.3
import QtQuick.Controls 1.4
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

MobileComponents.Page {
	id: diveDetailsWindow
	width: parent.width
	objectName: "DiveDetails"

	property string location
	property string gps
	property string depth
	property string dive_id
	property string diveNumber
	property string duration
	property string airtemp
	property string watertemp
	property string suit
	property int rating
	property string buddy
	property string divemaster;
	property string notes;
	property string date
	property string number
	property string weight
	state: "view"

	states: [
		State {
			name: "view"
			PropertyChanges { target: detailsView; opacity: 1 }
			PropertyChanges { target: detailsEdit; opacity: 0 }
		},
		State {
			name: "edit"
			PropertyChanges { target: detailsView; opacity: 0 }
			PropertyChanges { target: detailsEdit; opacity: 1 }
		}
	]
	property list<Action> viewActions: [
		Action {
			id: editSelector
			text: "Edit"
			iconName: "document-edit"
			onTriggered: {
				diveDetailsWindow.state = "edit"
				contextDrawer.close()
			}
		}
	]
	property list<Action> editActions: [
		Action {
			id: cancelSelector
			text: "Cancel"
			iconName: "dialog-cancel"
			onTriggered: {
				// reset the fields in the edit screen
				detailsEdit.dateText = date
				detailsEdit.locationText = location
				detailsEdit.durationText = duration
				detailsEdit.depthText = depth
				detailsEdit.airtempText = airtemp
				detailsEdit.watertempText = watertemp
				detailsEdit.suitText = suit
				detailsEdit.buddyText = buddy
				detailsEdit.divemasterText = divemaster
				detailsEdit.notesText = notes
				// back to view state and close the drawer
				diveDetailsWindow.state = "view"
				contextDrawer.close()
			}
		},
		Action {
			id: saveSelector
			text: "Save"
			iconName: "document-save"
			onTriggered: {
				// apply the changes to the dive_table
				notes = 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
				date = detailsEdit.dateText
				location = detailsEdit.locationText
				duration = detailsEdit.durationText
				depth = detailsEdit.depthText
				airtemp = detailsEdit.airtempText
				watertemp = detailsEdit.watertempText
				suit = detailsEdit.suitText
				buddy = detailsEdit.buddyText
				divemaster = detailsEdit.divemasterText
				// back to view state and close the drawer
				diveDetailsWindow.state = "view"
				contextDrawer.close()
			}
		}
	]
	contextualActions: diveDetailsWindow.state === "view" ? viewActions : editActions

	ScrollView {
		anchors.fill: parent
		Flickable {
			id: flick
			anchors.fill: parent
			contentHeight: content.height
			interactive: contentHeight > height
			clip: true
			Item {
				id: content
				width: flick.width
				height: childrenRect.height + MobileComponents.Units.smallSpacing * 2

				DiveDetailsEdit {
					id: detailsEdit
					anchors {
						left: parent.left
						right: parent.right
						top: parent.top
						margins: MobileComponents.Units.gridUnit / 2
					}
					visible: opacity > 0

					Behavior on opacity {
						NumberAnimation { duration: MobileComponents.Units.shortDuration }
					}
				}
				DiveDetailsView {
					id: detailsView
					anchors {
						left: parent.left
						right: parent.right
						top: parent.top
						margins: MobileComponents.Units.gridUnit / 2
					}
					visible: opacity > 0

					Behavior on opacity {
						NumberAnimation { duration: MobileComponents.Units.shortDuration }
					}

				}
			}
		}
	}
}