diff options
author | Sebastian Kügler <sebas@kde.org> | 2015-12-04 01:38:04 +0100 |
---|---|---|
committer | Sebastian Kügler <sebas@kde.org> | 2015-12-07 18:46:32 +0100 |
commit | bd7af5a511053f1ac35f9b250039aa76f9096e99 (patch) | |
tree | 64eb19af6a590314d6906a1f3a35c362eb4a4abb /qt-mobile | |
parent | 54da517e9d9326ffe572a3aa75ffe6697ee2ce56 (diff) | |
download | subsurface-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.qml | 47 | ||||
-rw-r--r-- | qt-mobile/qml/DiveDetailsEdit.qml | 125 | ||||
-rw-r--r-- | qt-mobile/qml/mobile-resources.qrc | 1 |
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> |