0.7.0: assenza con date, conto alla rovescia del boost, catalogo rifatto
- 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.
This commit is contained in:
@@ -136,8 +136,12 @@ CoverBackground {
|
||||
}
|
||||
|
||||
Label {
|
||||
text: cover.obiettivo("dhw_target")
|
||||
color: Theme.secondaryColor
|
||||
// Col boost in corso questo posto lo prende il conto alla
|
||||
// rovescia: piu' utile del valore obiettivo.
|
||||
text: api.boostActive
|
||||
? qsTr("boost %1").arg(api.boostCountdown)
|
||||
: cover.obiettivo("dhw_target")
|
||||
color: api.boostActive ? Theme.highlightColor : Theme.secondaryColor
|
||||
font.pixelSize: Theme.fontSizeExtraSmall
|
||||
width: parent.width - acquaOra.width
|
||||
elide: Text.ElideRight
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
import QtQuick 2.6
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
// Assenza con le date (richiesta dell'utente, 11/10/2026): si scelgono inizio e
|
||||
// fine e il comando parte solo quando si accetta. La "fine" e' il giorno in cui
|
||||
// l'impianto ricomincia a scaldare: nell'uso di Carlo, il giorno prima del
|
||||
// rientro. Durante l'assenza la casa resta a 15 °C.
|
||||
Dialog {
|
||||
id: away
|
||||
|
||||
property date inizio: new Date()
|
||||
property date fine: new Date(Date.now() + 7 * 24 * 3600000)
|
||||
|
||||
// Non si accetta una fine che non viene dopo l'inizio: il bridge la
|
||||
// respingerebbe comunque, ed e' meglio non far partire il comando.
|
||||
canAccept: away.fine > away.inizio
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
|
||||
DialogHeader {
|
||||
title: qsTr("Away mode")
|
||||
acceptText: qsTr("Activate")
|
||||
}
|
||||
|
||||
ValueButton {
|
||||
label: qsTr("From")
|
||||
value: Qt.formatDate(away.inizio, Qt.SystemLocaleShortDate)
|
||||
onClicked: {
|
||||
var scelta = pageStack.push("Sailfish.Silica.DatePickerDialog",
|
||||
{ "date": away.inizio })
|
||||
scelta.accepted.connect(function() { away.inizio = scelta.date })
|
||||
}
|
||||
}
|
||||
|
||||
ValueButton {
|
||||
label: qsTr("To")
|
||||
value: Qt.formatDate(away.fine, Qt.SystemLocaleShortDate)
|
||||
onClicked: {
|
||||
var scelta = pageStack.push("Sailfish.Silica.DatePickerDialog",
|
||||
{ "date": away.fine })
|
||||
scelta.accepted.connect(function() { away.fine = scelta.date })
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
x: Theme.horizontalPageMargin
|
||||
width: parent.width - 2 * Theme.horizontalPageMargin
|
||||
text: qsTr("The house stays at 15 °C and starts heating again on the day chosen as \"To\".")
|
||||
wrapMode: Text.WordWrap
|
||||
color: Theme.secondaryColor
|
||||
font.pixelSize: Theme.fontSizeExtraSmall
|
||||
}
|
||||
}
|
||||
}
|
||||
+22
-2
@@ -223,6 +223,18 @@ Page {
|
||||
}
|
||||
}
|
||||
|
||||
// Conto alla rovescia del boost, da 30:00 a 00:00 (richiesta
|
||||
// dell'utente): si vede solo mentre il boost e' in corso.
|
||||
Label {
|
||||
visible: api.configured && api.boostActive
|
||||
x: Theme.horizontalPageMargin
|
||||
width: parent.width - 2 * Theme.horizontalPageMargin
|
||||
text: qsTr("Boost · %1").arg(api.boostCountdown)
|
||||
color: Theme.highlightColor
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Label {
|
||||
visible: api.configured
|
||||
x: Theme.horizontalPageMargin
|
||||
@@ -272,8 +284,16 @@ Page {
|
||||
remorse.execute(assenzaBtn, qsTr("Away mode off"),
|
||||
function() { api.sendCommand("away_mode_off") })
|
||||
} else {
|
||||
remorse.execute(assenzaBtn, qsTr("Away mode on"),
|
||||
function() { api.sendCommand("away_mode_on") })
|
||||
// L'assenza si imposta da un popup con le date
|
||||
// (richiesta dell'utente): si apre qui e il comando
|
||||
// parte solo se si accetta.
|
||||
var scelta = pageStack.push(Qt.resolvedUrl("AwayDialog.qml"))
|
||||
scelta.accepted.connect(function() {
|
||||
api.sendCommand("away_mode_on", null, {
|
||||
"start": Qt.formatDate(scelta.inizio, "yyyy-MM-dd"),
|
||||
"end": Qt.formatDate(scelta.fine, "yyyy-MM-dd")
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user