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

217 lines
7.6 KiB
QML
Raw Normal View History

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import SortFilterProxyModel 0.2
import PageEnum 1.0
import ContainerProps 1.0
2024-07-07 13:42:38 +03:00
import Style 1.0
import "./"
import "../Controls2"
import "../Controls2/TextTypes"
import "../Config"
import "../Components"
PageType {
id: root
property bool isClearCacheVisible: ServersUiController.isProcessedServerHasWriteAccess() && !ContainersModel.isServiceContainer(ServersUiController.processedContainerIndex)
2024-06-10 18:35:24 +07:00
BackButtonType {
id: backButton
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
anchors.topMargin: 20 + PageController.safeAreaTopMargin
onFocusChanged: {
if (this.activeFocus) {
listView.positionViewAtBeginning()
2024-04-18 17:54:55 +04:00
}
}
}
2024-04-18 17:54:55 +04:00
ListViewType {
id: listView
2024-04-18 17:54:55 +04:00
anchors.top: backButton.bottom
anchors.bottom: parent.bottom
anchors.right: parent.right
anchors.left: parent.left
2024-12-31 04:16:52 +01:00
header: ColumnLayout {
width: listView.width
2024-12-31 04:16:52 +01:00
BaseHeaderType {
Layout.fillWidth: true
Layout.leftMargin: 16
Layout.rightMargin: 16
Layout.bottomMargin: 32
2024-12-31 04:16:52 +01:00
headerText: ContainersModel.getProcessedContainerName() + qsTr(" settings")
2024-12-31 04:16:52 +01:00
}
}
2024-04-18 17:54:55 +04:00
model: ProtocolsModel
delegate: ColumnLayout {
id: delegateContent
width: listView.width
2024-09-13 12:38:48 +04:00
property bool isClientSettingsVisible: isWireGuard || isAwg
property bool isServerSettingsVisible: ServersUiController.isProcessedServerHasWriteAccess()
2024-09-13 12:38:48 +04:00
LabelWithButtonType {
id: clientSettings
2024-09-13 12:38:48 +04:00
Layout.fillWidth: true
2024-09-13 12:38:48 +04:00
text: protocolName + qsTr(" connection settings")
rightImageSource: "qrc:/images/controls/chevron-right.svg"
visible: delegateContent.isClientSettingsVisible
2024-09-13 12:38:48 +04:00
clickedFunction: function() {
if (isClientProtocolExists) {
InstallController.openClientSettings(ServersUiController.processedIndex, ServersUiController.processedContainerIndex, protocolIndex)
PageController.goToPage(clientProtocolPage);
} else {
PageController.showNotificationMessage(qsTr("Click the \"connect\" button to create a connection configuration"))
2024-09-13 12:38:48 +04:00
}
}
2024-09-13 12:38:48 +04:00
MouseArea {
anchors.fill: clientSettings
cursorShape: Qt.PointingHandCursor
enabled: false
}
}
2024-09-13 12:38:48 +04:00
DividerType {
visible: delegateContent.isClientSettingsVisible
}
LabelWithButtonType {
id: serverSettings
Layout.fillWidth: true
text: protocolName + qsTr(" server settings")
rightImageSource: "qrc:/images/controls/chevron-right.svg"
visible: delegateContent.isServerSettingsVisible
clickedFunction: function() {
InstallController.openServerSettings(ServersUiController.processedIndex, ServersUiController.processedContainerIndex, protocolIndex)
PageController.goToPage(serverProtocolPage);
}
MouseArea {
anchors.fill: serverSettings
cursorShape: Qt.PointingHandCursor
enabled: false
2023-06-13 20:03:20 +09:00
}
}
DividerType {
visible: delegateContent.isServerSettingsVisible
}
}
footer: ColumnLayout {
2024-12-31 04:16:52 +01:00
width: listView.width
2024-12-31 04:16:52 +01:00
LabelWithButtonType {
id: clearCacheButton
Layout.fillWidth: true
visible: root.isClearCacheVisible
text: qsTr("Clear profile")
2024-12-31 04:16:52 +01:00
clickedFunction: function() {
var headerText = qsTr("Clear %1 profile?").arg(ContainersModel.getProcessedContainerName())
var descriptionText = qsTr("The connection configuration will be deleted for this device only")
var yesButtonText = qsTr("Continue")
var noButtonText = qsTr("Cancel")
var yesButtonFunction = function() {
if (ConnectionController.isConnected && ServersModel.getDefaultServerData("defaultContainer") === ServersUiController.processedContainerIndex) {
var message = qsTr("Unable to clear %1 profile while there is an active connection").arg(ContainersModel.getProcessedContainerName())
PageController.showNotificationMessage(message)
return
2024-12-31 04:16:52 +01:00
}
2024-02-16 15:24:06 +05:00
PageController.showBusyIndicator(true)
InstallController.clearCachedProfile(ServersUiController.processedIndex, ServersUiController.processedContainerIndex)
PageController.showBusyIndicator(false)
2024-04-18 14:49:57 +03:00
}
var noButtonFunction = function() {
2024-04-18 17:54:55 +04:00
}
showQuestionDrawer(headerText, descriptionText, yesButtonText, noButtonText, yesButtonFunction, noButtonFunction)
}
MouseArea {
anchors.fill: clearCacheButton
cursorShape: Qt.PointingHandCursor
enabled: false
2024-12-31 04:16:52 +01:00
}
}
DividerType {
visible: root.isClearCacheVisible
}
LabelWithButtonType {
id: removeButton
Layout.fillWidth: true
visible: ServersUiController.isProcessedServerHasWriteAccess()
2024-12-31 04:16:52 +01:00
text: qsTr("Remove ")
textColor: AmneziaStyle.color.vibrantRed
2024-12-31 04:16:52 +01:00
clickedFunction: function() {
var headerText = qsTr("Remove %1 from server?").arg(ContainersModel.getProcessedContainerName())
var descriptionText = qsTr("All users with whom you shared a connection will no longer be able to connect to it.")
var yesButtonText = qsTr("Continue")
var noButtonText = qsTr("Cancel")
var yesButtonFunction = function() {
if (ServersUiController.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected
&& ServersModel.getDefaultServerData("defaultContainer") === ServersUiController.processedContainerIndex) {
PageController.showNotificationMessage(qsTr("Cannot remove active container"))
} else
{
PageController.goToPage(PageEnum.PageDeinstalling)
InstallController.removeContainer(ServersUiController.processedIndex, ServersUiController.processedContainerIndex)
}
}
var noButtonFunction = function() {
2024-12-31 04:16:52 +01:00
2024-04-18 17:54:55 +04:00
}
showQuestionDrawer(headerText, descriptionText, yesButtonText, noButtonText, yesButtonFunction, noButtonFunction)
}
MouseArea {
anchors.fill: removeButton
cursorShape: Qt.PointingHandCursor
enabled: false
2024-12-31 04:16:52 +01:00
}
}
DividerType {
visible: ServersUiController.isProcessedServerHasWriteAccess()
}
}
}
}