diff options
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 + } +} |