harbour-maree 0.1.0: motore armonico 7 costituenti, 16 porti, ricerca libera (Nominatim+locale), grafico 24/48/72h, EN/IT, preferenze (lingua, porto, unità, intervallo), icone harbour
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
import "../js/tides.js" as Tides
|
||||
|
||||
Page {
|
||||
id: page
|
||||
|
||||
PageHeader { title: qsTr("Settings") }
|
||||
|
||||
SilicaFlickable {
|
||||
anchors.fill: parent
|
||||
contentHeight: col.height
|
||||
|
||||
Column {
|
||||
id: col
|
||||
width: parent.width
|
||||
|
||||
ComboBox {
|
||||
id: langBox
|
||||
label: qsTr("Language")
|
||||
currentIndex: appSettings.language === "it" ? 2
|
||||
: (appSettings.language === "en" ? 1 : 0)
|
||||
menu: ContextMenu {
|
||||
MenuItem {
|
||||
text: qsTr("System")
|
||||
onClicked: appSettings.language = "system"
|
||||
}
|
||||
MenuItem {
|
||||
text: "English"
|
||||
onClicked: appSettings.language = "en"
|
||||
}
|
||||
MenuItem {
|
||||
text: "Italiano"
|
||||
onClicked: appSettings.language = "it"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
text: qsTr("Language changes on restart")
|
||||
color: Theme.secondaryColor
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.horizontalPageMargin
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: Theme.horizontalPageMargin
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
Item { width: parent.width; height: Theme.paddingMedium }
|
||||
|
||||
ComboBox {
|
||||
id: unitBox
|
||||
label: qsTr("Units")
|
||||
currentIndex: appSettings.unit === "ft" ? 1 : 0
|
||||
menu: ContextMenu {
|
||||
MenuItem {
|
||||
text: qsTr("metres")
|
||||
onClicked: appSettings.unit = "m"
|
||||
}
|
||||
MenuItem {
|
||||
text: qsTr("feet")
|
||||
onClicked: appSettings.unit = "ft"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ComboBox {
|
||||
id: daysBox
|
||||
label: qsTr("Default range")
|
||||
currentIndex: Math.max(0, appSettings.days - 1)
|
||||
menu: ContextMenu {
|
||||
MenuItem {
|
||||
text: qsTr("24 h")
|
||||
onClicked: appSettings.days = 1
|
||||
}
|
||||
MenuItem {
|
||||
text: qsTr("48 h")
|
||||
onClicked: appSettings.days = 2
|
||||
}
|
||||
MenuItem {
|
||||
text: qsTr("72 h")
|
||||
onClicked: appSettings.days = 3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ComboBox {
|
||||
id: prefBox
|
||||
label: qsTr("Preferred port")
|
||||
currentIndex: prefIndex()
|
||||
menu: ContextMenu {
|
||||
MenuItem {
|
||||
text: qsTr("None")
|
||||
onClicked: appSettings.preferredPort = ""
|
||||
}
|
||||
Repeater {
|
||||
model: Tides.PORTS.length
|
||||
delegate: MenuItem {
|
||||
text: Tides.PORTS[index][0]
|
||||
onClicked: appSettings.preferredPort = Tides.PORTS[index][0]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function prefIndex() {
|
||||
var p = appSettings.preferredPort
|
||||
if (p === "") return 0
|
||||
for (var i = 0; i < Tides.PORTS.length; i++)
|
||||
if (Tides.PORTS[i][0] === p) return i + 1
|
||||
return 0
|
||||
}
|
||||
|
||||
SectionHeader { text: qsTr("About") }
|
||||
|
||||
Label {
|
||||
text: "Maree " + appVersion + "\n" + qsTr("Universal tide predictions")
|
||||
color: Theme.secondaryColor
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.horizontalPageMargin
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: Theme.horizontalPageMargin
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
Label {
|
||||
text: qsTr("Harmonic model: M2, S2, N2, K1, O1, P1, K2 — known ports or synthetic estimate from lat/lon. Not for navigation.")
|
||||
color: Theme.secondaryColor
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: Theme.horizontalPageMargin
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: Theme.horizontalPageMargin
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
Item { width: parent.width; height: Theme.paddingLarge }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user