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" PageType { id: root BackButtonType { id: backButton anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right anchors.topMargin: 20 + SettingsController.safeAreaTopMargin onActiveFocusChanged: { if(backButton.enabled && backButton.activeFocus) { listView.positionViewAtBeginning() } } } ListViewType { id: listView anchors.top: backButton.bottom anchors.right: parent.right anchors.left: parent.left anchors.bottom: parent.bottom anchors.topMargin: 16 header: ColumnLayout { width: listView.width BaseHeaderType { Layout.fillWidth: true Layout.rightMargin: 16 Layout.leftMargin: 16 Layout.bottomMargin: 24 headerText: qsTr("VPN by Amnezia") descriptionText: qsTr("Choose a VPN service that suits your needs.") } } spacing: 0 model: SortFilterProxyModel { id: proxyApiServicesModel sourceModel: ApiServicesModel sorters: RoleSorter { roleName: "order" sortOrder: Qt.AscendingOrder } } delegate: ColumnLayout { property bool hideCard: isPremium && !hasSubscriptionPlans width: listView.width visible: !hideCard height: hideCard ? 0 : implicitHeight enabled: isServiceAvailable CardWithIconsType { id: card Layout.fillWidth: true Layout.rightMargin: 16 Layout.leftMargin: 16 Layout.bottomMargin: 16 headerText: name bodyText: cardDescription footerText: price showRecommendedBadge: showRecommended && isServiceAvailable recommendedText: qsTr("Recommended") rightImageSource: "qrc:/images/controls/chevron-right.svg" onClicked: { if (isServiceAvailable) { ApiServicesModel.setServiceIndex(proxyApiServicesModel.mapToSource(index)) if (ApiServicesModel.getSelectedServiceType() === "amnezia-premium") { PageController.goToPage(PageEnum.PageSetupWizardApiPremiumInfo) } else { PageController.goToPage(PageEnum.PageSetupWizardApiFreeInfo) } } } Keys.onEnterPressed: clicked() Keys.onReturnPressed: clicked() } } } }