summaryrefslogtreecommitdiffstats
path: root/qt-mobile
diff options
context:
space:
mode:
authorGravatar Sebastian Kügler <sebas@kde.org>2015-12-04 01:38:04 +0100
committerGravatar Sebastian Kügler <sebas@kde.org>2015-12-07 18:46:32 +0100
commitbd7af5a511053f1ac35f9b250039aa76f9096e99 (patch)
tree64eb19af6a590314d6906a1f3a35c362eb4a4abb /qt-mobile
parent54da517e9d9326ffe572a3aa75ffe6697ee2ce56 (diff)
downloadsubsurface-bd7af5a511053f1ac35f9b250039aa76f9096e99.tar.gz
state machine controls edit/view dive details
This is the first part of splitting the dive details into edit/view modes. - introduce a state machine to switch between view and edit mode - factor out the editor into its own component Both components are almost the same, but we can change them individually now. Signed-off-by: Sebastian Kügler <sebas@kde.org>
Diffstat (limited to 'qt-mobile')
-rw-r--r--qt-mobile/qml/DiveDetails.qml47
-rw-r--r--qt-mobile/qml/DiveDetailsEdit.qml125
-rw-r--r--qt-mobile/qml/mobile-resources.qrc1
3 files changed, 172 insertions, 1 deletions
diff --git a/qt-mobile/qml/DiveDetails.qml b/qt-mobile/qml/DiveDetails.qml
index b3356313a..10fe57c01 100644
--- a/qt-mobile/qml/DiveDetails.qml
+++ b/qt-mobile/qml/DiveDetails.qml
@@ -23,6 +23,18 @@ MobileComponents.Page {
property string date
property string number
+ 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 }
+ }
+ ]
onDive_idChanged: {
qmlProfile.diveId = dive_id
qmlProfile.update()
@@ -40,7 +52,36 @@ MobileComponents.Page {
width: flick.width
height: childrenRect.height + MobileComponents.Units.smallSpacing * 2
+ Button {
+ checkable: true
+ text: "Edit"
+ z: 999
+ anchors {
+ top: parent.top
+ right: parent.right
+ margins: MobileComponents.Units.gridUnit / 2
+ }
+ onCheckedChanged: {
+ diveDetailsWindow.state = checked ? "edit" : "view"
+ }
+ }
+
+ DiveDetailsEdit {
+ id: detailsEdit
+ anchors {
+ left: parent.left
+ right: parent.right
+ top: parent.top
+ margins: MobileComponents.Units.smallSpacing
+ }
+
+ Behavior on opacity {
+ NumberAnimation { duration: MobileComponents.Units.shortDuration }
+ }
+ }
+
ColumnLayout {
+ id: detailsView
anchors {
left: parent.left
right: parent.right
@@ -49,6 +90,10 @@ MobileComponents.Page {
}
spacing: MobileComponents.Units.smallSpacing
+ Behavior on opacity {
+ NumberAnimation { duration: MobileComponents.Units.shortDuration }
+ }
+
GridLayout {
id: editorDetails
@@ -57,7 +102,7 @@ MobileComponents.Page {
MobileComponents.Heading {
Layout.columnSpan: 2
- text: "Dive " + number + " (" + date + ")"
+ text: "VIEW Dive " + number + " (" + date + ")"
}
Item {
diff --git a/qt-mobile/qml/DiveDetailsEdit.qml b/qt-mobile/qml/DiveDetailsEdit.qml
new file mode 100644
index 000000000..2618baae7
--- /dev/null
+++ b/qt-mobile/qml/DiveDetailsEdit.qml
@@ -0,0 +1,125 @@
+import QtQuick 2.3
+import QtQuick.Controls 1.2
+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
+
+Item {
+
+ ColumnLayout {
+ anchors {
+ left: parent.left
+ right: parent.right
+ top: parent.top
+ }
+ spacing: MobileComponents.Units.smallSpacing
+
+
+ GridLayout {
+ id: editorDetails
+ width: parent.width
+ columns: 2
+
+ MobileComponents.Heading {
+ Layout.columnSpan: 2
+ text: "Dive " + number + " (" + date + ")"
+ }
+
+ Item {
+ Layout.columnSpan: 2
+ Layout.fillWidth: true
+ Layout.preferredHeight: qmlProfile.height
+ QMLProfile {
+ id: qmlProfile
+ height: MobileComponents.Units.gridUnit * 25
+ anchors {
+ top: parent.top
+ left: parent.left
+ right: parent.right
+ }
+ //Rectangle { color: "green"; opacity: 0.4; anchors.fill: parent } // used for debugging the dive profile sizing, will be removed later
+ }
+ }
+ MobileComponents.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Location:"
+ }
+ TextField {
+ id: txtLocation; text: location;
+ Layout.fillWidth: true
+ }
+
+ MobileComponents.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Air Temp:"
+ }
+ TextField {
+ id: txtAirTemp
+ text: airtemp
+ Layout.fillWidth: true
+ }
+
+ MobileComponents.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Water Temp:"
+ }
+ TextField {
+ id: txtWaterTemp
+ text: watertemp
+ Layout.fillWidth: true
+ }
+
+ MobileComponents.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Suit:"
+
+ }
+ TextField {
+ id: txtSuit
+ text: suit
+ Layout.fillWidth: true
+ }
+
+ MobileComponents.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Buddy:"
+ }
+ TextField {
+ id: txtBuddy
+ text: buddy
+ Layout.fillWidth: true
+ }
+
+ MobileComponents.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Dive Master:"
+ }
+ TextField {
+ id: txtDiveMaster
+ text: divemaster
+ Layout.fillWidth: true
+ }
+
+ MobileComponents.Label {
+ Layout.alignment: Qt.AlignRight
+ text: "Notes:"
+ }
+ TextArea {
+ id: txtNotes
+ text: notes
+ focus: true
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ Layout.minimumHeight: MobileComponents.Units.gridUnit * 6
+ selectByMouse: true
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+ }
+ }
+ Item {
+ height: MobileComponents.Units.gridUnit * 3
+ width: height // just to make sure the spacer doesn't produce scrollbars, but also isn't null
+ }
+ }
+} \ No newline at end of file
diff --git a/qt-mobile/qml/mobile-resources.qrc b/qt-mobile/qml/mobile-resources.qrc
index ebce4c7b6..028dd0cef 100644
--- a/qt-mobile/qml/mobile-resources.qrc
+++ b/qt-mobile/qml/mobile-resources.qrc
@@ -6,6 +6,7 @@
<file>CloudCredentials.qml</file>
<file>DiveList.qml</file>
<file>DiveDetails.qml</file>
+ <file>DiveDetailsEdit.qml</file>
<file>DownloadFromDiveComputer.qml</file>
<file>Log.qml</file>
<file>TopBar.qml</file>