diff --git a/client/images/plus.png b/client/images/plus.png
deleted file mode 100644
index 81d44ec4..00000000
Binary files a/client/images/plus.png and /dev/null differ
diff --git a/client/images/reload.png b/client/images/reload.png
deleted file mode 100644
index 9c00222e..00000000
Binary files a/client/images/reload.png and /dev/null differ
diff --git a/client/images/server_settings.png b/client/images/server_settings.png
deleted file mode 100644
index fddc8b1a..00000000
Binary files a/client/images/server_settings.png and /dev/null differ
diff --git a/client/images/svg/close_black_24dp.svg b/client/images/svg/close_black_24dp.svg
new file mode 100644
index 00000000..5f1267d7
--- /dev/null
+++ b/client/images/svg/close_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/control_point_black_24dp.svg b/client/images/svg/control_point_black_24dp.svg
new file mode 100644
index 00000000..75b25e67
--- /dev/null
+++ b/client/images/svg/control_point_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/delete_black_24dp.svg b/client/images/svg/delete_black_24dp.svg
new file mode 100644
index 00000000..69a68354
--- /dev/null
+++ b/client/images/svg/delete_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/density_small_black_24dp.svg b/client/images/svg/density_small_black_24dp.svg
new file mode 100644
index 00000000..f79483de
--- /dev/null
+++ b/client/images/svg/density_small_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/done_black_24dp.svg b/client/images/svg/done_black_24dp.svg
new file mode 100644
index 00000000..b7e19d35
--- /dev/null
+++ b/client/images/svg/done_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/format_list_bulleted_black_24dp.svg b/client/images/svg/format_list_bulleted_black_24dp.svg
new file mode 100644
index 00000000..21821a14
--- /dev/null
+++ b/client/images/svg/format_list_bulleted_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/gpp_good_black_24dp.svg b/client/images/svg/gpp_good_black_24dp.svg
new file mode 100644
index 00000000..45d4a819
--- /dev/null
+++ b/client/images/svg/gpp_good_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/gpp_maybe_black_24dp.svg b/client/images/svg/gpp_maybe_black_24dp.svg
new file mode 100644
index 00000000..dceeac79
--- /dev/null
+++ b/client/images/svg/gpp_maybe_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/logout_black_24dp.svg b/client/images/svg/logout_black_24dp.svg
new file mode 100644
index 00000000..1b785f84
--- /dev/null
+++ b/client/images/svg/logout_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/miscellaneous_services_black_24dp.svg b/client/images/svg/miscellaneous_services_black_24dp.svg
new file mode 100644
index 00000000..425990e5
--- /dev/null
+++ b/client/images/svg/miscellaneous_services_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/refresh_black_24dp.svg b/client/images/svg/refresh_black_24dp.svg
new file mode 100644
index 00000000..f31411f5
--- /dev/null
+++ b/client/images/svg/refresh_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/settings_black_24dp.svg b/client/images/svg/settings_black_24dp.svg
new file mode 100644
index 00000000..4165162b
--- /dev/null
+++ b/client/images/svg/settings_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/settings_suggest_black_24dp.svg b/client/images/svg/settings_suggest_black_24dp.svg
new file mode 100644
index 00000000..80053d0e
--- /dev/null
+++ b/client/images/svg/settings_suggest_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/share_black_24dp.svg b/client/images/svg/share_black_24dp.svg
new file mode 100644
index 00000000..4c5fa323
--- /dev/null
+++ b/client/images/svg/share_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/images/svg/vpn_key_black_24dp.svg b/client/images/svg/vpn_key_black_24dp.svg
new file mode 100644
index 00000000..2c18df46
--- /dev/null
+++ b/client/images/svg/vpn_key_black_24dp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/resources.qrc b/client/resources.qrc
index 407fe227..cb7877ff 100644
--- a/client/resources.qrc
+++ b/client/resources.qrc
@@ -27,11 +27,9 @@
fonts/Lato-Thin.ttf
fonts/Lato-ThinItalic.ttf
images/AmneziaVPN.png
- images/server_settings.png
images/share.png
server_scripts/remove_container.sh
server_scripts/setup_host_firewall.sh
- images/reload.png
server_scripts/openvpn_cloak/Dockerfile
server_scripts/openvpn_cloak/configure_container.sh
server_scripts/openvpn_cloak/start.sh
@@ -42,7 +40,6 @@
images/check.png
images/uncheck.png
images/settings_grey.png
- images/plus.png
server_scripts/check_connection.sh
server_scripts/remove_all_containers.sh
server_scripts/openvpn_cloak/run_container.sh
@@ -144,5 +141,21 @@
ui/qml/Pages/PageQrDecoder.qml
ui/qml/Pages/PageAbout.qml
ui/qml/Controls/RichLabelType.qml
+ images/svg/gpp_good_black_24dp.svg
+ ui/qml/Controls/SvgImageType.qml
+ images/svg/gpp_maybe_black_24dp.svg
+ images/svg/close_black_24dp.svg
+ images/svg/delete_black_24dp.svg
+ images/svg/done_black_24dp.svg
+ images/svg/format_list_bulleted_black_24dp.svg
+ images/svg/logout_black_24dp.svg
+ images/svg/miscellaneous_services_black_24dp.svg
+ images/svg/refresh_black_24dp.svg
+ images/svg/settings_black_24dp.svg
+ images/svg/share_black_24dp.svg
+ images/svg/vpn_key_black_24dp.svg
+ images/svg/control_point_black_24dp.svg
+ images/svg/settings_suggest_black_24dp.svg
+ ui/qml/Controls/SvgButtonType.qml
diff --git a/client/ui/pages_logic/VpnLogic.cpp b/client/ui/pages_logic/VpnLogic.cpp
index 67e9e37a..f27551a1 100644
--- a/client/ui/pages_logic/VpnLogic.cpp
+++ b/client/ui/pages_logic/VpnLogic.cpp
@@ -5,6 +5,7 @@
#include
#include "../uilogic.h"
#include "defines.h"
+#include
VpnLogic::VpnLogic(UiLogic *logic, QObject *parent):
@@ -61,6 +62,16 @@ void VpnLogic::onUpdatePage()
QString selectedContainerName = ContainerProps::containerHumanNames().value(selectedContainer);
set_labelCurrentService(selectedContainerName);
+ auto dns = VpnConfigurator::getDnsForConfig(m_settings.defaultServerIndex());
+ set_amneziaDnsEnabled(dns.first == protocols::dns::amneziaDnsIp);
+ if (dns.first == protocols::dns::amneziaDnsIp) {
+ set_labelCurrentDns("On your server");
+ }
+ else {
+ set_labelCurrentDns(dns.first + ", " + dns.second);
+ }
+
+
set_isContainerWorkingOnPlatform(ContainerProps::isWorkingOnPlatform(selectedContainer));
if (!isContainerWorkingOnPlatform()) {
set_labelErrorText(tr("AmneziaVPN not supporting selected protocol on this device. Select another protocol."));
diff --git a/client/ui/pages_logic/VpnLogic.h b/client/ui/pages_logic/VpnLogic.h
index e18b49eb..c6e983b9 100644
--- a/client/ui/pages_logic/VpnLogic.h
+++ b/client/ui/pages_logic/VpnLogic.h
@@ -16,6 +16,9 @@ class VpnLogic : public PageLogicBase
AUTO_PROPERTY(QString, labelStateText)
AUTO_PROPERTY(QString, labelCurrentServer)
AUTO_PROPERTY(QString, labelCurrentService)
+ AUTO_PROPERTY(QString, labelCurrentDns)
+ AUTO_PROPERTY(bool, amneziaDnsEnabled)
+
AUTO_PROPERTY(bool, pushButtonConnectEnabled)
AUTO_PROPERTY(bool, pushButtonConnectVisible)
AUTO_PROPERTY(bool, widgetVpnModeEnabled)
diff --git a/client/ui/qml/Controls/SettingButtonType.qml b/client/ui/qml/Controls/SettingButtonType.qml
index cef5f9fd..2efee56c 100644
--- a/client/ui/qml/Controls/SettingButtonType.qml
+++ b/client/ui/qml/Controls/SettingButtonType.qml
@@ -8,10 +8,12 @@ BasicButtonType {
background: Item {}
contentItem: Item {
anchors.fill: parent
- Image {
- source: root.icon.source
+ SvgImageType {
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
+ svg.source: root.icon.source
+ width: 25
+ height: 25
}
Text {
id: textItem
diff --git a/client/ui/qml/Controls/SvgButtonType.qml b/client/ui/qml/Controls/SvgButtonType.qml
new file mode 100644
index 00000000..af55939c
--- /dev/null
+++ b/client/ui/qml/Controls/SvgButtonType.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+import "."
+
+BasicButtonType {
+ id: root
+ icon.color: "#181922"
+
+ background: Item {}
+ contentItem: SvgImageType {
+ svg.source: icon.source
+ color: icon.color
+ anchors.fill: parent
+ anchors.margins: parent.containsMouse ? 0 : 1
+ }
+}
diff --git a/client/ui/qml/Controls/SvgImageType.qml b/client/ui/qml/Controls/SvgImageType.qml
new file mode 100644
index 00000000..651b7330
--- /dev/null
+++ b/client/ui/qml/Controls/SvgImageType.qml
@@ -0,0 +1,23 @@
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+import QtGraphicalEffects 1.15
+
+Item {
+ id: root
+ property color color: "#181922"
+ property alias svg: image
+ Image {
+ anchors.fill: parent
+ id: image
+ sourceSize: Qt.size(root.width, root.height)
+
+ antialiasing: true
+ visible: false
+ }
+
+ ColorOverlay {
+ anchors.fill: image
+ source: image
+ color: root.color
+ }
+}
diff --git a/client/ui/qml/Pages/PageGeneralSettings.qml b/client/ui/qml/Pages/PageGeneralSettings.qml
index 0da29d00..03ba0465 100644
--- a/client/ui/qml/Pages/PageGeneralSettings.qml
+++ b/client/ui/qml/Pages/PageGeneralSettings.qml
@@ -1,5 +1,6 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
+import QtGraphicalEffects 1.15
import PageEnum 1.0
import "./"
import "../Controls"
@@ -31,9 +32,9 @@ PageBase {
anchors.top: l1.bottom
anchors.topMargin: GC.isMobile() ? 0: 15
x: 30
- width: parent.width - 40
+ width: parent.width - 80
height: GC.isMobile() ? 0: 30
- icon.source: "qrc:/images/settings.png"
+ icon.source: "qrc:/images/svg/settings_black_24dp.svg"
text: qsTr("App settings")
onClicked: {
UiLogic.goToPage(PageEnum.AppSettings)
@@ -57,7 +58,7 @@ PageBase {
anchors.topMargin: 15
width: parent.width - 40
height: 30
- icon.source: "qrc:/images/settings.png"
+ icon.source: "qrc:/images/svg/settings_suggest_black_24dp.svg"
text: qsTr("Network settings")
onClicked: {
UiLogic.goToPage(PageEnum.NetworkSettings)
@@ -81,7 +82,7 @@ PageBase {
anchors.topMargin: 15
width: 330
height: 30
- icon.source: "qrc:/images/server_settings.png"
+ icon.source: "qrc:/images/svg/vpn_key_black_24dp.svg"
text: qsTr("Server Settings")
onClicked: {
GeneralSettingsLogic.onPushButtonGeneralSettingsServerSettingsClicked()
@@ -105,7 +106,7 @@ PageBase {
anchors.topMargin: 15
width: 330
height: 30
- icon.source: "qrc:/images/share.png"
+ icon.source: "qrc:/images/svg/share_black_24dp.svg"
text: qsTr("Share connection")
enabled: GeneralSettingsLogic.pushButtonGeneralSettingsShareConnectionEnable
onClicked: {
@@ -130,7 +131,7 @@ PageBase {
anchors.topMargin: 15
width: 330
height: 30
- icon.source: "qrc:/images/server_settings.png"
+ icon.source: "qrc:/images/svg/format_list_bulleted_black_24dp.svg"
text: qsTr("Servers")
onClicked: {
UiLogic.goToPage(PageEnum.ServersList)
@@ -154,7 +155,7 @@ PageBase {
anchors.topMargin: 15
width: 330
height: 30
- icon.source: "qrc:/images/plus.png"
+ icon.source: "qrc:/images/svg/control_point_black_24dp.svg"
text: qsTr("Add server")
onClicked: {
UiLogic.goToPage(PageEnum.Start)
@@ -178,7 +179,7 @@ PageBase {
anchors.bottomMargin: 20
width: 330
height: 30
- icon.source: "qrc:/images/settings.png"
+ icon.source: "qrc:/images/svg/logout_black_24dp.svg"
text: qsTr("Exit")
onClicked: {
Qt.quit()
diff --git a/client/ui/qml/Pages/PageNetworkSetting.qml b/client/ui/qml/Pages/PageNetworkSetting.qml
index 1665575b..924b32dd 100644
--- a/client/ui/qml/Pages/PageNetworkSetting.qml
+++ b/client/ui/qml/Pages/PageNetworkSetting.qml
@@ -28,6 +28,7 @@ PageBase {
onCheckedChanged: {
NetworkSettingsLogic.checkBoxUseAmneziaDnsChecked = checked
NetworkSettingsLogic.onCheckBoxUseAmneziaDnsToggled(checked)
+ UiLogic.onUpdateAllPages()
}
}
@@ -59,21 +60,23 @@ If AmneziaDNS service is not installed on the same server, or this option is unc
onEditingFinished: {
NetworkSettingsLogic.lineEditDns1Text = text
NetworkSettingsLogic.onLineEditDns1EditFinished(text)
+ UiLogic.onUpdateAllPages()
}
validator: RegExpValidator {
regExp: NetworkSettingsLogic.ipAddressRegex
}
}
- ImageButtonType {
+ SvgButtonType {
id: resetDNS1
anchors. left: dns1.right
anchors.leftMargin: 10
anchors.verticalCenter: dns1.verticalCenter
width: 24
height: 24
- icon.source: "qrc:/images/reload.png"
+ icon.source: "qrc:/images/svg/refresh_black_24dp.svg"
onClicked: {
NetworkSettingsLogic.onPushButtonResetDns1Clicked()
+ UiLogic.onUpdateAllPages()
}
}
@@ -96,21 +99,23 @@ If AmneziaDNS service is not installed on the same server, or this option is unc
onEditingFinished: {
NetworkSettingsLogic.lineEditDns2Text = text
NetworkSettingsLogic.onLineEditDns2EditFinished(text)
+ UiLogic.onUpdateAllPages()
}
validator: RegExpValidator {
regExp: NetworkSettingsLogic.ipAddressRegex
}
}
- ImageButtonType {
+ SvgButtonType {
id: resetDNS2
anchors. left: dns2.right
anchors.leftMargin: 10
anchors.verticalCenter: dns2.verticalCenter
width: 24
height: 24
- icon.source: "qrc:/images/reload.png"
+ icon.source: "qrc:/images/svg/refresh_black_24dp.svg"
onClicked: {
NetworkSettingsLogic.onPushButtonResetDns2Clicked()
+ UiLogic.onUpdateAllPages()
}
}
diff --git a/client/ui/qml/Pages/PageServerList.qml b/client/ui/qml/Pages/PageServerList.qml
index 5a333069..fec2f3de 100644
--- a/client/ui/qml/Pages/PageServerList.qml
+++ b/client/ui/qml/Pages/PageServerList.qml
@@ -19,17 +19,20 @@ PageBase {
text: qsTr("Servers list")
width: undefined
}
- ImageButtonType {
+
+ SvgButtonType {
anchors.bottom: caption.bottom
anchors.leftMargin: 10
anchors.left: caption.right
width: 24
height: 24
- icon.source: "qrc:/images/plus.png"
+
+ icon.source: "qrc:/images/svg/control_point_black_24dp.svg"
onClicked: {
UiLogic.goToPage(PageEnum.Start);
}
}
+
ListView {
id: listWidget_servers
x: 20
@@ -124,13 +127,13 @@ PageBase {
checked: is_default
enabled: !is_default
}
- ImageButtonType {
+ SvgButtonType {
id: pushButtonSetting
x: parent.width - 70
y: 15
width: 30
height: 30
- icon.source: "qrc:/images/settings.png"
+ icon.source: "qrc:/images/svg/settings_black_24dp.svg"
opacity: 0
OpacityAnimator {
diff --git a/client/ui/qml/Pages/PageStart.qml b/client/ui/qml/Pages/PageStart.qml
index b8aceab3..26fc5e5f 100644
--- a/client/ui/qml/Pages/PageStart.qml
+++ b/client/ui/qml/Pages/PageStart.qml
@@ -240,8 +240,7 @@ PageBase {
anchors.horizontalCenter: parent.horizontalCenter
height: 71
- echoMode: TextInput.Password
- font.pixelSize: 9
+ font.pixelSize: 10
verticalAlignment: Text.AlignTop
text: StartPageLogic.textEditSshKeyText
onEditingFinished: {
@@ -264,6 +263,7 @@ PageBase {
id: new_sever_connect
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: new_server_ssh_key.bottom
+ anchors.topMargin: 10
text: StartPageLogic.pushButtonConnectText
visible: StartPageLogic.pushButtonConnectVisible
diff --git a/client/ui/qml/Pages/PageVPN.qml b/client/ui/qml/Pages/PageVPN.qml
index e4bbaecb..4946a1ed 100644
--- a/client/ui/qml/Pages/PageVPN.qml
+++ b/client/ui/qml/Pages/PageVPN.qml
@@ -156,7 +156,7 @@ PageBase {
LabelType {
Layout.alignment: Qt.AlignRight
height: 21
- text: qsTr("Service") + ": "
+ text: qsTr("Proto") + ": "
}
BasicButtonType {
@@ -173,10 +173,46 @@ PageBase {
}
}
+ RowLayout {
+ id: layout3
+ anchors.top: layout2.bottom
+ anchors.topMargin: 5
+ anchors.horizontalCenter: parent.horizontalCenter
+ height: 21
+
+
+ LabelType {
+ Layout.alignment: Qt.AlignRight
+ height: 21
+ text: qsTr("DNS") + ": "
+ }
+
+ BasicButtonType {
+ Layout.alignment: Qt.AlignLeft
+ height: 21
+ implicitWidth: implicitContentWidth > root.width * 0.6 ? root.width * 0.6 : implicitContentWidth + leftPadding + rightPadding
+ background: Item {}
+ text: VpnLogic.labelCurrentDns + " →"
+ font.family: "Lato"
+ font.styleName: "normal"
+ font.pixelSize: 16
+ onClicked: {
+ UiLogic.goToPage(PageEnum.NetworkSettings)
+ }
+ }
+
+ SvgImageType {
+ svg.source: VpnLogic.amneziaDnsEnabled ? "qrc:/images/svg/gpp_good_black_24dp.svg" : "qrc:/images/svg/gpp_maybe_black_24dp.svg"
+ color: VpnLogic.amneziaDnsEnabled ? "#22aa33" : "orange"
+ width: 25
+ height: 25
+ }
+ }
+
LabelType {
id: error_text
- anchors.top: layout2.bottom
+ anchors.top: layout3.bottom
anchors.horizontalCenter: parent.horizontalCenter
anchors.topMargin: 20
width: parent.width - 20
diff --git a/client/ui/qml/main.qml b/client/ui/qml/main.qml
index a22e002c..bee1a7c7 100644
--- a/client/ui/qml/main.qml
+++ b/client/ui/qml/main.qml
@@ -24,6 +24,8 @@ Window {
visible: true
width: GC.screenWidth
height: GC.isDesktop() ? GC.screenHeight + titleBar.height : GC.screenHeight
+ minimumWidth: 360
+ minimumHeight: GC.isDesktop() ? 640 : 0
Keys.enabled: true
onClosing: {
console.debug("QML onClosing signal")