Files
harbour-hermes/qml/pages/LoginPage.qml
T
kaneda 98139be96a fix(qml): correzioni Silica post-primo-test su device (v0.1.1)
Pagine non caricabili ("Impossibile caricare la pagina") per API
inesistenti nella Silica del kit Sailfish 5.1 / Qt 5.6 — verificate
sui docs ufficiali (pagine -members) e incrociate coi pattern
provati su device (tide/calibreweb/quill):

- TextField: rimosso onAccepted (segnale "accepted" inesistente)
  -> EnterKey.enabled/.onClicked (LoginPage, ChatPage)
- Button: rimosso "highlighted" (inesistente su Button) dal mic
- ComboBox: menu con MenuItem espliciti (via Repeater non provato)
- Theme.highlightDimmerColor -> Theme.rgba(highlightBackgroundColor)
- Azioni nei menu instradate via funzioni della Page (pattern tide)
- SessionsPage: titolo delegato piu' robusto (no "undefined")
2026-09-12 08:09:30 +02:00

80 lines
2.4 KiB
QML

import QtQuick 2.0
import Sailfish.Silica 1.0
// Login alla Web UI di Hermes: URL del server + password.
// La password non viene salvata: dopo il login resta il cookie di sessione.
Page {
id: page
Column {
anchors.left: parent.left
anchors.right: parent.right
spacing: Theme.paddingLarge
PageHeader { title: qsTr("Sign in") }
Label {
x: Theme.horizontalPageMargin
width: parent.width - 2 * Theme.horizontalPageMargin
wrapMode: Text.WordWrap
font.pixelSize: Theme.fontSizeSmall
color: Theme.secondaryColor
text: qsTr("Use the same password you use in the Hermes Web UI in your browser.")
}
TextField {
id: urlField
width: parent.width
label: qsTr("Server")
placeholderText: "https://hermes.example.com"
inputMethodHints: Qt.ImhUrlCharactersOnly | Qt.ImhNoAutoUppercase
}
TextField {
id: passField
width: parent.width
label: qsTr("Password")
echoMode: TextInput.Password
inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText
// Silica TextField NON ha il segnale "accepted": l'invio si gestisce
// con la proprietà allegata EnterKey (pattern provato sul device).
EnterKey.enabled: text.length > 0
EnterKey.onClicked: page.doLogin()
}
Button {
anchors.horizontalCenter: parent.horizontalCenter
text: api.busy ? qsTr("Signing in…") : qsTr("Sign in")
enabled: !api.busy && passField.text.length > 0
onClicked: page.doLogin()
}
Label {
x: Theme.horizontalPageMargin
width: parent.width - 2 * Theme.horizontalPageMargin
wrapMode: Text.WordWrap
visible: api.lastError.length > 0
color: Theme.errorColor
text: api.lastError
}
}
Connections {
target: api
onLoggedInChanged: {
if (api.loggedIn)
pageStack.replace(Qt.resolvedUrl("SessionsPage.qml"))
}
}
Component.onCompleted: urlField.text = appSettings.baseUrl
function doLogin() {
if (passField.text.length === 0)
return
api.clearError()
appSettings.baseUrl = urlField.text
api.login(passField.text)
}
}