subsurface/qt-mobile/qml/DiveDetails.qml

150 lines
3.9 KiB
QML
Raw Normal View History

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 }
}
}
}
}
}
}