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:
@@ -7,6 +7,7 @@
|
||||
#include <QVariantMap>
|
||||
|
||||
class QNetworkReply;
|
||||
class QTimer;
|
||||
class Settings;
|
||||
|
||||
// Client HTTP verso il bridge sul server (~/workspace/Carlo/Aira/aira_bridge.py).
|
||||
@@ -24,6 +25,16 @@ class ApiClient : public QObject
|
||||
// Statistiche della pagina "Dati" (calore, elettricita', COP, risparmi).
|
||||
// Separata dal riassunto: e' una chiamata piu' lenta, con cache lato bridge.
|
||||
Q_PROPERTY(QVariantMap stats READ stats NOTIFY statsChanged)
|
||||
// Salute dell'aggiornamento: "stale" = l'ultimo tentativo non e' riuscito,
|
||||
// quindi i numeri a schermo sono vecchi e vanno mostrati spenti.
|
||||
Q_PROPERTY(bool stale READ stale NOTIFY staleChanged)
|
||||
Q_PROPERTY(QString lastUpdate READ lastUpdate NOTIFY lastUpdateChanged)
|
||||
Q_PROPERTY(bool hasData READ hasData NOTIFY summaryChanged)
|
||||
// Messaggio dell'ultimo comando (o errore), mostrato in fondo alla pagina:
|
||||
// sta qui e non nel QML perche' vale per OGNI pagina, e perche' cosi' il
|
||||
// messaggio e' lo stesso ovunque si stia.
|
||||
Q_PROPERTY(QString notice READ notice NOTIFY noticeChanged)
|
||||
Q_PROPERTY(bool noticeIsError READ noticeIsError NOTIFY noticeChanged)
|
||||
|
||||
public:
|
||||
explicit ApiClient(Settings *settings, QObject *parent = 0);
|
||||
@@ -32,6 +43,18 @@ public:
|
||||
bool configured() const;
|
||||
QVariantMap summary() const { return m_summary; }
|
||||
QVariantMap stats() const { return m_stats; }
|
||||
bool stale() const { return m_stale; }
|
||||
QString lastUpdate() const { return m_lastUpdate; }
|
||||
bool hasData() const { return !m_summary.isEmpty(); }
|
||||
QString notice() const { return m_notice; }
|
||||
bool noticeIsError() const { return m_noticeIsError; }
|
||||
|
||||
// Stato leggibile in una riga (stateShort) e per esteso (stateLong), piu'
|
||||
// il livello da cui la UI prende il colore. Stanno in C++ perche' sono
|
||||
// logica pura: verificate in tests/core_test.cpp e non duplicate fra pagine.
|
||||
Q_INVOKABLE QString stateShort() const;
|
||||
Q_INVOKABLE QString stateLong() const;
|
||||
Q_INVOKABLE int statusLevel() const;
|
||||
|
||||
// Scarica il riassunto e lo emette con summaryChanged().
|
||||
Q_INVOKABLE void refresh();
|
||||
@@ -56,6 +79,9 @@ public:
|
||||
signals:
|
||||
void busyChanged();
|
||||
void configuredChanged();
|
||||
void staleChanged();
|
||||
void lastUpdateChanged();
|
||||
void noticeChanged();
|
||||
void summaryChanged(const QVariantMap &summary);
|
||||
void statsChanged(const QVariantMap &stats);
|
||||
void statsRefreshed(bool ok, const QString &message);
|
||||
@@ -68,10 +94,17 @@ private:
|
||||
const QByteArray &body, int timeoutSec);
|
||||
void armTimeout(QNetworkReply *reply, int seconds);
|
||||
void setBusy(bool value);
|
||||
// Mostra un messaggio in fondo alla pagina per qualche secondo.
|
||||
void setNotice(const QString &message, bool isError);
|
||||
|
||||
Settings *m_settings;
|
||||
QNetworkAccessManager m_nam;
|
||||
bool m_busy;
|
||||
bool m_stale;
|
||||
QString m_lastUpdate;
|
||||
QString m_notice;
|
||||
bool m_noticeIsError;
|
||||
QTimer *m_noticeTimer;
|
||||
QVariantMap m_summary;
|
||||
QVariantMap m_stats;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user