From 051a2a3ef2bf0447765fb3829cf99c4bacbb829d Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Fri, 27 Jan 2023 10:25:14 +0300 Subject: [PATCH 1/4] Added popup to confirm actions "Clear server from Amnesia software" and "Forget this server" --- client/containers/containers_defs.cpp | 2 +- client/resources.qrc | 1 + client/ui/qml/Controls/PopupWithQuestion.qml | 55 ++++++++++++++++++++ client/ui/qml/Pages/PageServerSettings.qml | 31 +++++++++-- 4 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 client/ui/qml/Controls/PopupWithQuestion.qml diff --git a/client/containers/containers_defs.cpp b/client/containers/containers_defs.cpp index 3313a772..c9ee2959 100644 --- a/client/containers/containers_defs.cpp +++ b/client/containers/containers_defs.cpp @@ -70,7 +70,7 @@ QList ContainerProps::allContainers() QMap ContainerProps::containerHumanNames() { return { - {DockerContainer::None, "Unknown (Old version)"}, + {DockerContainer::None, "Not installed"}, {DockerContainer::OpenVpn, "OpenVPN"}, {DockerContainer::ShadowSocks, "OpenVpn over ShadowSocks"}, {DockerContainer::Cloak, "OpenVpn over Cloak"}, diff --git a/client/resources.qrc b/client/resources.qrc index 105c06b8..4651f91e 100644 --- a/client/resources.qrc +++ b/client/resources.qrc @@ -163,5 +163,6 @@ images/svg/control_point_black_24dp.svg images/svg/settings_suggest_black_24dp.svg server_scripts/website_tor/Dockerfile + ui/qml/Controls/PopupWithQuestion.qml diff --git a/client/ui/qml/Controls/PopupWithQuestion.qml b/client/ui/qml/Controls/PopupWithQuestion.qml new file mode 100644 index 00000000..a5ea4611 --- /dev/null +++ b/client/ui/qml/Controls/PopupWithQuestion.qml @@ -0,0 +1,55 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts + +Popup { + id: root + + property string questionText + property string yesText: "yes" + property string noText: "no" + property var yesFunc + property var noFunc + + anchors.centerIn: Overlay.overlay + modal: true + closePolicy: Popup.NoAutoClose + + width: parent.width - 20 + + ColumnLayout { + width: parent.width + Text { + horizontalAlignment: Text.AlignHCenter + Layout.fillWidth: true + wrapMode: Text.WordWrap + font.pixelSize: 16 + text: questionText + } + + RowLayout { + BlueButtonType { + id: yesButton + Layout.fillWidth: true + text: yesText + onClicked: { + root.enabled = false + if (yesFunc && typeof yesFunc === "function") { + yesFunc() + } + root.enabled = true + } + } + BlueButtonType { + id: noButton + Layout.fillWidth: true + text: noText + onClicked: { + if (noFunc && typeof noFunc === "function") { + noFunc() + } + } + } + } + } +} diff --git a/client/ui/qml/Pages/PageServerSettings.qml b/client/ui/qml/Pages/PageServerSettings.qml index 921cc8d9..1c7f2248 100644 --- a/client/ui/qml/Pages/PageServerSettings.qml +++ b/client/ui/qml/Pages/PageServerSettings.qml @@ -93,24 +93,49 @@ PageBase { ServerSettingsLogic.onPushButtonClearClientCacheClicked() } } + BlueButtonType { Layout.fillWidth: true Layout.topMargin: 10 text: ServerSettingsLogic.pushButtonClearText visible: ServerSettingsLogic.pushButtonClearVisible - onClicked: { - ServerSettingsLogic.onPushButtonClearServer() + onClicked: { + popupClearServer.open() } } + + PopupWithQuestion { + id: popupClearServer + questionText: "Attention! All containers will be deleted on the server. This means that configuration files, keys and certificates will be deleted. Continue?" + yesFunc: function() { + ServerSettingsLogic.onPushButtonClearServer() + close() + } + noFunc: function() { + close() + } + } + BlueButtonType { Layout.fillWidth: true Layout.topMargin: 10 text: qsTr("Forget this server") onClicked: { - ServerSettingsLogic.onPushButtonForgetServer() + popupForgetServer.open() } } + PopupWithQuestion { + id: popupForgetServer + questionText: "Attention! Something will happen. Continue?" + yesFunc: function() { + ServerSettingsLogic.onPushButtonForgetServer() + close() + } + noFunc: function() { + close() + } + } } } From da47054497a5efb810ddcf585a475b22dae1fe20 Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Fri, 27 Jan 2023 18:37:08 +0300 Subject: [PATCH 2/4] changed element type to confirm container deletion from MessageDialog to PopupWithQuestion - fixed "back" button availability for readonly servers --- client/ui/qml/Pages/PageServerContainers.qml | 30 +++++++++---------- .../ui/qml/Pages/Protocols/PageProtoCloak.qml | 3 +- .../qml/Pages/Protocols/PageProtoOpenVPN.qml | 6 +--- .../Pages/Protocols/PageProtoShadowSocks.qml | 2 +- client/ui/qml/main.qml | 12 -------- 5 files changed, 18 insertions(+), 35 deletions(-) diff --git a/client/ui/qml/Pages/PageServerContainers.qml b/client/ui/qml/Pages/PageServerContainers.qml index 4b8383e6..86363698 100644 --- a/client/ui/qml/Pages/PageServerContainers.qml +++ b/client/ui/qml/Pages/PageServerContainers.qml @@ -297,23 +297,24 @@ PageBase { implicitHeight: 30 checked: default_role - - MessageDialog { - id: dialogRemove - buttons: StandardButton.Yes | StandardButton.Cancel - title: "AmneziaVPN" - text: qsTr("Remove container") + " " + name_role + "?" + "\n" + qsTr("This action will erase all data of this container on the server.") - onAccepted: { - tb_c.currentIndex = -1 - ServerContainersLogic.onPushButtonRemoveClicked(proxyContainersModel.mapToSource(index)) - } - } - - onClicked: dialogRemove.open() + onClicked: popupRemove.open() VisibleBehavior on visible { } } + PopupWithQuestion { + id: popupRemove + questionText: qsTr("Remove container") + " " + name_role + "?" + "\n" + qsTr("This action will erase all data of this container on the server.") + yesFunc: function() { + tb_c.currentIndex = -1 + ServerContainersLogic.onPushButtonRemoveClicked(proxyContainersModel.mapToSource(index)) + close() + } + noFunc: function() { + close() + } + } + ImageButtonType { id: button_share visible: (index === tb_c.currentIndex) && ServerContainersLogic.isManagedServer @@ -418,7 +419,7 @@ PageBase { BlueButtonType { id: pb_add_container - visible: container_selector.selectedIndex < 0 + visible: container_selector.selectedIndex < 0 && ServerContainersLogic.isManagedServer anchors.horizontalCenter: parent.horizontalCenter anchors.bottom: parent.bottom @@ -430,6 +431,5 @@ PageBase { text: qsTr("Install new service") font.pixelSize: 16 onClicked: container_selector.visible ? container_selector.close() : container_selector.open() - } } diff --git a/client/ui/qml/Pages/Protocols/PageProtoCloak.qml b/client/ui/qml/Pages/Protocols/PageProtoCloak.qml index 86a2584a..bbccbad3 100644 --- a/client/ui/qml/Pages/Protocols/PageProtoCloak.qml +++ b/client/ui/qml/Pages/Protocols/PageProtoCloak.qml @@ -11,10 +11,9 @@ PageProtocolBase { protocol: ProtocolEnum.Cloak logic: UiLogic.protocolLogic(protocol) - enabled: logic.pageEnabled BackButton { id: back - enabled: logic.pageEnabled + enabled: !logic.pushButtonCancelVisible } Caption { diff --git a/client/ui/qml/Pages/Protocols/PageProtoOpenVPN.qml b/client/ui/qml/Pages/Protocols/PageProtoOpenVPN.qml index a0779d1c..590501d5 100644 --- a/client/ui/qml/Pages/Protocols/PageProtoOpenVPN.qml +++ b/client/ui/qml/Pages/Protocols/PageProtoOpenVPN.qml @@ -13,7 +13,7 @@ PageProtocolBase { BackButton { id: back - enabled: logic.pageEnabled + enabled: !logic.pushButtonCancelVisible } Caption { @@ -285,8 +285,6 @@ PageProtocolBase { } } } - - } BasicButtonType { @@ -338,8 +336,6 @@ PageProtocolBase { } } } - - } LabelType { diff --git a/client/ui/qml/Pages/Protocols/PageProtoShadowSocks.qml b/client/ui/qml/Pages/Protocols/PageProtoShadowSocks.qml index 4d627fe2..160c3ef6 100644 --- a/client/ui/qml/Pages/Protocols/PageProtoShadowSocks.qml +++ b/client/ui/qml/Pages/Protocols/PageProtoShadowSocks.qml @@ -13,7 +13,7 @@ PageProtocolBase { BackButton { id: back - enabled: logic.pageEnabled + enabled: !logic.pushButtonCancelVisible } Caption { diff --git a/client/ui/qml/main.qml b/client/ui/qml/main.qml index 7f631f96..10552c11 100644 --- a/client/ui/qml/main.qml +++ b/client/ui/qml/main.qml @@ -232,18 +232,6 @@ Window { } } - MessageDialog { - id: closePrompt -// x: (root.width - width) / 2 -// y: (root.height - height) / 2 - title: qsTr("Exit") - text: qsTr("Do you really want to quit?") -// standardButtons: StandardButton.Yes | StandardButton.No -// onYesClicked: { -// Qt.quit() -// } - visible: false - } MessageDialog { id: publicKeyWarning title: "AmneziaVPN" From 00c4cf300a171ef54c639a9cb8d30e712c0c8e5c Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Fri, 27 Jan 2023 19:56:39 +0300 Subject: [PATCH 3/4] fixed the width of the buttons in popupWithQuestion --- client/ui/qml/Controls/PopupWithQuestion.qml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/ui/qml/Controls/PopupWithQuestion.qml b/client/ui/qml/Controls/PopupWithQuestion.qml index a5ea4611..4eafd359 100644 --- a/client/ui/qml/Controls/PopupWithQuestion.qml +++ b/client/ui/qml/Controls/PopupWithQuestion.qml @@ -30,6 +30,7 @@ Popup { RowLayout { BlueButtonType { id: yesButton + Layout.preferredWidth: parent.width / 2 Layout.fillWidth: true text: yesText onClicked: { @@ -42,6 +43,7 @@ Popup { } BlueButtonType { id: noButton + Layout.preferredWidth: parent.width / 2 Layout.fillWidth: true text: noText onClicked: { From 542039df01b57e243362d2d1bff36ca50cfc6d98 Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Sun, 29 Jan 2023 09:01:48 +0300 Subject: [PATCH 4/4] Changed notification text for "Forget this server" action --- client/ui/qml/Pages/PageServerSettings.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ui/qml/Pages/PageServerSettings.qml b/client/ui/qml/Pages/PageServerSettings.qml index 1c7f2248..85bc07e3 100644 --- a/client/ui/qml/Pages/PageServerSettings.qml +++ b/client/ui/qml/Pages/PageServerSettings.qml @@ -127,7 +127,7 @@ PageBase { PopupWithQuestion { id: popupForgetServer - questionText: "Attention! Something will happen. Continue?" + questionText: "Attention! This action will not remove the container on the server, it will only remove the container information from the application. Continue?" yesFunc: function() { ServerSettingsLogic.onPushButtonForgetServer() close()