subsurface/qt-mobile/qml/DiveDetailsView.qml
Rick Walsh fdd5ee507c QML UI: Another attempt to shift dive number to top row
Commit 1030cb265a 'QML UI DiveDetailsView: shift
dive number to right of top row' was reverted because it caused mysterious
crashes for some testers, inferred to be related to sizing items in a
gridLayout.

This patch brings the dive number back up to the right of the top row, so the
page width doesn't exceed the screen width. Using text wrapping should prevent
the date text and dive number items from increasing in width, and hopefully
avoids the mysterious crashes.

Signed-off-by: Rick Walsh <rickmwalsh@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-02-01 17:52:20 -08:00

242 lines
5.1 KiB
QML

import QtQuick 2.3
/*
import QtWebView 1.0
*/
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 {
id: detailsView
property int labelWidth: MobileComponents.Units.gridUnit * 10
width: parent.width
height: mainLayout.implicitHeight + MobileComponents.Units.iconSizes.large
Rectangle {
z: 99
color: MobileComponents.Theme.textColor
opacity: 0.3
width: MobileComponents.Units.smallSpacing/4
anchors {
right: parent.right
top: parent.top
bottom: parent.bottom
}
}
GridLayout {
id: mainLayout
anchors {
top: parent.top
left: parent.left
right: parent.right
margins: MobileComponents.Units.gridUnit
}
columns: 4
rowSpacing: MobileComponents.Units.smallSpacing * 2
columnSpacing: MobileComponents.Units.smallSpacing
MobileComponents.Heading {
id: detailsViewHeading
Layout.fillWidth: true
text: dive.location
font.underline: dive.gps !== ""
Layout.columnSpan: 4
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
MouseArea {
anchors.fill: parent
onClicked: {
if (dive.gps !== "")
manager.showMap(dive.gps)
}
}
}
/*
Rectangle {
id: mapView
width: parent.width
height: parents.width * 0.7
WebView {
id: webView
anchors.fill: parent
url: "http://www.google.com"
}
}
*/
MobileComponents.Label {
Layout.alignment: Qt.AlignRight
id: dateLabel
text: "Date: "
opacity: 0.6
}
MobileComponents.Label {
text: dive.date + " " + dive.time
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
Layout.columnSpan: 2
}
MobileComponents.Label {
id: numberText
text: "#" + dive.number
color: MobileComponents.Theme.textColor
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
}
MobileComponents.Label {
Layout.alignment: Qt.AlignRight
id: depthLabel
text: "Depth: "
opacity: 0.6
}
MobileComponents.Label {
text: dive.depth
}
MobileComponents.Label {
Layout.alignment: Qt.AlignRight
text: "Duration: "
opacity: 0.6
}
MobileComponents.Label {
text: dive.duration
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
Layout.fillWidth: true
}
QMLProfile {
id: qmlProfile
Layout.fillWidth: true
Layout.preferredHeight: Layout.minimumHeight
Layout.minimumHeight: width * 0.75
Layout.columnSpan: 4
clip: false
devicePixelRatio: MobileComponents.Units.devicePixelRatio
Rectangle {
color: "transparent"
opacity: 0.6
border.width: 1
border.color: MobileComponents.Theme.textColor;
anchors.fill: parent
}
}
MobileComponents.Heading {
Layout.fillWidth: true
level: 3
text: "Dive Details"
Layout.columnSpan: 4
}
MobileComponents.Label {
Layout.alignment: Qt.AlignRight
text: "Air Temp:"
opacity: 0.6
}
MobileComponents.Label {
id: txtAirTemp
text: dive.airTemp
Layout.fillWidth: true
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
}
MobileComponents.Label {
Layout.alignment: Qt.AlignRight
text: "Water Temp:"
opacity: 0.6
}
MobileComponents.Label {
id: txtWaterTemp
text: dive.waterTemp
Layout.fillWidth: true
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
}
MobileComponents.Label {
Layout.alignment: Qt.AlignRight
text: "Suit:"
opacity: 0.6
}
MobileComponents.Label {
id: txtSuit
text: dive.suit
Layout.fillWidth: true
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
}
MobileComponents.Label {
Layout.alignment: Qt.AlignRight
text: "Weight:"
opacity: 0.6
}
MobileComponents.Label {
id: txtWeight
text: dive.sumWeight
Layout.fillWidth: true
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
}
MobileComponents.Label {
text: "Cylinder:"
Layout.alignment: Qt.AlignRight
opacity: 0.6
}
MobileComponents.Label {
id: txtCylinder
text: dive.getCylinder
Layout.fillWidth: true
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
}
MobileComponents.Label {
Layout.alignment: Qt.AlignRight
text: "Dive Master:"
opacity: 0.6
}
MobileComponents.Label {
id: txtDiveMaster
text: dive.divemaster
Layout.fillWidth: true
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
}
MobileComponents.Label {
Layout.alignment: Qt.AlignRight
text: "Buddy:"
opacity: 0.6
}
MobileComponents.Label {
id: txtBuddy
text: dive.buddy
Layout.fillWidth: true
Layout.columnSpan: 3
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
}
MobileComponents.Heading {
Layout.fillWidth: true
level: 3
text: "Notes"
Layout.columnSpan: 4
}
MobileComponents.Label {
id: txtNotes
text: dive.notes
focus: true
Layout.columnSpan: 4
Layout.fillWidth: true
Layout.fillHeight: true
//selectByMouse: true
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
}
Item {
Layout.columnSpan: 4
Layout.fillWidth: true
Layout.minimumHeight: MobileComponents.Units.gridUnit * 3
}
Component.onCompleted: {
qmlProfile.setMargin(MobileComponents.Units.smallSpacing)
qmlProfile.diveId = model.dive.id;
qmlProfile.update();
}
}
}