cover: preferito custom (comune) con coordinate salvate (preferredLat/Lon); riga eventi: colonna Alta/Bassa con fade (mai sovrapposta)

This commit is contained in:
2026-09-02 12:41:50 +02:00
parent 4794f5d467
commit 9765250531
5 changed files with 69 additions and 2 deletions
+8
View File
@@ -41,6 +41,7 @@ CoverBackground {
function refresh() {
var pref = appSettings.preferredPort
console.log("[tide] cover refresh, pref:", pref)
if (pref === "") {
portLabel.text = qsTr("No port selected")
nextLabel.text = ""
@@ -50,6 +51,13 @@ CoverBackground {
for (var i = 0; i < Tides.PORTS.length; i++) {
if (Tides.PORTS[i][0] === pref) { p = Tides.PORTS[i]; break }
}
// preferito custom (comune): ricostruisci le costanti da lat/lon
if (!p && appSettings.preferredLat >= 0) {
var np = Tides.nearestPort(appSettings.preferredLat, appSettings.preferredLon)
var cost = np.km < 222 ? np.port[4].slice()
: Tides.synthConst(appSettings.preferredLat, appSettings.preferredLon)
p = [pref, "", appSettings.preferredLat, appSettings.preferredLon, cost, "pref"]
}
if (!p) { portLabel.text = qsTr("No port selected"); nextLabel.text = ""; return }
portLabel.text = p[0]
var ex = Tides.extrema(p, new Date(), 1)
+10 -1
View File
@@ -244,7 +244,8 @@ Page {
anchors.left: parent.left
anchors.leftMargin: Theme.horizontalPageMargin
anchors.verticalCenter: parent.verticalCenter
width: 110
width: 130
truncationMode: TruncationMode.Fade
}
Label {
text: model.date + " " + model.time
@@ -366,6 +367,14 @@ Page {
visible: page.port && page.port[0] !== appSettings.preferredPort
onClicked: {
appSettings.preferredPort = page.port[0]
// se è un comune (custom) salva le coordinate per la cover
if (page.custom) {
appSettings.preferredLat = page.port[2]
appSettings.preferredLon = page.port[3]
} else {
appSettings.preferredLat = -1
appSettings.preferredLon = -1
}
pageStack.replace(Qt.resolvedUrl("MainPage.qml"))
}
}
+13
View File
@@ -265,12 +265,25 @@ Page {
updateList()
var pref = appSettings.preferredPort
if (pref !== "") {
var found = false
for (var i = 0; i < Tides.PORTS.length; i++) {
if (Tides.PORTS[i][0] === pref) {
page.openDetail(Tides.PORTS[i], i, false)
found = true
break
}
}
// preferito custom (comune): ricostruisci e apri il dettaglio
if (!found && appSettings.preferredLat >= 0) {
var lat = appSettings.preferredLat
var lon = appSettings.preferredLon
var np = Tides.nearestPort(lat, lon)
var cost = np.km < 222 ? np.port[4].slice()
: Tides.synthConst(lat, lon)
page.openDetail([pref, qsTr("Italy"), lat, lon, cost,
np.km < 222 ? "near:" + np.port[0] : "synth"],
-1, true)
}
}
}
}
+26
View File
@@ -32,6 +32,32 @@ void Settings::setPreferredPort(const QString &value)
emit preferredPortChanged();
}
double Settings::preferredLat() const
{
return m_settings.value(QStringLiteral("preferredLat"), -1.0).toDouble();
}
void Settings::setPreferredLat(double value)
{
if (qFuzzyCompare(value, preferredLat()))
return;
m_settings.setValue(QStringLiteral("preferredLat"), value);
emit preferredLatChanged();
}
double Settings::preferredLon() const
{
return m_settings.value(QStringLiteral("preferredLon"), -1.0).toDouble();
}
void Settings::setPreferredLon(double value)
{
if (qFuzzyCompare(value, preferredLon()))
return;
m_settings.setValue(QStringLiteral("preferredLon"), value);
emit preferredLonChanged();
}
QString Settings::unit() const
{
return m_settings.value(QStringLiteral("unit"), QStringLiteral("m")).toString();
+12 -1
View File
@@ -4,9 +4,10 @@
#include <QObject>
#include <QSettings>
// Preferenze dell'app, persistite in QSettings ("harbour", "maree"):
// Preferenze dell'app, persistite in QSettings ("harbour", "tide"):
// language "system" (segue la lingua UI Sailfish) | "en" | "it"
// preferredPort nome del porto preferito (vuoto = nessuno)
// preferredLat/Lon coordinate del preferito se è un comune (custom)
// unit "m" | "ft"
// days 1 | 2 | 3 (intervallo del grafico)
class Settings : public QObject
@@ -15,6 +16,8 @@ class Settings : public QObject
Q_PROPERTY(QString language READ language WRITE setLanguage NOTIFY languageChanged)
Q_PROPERTY(QString preferredPort READ preferredPort WRITE setPreferredPort NOTIFY preferredPortChanged)
Q_PROPERTY(double preferredLat READ preferredLat WRITE setPreferredLat NOTIFY preferredLatChanged)
Q_PROPERTY(double preferredLon READ preferredLon WRITE setPreferredLon NOTIFY preferredLonChanged)
Q_PROPERTY(QString unit READ unit WRITE setUnit NOTIFY unitChanged)
Q_PROPERTY(int days READ days WRITE setDays NOTIFY daysChanged)
@@ -27,6 +30,12 @@ public:
QString preferredPort() const;
void setPreferredPort(const QString &value);
double preferredLat() const;
void setPreferredLat(double value);
double preferredLon() const;
void setPreferredLon(double value);
QString unit() const;
void setUnit(const QString &value);
@@ -36,6 +45,8 @@ public:
signals:
void languageChanged();
void preferredPortChanged();
void preferredLatChanged();
void preferredLonChanged();
void unitChanged();
void daysChanged();