aboutsummaryrefslogtreecommitdiffstats
path: root/qt-mobile/qml/DiveList.qml
diff options
context:
space:
mode:
authorGravatar Sebastian Kügler <sebas@kde.org>2015-11-07 00:39:06 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-11-07 09:00:59 -0800
commitaae4a326f4738be368088f0d0f7a91d75b02a9ad (patch)
tree937c2253e015da2a127285e957a98f785b5cfc94 /qt-mobile/qml/DiveList.qml
parent95ac4c4454aa49326500639aab839eb3d11efa87 (diff)
downloadsubsurface-aae4a326f4738be368088f0d0f7a91d75b02a9ad.tar.gz
organize qml files in subdirectories
This makes the organization of the qml files a bit more fine-grained, it prevents mixing of .cpp and QML files, and also of what's compiled, and what's included in the app as qrc data. In particular: - subsurface specific QML items go into the qml/ subdirectory - theme and unit definitions to into qml/theme subdirectory (they already were located in a theme directory) - generic components, such as our Label goes into qml/components This facilitates sharing of functionality and identifying common stuff better. Ideally, we can pull qml/theme and qml/components from a standardized set at some point, so we don't have to maintain that code. Signed-off-by: Sebastian Kügler <sebas@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-mobile/qml/DiveList.qml')
-rw-r--r--qt-mobile/qml/DiveList.qml170
1 files changed, 170 insertions, 0 deletions
diff --git a/qt-mobile/qml/DiveList.qml b/qt-mobile/qml/DiveList.qml
new file mode 100644
index 000000000..c95b4dcaa
--- /dev/null
+++ b/qt-mobile/qml/DiveList.qml
@@ -0,0 +1,170 @@
+import QtQuick 2.3
+import QtQuick.Controls 1.2
+import QtQuick.Window 2.2
+import QtQuick.Dialogs 1.2
+import org.subsurfacedivelog.mobile 1.0
+import QtQuick.Layouts 1.0
+
+Rectangle {
+ id: page
+ objectName: "DiveList"
+
+ Component {
+ id: diveDelegate
+ Item {
+ id: dive
+
+ property real detailsOpacity : 0
+
+ width: diveListView.width - units.smallSpacing
+ height: childrenRect.height
+
+ //Mouse region: When clicked, the mode changes to details view
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ detailsWindow.width = parent.width
+ detailsWindow.location = location
+ detailsWindow.dive_id = id
+ detailsWindow.buddy = buddy
+ detailsWindow.suit = suit
+ detailsWindow.airtemp = airtemp
+ detailsWindow.watertemp = watertemp
+ detailsWindow.divemaster = divemaster
+ detailsWindow.notes = notes
+ detailsWindow.number = diveNumber
+ detailsWindow.date = date
+ stackView.push(detailsWindow)
+ }
+ }
+
+ //Layout of the page: (mini profile, dive no, date at the top
+ //And other details at the bottom.
+ Item {
+ x: units.smallSpacing
+ width: parent.width - units.smallSpacing * 2
+ height: childrenRect.height + units.smallSpacing * 2
+ //spacing: units.smallSpacing / 2
+ anchors.margins: units.smallSpacing
+
+ Text {
+ id: locationText
+ text: location
+ color: theme.textColor
+ scale: 1.1 // Let's see how this works, otherwise, we'll need the default point size somewhere
+ transformOrigin: Item.TopLeft
+ anchors {
+ left: parent.left
+ top: parent.top
+ }
+ }
+ Text {
+ text: date
+ opacity: 0.6
+ color: theme.textColor
+ anchors {
+ right: parent.right
+ top: parent.top
+ bottomMargin: units.smallSpacing / 2
+ }
+ }
+ Row {
+ id: descriptionText
+ anchors {
+ left: parent.left
+ right: parent.right
+ bottom: numberText.bottom
+ }
+ Text {
+ text: 'Depth: '
+ opacity: 0.6
+ color: theme.textColor
+ }
+ Text {
+ text: depth
+ width: Math.max(units.gridUnit * 3, paintedWidth) // helps vertical alignment throughout listview
+ color: theme.textColor
+ }
+ Text {
+ text: 'Duration: '
+ opacity: 0.6
+ color: theme.textColor
+ }
+ Text {
+ text: duration
+ color: theme.textColor
+ }
+ }
+ Text {
+ id: numberText
+ text: "#" + diveNumber
+ color: theme.textColor
+ scale: 1.2
+ transformOrigin: Item.BottomRight
+ opacity: 0.4
+ anchors {
+ right: parent.right
+ topMargin: units.smallSpacing
+ top: locationText.bottom
+ }
+ }
+ //Text { text: location; width: parent.width }
+ Rectangle {
+ color: theme.textColor
+ opacity: .2
+ height: Math.max(1, units.gridUnit / 24) // we really want a thin line
+ anchors {
+ left: parent.left
+ right: parent.right
+ top: numberText.bottom
+ }
+ }
+ }
+ }
+ }
+
+ Component {
+ id: tripHeading
+ Item {
+ width: page.width - units.smallSpacing * 2
+ height: childrenRect.height + units.smallSpacing * 2
+
+ Text {
+ id: sectionText
+ text: section
+ anchors {
+ top: parent.top
+ left: parent.left
+ leftMargin: units.smallSpacing
+ right: parent.right
+ }
+ color: theme.textColor
+ font.pointSize: 16
+ }
+ Rectangle {
+ height: Math.max(2, units.gridUnit / 12) // we want a thicker line
+ anchors {
+ top: sectionText.bottom
+ left: parent.left
+ leftMargin: units.smallSpacing
+ right: parent.right
+ }
+ color: theme.accentColor
+ }
+ }
+ }
+
+ ListView {
+ id: diveListView
+ anchors.fill: parent
+ model: diveModel
+ delegate: diveDelegate
+ boundsBehavior: Flickable.StopAtBounds
+ //highlight: Rectangle { color: theme.highlightColor; width: units.smallSpacing }
+ focus: true
+ clip: true
+ section.property: "trip"
+ section.criteria: ViewSection.FullString
+ section.delegate: tripHeading
+ }
+}