status-desktop/ui/app/AppLayouts/Profile/popups/LanguageModal.qml

94 lines
3.0 KiB
QML
Raw Normal View History

2021-03-24 16:28:59 +00:00
import QtQuick 2.13
import QtQuick.Controls 2.13
import utils 1.0
import shared.popups 1.0
import shared.controls 1.0
import "../locales.js" as Locales_JSON
2021-03-24 16:28:59 +00:00
// TODO: replace with StatusQ StatusModal
2021-03-24 16:28:59 +00:00
ModalPopup {
id: root
2021-03-24 16:28:59 +00:00
//% "Language"
title: qsTrId("Language")
property var languageStore
2021-03-24 16:28:59 +00:00
onClosed: {
destroy()
}
2021-03-25 18:22:04 +00:00
Item {
anchors.fill: parent
ButtonGroup {
id: languageGroup
}
2021-07-30 12:52:09 +00:00
Loader {
id: languageChangeConfirmationDialog
2021-07-30 12:52:09 +00:00
active: Qt.platform.os === Constants.linux
sourceComponent: ConfirmationDialog {
property string newLocale
header.title: qsTr("Change language")
2021-07-30 12:52:09 +00:00
confirmationText: qsTr("Display language has been changed. You must restart the application for changes to take effect.")
showCancelButton: true
confirmButtonLabel: qsTr("Close the app now")
cancelButtonLabel: qsTr("I'll do that later")
onConfirmButtonClicked: {
root.languageStore.changeLocale(newLocale)
2021-07-30 12:52:09 +00:00
Qt.quit();
}
onCancelButtonClicked: {
languageChangeConfirmationDialog.item.close()
root.close()
2021-07-30 12:52:09 +00:00
}
}
2021-07-30 12:52:09 +00:00
}
2021-07-30 12:52:09 +00:00
2021-03-25 18:22:04 +00:00
ScrollView {
width: parent.width
anchors.top: parent.top
anchors.topMargin: Style.current.padding
anchors.bottom: parent.bottom
anchors.bottomMargin: Style.current.bigPadding
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
ScrollBar.vertical.policy: ScrollBar.AlwaysOn
clip: true
ListView {
id: languagesListView
anchors.fill: parent
anchors.rightMargin: Style.current.padding
anchors.leftMargin: Style.current.padding
2021-03-25 18:22:04 +00:00
model: Locales_JSON.locales
spacing: 0
delegate: Component {
RadioButtonSelector {
2021-03-25 18:22:04 +00:00
height: 64
anchors.rightMargin: 0
anchors.leftMargin: 0
title: modelData.name
2021-03-25 18:22:04 +00:00
buttonGroup: languageGroup
checked: localAppSettings.locale === modelData.locale
onCheckedChanged: {
if (checked && localAppSettings.locale !== modelData.locale) {
2021-07-30 12:52:09 +00:00
if (Qt.platform.os === Constants.linux) {
languageChangeConfirmationDialog.item.newLocale = modelData.locale
languageChangeConfirmationDialog.item.open()
} else {
root.languageStore.changeLocale(modelData.locale)
}
2021-03-25 18:22:04 +00:00
}
}
2021-03-24 16:28:59 +00:00
}
}
}
}
}
}