harbour-aira 0.1.0: client Sailfish per pompa di calore Aira (bridge HTTP + stato e comandi ACS)
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
import QtQuick 2.2
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
// Indirizzo e token del bridge. Si salvano all'uscita dalla pagina, alla
|
||||
// pressione di Invio e col pulsante Salva: NON a ogni tasto (QSettings.sync()
|
||||
// su ogni carattere consuma scritture senza motivo).
|
||||
Page {
|
||||
id: page
|
||||
|
||||
allowedOrientations: Orientation.All
|
||||
|
||||
property string urlText: appSettings.baseUrl
|
||||
property string tokenText: appSettings.token
|
||||
property string testResult: ""
|
||||
property bool testOk: false
|
||||
|
||||
function save() {
|
||||
appSettings.baseUrl = urlText.trim()
|
||||
appSettings.token = tokenText.trim()
|
||||
}
|
||||
|
||||
function testAndReport() {
|
||||
save()
|
||||
page.testResult = qsTr("verifico…")
|
||||
api.testConnection()
|
||||
}
|
||||
|
||||
onStatusChanged: {
|
||||
if (status === PageStatus.Inactive)
|
||||
save()
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: api
|
||||
onConnectionTested: {
|
||||
page.testOk = ok
|
||||
page.testResult = message
|
||||
}
|
||||
}
|
||||
|
||||
SilicaFlickable {
|
||||
anchors.fill: parent
|
||||
contentHeight: col.height + Theme.paddingLarge
|
||||
|
||||
Column {
|
||||
id: col
|
||||
width: parent.width
|
||||
spacing: Theme.paddingMedium
|
||||
|
||||
PageHeader { title: qsTr("Impostazioni") }
|
||||
|
||||
TextField {
|
||||
id: urlField
|
||||
x: Theme.horizontalPageMargin
|
||||
width: parent.width - 2 * Theme.horizontalPageMargin
|
||||
label: qsTr("Indirizzo del bridge")
|
||||
placeholderText: "192.168.2.50:8790"
|
||||
text: page.urlText
|
||||
onTextChanged: if (text !== page.urlText) page.urlText = text
|
||||
EnterKey.enabled: true
|
||||
EnterKey.iconSource: "image://theme/icon-m-enter-accept"
|
||||
EnterKey.onClicked: page.save()
|
||||
}
|
||||
|
||||
// PasswordField: mette l'icona nativa mostra/nascondi, niente
|
||||
// TextField con echoMode gestito a mano.
|
||||
PasswordField {
|
||||
id: tokenField
|
||||
x: Theme.horizontalPageMargin
|
||||
width: parent.width - 2 * Theme.horizontalPageMargin
|
||||
label: qsTr("Token del bridge")
|
||||
showEchoModeToggle: true
|
||||
text: page.tokenText
|
||||
onTextChanged: if (text !== page.tokenText) page.tokenText = text
|
||||
EnterKey.enabled: true
|
||||
EnterKey.iconSource: "image://theme/icon-m-enter-accept"
|
||||
EnterKey.onClicked: page.save()
|
||||
}
|
||||
|
||||
Label {
|
||||
x: Theme.horizontalPageMargin
|
||||
width: parent.width - 2 * Theme.horizontalPageMargin
|
||||
text: qsTr("Indirizzo e token si leggono sul server: il token è in ~/.hermes/profiles/carlo/aira_bridge.json. Senza schema viene usato http://.")
|
||||
color: Theme.secondaryColor
|
||||
font.pixelSize: Theme.fontSizeExtraSmall
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
Button {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text: qsTr("Salva")
|
||||
onClicked: {
|
||||
page.save()
|
||||
page.testResult = qsTr("impostazioni salvate")
|
||||
page.testOk = true
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text: qsTr("Prova connessione")
|
||||
onClicked: page.testAndReport()
|
||||
}
|
||||
|
||||
Label {
|
||||
visible: page.testResult.length > 0
|
||||
x: Theme.horizontalPageMargin
|
||||
width: parent.width - 2 * Theme.horizontalPageMargin
|
||||
text: page.testResult
|
||||
color: page.testOk ? Theme.highlightColor : Theme.errorColor
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user