subsurface/qt-mobile/qml/DiveDetails.qml
Dirk Hohndel 624e44e73d QML UI: clean up notes field after edit
We don't want any of the rich text markup to sneak into our fields.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-01-07 22:30:58 -08:00

149 lines
3.9 KiB
QML

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