Files
amnezia-client/client/ui/qml/Pages2/PageSettingsApiAvailableCountries.qml
T

170 lines
4.9 KiB
QML
Raw Normal View History

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Dialogs
import SortFilterProxyModel 0.2
import PageEnum 1.0
import Style 1.0
import "./"
import "../Controls2"
import "../Controls2/TextTypes"
import "../Config"
import "../Components"
PageType {
id: root
property var processedServer
Connections {
target: ServersModel
function onProcessedServerChanged() {
root.processedServer = proxyServersModel.get(0)
}
}
SortFilterProxyModel {
id: proxyServersModel
objectName: "proxyServersModel"
sourceModel: ServersModel
filters: [
ValueFilter {
roleName: "isCurrentlyProcessed"
value: true
}
]
Component.onCompleted: {
root.processedServer = proxyServersModel.get(0)
}
}
2025-02-24 13:39:03 +07:00
ListViewType {
id: menuContent
anchors.fill: parent
model: ApiCountryModel
currentIndex: 0
ButtonGroup {
id: containersRadioButtonGroup
}
header: ColumnLayout {
width: menuContent.width
spacing: 4
BackButtonType {
id: backButton
objectName: "backButton"
2025-11-11 17:03:27 +03:00
Layout.topMargin: 20 + SettingsController.safeAreaTopMargin
}
2025-05-02 23:54:36 -07:00
HeaderTypeWithButton {
id: headerContent
objectName: "headerContent"
Layout.fillWidth: true
Layout.leftMargin: 16
Layout.rightMargin: 16
Layout.bottomMargin: 10
actionButtonImage: "qrc:/images/controls/settings.svg"
headerText: root.processedServer.name
2025-03-04 13:33:35 +07:00
descriptionText: qsTr("Location for connection")
actionButtonFunction: function() {
PageController.showBusyIndicator(true)
2025-02-22 14:42:09 +07:00
let result = ApiSettingsController.getAccountInfo(false)
PageController.showBusyIndicator(false)
if (!result) {
return
}
PageController.goToPage(PageEnum.PageSettingsApiServerInfo)
}
}
}
2024-12-31 04:16:52 +01:00
delegate: ColumnLayout {
id: content
width: menuContent.width
height: content.implicitHeight
2024-12-31 04:16:52 +01:00
RowLayout {
VerticalRadioButton {
id: containerRadioButton
2024-12-31 04:16:52 +01:00
Layout.fillWidth: true
Layout.leftMargin: 16
2024-12-31 04:16:52 +01:00
text: countryName
2024-12-31 04:16:52 +01:00
ButtonGroup.group: containersRadioButtonGroup
2024-12-31 04:16:52 +01:00
imageSource: "qrc:/images/controls/download.svg"
2024-12-31 04:16:52 +01:00
checked: index === ApiCountryModel.currentIndex
checkable: !ConnectionController.isConnected
2024-12-31 04:16:52 +01:00
onClicked: {
if (ConnectionController.isConnectionInProgress) {
PageController.showNotificationMessage(qsTr("Unable change server location while trying to make an active connection"))
return
}
2024-12-31 04:16:52 +01:00
if (ConnectionController.isConnected) {
PageController.showNotificationMessage(qsTr("Unable change server location while there is an active connection"))
return
}
2024-12-31 04:16:52 +01:00
if (index !== ApiCountryModel.currentIndex) {
PageController.showBusyIndicator(true)
var prevIndex = ApiCountryModel.currentIndex
ApiCountryModel.currentIndex = index
if (!ApiConfigsController.updateServiceFromGateway(ServersModel.defaultIndex, countryCode, countryName)) {
2024-12-31 04:16:52 +01:00
ApiCountryModel.currentIndex = prevIndex
}
2025-02-19 20:27:15 +07:00
PageController.showBusyIndicator(false)
}
2024-12-31 04:16:52 +01:00
}
2024-12-31 04:16:52 +01:00
Keys.onEnterPressed: {
if (checkable) {
checked = true
}
2024-12-31 04:16:52 +01:00
containerRadioButton.clicked()
}
Keys.onReturnPressed: {
if (checkable) {
checked = true
}
2024-12-31 04:16:52 +01:00
containerRadioButton.clicked()
}
2024-12-31 04:16:52 +01:00
}
2024-12-31 04:16:52 +01:00
Image {
Layout.rightMargin: 32
Layout.alignment: Qt.AlignRight
2024-12-31 04:16:52 +01:00
source: "qrc:/countriesFlags/images/flagKit/" + countryImageCode + ".svg"
}
2024-12-31 04:16:52 +01:00
}
2024-12-31 04:16:52 +01:00
DividerType {
Layout.fillWidth: true
}
}
}
}