mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-01 10:03:23 +00:00
80f29bd3f6
With the current release candidate of Qt 5.6.0 we get into an infinite recursion of the grid layout engine. This had happened before (prior to the 5.6 beta) and it appeared that setting the maximum width of the columns was sufficient to fix this. But with the RC even that isn't sufficient, so now we give up on having QML figure out the best possible column width and hard code both preferred and maximum width to the same, predefined values. That's a total shame, but at least now we can build against Qt 5.6 without infinite recursions and crashes. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
288 lines
7.5 KiB
QML
288 lines
7.5 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 real gridWidth: subsurfaceTheme.columnWidth - 2 * MobileComponents.Units.gridUnit
|
|
property real col1Width: gridWidth * 0.23
|
|
property real col2Width: gridWidth * 0.37
|
|
property real col3Width: gridWidth * 0.20
|
|
property real col4Width: gridWidth * 0.20
|
|
|
|
width: SubsurfaceTheme.columnWidth
|
|
height: mainLayout.implicitHeight + bottomLayout.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: Math.round(MobileComponents.Units.gridUnit / 2)
|
|
}
|
|
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)
|
|
}
|
|
}
|
|
}
|
|
MobileComponents.Label {
|
|
id: dateLabel
|
|
text: "Date: "
|
|
opacity: 0.6
|
|
Layout.alignment: Qt.AlignRight
|
|
}
|
|
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 {
|
|
id: depthLabel
|
|
text: "Depth: "
|
|
opacity: 0.6
|
|
Layout.alignment: Qt.AlignRight
|
|
}
|
|
MobileComponents.Label {
|
|
text: dive.depth
|
|
Layout.fillWidth: true
|
|
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
|
|
}
|
|
MobileComponents.Label {
|
|
text: "Duration: "
|
|
opacity: 0.6
|
|
Layout.alignment: Qt.AlignRight
|
|
}
|
|
MobileComponents.Label {
|
|
text: dive.duration
|
|
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
|
|
}
|
|
|
|
QMLProfile {
|
|
id: qmlProfile
|
|
visible: !dive.noDive
|
|
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.Label {
|
|
id: noProfile
|
|
visible: dive.noDive
|
|
Layout.fillWidth: true
|
|
Layout.columnSpan: 4
|
|
Layout.margins: MobileComponents.Units.gridUnit
|
|
horizontalAlignment: Text.AlignHCenter
|
|
text: "No profile to show"
|
|
}
|
|
}
|
|
GridLayout {
|
|
id: bottomLayout
|
|
anchors {
|
|
top: mainLayout.bottom
|
|
left: parent.left
|
|
right: parent.right
|
|
margins: Math.round(MobileComponents.Units.gridUnit / 2)
|
|
}
|
|
columns: 4
|
|
rowSpacing: MobileComponents.Units.smallSpacing * 2
|
|
columnSpacing: MobileComponents.Units.smallSpacing
|
|
|
|
MobileComponents.Heading {
|
|
Layout.fillWidth: true
|
|
level: 3
|
|
text: "Dive Details"
|
|
Layout.columnSpan: 4
|
|
}
|
|
|
|
// first row - here we set up the column widths - total is 90% of width
|
|
MobileComponents.Label {
|
|
text: "Suit:"
|
|
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
|
|
opacity: 0.6
|
|
Layout.maximumWidth: detailsView.col1Width
|
|
Layout.preferredWidth: detailsView.col1Width
|
|
Layout.alignment: Qt.AlignRight
|
|
}
|
|
MobileComponents.Label {
|
|
id: txtSuit
|
|
text: dive.suit
|
|
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
|
|
Layout.maximumWidth: detailsView.col2Width
|
|
Layout.preferredWidth: detailsView.col2Width
|
|
}
|
|
|
|
MobileComponents.Label {
|
|
text: "Air Temp:"
|
|
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
|
|
opacity: 0.6
|
|
Layout.maximumWidth: detailsView.col3Width
|
|
Layout.preferredWidth: detailsView.col3Width
|
|
Layout.alignment: Qt.AlignRight
|
|
}
|
|
MobileComponents.Label {
|
|
id: txtAirTemp
|
|
text: dive.airTemp
|
|
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
|
|
Layout.maximumWidth: detailsView.col4Width
|
|
Layout.preferredWidth: detailsView.col4Width
|
|
}
|
|
|
|
MobileComponents.Label {
|
|
text: "Cylinder:"
|
|
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
|
|
opacity: 0.6
|
|
Layout.maximumWidth: detailsView.col1Width
|
|
Layout.preferredWidth: detailsView.col1Width
|
|
Layout.alignment: Qt.AlignRight
|
|
}
|
|
MobileComponents.Label {
|
|
id: txtCylinder
|
|
text: dive.getCylinder
|
|
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
|
|
Layout.maximumWidth: detailsView.col2Width
|
|
Layout.preferredWidth: detailsView.col2Width
|
|
}
|
|
|
|
MobileComponents.Label {
|
|
text: "Water Temp:"
|
|
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
|
|
opacity: 0.6
|
|
Layout.maximumWidth: detailsView.col3Width
|
|
Layout.preferredWidth: detailsView.col3Width
|
|
Layout.alignment: Qt.AlignRight
|
|
}
|
|
MobileComponents.Label {
|
|
id: txtWaterTemp
|
|
text: dive.waterTemp
|
|
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
|
|
Layout.maximumWidth: detailsView.col4Width
|
|
Layout.preferredWidth: detailsView.col4Width
|
|
}
|
|
|
|
MobileComponents.Label {
|
|
text: "Dive Master:"
|
|
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
|
|
opacity: 0.6
|
|
Layout.maximumWidth: detailsView.col1Width
|
|
Layout.preferredWidth: detailsView.col1Width
|
|
Layout.alignment: Qt.AlignRight
|
|
}
|
|
MobileComponents.Label {
|
|
id: txtDiveMaster
|
|
text: dive.divemaster
|
|
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
|
|
Layout.maximumWidth: detailsView.col2Width
|
|
Layout.preferredWidth: detailsView.col2Width
|
|
}
|
|
|
|
MobileComponents.Label {
|
|
text: "Weight:"
|
|
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
|
|
opacity: 0.6
|
|
Layout.maximumWidth: detailsView.col3Width
|
|
Layout.preferredWidth: detailsView.col3Width
|
|
Layout.alignment: Qt.AlignRight
|
|
}
|
|
MobileComponents.Label {
|
|
id: txtWeight
|
|
text: dive.sumWeight
|
|
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
|
|
Layout.maximumWidth: detailsView.col4Width
|
|
Layout.preferredWidth: detailsView.col4Width
|
|
}
|
|
|
|
MobileComponents.Label {
|
|
text: "Buddy:"
|
|
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
|
|
opacity: 0.6
|
|
Layout.maximumWidth: detailsView.col1Width
|
|
Layout.preferredWidth: detailsView.col1Width
|
|
Layout.alignment: Qt.AlignRight
|
|
}
|
|
MobileComponents.Label {
|
|
id: txtBuddy
|
|
text: dive.buddy
|
|
Layout.columnSpan: 3
|
|
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
|
|
Layout.maximumWidth: detailsView.col2Width + detailsView.col3Width + detailsView.col4Width
|
|
Layout.preferredWidth: detailsView.col2Width + detailsView.col3Width + detailsView.col4Width
|
|
}
|
|
|
|
MobileComponents.Heading {
|
|
Layout.fillWidth: true
|
|
level: 3
|
|
text: "Notes"
|
|
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
|
|
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();
|
|
}
|
|
}
|
|
}
|