From d6cc714ef9d672d45829d048a3b548b6bd645bae Mon Sep 17 00:00:00 2001 From: Carlo Baratto Date: Tue, 1 Sep 2026 22:54:53 +0200 Subject: [PATCH] lista: ListItemLayout (titolo+paese+range senza sovrapposizioni); card porto vicino: binding con guardia, click centralizzato openPort, log --- qml/pages/DetailPage.qml | 26 ++++++++++++++++---------- qml/pages/MainPage.qml | 34 ++++++++-------------------------- 2 files changed, 24 insertions(+), 36 deletions(-) diff --git a/qml/pages/DetailPage.qml b/qml/pages/DetailPage.qml index 7d611e6..19ed09b 100644 --- a/qml/pages/DetailPage.qml +++ b/qml/pages/DetailPage.qml @@ -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) } } diff --git a/qml/pages/MainPage.qml b/qml/pages/MainPage.qml index d6b0084..6cd7b77 100644 --- a/qml/pages/MainPage.qml +++ b/qml/pages/MainPage.qml @@ -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)