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) } } ListView { id: menuContent property bool isFocusable: true anchors.fill: parent ScrollBar.vertical: ScrollBarType {} clip: true reuseItems: true snapMode: ListView.SnapToItem model: ApiCountryModel currentIndex: 0 ButtonGroup { id: containersRadioButtonGroup } header: ColumnLayout { width: menuContent.width spacing: 4 BackButtonType { id: backButton objectName: "backButton" Layout.topMargin: 20 } HeaderType { 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 descriptionText: ApiServicesModel.getSelectedServiceData("serviceDescription") actionButtonFunction: function() { PageController.showBusyIndicator(true) ApiSettingsController.getAccountInfo() PageController.showBusyIndicator(false) PageController.goToPage(PageEnum.PageSettingsApiServerInfo) } } } delegate: ColumnLayout { id: content width: menuContent.width height: content.implicitHeight RowLayout { VerticalRadioButton { id: containerRadioButton Layout.fillWidth: true Layout.leftMargin: 16 text: countryName ButtonGroup.group: containersRadioButtonGroup imageSource: "qrc:/images/controls/download.svg" checked: index === ApiCountryModel.currentIndex checkable: !ConnectionController.isConnected onClicked: { if (ConnectionController.isConnected) { PageController.showNotificationMessage(qsTr("Unable change server location while there is an active connection")) return } if (index !== ApiCountryModel.currentIndex) { PageController.showBusyIndicator(true) var prevIndex = ApiCountryModel.currentIndex ApiCountryModel.currentIndex = index if (!InstallController.updateServiceFromApi(ServersModel.defaultIndex, countryCode, countryName)) { ApiCountryModel.currentIndex = prevIndex } } } MouseArea { anchors.fill: containerRadioButton cursorShape: Qt.PointingHandCursor enabled: false } Keys.onEnterPressed: { if (checkable) { checked = true } containerRadioButton.clicked() } Keys.onReturnPressed: { if (checkable) { checked = true } containerRadioButton.clicked() } } Image { Layout.rightMargin: 32 Layout.alignment: Qt.AlignRight source: "qrc:/countriesFlags/images/flagKit/" + countryImageCode + ".svg" } } DividerType { Layout.fillWidth: true } } } }