import QtQuick import QtQuick.Controls import QtQuick.Layouts import SortFilterProxyModel 0.2 import PageEnum 1.0 import ProtocolEnum 1.0 import Style 1.0 import "../Controls2" import "../Controls2/TextTypes" import "../Components" import "../Config" PageType { id: root 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) } function onRebootProcessedServerFinished(finishedMessage) { PageController.showNotificationMessage(finishedMessage) } function onRemoveAllContainersFinished(finishedMessage) { PageController.closePage() // close deInstalling page PageController.showNotificationMessage(finishedMessage) } function onRemoveProcessedContainerFinished(finishedMessage) { 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 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 property bool isServerWithWriteAccess: ServersModel.isProcessedServerHasWriteAccess() LabelWithButtonType { id: labelWithButton visible: content.isServerWithWriteAccess Layout.fillWidth: true text: qsTr("Check the server for previously installed Amnezia services") descriptionText: qsTr("Add them to the application if they were not displayed") clickedFunction: function() { PageController.showBusyIndicator(true) InstallController.scanServerForInstalledContainers() PageController.showBusyIndicator(false) } } DividerType { visible: content.isServerWithWriteAccess } LabelWithButtonType { id: labelWithButton2 visible: content.isServerWithWriteAccess Layout.fillWidth: true text: qsTr("Reboot server") textColor: AmneziaStyle.color.vibrantRed clickedFunction: function() { 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") var yesButtonFunction = function() { if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) { PageController.showNotificationMessage(qsTr("Cannot reboot server during active connection")) } else { PageController.showBusyIndicator(true) InstallController.rebootProcessedServer() PageController.showBusyIndicator(false) } if (!GC.isMobile()) { labelWithButton5.forceActiveFocus() } } var noButtonFunction = function() { if (!GC.isMobile()) { labelWithButton2.forceActiveFocus() } } showQuestionDrawer(headerText, descriptionText, yesButtonText, noButtonText, yesButtonFunction, noButtonFunction) } } DividerType { visible: content.isServerWithWriteAccess } LabelWithButtonType { id: labelWithButton3 Layout.fillWidth: true text: qsTr("Remove server from application") textColor: AmneziaStyle.color.vibrantRed clickedFunction: function() { 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") var yesButtonFunction = function() { if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) { PageController.showNotificationMessage(qsTr("Cannot remove server during active connection")) } else { PageController.showBusyIndicator(true) InstallController.removeProcessedServer() PageController.showBusyIndicator(false) } if (!GC.isMobile()) { labelWithButton5.forceActiveFocus() } } var noButtonFunction = function() { if (!GC.isMobile()) { labelWithButton3.forceActiveFocus() } } showQuestionDrawer(headerText, descriptionText, yesButtonText, noButtonText, yesButtonFunction, noButtonFunction) } } DividerType {} LabelWithButtonType { id: labelWithButton4 visible: content.isServerWithWriteAccess Layout.fillWidth: true text: qsTr("Clear server from Amnezia software") textColor: AmneziaStyle.color.vibrantRed clickedFunction: function() { 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.") var yesButtonText = qsTr("Continue") var noButtonText = qsTr("Cancel") var yesButtonFunction = function() { if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) { PageController.showNotificationMessage(qsTr("Cannot clear server from Amnezia software during active connection")) } else { PageController.goToPage(PageEnum.PageDeinstalling) InstallController.removeAllContainers() } if (!GC.isMobile()) { labelWithButton5.forceActiveFocus() } } var noButtonFunction = function() { if (!GC.isMobile()) { labelWithButton4.forceActiveFocus() } } showQuestionDrawer(headerText, descriptionText, yesButtonText, noButtonText, yesButtonFunction, noButtonFunction) } } DividerType { visible: content.isServerWithWriteAccess } LabelWithButtonType { id: labelWithButton5 visible: ServersModel.getProcessedServerData("isServerFromTelegramApi") Layout.fillWidth: true text: qsTr("Reset API config") textColor: AmneziaStyle.color.vibrantRed clickedFunction: function() { var headerText = qsTr("Do you want to reset API config?") var descriptionText = "" var yesButtonText = qsTr("Continue") var noButtonText = qsTr("Cancel") 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) } if (!GC.isMobile()) { labelWithButton5.forceActiveFocus() } } var noButtonFunction = function() { if (!GC.isMobile()) { labelWithButton5.forceActiveFocus() } } showQuestionDrawer(headerText, descriptionText, yesButtonText, noButtonText, yesButtonFunction, noButtonFunction) } } DividerType { visible: ServersModel.getProcessedServerData("isServerFromTelegramApi") } } } }