diff options
author | Sebastian Kügler <sebas@kde.org> | 2015-11-07 00:39:06 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-11-07 09:00:59 -0800 |
commit | aae4a326f4738be368088f0d0f7a91d75b02a9ad (patch) | |
tree | 937c2253e015da2a127285e957a98f785b5cfc94 /qt-mobile/qml/DiveList.qml | |
parent | 95ac4c4454aa49326500639aab839eb3d11efa87 (diff) | |
download | subsurface-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.qml | 170 |
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 + } +} |