diff --git a/README.it.md b/README.it.md index 66cd3a0..e0b93ad 100644 --- a/README.it.md +++ b/README.it.md @@ -41,7 +41,7 @@ e ripiega sull'inglese; la si può scegliere anche nelle impostazioni dell'app. tocco, più i pulsanti per quello che uno stato non ce l'ha: ciclo legionella e night mode per un'ora. Gli interruttori seguono l'impianto, non lo anticipano - **Copertina** con casa e acqua calda, ognuna con il valore che l'impianto sta - tenendo adesso e il suo obiettivo ("22,9 / 19,0 °C"), più il pallino di stato + tenendo adesso e il suo obiettivo ("22,9/19,0 °C"), più il pallino di stato come nella Home - Indirizzo e token del bridge stanno nelle impostazioni dell'app (QSettings), mai nel binario diff --git a/README.md b/README.md index ababce6..b999ca4 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ status, domestic hot water, and the house target temperature per zone. the buttons for what has no state: legionella cycle and night mode for one hour. The switches follow the plant — they never anticipate it - **Cover page** showing the house and the hot water, each with the value the - plant is keeping right now and its target ("22.9 / 19.0 °C"), plus a status dot + plant is keeping right now and its target ("22.9/19.0 °C"), plus a status dot that matches the home screen - Address and bridge token live in the app settings (QSettings), never in the binary diff --git a/docs/PIANO.md b/docs/PIANO.md index e1f5ea4..75cbd5d 100644 --- a/docs/PIANO.md +++ b/docs/PIANO.md @@ -328,10 +328,11 @@ logo Aira è ancora in sospeso. **0.6.4 — la copertina.** Due righe con l'etichetta davanti, "Casa" e "Acqua", ognuna con temperatura attuale / impostata. Le frasi lunghe di prima ("ACS 53,4 °C · obiettivo 55 °C") sulla cover, che è stretta, venivano tagliate a metà: -il numero vero spariva proprio dove lo si guarda di sfuggita. Per stare nella -colonna stretta dell'etichetta, sulla cover l'acqua si chiama "Acqua"; in Home -resta "Acqua calda". +il numero vero spariva proprio dove lo si guarda di sfuggita. L'acqua si chiama +"Acqua calda" anche qui, come in Home: per stare nella colonna stretta +dell'etichetta il valore attuale è più grande e l'obiettivo più piccolo e +attaccato ("51,5/55,0 °C"). -**Stato attuale (0.6.4).** 85/85 verifiche del nucleo, 48/48 del bridge, +**Stato attuale (0.6.5).** 85/85 verifiche del nucleo, 48/48 del bridge, 191/191 stringhe tradotte, `qmllint` pulito, contratto UI↔bridge rispettato. Nessun comando è stato inviato all'impianto: tutto quanto sopra è a sola lettura. diff --git a/docs/anteprima/copertina.png b/docs/anteprima/copertina.png index 0329987..28cbfb2 100644 Binary files a/docs/anteprima/copertina.png and b/docs/anteprima/copertina.png differ diff --git a/docs/anteprima/it/copertina.png b/docs/anteprima/it/copertina.png index 9248542..ffed118 100644 Binary files a/docs/anteprima/it/copertina.png and b/docs/anteprima/it/copertina.png differ diff --git a/qml/cover/CoverPage.qml b/qml/cover/CoverPage.qml index 7b92285..0bfb7e6 100644 --- a/qml/cover/CoverPage.qml +++ b/qml/cover/CoverPage.qml @@ -4,10 +4,12 @@ import Sailfish.Silica 1.0 // Copertina: legge api.summary (context property C++), quindi non dipende // dallo scope delle property della pagina principale. // -// Due righe con l'etichetta davanti: "attuale / impostata" per la casa e per -// l'acqua. Prima erano frasi lunghe ("casa · obiettivo 19,0 °C", "ACS 53,4 °C · -// obiettivo 55 °C") e sulla cover, che e' stretta, venivano tagliate a meta': -// il numero vero spariva proprio dove serve di sfuggita. +// Due righe con l'etichetta davanti — "Casa" e "Acqua calda" — ognuna con il +// valore attuale e l'obiettivo. L'etichetta dell'acqua e' lunga e la cover e' +// stretta: percio' il valore attuale sta piu' grande e l'obiettivo piu' piccolo +// e attaccato ("51,5/55,0 °C"), invece di due numeri della stessa taglia che +// costringerebbero a tagliare. Prima erano frasi lunghe ("ACS 53,4 °C · +// obiettivo 55 °C") e il numero vero spariva a meta' riga. CoverBackground { id: cover @@ -16,9 +18,10 @@ CoverBackground { return api.formatValue(v) } - // "22,9 / 19,0 °C": attuale e impostata, con l'unita' una volta sola. - function coppia(attuale, impostata) { - return cover.t(attuale) + " / " + cover.t(impostata) + " °C" + // "/19,0 °C": l'obiettivo attaccato al valore attuale. Niente spazio dopo la + // barra: con l'etichetta lunga e' quello che tiene la riga dentro la cover. + function obiettivo(key) { + return "/" + cover.t(key) + " °C" } // Colore del pallino: gli stessi criteri della Home (vedi MainPage.qml). @@ -66,7 +69,9 @@ CoverBackground { width: parent.width - 2 * Theme.paddingMedium spacing: Theme.paddingMedium + // ---- casa ---------------------------------------------------------- // Row { + id: rigaCasa width: parent.width spacing: Theme.paddingSmall @@ -74,42 +79,70 @@ CoverBackground { text: qsTr("House") color: Theme.secondaryColor font.pixelSize: Theme.fontSizeExtraSmall - width: parent.width * 0.32 + width: rigaCasa.width * 0.42 anchors.verticalCenter: parent.verticalCenter } - Label { - text: cover.coppia("zone1_temperature", "zone1_setpoint") - // Spenta quando i numeri sono vecchi: non deve sembrare fresca. - color: api.stale ? Theme.secondaryColor : Theme.primaryColor - font.pixelSize: Theme.fontSizeSmall - font.bold: true - elide: Text.ElideRight - width: parent.width - parent.width * 0.32 - parent.spacing + Row { + width: rigaCasa.width * 0.58 - rigaCasa.spacing + spacing: 0 anchors.verticalCenter: parent.verticalCenter + + Label { + id: casaOra + // Spento quando i numeri sono vecchi: non deve sembrare fresco. + text: cover.t("zone1_temperature") + color: api.stale ? Theme.secondaryColor : Theme.primaryColor + font.pixelSize: Theme.fontSizeSmall + font.bold: true + } + + Label { + text: cover.obiettivo("zone1_setpoint") + color: Theme.secondaryColor + font.pixelSize: Theme.fontSizeExtraSmall + width: parent.width - casaOra.width + elide: Text.ElideRight + anchors.verticalCenter: parent.verticalCenter + } } } + // ---- acqua calda --------------------------------------------------- // Row { + id: rigaAcqua width: parent.width spacing: Theme.paddingSmall Label { - text: qsTr("Water") + text: qsTr("Hot water") color: Theme.secondaryColor font.pixelSize: Theme.fontSizeExtraSmall - width: parent.width * 0.32 + width: rigaAcqua.width * 0.42 anchors.verticalCenter: parent.verticalCenter } - Label { - text: cover.coppia("dhw_current", "dhw_target") - color: api.stale ? Theme.secondaryColor : Theme.primaryColor - font.pixelSize: Theme.fontSizeSmall - font.bold: true - elide: Text.ElideRight - width: parent.width - parent.width * 0.32 - parent.spacing + Row { + width: rigaAcqua.width * 0.58 - rigaAcqua.spacing + spacing: 0 anchors.verticalCenter: parent.verticalCenter + + Label { + id: acquaOra + text: cover.t("dhw_current") + color: api.stale ? Theme.secondaryColor : Theme.primaryColor + font.pixelSize: Theme.fontSizeSmall + font.bold: true + } + + Label { + text: cover.obiettivo("dhw_target") + color: Theme.secondaryColor + font.pixelSize: Theme.fontSizeExtraSmall + width: parent.width - acquaOra.width + elide: Text.ElideRight + anchors.verticalCenter: parent.verticalCenter + } } } } diff --git a/rpm/harbour-aira.spec b/rpm/harbour-aira.spec index c895cad..cc0e1da 100644 --- a/rpm/harbour-aira.spec +++ b/rpm/harbour-aira.spec @@ -1,6 +1,6 @@ Name: harbour-aira Summary: Control your Aira heat pump through a local bridge -Version: 0.6.4 +Version: 0.6.5 Release: 1 Group: Qt/Qt License: MIT @@ -37,6 +37,11 @@ Address and token of the bridge live in the app settings (AppConfigLocation); no personal data is stored in the binary. %changelog +* Sun Oct 11 2026 Carlo - 0.6.5-1 +- copertina: l'acqua si chiama "Acqua calda" come in Home (era "Acqua"). Con + l'etichetta piu' lunga il valore attuale sta piu' grande e l'obiettivo piu' + piccolo e attaccato ("51,5/55,0 °C"): la riga resta dentro la cover, che e' + stretta, e il numero attuale non si taglia * Sun Oct 11 2026 Carlo - 0.6.4-1 - copertina: due righe con l'etichetta davanti, "Casa" e "Acqua", ognuna con temperatura attuale / impostata ("22,9 / 19,0 °C"). Prima erano frasi lunghe diff --git a/scripts/render_mockups.py b/scripts/render_mockups.py index b6b35f3..95f2d1f 100644 --- a/scripts/render_mockups.py +++ b/scripts/render_mockups.py @@ -371,7 +371,7 @@ TEXTS["en"].update({ "save_and_test": "Save and test", "cover_outdoor": "outside", "cover_house": "House", - "cover_water": "Water", + "cover_hot_water": "Hot water", }) TEXTS["it"].update({ @@ -414,7 +414,7 @@ TEXTS["it"].update({ "cover_outdoor": "esterna", "night_one_hour": "Modalità notte per un'ora", "cover_house": "Casa", - "cover_water": "Acqua", + "cover_hot_water": "Acqua calda", }) @@ -566,12 +566,15 @@ def cover_screen() -> Image.Image: d.line([(card[0] + 34, card[1] + 100), (card[2] - 34, card[1] + 100)], fill=BTN_EDGE, width=2) y = card[1] + 150 - # due righe: etichetta a sinistra, "attuale / impostata" a destra - for lab, val in ((T("cover_house"), dec(22.9) + " / " + dec(19.0) + " °C"), - (T("cover_water"), dec(51.5) + " / " + dec(55.0) + " °C")): + # due righe: etichetta a sinistra, poi l'attuale piu' grande e l'obiettivo + # piu' piccolo attaccato — come nella copertina vera + colonna = 34 + int((card[2] - card[0] - 68) * 0.42) + for lab, ora, obiettivo in ((T("cover_house"), dec(22.9), dec(19.0)), + (T("cover_hot_water"), dec(51.5), dec(55.0))): d.text((card[0] + 34, y + 10), lab, font=font(22), fill=SECONDARY) - vw = d.textlength(val, font=font(30, bold=True)) - d.text((card[2] - 34 - vw, y), val, font=font(30, bold=True), fill=PRIMARY) + d.text((card[0] + colonna, y), ora, font=font(30, bold=True), fill=PRIMARY) + d.text((card[0] + colonna + d.textlength(ora, font=font(30, bold=True)), y + 4), + "/" + obiettivo + " °C", font=font(24), fill=SECONDARY) y += 72 d.text((card[0] + 34, card[3] - 62), T("cover_outdoor") + " " + dec(18.0) + " °C", font=font(22), fill=SECONDARY) diff --git a/src/main.cpp b/src/main.cpp index fdd0367..fe91e30 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,7 +21,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) app->setOrganizationName(QStringLiteral("harbour")); app->setApplicationName(QStringLiteral("aira")); - app->setApplicationVersion(QStringLiteral("0.6.4")); + app->setApplicationVersion(QStringLiteral("0.6.5")); Settings settings; ApiClient api(&settings); @@ -36,7 +36,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) // Prima riga del log: dice subito se il device sta girando la build nuova // o una stale (trappola nota del build engine). - qDebug() << "harbour-aira v0.6.4 build" << __DATE__ << __TIME__; + qDebug() << "harbour-aira v0.6.5 build" << __DATE__ << __TIME__; view->rootContext()->setContextProperty(QStringLiteral("appSettings"), &settings); view->rootContext()->setContextProperty(QStringLiteral("api"), &api); diff --git a/translations/harbour-aira-it.ts b/translations/harbour-aira-it.ts index e45cf73..4b5a913 100644 --- a/translations/harbour-aira-it.ts +++ b/translations/harbour-aira-it.ts @@ -337,22 +337,22 @@ CoverPage - + House Casa - - Water - Acqua + + Hot water + Acqua calda - + Not updated · last %1 Non aggiornato · ultimo %1 - + outside %1 °C esterna %1 °C