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

292 lines
11 KiB
QML
Raw Normal View History

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import SortFilterProxyModel 0.2
import PageEnum 1.0
import ProtocolEnum 1.0
import "../Controls2"
import "../Controls2/TextTypes"
2023-06-05 15:49:10 +08:00
import "../Components"
2024-04-18 17:54:55 +04:00
import "../Config"
PageType {
id: root
2024-04-18 17:54:55 +04:00
signal lastItemTabClickedSignal()
onFocusChanged: content.isServerWithWriteAccess ?
labelWithButton.forceActiveFocus() :
labelWithButton3.forceActiveFocus()
Connections {
target: InstallController
function onScanServerFinished(isInstalledContainerFound) {
var message = ""
if (isInstalledContainerFound) {
message = qsTr("All installed containers have been added to the application")
} else {
message = qsTr("No new installed containers found")
}
PageController.showErrorMessage(message)
}
2024-02-19 19:54:15 +05:00
function onRemoveProcessedServerFinished(finishedMessage) {
if (!ServersModel.getServersCount()) {
PageController.replaceStartPage()
} else {
2023-09-06 13:37:37 +05:00
PageController.goToStartPage()
PageController.goToPage(PageEnum.PageSettingsServersList)
}
PageController.showNotificationMessage(finishedMessage)
}
2024-02-19 19:54:15 +05:00
function onRebootProcessedServerFinished(finishedMessage) {
2024-02-04 18:52:03 +02:00
PageController.showNotificationMessage(finishedMessage)
}
function onRemoveAllContainersFinished(finishedMessage) {
2023-09-06 13:37:37 +05:00
PageController.closePage() // close deInstalling page
PageController.showNotificationMessage(finishedMessage)
}
function onRemoveProcessedContainerFinished(finishedMessage) {
2023-09-06 13:37:37 +05:00
PageController.closePage() // close deInstalling page
PageController.closePage() // close page with remove button
PageController.showNotificationMessage(finishedMessage)
}
}
Connections {
target: SettingsController
function onChangeSettingsFinished(finishedMessage) {
PageController.showNotificationMessage(finishedMessage)
}
}
Connections {
target: ServersModel
2024-02-19 19:54:15 +05:00
function onProcessedServerIndexChanged() {
content.isServerWithWriteAccess = ServersModel.isProcessedServerHasWriteAccess()
}
}
FlickableType {
id: fl
anchors.top: parent.top
anchors.bottom: parent.bottom
contentHeight: content.height
ColumnLayout {
id: content
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
2024-02-19 19:54:15 +05:00
property bool isServerWithWriteAccess: ServersModel.isProcessedServerHasWriteAccess()
LabelWithButtonType {
2024-04-18 17:54:55 +04:00
id: labelWithButton
visible: content.isServerWithWriteAccess
Layout.fillWidth: true
text: qsTr("Check the server for previously installed Amnezia services")
2023-07-24 16:33:58 +09:00
descriptionText: qsTr("Add them to the application if they were not displayed")
2024-04-18 17:54:55 +04:00
KeyNavigation.tab: labelWithButton2
clickedFunction: function() {
2023-07-04 09:58:19 +09:00
PageController.showBusyIndicator(true)
InstallController.scanServerForInstalledContainers()
2023-07-04 09:58:19 +09:00
PageController.showBusyIndicator(false)
}
}
DividerType {
visible: content.isServerWithWriteAccess
}
2024-02-04 18:52:03 +02:00
LabelWithButtonType {
2024-04-18 17:54:55 +04:00
id: labelWithButton2
2024-02-04 18:52:03 +02:00
visible: content.isServerWithWriteAccess
Layout.fillWidth: true
text: qsTr("Reboot server")
textColor: "#EB5757"
2024-04-18 17:54:55 +04:00
KeyNavigation.tab: labelWithButton3
2024-02-04 18:52:03 +02:00
clickedFunction: function() {
2024-02-16 15:24:06 +05:00
var headerText = qsTr("Do you want to reboot the server?")
var descriptionText = qsTr("The reboot process may take approximately 30 seconds. Are you sure you wish to proceed?")
var yesButtonText = qsTr("Continue")
var noButtonText = qsTr("Cancel")
2024-02-04 18:52:03 +02:00
2024-02-16 15:24:06 +05:00
var yesButtonFunction = function() {
2024-02-04 18:52:03 +02:00
if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) {
PageController.showNotificationMessage(qsTr("Cannot reboot server during active connection"))
} else {
PageController.showBusyIndicator(true)
InstallController.rebootProcessedServer()
PageController.showBusyIndicator(false)
2024-02-04 18:52:03 +02:00
}
2024-04-18 17:54:55 +04:00
if (!GC.isMobile()) {
labelWithButton5.forceActiveFocus()
}
2024-02-04 18:52:03 +02:00
}
2024-02-16 15:24:06 +05:00
var noButtonFunction = function() {
2024-04-18 17:54:55 +04:00
if (!GC.isMobile()) {
labelWithButton2.forceActiveFocus()
}
2024-02-04 18:52:03 +02:00
}
2024-02-16 15:24:06 +05:00
showQuestionDrawer(headerText, descriptionText, yesButtonText, noButtonText, yesButtonFunction, noButtonFunction)
2024-02-04 18:52:03 +02:00
}
}
DividerType {
visible: content.isServerWithWriteAccess
}
LabelWithButtonType {
2024-04-18 17:54:55 +04:00
id: labelWithButton3
Layout.fillWidth: true
2024-03-26 20:05:04 +02:00
text: qsTr("Remove server from application")
textColor: "#EB5757"
2024-04-18 17:54:55 +04:00
Keys.onTabPressed: {
if (content.isServerWithWriteAccess) {
labelWithButton4.forceActiveFocus()
} else {
labelWithButton5.visible ?
labelWithButton5.forceActiveFocus() :
lastItemTabClickedSignal()
}
}
clickedFunction: function() {
2024-02-16 15:24:06 +05:00
var headerText = qsTr("Do you want to remove the server from application?")
var descriptionText = qsTr("All installed AmneziaVPN services will still remain on the server.")
var yesButtonText = qsTr("Continue")
var noButtonText = qsTr("Cancel")
2023-06-05 15:49:10 +08:00
2024-02-16 15:24:06 +05:00
var yesButtonFunction = function() {
2023-08-02 20:37:43 +09:00
if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) {
PageController.showNotificationMessage(qsTr("Cannot remove server during active connection"))
} else {
PageController.showBusyIndicator(true)
InstallController.removeProcessedServer()
PageController.showBusyIndicator(false)
2023-06-05 15:49:10 +08:00
}
2024-04-18 17:54:55 +04:00
if (!GC.isMobile()) {
labelWithButton5.forceActiveFocus()
}
2023-06-01 11:25:33 +08:00
}
2024-02-16 15:24:06 +05:00
var noButtonFunction = function() {
2024-04-18 17:54:55 +04:00
if (!GC.isMobile()) {
labelWithButton3.forceActiveFocus()
}
2023-06-01 11:25:33 +08:00
}
2024-02-16 15:24:06 +05:00
showQuestionDrawer(headerText, descriptionText, yesButtonText, noButtonText, yesButtonFunction, noButtonFunction)
}
}
DividerType {}
LabelWithButtonType {
2024-04-18 17:54:55 +04:00
id: labelWithButton4
visible: content.isServerWithWriteAccess
Layout.fillWidth: true
2024-03-26 20:05:04 +02:00
text: qsTr("Clear server from Amnezia software")
textColor: "#EB5757"
2024-04-18 17:54:55 +04:00
Keys.onTabPressed: labelWithButton5.visible ?
labelWithButton5.forceActiveFocus() :
root.lastItemTabClickedSignal()
clickedFunction: function() {
2024-03-26 20:05:04 +02:00
var headerText = qsTr("Do you want to clear server from Amnezia software?")
var descriptionText = qsTr("All users whom you shared a connection with will no longer be able to connect to it.")
2024-02-16 15:24:06 +05:00
var yesButtonText = qsTr("Continue")
var noButtonText = qsTr("Cancel")
2023-06-05 15:49:10 +08:00
2024-02-16 15:24:06 +05:00
var yesButtonFunction = function() {
2024-02-09 23:23:26 +05:00
if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) {
PageController.showNotificationMessage(qsTr("Cannot clear server from Amnezia software during active connection"))
} else {
PageController.goToPage(PageEnum.PageDeinstalling)
InstallController.removeAllContainers()
2024-02-09 23:23:26 +05:00
}
2024-04-18 17:54:55 +04:00
if (!GC.isMobile()) {
labelWithButton5.forceActiveFocus()
}
2024-02-09 23:23:26 +05:00
}
2024-02-16 15:24:06 +05:00
var noButtonFunction = function() {
2024-04-18 17:54:55 +04:00
if (!GC.isMobile()) {
labelWithButton4.forceActiveFocus()
}
2024-02-09 23:23:26 +05:00
}
2024-02-16 15:24:06 +05:00
showQuestionDrawer(headerText, descriptionText, yesButtonText, noButtonText, yesButtonFunction, noButtonFunction)
2024-02-09 23:23:26 +05:00
}
}
DividerType {
visible: content.isServerWithWriteAccess
}
LabelWithButtonType {
2024-04-18 17:54:55 +04:00
id: labelWithButton5
2024-02-19 19:54:15 +05:00
visible: ServersModel.getProcessedServerData("isServerFromApi")
2024-02-09 23:23:26 +05:00
Layout.fillWidth: true
text: qsTr("Reset API config")
textColor: "#EB5757"
2024-04-18 17:54:55 +04:00
Keys.onTabPressed: root.lastItemTabClickedSignal()
2024-02-09 23:23:26 +05:00
clickedFunction: function() {
2024-02-16 15:24:06 +05:00
var headerText = qsTr("Do you want to reset API config?")
var descriptionText = ""
var yesButtonText = qsTr("Continue")
var noButtonText = qsTr("Cancel")
2024-02-09 23:23:26 +05:00
2024-02-16 15:24:06 +05:00
var yesButtonFunction = function() {
if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) {
PageController.showNotificationMessage(qsTr("Cannot reset API config during active connection"))
} else {
PageController.showBusyIndicator(true)
InstallController.removeApiConfig(ServersModel.processedIndex)
PageController.showBusyIndicator(false)
}
2024-04-18 17:54:55 +04:00
if (!GC.isMobile()) {
labelWithButton5.forceActiveFocus()
}
2024-02-09 23:23:26 +05:00
}
2024-02-16 15:24:06 +05:00
var noButtonFunction = function() {
2024-04-18 17:54:55 +04:00
if (!GC.isMobile()) {
labelWithButton5.forceActiveFocus()
}
2024-02-09 23:23:26 +05:00
}
2024-02-16 15:24:06 +05:00
showQuestionDrawer(headerText, descriptionText, yesButtonText, noButtonText, yesButtonFunction, noButtonFunction)
2024-02-09 23:23:26 +05:00
}
}
DividerType {
2024-02-19 19:54:15 +05:00
visible: ServersModel.getProcessedServerData("isServerFromApi")
2024-02-09 23:23:26 +05:00
}
}
}
}