lista: ListItemLayout (titolo+paese+range senza sovrapposizioni); card porto vicino: binding con guardia, click centralizzato openPort, log
This commit is contained in:
+16
-10
@@ -39,9 +39,16 @@ Page {
|
||||
nearKm = np.km
|
||||
}
|
||||
}
|
||||
console.log("[tide] init nearPort:", nearPort ? nearPort[0] + " (" + nearKm.toFixed(1) + " km)" : "null")
|
||||
refresh()
|
||||
}
|
||||
|
||||
function openPort(port) {
|
||||
console.log("[tide] openPort:", port ? port[0] : "undefined")
|
||||
pageStack.push(Qt.resolvedUrl("DetailPage.qml"),
|
||||
{ port: port, portIndex: Tides.PORTS.indexOf(port), custom: false })
|
||||
}
|
||||
|
||||
function refresh() {
|
||||
if (!port) {
|
||||
console.log("[tide] refresh: port UNDEFINED")
|
||||
@@ -120,12 +127,14 @@ Page {
|
||||
Label {
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.paddingSmall
|
||||
text: qsTr("📍 Nearest port: %1 — %2 · ±%3 m")
|
||||
.arg(page.nearPort[0])
|
||||
.arg(page.nearKm < 222
|
||||
? (page.nearKm / 111).toFixed(1) + "°"
|
||||
: Math.round(page.nearKm) + " km")
|
||||
.arg(((page.nearPort[4][1][0] + page.nearPort[4][2][0]) * 2).toFixed(2))
|
||||
text: page.nearPort
|
||||
? qsTr("📍 Nearest port: %1 — %2 · ±%3 m")
|
||||
.arg(page.nearPort[0])
|
||||
.arg(page.nearKm < 222
|
||||
? (page.nearKm / 111).toFixed(1) + "°"
|
||||
: Math.round(page.nearKm) + " km")
|
||||
.arg(((page.nearPort[4][1][0] + page.nearPort[4][2][0]) * 2).toFixed(2))
|
||||
: ""
|
||||
color: Theme.errorColor
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
wrapMode: Text.Wrap
|
||||
@@ -133,10 +142,7 @@ Page {
|
||||
}
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: pageStack.push(Qt.resolvedUrl("DetailPage.qml"),
|
||||
{ port: page.nearPort,
|
||||
portIndex: Tides.PORTS.indexOf(page.nearPort),
|
||||
custom: false })
|
||||
onClicked: page.openPort(page.nearPort)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+8
-26
@@ -83,32 +83,14 @@ Page {
|
||||
contentHeight: Theme.itemSizeMedium
|
||||
highlighted: model.isPreferred
|
||||
|
||||
Label {
|
||||
text: model.name
|
||||
color: model.isPreferred ? Theme.highlightColor : Theme.primaryColor
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.horizontalPageMargin
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
truncationMode: TruncationMode.Fade
|
||||
width: parent.width - 3 * Theme.horizontalPageMargin
|
||||
}
|
||||
Label {
|
||||
text: model.country
|
||||
color: Theme.secondaryColor
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.horizontalPageMargin
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: Theme.paddingSmall
|
||||
}
|
||||
Label {
|
||||
text: model.range
|
||||
color: Theme.secondaryColor
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: Theme.horizontalPageMargin
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
ListItemLayout {
|
||||
title.text: model.name
|
||||
title.color: model.isPreferred ? Theme.highlightColor : Theme.primaryColor
|
||||
title.truncationMode: TruncationMode.Fade
|
||||
subtitle.text: model.country
|
||||
subtitle.color: Theme.secondaryColor
|
||||
summary.text: model.range
|
||||
summary.color: Theme.secondaryColor
|
||||
}
|
||||
onClicked: {
|
||||
console.log("[tide] open port:", model.name, "custom:", model.custom)
|
||||
|
||||
Reference in New Issue
Block a user