blob: 2b530b6603bb5275cefc281f69541e18afc92849 (
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
|
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: diveDetailsPage
property alias currentIndex: diveDetailsListView.currentIndex
property alias dive_id: detailsEdit.dive_id
property alias number: detailsEdit.number
property alias date: detailsEdit.dateText
property alias airtemp: detailsEdit.airtempText
property alias watertemp: detailsEdit.watertempText
property alias buddy: detailsEdit.buddyText
property alias divemaster: detailsEdit.divemasterText
property alias depth: detailsEdit.depthText
property alias duration: detailsEdit.durationText
property alias location: detailsEdit.locationText
property alias notes: detailsEdit.notesText
property alias suit: detailsEdit.suitText
property alias weight: detailsEdit.weightText
state: "view"
states: [
State {
name: "view"
PropertyChanges { target: diveDetailList; visible: true }
PropertyChanges { target: detailsEditScroll; visible: false }
},
State {
name: "edit"
PropertyChanges { target: diveDetailList; visible: false }
PropertyChanges { target: detailsEditScroll; visible: true }
}
]
mainAction: Action {
iconName: state === "edit" ? "dialog-cancel" : "document-edit"
onTriggered: {
if (state === "edit") {
state = "view"
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
diveDetailsListView.currentIndex = diveDetailsListView.indexAt(diveDetailsListView.contentX+1, 1);
detailsEdit.dive_id = diveDetailsListView.currentItem.modelData.dive.id
detailsEdit.number = diveDetailsListView.currentItem.modelData.dive.number
detailsEdit.dateText = diveDetailsListView.currentItem.modelData.dive.date + " " + diveDetailsListView.currentItem.modelData.dive.time
detailsEdit.locationText = diveDetailsListView.currentItem.modelData.dive.location
detailsEdit.durationText = diveDetailsListView.currentItem.modelData.dive.duration
detailsEdit.depthText = diveDetailsListView.currentItem.modelData.dive.depth
detailsEdit.airtempText = diveDetailsListView.currentItem.modelData.dive.airTemp
detailsEdit.watertempText = diveDetailsListView.currentItem.modelData.dive.waterTemp
detailsEdit.suitText = diveDetailsListView.currentItem.modelData.dive.suit
detailsEdit.buddyText = diveDetailsListView.currentItem.modelData.dive.buddy
detailsEdit.divemasterText = diveDetailsListView.currentItem.modelData.dive.divemaster
detailsEdit.notesText = diveDetailsListView.currentItem.modelData.dive.notes
detailsEdit.forcedWidth = diveDetailsPage.width
diveDetailsPage.state = "edit"
}
}
function showDiveIndex(index) {
diveDetailsListView.currentIndex = index;
diveDetailsListView.positionViewAtIndex(diveDetailsListView.currentIndex, ListView.Beginning);
}
onWidthChanged: diveDetailsListView.positionViewAtIndex(diveDetailsListView.currentIndex, ListView.Beginning);
ScrollView {
id: diveDetailList
anchors.fill: parent
ListView {
id: diveDetailsListView
anchors.fill: parent
model: diveModel
currentIndex: -1
boundsBehavior: Flickable.StopAtBounds
maximumFlickVelocity: parent.width/4
orientation: ListView.Horizontal
focus: true
clip: true
snapMode: ListView.SnapOneItem
onMovementEnded: {
currentIndex = indexAt(contentX+1, 1);
}
delegate: ScrollView {
id: internalScrollView
width: diveDetailsListView.width
height: diveDetailsListView.height
property var modelData: model
Flickable {
//contentWidth: parent.width
contentHeight: diveDetails.height
boundsBehavior: Flickable.StopAtBounds
DiveDetailsView {
id: diveDetails
width: internalScrollView.width
}
}
}
}
}
Flickable {
id: detailsEditScroll
anchors.fill: parent
anchors.margins: MobileComponents.Units.gridUnit
contentWidth: contentItem.childrenRect.width;
contentHeight: contentItem.childrenRect.height
clip: true
bottomMargin: MobileComponents.Units.gridUnit * 3
DiveDetailsEdit {
id: detailsEdit
}
}
}
|