aboutsummaryrefslogtreecommitdiffstats
path: root/qt-mobile/qml/DiveDetails.qml
blob: cae8aab0cec28e2273f33c89beb6f1e79cd24a61 (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
import QtQuick 2.4
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.2
import org.subsurfacedivelog.mobile 1.0
import org.kde.plasma.mobilecomponents 0.2 as MobileComponents

MobileComponents.Page {
	id: page
	objectName: "DiveList"
	property alias currentIndex: diveListView.currentIndex

	mainAction: Action {
		iconName: editDrawer.opened ? "dialog-cancel" : "document-edit"
		onTriggered: {
			if (editDrawer.opened) {
				editDrawer.close();
				return;
			}
			// After saving, the list may be shuffled, so first of all make sure that
			// the listview's currentIndex is the visible item
			// This makes sure that we always edit the currently visible item
			diveListView.currentIndex = diveListView.indexAt(diveListView.contentX+1, 1);
			detailsEdit.dive_id = diveListView.currentItem.modelData.dive.id
			detailsEdit.number = diveListView.currentItem.modelData.dive.number
			detailsEdit.dateText = diveListView.currentItem.modelData.dive.date
			detailsEdit.locationText = diveListView.currentItem.modelData.dive.location
			detailsEdit.durationText = diveListView.currentItem.modelData.dive.duration
			detailsEdit.depthText = diveListView.currentItem.modelData.dive.depth
			detailsEdit.airtempText = diveListView.currentItem.modelData.dive.airTemp
			detailsEdit.watertempText = diveListView.currentItem.modelData.dive.waterTemp
			detailsEdit.suitText = diveListView.currentItem.modelData.dive.suit
			detailsEdit.buddyText = diveListView.currentItem.modelData.dive.buddy
			detailsEdit.divemasterText = diveListView.currentItem.modelData.dive.divemaster
			detailsEdit.notesText = diveListView.currentItem.modelData.dive.notes
			editDrawer.open();
		}
	}

	function showDiveIndex(index) {
		diveListView.currentIndex = index;
		diveListView.positionViewAtIndex(diveListView.currentIndex, ListView.Beginning);
	}
	onWidthChanged: diveListView.positionViewAtIndex(diveListView.currentIndex, ListView.Beginning);

	ScrollView {
		anchors.fill: parent
		ListView {
			id: diveListView
			anchors.fill: parent
			model: diveModel
			currentIndex: -1
			boundsBehavior: Flickable.StopAtBounds
			maximumFlickVelocity: parent.width/4
			//cacheBuffer: parent.width/2
			orientation: ListView.Horizontal
			focus: true
			clip: true
			snapMode: ListView.SnapOneItem
			onMovementEnded: {
				currentIndex = indexAt(contentX+1, 1);
			}
			delegate: ScrollView {
				id: internalScrollView
				width: diveListView.width
				height: diveListView.height
				property var modelData: model
				Flickable {
					//contentWidth: parent.width
					contentHeight: diveDetails.height
					DiveDetailsView {
						id: diveDetails
						width: internalScrollView.width
					}
				}
			}
		}
	}
	MobileComponents.OverlayDrawer {
		id: editDrawer
		anchors.fill: parent
		edge: Qt.BottomEdge
		contentItem: DiveDetailsEdit {
			id: detailsEdit
			implicitHeight: page.height - MobileComponents.Units.gridUnit*3
		}
		// Close the editDrawer when the pageStack navigates away, for example going
		// back to the listview after the Back button was pressed
		Connections {
			target: rootItem.pageStack
			onCurrentPageChanged: {
				editDrawer.close();
			}
		}
	}

}