mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
99a5a743c4
Instead of doing the silly "onEditingFinished" we get the strings from the QML components at the time we commit the change. Much more logical, much more straight forward, no issues with the TextArea not having an onEditingFinished signal. This still has a few open todos: the temperatures aren't parsed, the edit screen is missing depth and duration, we can't edit the dive time (and it isn't passed in on the commit). But it's progress. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
115 lines
2.7 KiB
QML
115 lines
2.7 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"
|
|
flickable: flick
|
|
|
|
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
|
|
property alias viewEditText: viewEditSelector.text
|
|
|
|
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 }
|
|
}
|
|
]
|
|
|
|
contextualActions: [
|
|
Action {
|
|
id: viewEditSelector
|
|
text: checked ? "View" : "Edit"
|
|
checkable: true
|
|
iconName: checked ? "view-readermode" : "document-edit"
|
|
onTriggered: {
|
|
if (diveDetailsWindow.state == "edit") {
|
|
manager.commitChanges(dive_id, detailsEdit.locationText, detailsEdit.gpsText, detailsEdit.durationText,
|
|
detailsEdit.depthText, detailsEdit.airtempText, detailsEdit.watertempText, detailsEdit.suitText,
|
|
detailsEdit.buddyText, detailsEdit.divemasterText, detailsEdit.notesText);
|
|
diveDetailsWindow.state = "view";
|
|
} else {
|
|
diveDetailsWindow.state = "edit";
|
|
}
|
|
contextDrawer.close();
|
|
// close drawer?
|
|
}
|
|
}
|
|
|
|
]
|
|
|
|
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 }
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|