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

175 lines
5.3 KiB
QML
Raw Normal View History

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. ")
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
serverSelector.close()
2023-11-23 00:03:43 +07:00
}
Component.onCompleted: {
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)
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
}