- 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
97 lines
3.1 KiB
QML
97 lines
3.1 KiB
QML
import QtQuick 2.2
|
|
import Sailfish.Silica 1.0
|
|
import "../js/i18n.js" as I18N
|
|
|
|
// Impostazioni: razze disponibili, mio pollaio, clienti, backup, lingua,
|
|
// introduzione, informazioni. Le voci dell'app Flutter erano tre schede piu'
|
|
// il selettore di lingua nella barra: qui diventano una lista di voci.
|
|
Page {
|
|
id: page
|
|
allowedOrientations: Orientation.All
|
|
|
|
property string lang: "en"
|
|
// Avvisa la Home che i dati sono cambiati (usato dal ripristino).
|
|
property var onChanged: null
|
|
property bool ready: false
|
|
|
|
function tr(key, arg) { return I18N.t(key, arg, page.lang) }
|
|
|
|
ListModel { id: entries }
|
|
|
|
function reload() {
|
|
page.lang = I18N.langFor(appSettings.language, Qt.locale().name)
|
|
entries.clear()
|
|
entries.append({ "label": page.tr("available_breeds") })
|
|
entries.append({ "label": page.tr("my_coop") })
|
|
entries.append({ "label": page.tr("customers_list") })
|
|
entries.append({ "label": page.tr("backup_restore") })
|
|
entries.append({ "label": page.tr("language") })
|
|
entries.append({ "label": page.tr("show_intro") })
|
|
entries.append({ "label": page.tr("about") })
|
|
}
|
|
|
|
function openEntry(index) {
|
|
if (index === 0) {
|
|
pageStack.push(Qt.resolvedUrl("BreedsPage.qml"))
|
|
} else if (index === 1) {
|
|
pageStack.push(Qt.resolvedUrl("CoopPage.qml"))
|
|
} else if (index === 2) {
|
|
pageStack.push(Qt.resolvedUrl("CustomersPage.qml"))
|
|
} else if (index === 3) {
|
|
pageStack.push(Qt.resolvedUrl("BackupPage.qml"),
|
|
{ "onChanged": page.forwardChanged })
|
|
} else if (index === 4) {
|
|
pageStack.push(Qt.resolvedUrl("LanguagePage.qml"))
|
|
} else if (index === 5) {
|
|
pageStack.push(Qt.resolvedUrl("IntroPage.qml"), { "firstRun": false })
|
|
} else if (index === 6) {
|
|
pageStack.push(Qt.resolvedUrl("AboutPage.qml"))
|
|
}
|
|
}
|
|
|
|
function forwardChanged() {
|
|
if (page.onChanged)
|
|
page.onChanged()
|
|
}
|
|
|
|
Component.onCompleted: page.reload()
|
|
|
|
// al ritorno da una sottopagina i dati possono essere cambiati
|
|
onStatusChanged: {
|
|
if (status !== PageStatus.Active)
|
|
return
|
|
if (page.ready)
|
|
page.reload()
|
|
page.ready = true
|
|
}
|
|
|
|
SilicaListView {
|
|
id: listView
|
|
anchors.fill: parent
|
|
|
|
header: PageHeader { title: page.tr("settings") }
|
|
model: entries
|
|
|
|
delegate: ListItem {
|
|
id: entry
|
|
|
|
Label {
|
|
anchors {
|
|
left: parent.left
|
|
leftMargin: Theme.horizontalPageMargin
|
|
right: parent.right
|
|
rightMargin: Theme.horizontalPageMargin
|
|
verticalCenter: parent.verticalCenter
|
|
}
|
|
text: model.label
|
|
color: entry.highlighted ? Theme.highlightColor : Theme.primaryColor
|
|
truncationMode: TruncationMode.Fade
|
|
}
|
|
|
|
onClicked: page.openEntry(index)
|
|
}
|
|
|
|
VerticalScrollDecorator {}
|
|
}
|
|
}
|