2023-11-23 00:03:43 +07:00
import QtQuick
import QtQuick . Controls
import QtQuick . Layouts
import QtQuick . Dialogs
import SortFilterProxyModel 0.2
import PageEnum 1.0
import ContainerProps 1.0
2024-07-07 13:42:38 +03:00
import Style 1.0
2023-11-23 00:03:43 +07:00
import "./"
import "../Controls2"
import "../Controls2/TextTypes"
import "../Components"
2024-04-18 17:54:55 +04:00
import "../Config"
2023-11-23 00:03:43 +07:00
PageType {
id: root
2024-04-18 17:54:55 +04:00
defaultActiveFocusItem: focusItem
Item {
id: focusItem
KeyNavigation.tab: backButton
}
2023-11-23 00:03:43 +07:00
BackButtonType {
id: backButton
anchors.top: parent . top
anchors.left: parent . left
anchors.right: parent . right
anchors.topMargin: 20
2024-04-18 17:54:55 +04:00
KeyNavigation.tab: serverSelector
2023-11-23 00:03:43 +07:00
}
FlickableType {
anchors.top: backButton . bottom
anchors.bottom: parent . bottom
contentHeight: content . height
ColumnLayout {
id: content
anchors.top: parent . top
anchors.left: parent . left
anchors.right: parent . right
anchors.rightMargin: 16
anchors.leftMargin: 16
spacing: 0
HeaderType {
Layout.fillWidth: true
Layout.topMargin: 24
headerText: qsTr ( "Full access to the server and VPN" )
}
ParagraphTextType {
Layout.fillWidth: true
Layout.topMargin: 24
Layout.bottomMargin: 24
text: qsTr ( "We recommend that you use full access to the server only for your own additional devices.\n" ) +
qsTr ( "If you share full access with other people, they can remove and add protocols and services to the server, which will cause the VPN to work incorrectly for all users. " )
2024-08-20 16:54:05 +07:00
color: AmneziaStyle . color . mutedGray
2023-11-23 00:03:43 +07:00
}
DropDownType {
id: serverSelector
signal severSelectorIndexChanged
property int currentIndex: 0
Layout.fillWidth: true
Layout.topMargin: 16
drawerHeight: 0.4375
2024-02-16 15:24:06 +05:00
drawerParent: root
2023-11-23 00:03:43 +07:00
descriptionText: qsTr ( "Server" )
headerText: qsTr ( "Server" )
2024-04-18 17:54:55 +04:00
KeyNavigation.tab: shareButton
2023-11-23 00:03:43 +07:00
listView: ListViewWithRadioButtonType {
id: serverSelectorListView
rootWidth: root . width
imageSource: "qrc:/images/controls/check.svg"
model: SortFilterProxyModel {
id: proxyServersModel
sourceModel: ServersModel
filters: [
ValueFilter {
roleName: "hasWriteAccess"
value: true
}
]
}
clickedFunction: function ( ) {
handler ( )
if ( serverSelector . currentIndex !== serverSelectorListView . currentIndex ) {
serverSelector . currentIndex = serverSelectorListView . currentIndex
}
shareConnectionDrawer . headerText = qsTr ( "Accessing " ) + serverSelector . text
shareConnectionDrawer . configContentHeaderText = qsTr ( "File with accessing settings to " ) + serverSelector . text
2024-04-19 18:04:19 +05:00
serverSelector . close ( )
2023-11-23 00:03:43 +07:00
}
Component.onCompleted: {
2023-12-22 13:43:46 +07:00
serverSelectorListView . currentIndex = ServersModel . isDefaultServerHasWriteAccess ( ) ?
proxyServersModel . mapFromSource ( ServersModel . defaultIndex ) : 0
serverSelectorListView . triggerCurrentItem ( )
2023-11-23 00:03:43 +07:00
}
function handler ( ) {
serverSelector . text = selectedText
2024-02-19 19:54:15 +05:00
ServersModel . processedIndex = proxyServersModel . mapToSource ( currentIndex )
2023-11-23 00:03:43 +07:00
}
}
}
BasicButtonType {
2024-04-18 17:54:55 +04:00
id: shareButton
2023-11-23 00:03:43 +07:00
Layout.fillWidth: true
Layout.topMargin: 40
text: qsTr ( "Share" )
imageSource: "qrc:/images/controls/share-2.svg"
2024-04-18 17:54:55 +04:00
Keys.onTabPressed: lastItemTabClicked ( focusItem )
2024-02-17 23:09:05 +02:00
clickedFunc: function ( ) {
2023-11-23 00:03:43 +07:00
shareConnectionDrawer . headerText = qsTr ( "Connection to " ) + serverSelector . text
shareConnectionDrawer . configContentHeaderText = qsTr ( "File with connection settings to " ) + serverSelector . text
shareConnectionDrawer . open ( )
shareConnectionDrawer . contentVisible = false
PageController . showBusyIndicator ( true )
if ( Qt . platform . os === "android" ) {
ExportController . generateFullAccessConfigAndroid ( ) ;
} else {
ExportController . generateFullAccessConfig ( ) ;
}
PageController . showBusyIndicator ( false )
shareConnectionDrawer . contentVisible = true
}
}
}
}
2024-02-16 15:24:06 +05:00
ShareConnectionDrawer {
id: shareConnectionDrawer
anchors.fill: parent
2024-04-18 17:54:55 +04:00
onClosed: {
if ( ! GC . isMobile ( ) ) {
focusItem . forceActiveFocus ( )
}
}
2024-02-16 15:24:06 +05:00
}
2023-11-23 00:03:43 +07:00
}