0.6.0 blocco 1: Home di consultazione e pagina Regolazioni

- 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).
This commit is contained in:
2026-10-10 09:47:16 +02:00
parent 667ff63907
commit d5b63b57df
10 changed files with 1038 additions and 600 deletions
+61
View File
@@ -190,6 +190,67 @@ int main(int argc, char *argv[])
}
}
// --- stato in una riga e per esteso (Home e pagina Impianto) ----------- //
{
QVariantMap calmo;
calmo.insert("errors_count", 0);
calmo.insert("away_mode", false);
calmo.insert("night_mode", false);
calmo.insert("force_heating", false);
calmo.insert("hot_water_heating", false);
calmo.insert("pump_active_state", "PUMP_ACTIVE_STATE_IDLE");
check(AiraJson::stateShort(calmo) == "Everything is fine",
"stato breve: nessuna attivita'");
check(AiraJson::stateLong(calmo) == "Relax: the heat pump is running smoothly.",
"stato esteso: frase dell'app ufficiale");
check(AiraJson::statusLevel(calmo) == 0, "livello: regolare");
QVariantMap lavora = calmo;
lavora.insert("pump_active_state", "PUMP_ACTIVE_STATE_RUNNING");
check(AiraJson::stateShort(lavora) == "Working", "stato breve: pompa in funzione");
check(AiraJson::statusLevel(lavora) == 0,
"livello: pompa in funzione e' comunque regolare");
QVariantMap acqua = calmo;
acqua.insert("hot_water_heating", true);
check(AiraJson::stateShort(acqua) == "Heating the hot water",
"stato breve: sta scaldando l'acqua");
check(AiraJson::stateLong(acqua) == "The heat pump is heating the hot water.",
"stato esteso: acqua calda in carica");
QVariantMap assente = calmo;
assente.insert("away_mode", true);
check(AiraJson::stateShort(assente) == "Away mode", "stato breve: assenza");
check(AiraJson::statusLevel(assente) == 1, "livello: modo attivo, non regolare");
QVariantMap uno = calmo;
uno.insert("errors_count", 1);
check(AiraJson::stateShort(uno) == "Attention: one error",
"stato breve: un errore (singolare)");
check(AiraJson::stateLong(uno) == "Attention: one error on the plant",
"stato esteso: un errore");
check(AiraJson::statusLevel(uno) == 2, "livello: errore");
QVariantMap due = calmo;
due.insert("errors_count", 2);
check(AiraJson::stateShort(due) == "Attention: 2 errors",
"stato breve: due errori (plurale)");
check(AiraJson::stateLong(due) == "Attention: 2 errors on the plant",
"stato esteso: due errori");
// L'errore ha la precedenza su tutto: e' quello che va visto per primo.
QVariantMap misto = assente;
misto.insert("errors_count", 3);
check(AiraJson::stateShort(misto) == "Attention: 3 errors",
"stato breve: l'errore vince sul modo attivo");
check(AiraJson::statusLevel(misto) == 2, "livello: errore prima di tutto");
check(AiraJson::stateShort(QVariantMap()) == "No data",
"stato breve: nessun dato");
check(AiraJson::stateLong(QVariantMap()).isEmpty(),
"stato esteso: nessun dato = nessuna frase");
}
qInfo() << "----";
qInfo() << checks - failures << "/" << checks << "verifiche superate";
return failures == 0 ? 0 : 1;