0.7.6: via il banner del remorse dai tasti rapidi

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.
This commit is contained in:
Carlo
2026-10-11 17:26:13 +02:00
parent 35297a0fa0
commit f4bee218bb
10 changed files with 198 additions and 168 deletions
+7 -2
View File
@@ -17,7 +17,11 @@ Rectangle {
right: parent.right
bottom: parent.bottom
}
height: message.height + 2 * Theme.paddingMedium
// Altezza FISSA, una riga sola: le pagine riservano questo spazio sotto la
// zona che scorre (`anchors.bottomMargin: notice.banda`), cosi' il messaggio
// non copre mai il contenuto e non sposta niente quando compare.
readonly property real banda: Theme.fontSizeSmall * 2.2 + 2 * Theme.paddingMedium
height: banda
color: Qt.rgba(0, 0, 0, 0.78)
opacity: api.notice.length > 0 ? 1 : 0
visible: opacity > 0
@@ -37,6 +41,7 @@ Rectangle {
text: api.notice
color: api.noticeIsError ? Theme.errorColor : Theme.highlightColor
font.pixelSize: Theme.fontSizeSmall
wrapMode: Text.Wrap
maximumLineCount: 1
elide: Text.ElideRight
}
}
+3 -1
View File
@@ -38,6 +38,8 @@ Page {
SilicaFlickable {
anchors.fill: parent
// Banda riservata al messaggio in fondo: cosi' non copre il contenuto.
anchors.bottomMargin: notice.banda
contentHeight: col.height + Theme.paddingLarge
PullDownMenu {
@@ -167,5 +169,5 @@ Page {
}
}
NoticeBar { }
NoticeBar { id: notice }
}
+3 -1
View File
@@ -73,6 +73,8 @@ Page {
SilicaFlickable {
anchors.fill: parent
// Banda riservata al messaggio in fondo: cosi' non copre il contenuto.
anchors.bottomMargin: notice.banda
contentHeight: col.height + Theme.paddingLarge
PullDownMenu {
@@ -235,7 +237,7 @@ Page {
}
}
NoticeBar { }
NoticeBar { id: notice }
Component.onCompleted: {
if (api.configured) {
+13 -13
View File
@@ -92,12 +92,17 @@ Page {
misura.start()
}
// Fuori dal pulsante: dentro il pulsante i figli finiscono nel contentItem.
RemorseItem { id: remorse }
// Niente RemorseItem sui tasti rapidi: Silica se lo ri-parenta dentro la
// fila dei tre tasti e ci disegna sopra il suo banner (il riquadro del
// remorse non ha la larghezza del tasto), coprendo i tasti vicini. Il
// messaggio lo dice la NoticeBar in fondo: la stessa cosa, senza rompere
// la fila. Segnalato da Carlo: "il problema c'e' quando premo un pulsante".
SilicaFlickable {
id: flick
anchors.fill: parent
// Banda riservata al messaggio in fondo: cosi' non copre il contenuto.
anchors.bottomMargin: notice.banda
contentHeight: col.height + Theme.paddingLarge
// I menu pulley stanno DENTRO la vista: come figli diretti della Page
@@ -291,14 +296,10 @@ Page {
: "../icons/quick-boost.png"
icon.width: Theme.iconSizeExtraSmall
icon.height: Theme.iconSizeExtraSmall
onClicked: remorse.execute(
boostBtn,
api.boostActive ? qsTr("Stopping DHW boost")
: qsTr("Starting DHW boost"),
function() {
api.sendCommand(api.boostActive ? "hot_water_boost_off"
: "hot_water_boost_on")
})
// Comando diretto: il messaggio lo mostra la NoticeBar in
// fondo, senza il banner del remorse sulla fila dei tasti.
onClicked: api.sendCommand(api.boostActive ? "hot_water_boost_off"
: "hot_water_boost_on")
}
Button {
@@ -314,8 +315,7 @@ Page {
icon.height: Theme.iconSizeExtraSmall
onClicked: {
if (page.raw("away_mode")) {
remorse.execute(assenzaBtn, qsTr("Away mode off"),
function() { api.sendCommand("away_mode_off") })
api.sendCommand("away_mode_off")
} else {
// L'assenza si imposta da un popup con le date
// (richiesta dell'utente): si apre qui e il comando
@@ -373,7 +373,7 @@ Page {
}
}
NoticeBar { }
NoticeBar { id: notice }
// La disposizione non e' definitiva subito: si misura un secondo dopo.
// Questa e' la riga da leggere alla prima build sul telefono: la Home deve
+3 -1
View File
@@ -47,6 +47,8 @@ Page {
SilicaFlickable {
anchors.fill: parent
// Banda riservata al messaggio in fondo: cosi' non copre il contenuto.
anchors.bottomMargin: notice.banda
contentHeight: col.height + Theme.paddingLarge
PullDownMenu {
@@ -206,7 +208,7 @@ Page {
}
}
NoticeBar { }
NoticeBar { id: notice }
Component.onCompleted: {
if (api.configured)
+3 -1
View File
@@ -76,6 +76,8 @@ Page {
SilicaFlickable {
anchors.fill: parent
// Banda riservata al messaggio in fondo: cosi' non copre il contenuto.
anchors.bottomMargin: notice.banda
contentHeight: col.height + Theme.paddingLarge
PullDownMenu {
@@ -260,5 +262,5 @@ Page {
}
}
NoticeBar { }
NoticeBar { id: notice }
}