'T. casa', 'T. acqua', 'Temperatura esterna'. Stringhe proprie della copertina:
la copertina condivideva 'House' e 'Hot water' con la Home, quindi cambiare la
traduzione avrebbe cambiato anche la Home, che resta 'Casa' e 'Acqua calda'.
La pagina Regolazioni aveva due tasti sempre attivi (avvia/ferma) che non
dicevano cosa sta facendo l'impianto e potevano contraddire la Home. Ora un
ActionButton solo, con testo e comando da api.boostActive — lo stesso dato della
Home — piu' il tempo che resta quando il boost corre.
Alla pressione Silica ri-parenta il RemorseItem dentro la fila dei tre tasti e
ci disegna sopra il banner (messaggio + conto alla rovescia) a margini fissi:
il suo riquadro non ha la larghezza del tasto, quindi copre i tasti vicini.
Il messaggio lo mostra gia' la NoticeBar, che ora ha altezza fissa a una riga e
una banda riservata sotto il contenuto in tutte e cinque le pagine.
Carlo segnalava la riga che copriva i tasti mentre la correzione era nella
0.7.1: non c'era modo di sapere quale build stesse girando. In Impostazioni
ora c'e' 'Versione 0.7.4'. La disposizione l'ho anche misurata, replicandola
in QML nel container: con la scatola da 56 px la riga cade a y=240 dentro i
tasti (176..286), con quella da 152 a y=336 sotto.
'22,5/19,0 °C' era la scrittura vecchia: l'obiettivo ora segue la freccia.
La terza riga dice 'Esterno' (l'italiano era 'esterna %1 °C', minuscolo e
femminile, residuo di quando la riga era un'altra frase). Scelte di Carlo,
chieste prima di toccare.
In Home e in copertina: un tocco ferma il boost invece di farne ripartire un
altro (dalla copertina era il caso peggiore). Il conto alla rovescia ora prende
il posto del suggerimento nella stessa riga e con lo stesso carattere: prima,
essendo piu' alto, spingeva giu' i tasti delle azioni rapide.
Glifo di stop disegnato con scripts/make_glyphs.py. Catalogo 199 voci.
- AwayDialog.qml: popup con inizio e fine (Dialog, ValueButton,
DatePickerDialog: componenti e proprieta' verificati nella guida Silica
dell'SDK). Il tasto Assenza apre il popup invece di mandare il comando;
- conto alla rovescia 30:00 -> 00:00 in Home e in copertina, con i secondi
dell'impianto (AiraJson::countdown + timer che si riallinea a ogni lettura);
- commandPayload accetta campi extra (start/end);
- catalogo: lupdate leggeva solo i C++ e marcava 151 voci QML come obsolete.
Ora src e qml espliciti: 197 stringhe, 0 non tradotte;
- versione 0.7.0 (spec, main.cpp), PROTOCOL, README/PIANO, post per il forum.
La copia del bridge dentro l'app va tenuta allineata: contiene la correzione
del boost, dell'assenza, di ACS off e del riscaldamento forzato, che la
libreria accetta solo con un argomento. Il pacchetto Sailfish non cambia (il
bridge non entra nell'RPM), quindi non serve ricostruire l'RPM.
Le icone della 0.6.7 erano disegnate a piena misura e il pulsante Silica le
portava a Theme.iconSizeMedium (64 px, misurato sullo screenshot del telefono):
in un tasto largo un terzo di schermo restavano 41 px di testo e le etichette
uscivano tagliate. Ora il tasto dichiara icon.width/height:
Theme.iconSizeExtraSmall e i glifi riempiono il loro riquadro.
Con la geometria vera (tasto 161 px, rientri 16, distacco 24) le etichette
Assenza/Torna/Altro e Away/Home/More ci stanno con margine; "Comandi" (8
lettere) no: il tasto dice Altro, la pagina resta Comandi impianto.
Il pulsante Silica non espone il carattere, quindi il testo non si puo'
rimpicciolire: l'unica leva e' l'icona. Prova ripetibile con i numeri misurati
in docs/icona/tasti-alla-misura-vera.png.
- CommandsPage: 4 interruttori (TextSwitch) al posto di 8 pulsanti in coppie
accendi/spegni, piu' 3 pulsanti per le azioni senza stato. Gli interruttori
seguono il dato vero (automaticCheck: false), non anticipano l'impianto, e
la sezione 'Stato attuale' non serve piu'.
- La pagina si chiama 'Comandi impianto'.
- PlantPage: frase estesa dello stato, diagnostica (verifica impianto) e le
letture che non avevano posto (pompa, modi consentiti, manuale, sbrinamento,
luci di firma).
- SettingsPage: 'Salva' e 'Prova connessione' diventano 'Salva e prova'.
- ApiClient: dopo un comando riuscito lo stato si rilegge da solo (prima non
si aggiornava nulla: l'aggiornamento automatico non esisteva).
- NoticeBar anche su Dati, Impianto e Comandi; via i messaggi dentro il
contenuto che scorre.
- Home: stato in una riga col pallino, due letture grandi toccabili, tre
azioni rapide; via i due slider, i sette pulsanti e la scheda separata.
- Nuova pagina Regolazioni: un blocco per grandezza, valore attuale sempre
visibile, preimpostazioni per le dita fredde, conferma esplicita; il
pulsante e' attivo solo se c'e' davvero qualcosa da cambiare.
- Messaggi dei comandi spostati in ApiClient (api.notice) con NoticeBar
ancorata in fondo: prima nascevano fuori dallo schermo.
- Stato breve/esteso/livello in C++ (testabile senza SDK), 18 verifiche
nuove: 79/79.
- stale + lastUpdate: la Home dice 'aggiornato alle HH:MM' e spegne i
numeri vecchi invece di farli passare per freschi.
- 192/192 stringhe tradotte (54 nuove).
- home: temperatura esterna e in casa/assente in alto, messaggio di stato,
scheda impianto con temperatura stanza e acqua calda; comandi sotto
- pagina Dati: calore prodotto, elettricita' usata, COP acqua calda e
riscaldamento, risparmio, CO2 evitata, Smart Tariff Control (mese per mese)
- pagina Impianto: stato, termostato a parete, versioni software, errori
- bridge 0.4.0: rotta /stats (servizio statistiche del cloud) e blocco
dispositivo in /summary (ID breve, versioni, termostato)
- C++: parseStats, formatNumber, formatMoney, monthLabel (separatore e
valuta secondo la lingua); 61/61 verifiche del nucleo
- anteprime aggiornate (dati, impianto) in inglese e italiano
L'inglese è la lingua sorgente delle stringhe; l'italiano sta nel catalogo
translations/harbour-aira-it.ts (99 stringhe), che lupdate aggiorna e lrelease
compila in build. Di serie la lingua del sistema, con ripiego sull'inglese.
- nuova classe Translator: risolve la lingua prima di createView e allinea
QLocale::setDefault, così anche i numeri seguono la lingua (23,0 °C in
italiano, 23.0 °C in inglese) — le temperature passano da formatValue, non
più dal toFixed() di JavaScript che metteva sempre il punto
- Qt 5.6 non ha QQmlEngine::retranslate(): al cambio di lingua la radice QML
viene ricaricata (setSource ricrea il componente anche a url invariata)
- le etichette di stato in airajson.cpp usano QCoreApplication::translate per
esteso: lupdate non riconosce una funzione wrapper e le avrebbe perse
- selettore della lingua in Impostazioni (Sistema / English / Italiano)
- test: 41/41, carica il .qm vero come fa main.cpp e verifica entrambe le
lingue, il ripiego e i formati numerici
- anteprime bilingui (docs/anteprima/ inglese, it/ italiano), README e PIANO
aggiornati, spec RPM con i cataloghi in %files