schermate di configurazione complete: razze disponibili, mio pollaio, registro galline, clienti, backup/ripristino nel formato dell'app Android, lingua a runtime, introduzione e informazioni
- datastore: export/import JSON con le chiavi camelCase dell'app Android (breedSettings/reservations/customers), scorte e ultimo aggiornamento preservati al ripristino - settings: flag 'introduzione vista' - desktop: permesso Documents (dove finisce il backup) - nuovi controlli: tools/check_qml.py (chiavi di traduzione, simboli JS, pagine, componenti) e qmllint nella suite - versione 0.2.0
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
import QtQuick 2.2
|
||||
import Sailfish.Silica 1.0
|
||||
import "../js/i18n.js" as I18N
|
||||
|
||||
// Lingua dell'applicazione: le quattro dell'originale (EN/IT/FR/DE).
|
||||
// A differenza di QTranslator, la tabella di traduzione in i18n.js si applica
|
||||
// subito: le pagine che si riaprono usano la lingua nuova senza riavviare.
|
||||
Page {
|
||||
id: page
|
||||
allowedOrientations: Orientation.All
|
||||
|
||||
property string lang: "en"
|
||||
|
||||
function tr(key, arg) { return I18N.t(key, arg, page.lang) }
|
||||
|
||||
ListModel { id: langModel }
|
||||
|
||||
readonly property var codes: [ "en", "it", "fr", "de" ]
|
||||
readonly property var names: [ "English", "Italiano", "Français", "Deutsch" ]
|
||||
|
||||
function reload() {
|
||||
page.lang = I18N.langFor(appSettings.language, Qt.locale().name)
|
||||
langModel.clear()
|
||||
for (var i = 0; i < page.codes.length; i++) {
|
||||
langModel.append({
|
||||
"n": i,
|
||||
"name": page.names[i],
|
||||
"current": page.codes[i] === page.lang
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function choose(index) {
|
||||
var code = page.codes[index]
|
||||
if (appSettings.language === code) {
|
||||
pageStack.pop()
|
||||
return
|
||||
}
|
||||
appSettings.language = code
|
||||
page.reload()
|
||||
}
|
||||
|
||||
Component.onCompleted: page.reload()
|
||||
|
||||
SilicaListView {
|
||||
id: listView
|
||||
anchors.fill: parent
|
||||
|
||||
header: PageHeader { title: page.tr("language") }
|
||||
model: langModel
|
||||
|
||||
delegate: ListItem {
|
||||
id: langItem
|
||||
|
||||
Label {
|
||||
anchors {
|
||||
left: parent.left
|
||||
leftMargin: Theme.horizontalPageMargin
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
text: model.name
|
||||
color: langItem.highlighted ? Theme.highlightColor
|
||||
: (model.current ? Theme.highlightColor : Theme.primaryColor)
|
||||
}
|
||||
|
||||
Icon {
|
||||
anchors {
|
||||
right: parent.right
|
||||
rightMargin: Theme.horizontalPageMargin
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
source: "image://theme/icon-m-accept"
|
||||
visible: model.current
|
||||
}
|
||||
|
||||
onClicked: page.choose(index)
|
||||
}
|
||||
|
||||
VerticalScrollDecorator {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user