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..4eafd359 --- /dev/null +++ b/client/ui/qml/Controls/PopupWithQuestion.qml @@ -0,0 +1,57 @@ +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.preferredWidth: parent.width / 2 + Layout.fillWidth: true + text: yesText + onClicked: { + root.enabled = false + if (yesFunc && typeof yesFunc === "function") { + yesFunc() + } + root.enabled = true + } + } + BlueButtonType { + id: noButton + Layout.preferredWidth: parent.width / 2 + Layout.fillWidth: true + text: noText + onClicked: { + if (noFunc && typeof noFunc === "function") { + noFunc() + } + } + } + } + } +} diff --git a/client/ui/qml/Pages/PageServerContainers.qml b/client/ui/qml/Pages/PageServerContainers.qml index 782397c1..ddd607b0 100644 --- a/client/ui/qml/Pages/PageServerContainers.qml +++ b/client/ui/qml/Pages/PageServerContainers.qml @@ -296,23 +296,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 @@ -417,7 +418,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 @@ -429,6 +430,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/PageServerSettings.qml b/client/ui/qml/Pages/PageServerSettings.qml index 921cc8d9..85bc07e3 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! 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() + } + noFunc: function() { + close() + } + } } } 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"