From 3175bc1e483068a1281ba2dd08661ea6b02b699c Mon Sep 17 00:00:00 2001 From: Pokamest Nikak Date: Wed, 8 Sep 2021 21:24:09 +0300 Subject: [PATCH] QML Fixes --- client/resources.qrc | 3 + .../pages_logic/NewServerProtocolsLogic.cpp | 6 +- .../ui/pages_logic/NewServerProtocolsLogic.h | 4 +- client/ui/pages_logic/StartPageLogic.cpp | 2 + client/ui/qml/Controls/BlueButtonType.qml | 5 + client/ui/qml/Controls/Caption.qml | 17 + client/ui/qml/Controls/CheckBoxType.qml | 1 + client/ui/qml/Controls/LabelType.qml | 5 + client/ui/qml/Controls/Logo.qml | 12 + client/ui/qml/Controls/TextFieldType.qml | 6 +- .../InstallSettings/InstallSettingsBase.qml | 75 +++ client/ui/qml/Pages/PageAppSetting.qml | 12 +- client/ui/qml/Pages/PageNetworkSetting.qml | 12 +- client/ui/qml/Pages/PageNewServer.qml | 62 +- .../ui/qml/Pages/PageNewServerConfiguring.qml | 12 +- .../ui/qml/Pages/PageNewServerProtocols.qml | 564 ++++++------------ client/ui/qml/Pages/PageServerContainers.qml | 12 +- client/ui/qml/Pages/PageServerList.qml | 15 +- client/ui/qml/Pages/PageServerSettings.qml | 11 +- client/ui/qml/Pages/PageSetupWizard.qml | 12 +- .../ui/qml/Pages/PageSetupWizardHighLevel.qml | 12 +- .../ui/qml/Pages/PageSetupWizardLowLevel.qml | 12 +- .../qml/Pages/PageSetupWizardMediumLevel.qml | 22 +- .../ui/qml/Pages/PageSetupWizardVPNMode.qml | 12 +- client/ui/qml/Pages/PageStart.qml | 420 ++++++------- 25 files changed, 535 insertions(+), 791 deletions(-) create mode 100644 client/ui/qml/Controls/Caption.qml create mode 100644 client/ui/qml/Controls/Logo.qml create mode 100644 client/ui/qml/Pages/InstallSettings/InstallSettingsBase.qml diff --git a/client/resources.qrc b/client/resources.qrc index 5d708c6a..04919412 100644 --- a/client/resources.qrc +++ b/client/resources.qrc @@ -104,5 +104,8 @@ ui/qml/Pages/Protocols/PageProtoOpenVPN.qml ui/qml/Pages/Protocols/PageProtoShadowSocks.qml ui/qml/Controls/BackButton.qml + ui/qml/Pages/InstallSettings/InstallSettingsBase.qml + ui/qml/Controls/Caption.qml + ui/qml/Controls/Logo.qml diff --git a/client/ui/pages_logic/NewServerProtocolsLogic.cpp b/client/ui/pages_logic/NewServerProtocolsLogic.cpp index cbe7b2b3..85ce813b 100644 --- a/client/ui/pages_logic/NewServerProtocolsLogic.cpp +++ b/client/ui/pages_logic/NewServerProtocolsLogic.cpp @@ -15,13 +15,13 @@ NewServerProtocolsLogic::NewServerProtocolsLogic(UiLogic *logic, QObject *parent m_frameSettingsParentWireguardVisible{false}, m_checkBoxCloakChecked{true}, m_checkBoxSsChecked{false}, - m_checkBoxOpenvpnChecked{false}, + m_checkBoxOpenVpnChecked{false}, m_progressBarConnectionMinimum{0}, m_progressBarConnectionMaximum{100} { set_frameSettingsParentWireguardVisible(false); - connect(this, &NewServerProtocolsLogic::pushButtonConnectConfigureClicked, this, [this](){ + connect(this, &NewServerProtocolsLogic::pushButtonConfigureClicked, this, [this](){ uiLogic()->installServer(getInstallConfigsFromProtocolsPage()); }); } @@ -78,7 +78,7 @@ QMap NewServerProtocolsLogic::getInstallConfigsFro containers.insert(DockerContainer::OpenVpnOverShadowSocks, ssConfig); } - if (checkBoxOpenvpnChecked()) { + if (checkBoxOpenVpnChecked()) { containers.insert(DockerContainer::OpenVpn, openVpnConfig); } diff --git a/client/ui/pages_logic/NewServerProtocolsLogic.h b/client/ui/pages_logic/NewServerProtocolsLogic.h index 28a41890..6ffb5eb3 100644 --- a/client/ui/pages_logic/NewServerProtocolsLogic.h +++ b/client/ui/pages_logic/NewServerProtocolsLogic.h @@ -21,7 +21,7 @@ class NewServerProtocolsLogic : public PageLogicBase AUTO_PROPERTY(QString, comboBoxOpenvpnProtoText) AUTO_PROPERTY(bool, checkBoxCloakChecked) AUTO_PROPERTY(bool, checkBoxSsChecked) - AUTO_PROPERTY(bool, checkBoxOpenvpnChecked) + AUTO_PROPERTY(bool, checkBoxOpenVpnChecked) AUTO_PROPERTY(double, progressBarConnectionMinimum) AUTO_PROPERTY(double, progressBarConnectionMaximum) @@ -35,7 +35,7 @@ public: QMap getInstallConfigsFromProtocolsPage() const; signals: - void pushButtonConnectConfigureClicked(); + void pushButtonConfigureClicked(); }; #endif // NEW_SERVER_PROTOCOLS_LOGIC_H diff --git a/client/ui/pages_logic/StartPageLogic.cpp b/client/ui/pages_logic/StartPageLogic.cpp index 815f8d84..fc99b055 100644 --- a/client/ui/pages_logic/StartPageLogic.cpp +++ b/client/ui/pages_logic/StartPageLogic.cpp @@ -39,6 +39,8 @@ void StartPageLogic::updatePage() void StartPageLogic::onPushButtonConnect() { +// uiLogic()->goToPage(Page::NewServer); +// return; if (pushButtonConnectKeyChecked()){ if (lineEditIpText().isEmpty() || lineEditLoginText().isEmpty() || diff --git a/client/ui/qml/Controls/BlueButtonType.qml b/client/ui/qml/Controls/BlueButtonType.qml index 58759946..d8b67283 100644 --- a/client/ui/qml/Controls/BlueButtonType.qml +++ b/client/ui/qml/Controls/BlueButtonType.qml @@ -4,6 +4,11 @@ import QtQuick.Controls 2.12 BasicButtonType { id: root + width: parent.width - 80 + height: 40 + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: 20 + background: Rectangle { anchors.fill: parent radius: 4 diff --git a/client/ui/qml/Controls/Caption.qml b/client/ui/qml/Controls/Caption.qml new file mode 100644 index 00000000..41090e91 --- /dev/null +++ b/client/ui/qml/Controls/Caption.qml @@ -0,0 +1,17 @@ +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +Text { + font.family: "Lato" + font.styleName: "normal" + font.pixelSize: 24 + color: "#100A44" + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + x: 10 + y: 35 + width: parent.width - 40 + anchors.horizontalCenter: parent.horizontalCenter + wrapMode: Text.Wrap + //height: 31 +} diff --git a/client/ui/qml/Controls/CheckBoxType.qml b/client/ui/qml/Controls/CheckBoxType.qml index 3c9eab1b..c840e04e 100644 --- a/client/ui/qml/Controls/CheckBoxType.qml +++ b/client/ui/qml/Controls/CheckBoxType.qml @@ -20,5 +20,6 @@ CheckBox { color: "#181922" verticalAlignment: Text.AlignVCenter leftPadding: root.indicator.width + root.spacing + wrapMode: Text.Wrap } } diff --git a/client/ui/qml/Controls/LabelType.qml b/client/ui/qml/Controls/LabelType.qml index 8b4ac4a0..cfef0d2c 100644 --- a/client/ui/qml/Controls/LabelType.qml +++ b/client/ui/qml/Controls/LabelType.qml @@ -2,6 +2,10 @@ import QtQuick 2.12 Text { id: root + x: 40 + width: parent.width + anchors.topMargin: 10 + font.family: "Lato" font.styleName: "normal" font.pixelSize: 16 @@ -10,3 +14,4 @@ Text { verticalAlignment: Text.AlignVCenter wrapMode: Text.Wrap } + diff --git a/client/ui/qml/Controls/Logo.qml b/client/ui/qml/Controls/Logo.qml new file mode 100644 index 00000000..fc3b06cb --- /dev/null +++ b/client/ui/qml/Controls/Logo.qml @@ -0,0 +1,12 @@ +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +Image { + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.bottomMargin: 30 +// width: GC.trW(150) +// height: GC.trH(22) +// y: GC.trY(590) + source: "qrc:/images/AmneziaVPN.png" +} diff --git a/client/ui/qml/Controls/TextFieldType.qml b/client/ui/qml/Controls/TextFieldType.qml index 3467bf93..d6508ab9 100644 --- a/client/ui/qml/Controls/TextFieldType.qml +++ b/client/ui/qml/Controls/TextFieldType.qml @@ -4,7 +4,11 @@ import QtQuick.Controls 2.12 TextField { id: root property bool error: false -// font. + + width: parent.width - 80 + height: 40 + anchors.topMargin: 5 + selectionColor: "darkgray" font.pixelSize: 16 color: "#333333" diff --git a/client/ui/qml/Pages/InstallSettings/InstallSettingsBase.qml b/client/ui/qml/Pages/InstallSettings/InstallSettingsBase.qml new file mode 100644 index 00000000..69fee7f3 --- /dev/null +++ b/client/ui/qml/Pages/InstallSettings/InstallSettingsBase.qml @@ -0,0 +1,75 @@ +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import "./" +import "../../Controls" +import "../../Config" + +Rectangle { + signal containerChecked(bool checked) + property bool initiallyChecked: false + property string containerDescription + default property alias itemSettings: container.data + + x: 5 + y: 5 + width: parent.width - 20 + anchors.horizontalCenter: parent.horizontalCenter + + height: frame_settings.visible ? 140 : 72 + border.width: 1 + border.color: "lightgray" + radius: 2 + Rectangle { + id: frame_settings + height: 77 + width: parent.width + border.width: 1 + border.color: "lightgray" + anchors.bottom: parent.bottom + anchors.bottomMargin: 5 + anchors.horizontalCenter: parent.horizontalCenter + visible: false + radius: 2 + Grid { + id: container + anchors.fill: parent + columns: 2 + horizontalItemAlignment: Grid.AlignHCenter + verticalItemAlignment: Grid.AlignVCenter + topPadding: 5 + leftPadding: 10 + spacing: 5 + } + } + Row { + anchors.top: parent.top + anchors.topMargin: 5 + leftPadding: 15 + rightPadding: 5 + height: 55 + width: parent.width + CheckBoxType { + text: containerDescription + height: parent.height + width: parent.width - 50 + checked: initiallyChecked + onCheckedChanged: containerChecked(checked) + } + ImageButtonType { + width: 35 + height: 35 + anchors.verticalCenter: parent.verticalCenter + icon.source: "qrc:/images/settings.png" + checkable: true + checked: initiallyChecked + onCheckedChanged: { + //NewServerProtocolsLogic.pushButtonSettingsCloakChecked = checked + if (checked) { + frame_settings.visible = true + } else { + frame_settings.visible = false + } + } + } + } +} diff --git a/client/ui/qml/Pages/PageAppSetting.qml b/client/ui/qml/Pages/PageAppSetting.qml index 29604fad..7d86ef6d 100644 --- a/client/ui/qml/Pages/PageAppSetting.qml +++ b/client/ui/qml/Pages/PageAppSetting.qml @@ -9,18 +9,8 @@ PageBase { BackButton { id: back } - Text { - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 24 - color: "#100A44" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + Caption { text: qsTr("Application Settings") - x: 10 - y: 35 - width: 361 - height: 31 } CheckBoxType { x: 30 diff --git a/client/ui/qml/Pages/PageNetworkSetting.qml b/client/ui/qml/Pages/PageNetworkSetting.qml index 1d974a11..0f56cc40 100644 --- a/client/ui/qml/Pages/PageNetworkSetting.qml +++ b/client/ui/qml/Pages/PageNetworkSetting.qml @@ -9,18 +9,8 @@ Item { BackButton { id: back } - Text { - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 24 - color: "#100A44" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + Caption { text: qsTr("DNS Servers") - x: 10 - y: 35 - width: 361 - height: 31 } Image { anchors.horizontalCenter: root.horizontalCenter diff --git a/client/ui/qml/Pages/PageNewServer.qml b/client/ui/qml/Pages/PageNewServer.qml index e76c840d..96447586 100644 --- a/client/ui/qml/Pages/PageNewServer.qml +++ b/client/ui/qml/Pages/PageNewServer.qml @@ -10,65 +10,49 @@ Item { BackButton { id: back_from_new_server } - Text { - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 24 - color: "#100A44" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + Caption { + id: caption text: qsTr("Setup your server to use VPN") - x: 10 - y: 35 - width: 361 - height: 31 } LabelType { + id: labelWizard horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter text: qsTr("If you want easily configure your server just run Wizard") - wrapMode: Text.Wrap - x: 40 - y: 100 - width: 301 - height: 41 - } - LabelType { - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - text: qsTr("Press configure manually to choose VPN protocols you want to install") - wrapMode: Text.Wrap - x: 40 - y: 260 - width: 301 - height: 41 + width: parent.width - 80 + anchors.top: caption.bottom + anchors.topMargin: 30 } BlueButtonType { + id: pushButtonWizard text: qsTr("Run Setup Wizard") - y: 150 - width: 301 - height: 40 - anchors.horizontalCenter: parent.horizontalCenter + anchors.top: labelWizard.bottom + anchors.topMargin: 10 onClicked: { UiLogic.goToPage(PageEnum.Wizard); } } + LabelType { + id: labelManual + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + text: qsTr("Press configure manually to choose VPN protocols you want to install") + + width: parent.width - 80 + anchors.top: pushButtonWizard.bottom + anchors.topMargin: 40 + } + BlueButtonType { text: qsTr("Configure VPN protocols manually") - y: 310 - width: 301 - height: 40 anchors.horizontalCenter: parent.horizontalCenter + anchors.top: labelManual.bottom + anchors.topMargin: 10 onClicked: { UiLogic.goToPage(PageEnum.NewServerProtocols); } } - Image { - anchors.horizontalCenter: root.horizontalCenter - width: GC.trW(150) - height: GC.trH(22) - y: GC.trY(590) - source: "qrc:/images/AmneziaVPN.png" + Logo { } } diff --git a/client/ui/qml/Pages/PageNewServerConfiguring.qml b/client/ui/qml/Pages/PageNewServerConfiguring.qml index 6625d92b..21e4ecbe 100644 --- a/client/ui/qml/Pages/PageNewServerConfiguring.qml +++ b/client/ui/qml/Pages/PageNewServerConfiguring.qml @@ -7,18 +7,8 @@ import "../Config" Item { id: root enabled: NewServerConfiguringLogic.pageEnabled - Text { - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 24 - color: "#100A44" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + Caption { text: qsTr("Configuring...") - x: 0 - y: 35 - width: 381 - height: 31 } LabelType { x: 30 diff --git a/client/ui/qml/Pages/PageNewServerProtocols.qml b/client/ui/qml/Pages/PageNewServerProtocols.qml index a92d90cb..69108454 100644 --- a/client/ui/qml/Pages/PageNewServerProtocols.qml +++ b/client/ui/qml/Pages/PageNewServerProtocols.qml @@ -3,439 +3,217 @@ import QtQuick.Controls 2.12 import "./" import "../Controls" import "../Config" +import "InstallSettings" Item { id: root BackButton { id: back } - Text { - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 24 - color: "#100A44" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + Caption { + id: caption text: qsTr("Select VPN protocols") - x: 10 - y: 35 - width: 361 - height: 31 } - ProgressBar { - id: progress_bar_new_server_connection - anchors.horizontalCenter: parent.horizontalCenter - y: 570 - width: 301 - height: 40 - from: NewServerProtocolsLogic.progressBarConnectionMinimum - to: NewServerProtocolsLogic.progressBarConnectionMaximum - value: 0 - background: Rectangle { - implicitWidth: parent.width - implicitHeight: parent.height - color: "#100A44" - radius: 4 - } - contentItem: Item { - implicitWidth: parent.width - implicitHeight: parent.height - Rectangle { - width: progress_bar_new_server_connection.visualPosition * parent.width - height: parent.height - radius: 4 - color: Qt.rgba(255, 255, 255, 0.15); - } - } - - LabelType { - anchors.fill: parent - text: qsTr("Configuring...") - horizontalAlignment: Text.AlignHCenter - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 16 - color: "#D4D4D4" - } - } BlueButtonType { + id: pushButtonConfigure anchors.horizontalCenter: parent.horizontalCenter - y: 570 - width: 301 + y: parent.height - 60 + width: parent.width - 40 height: 40 text: qsTr("Setup server") onClicked: { - NewServerProtocolsLogic.pushButtonConnectConfigureClicked() + NewServerProtocolsLogic.pushButtonConfigureClicked() } } + +// RoundButton { +// id: pb_add_container +// anchors.horizontalCenter: parent.horizontalCenter +// anchors.top: labelCaption.bottom +// anchors.topMargin: 10 + +// width: parent.width - 40 +// height: 40 +// text: qsTr("Add protocol") +// onClicked: drawer_menu.visible ? drawer_menu.close() : drawer_menu.open() + +// } + +// Drawer { +// id: drawer_menu +// z: -3 + +// y: 0 +// x: 0 +// edge: Qt.RightEdge +// width: parent.width * 0.75 +// height: parent.height + +// modal: true +// interactive: true + +// Label { +// text: "Content goes here!" +// anchors.centerIn: parent +// } +// } + ScrollView { - x: 0 - y: 70 - width: 380 - height: 471 + id: scrollView + width: parent.width - 40 + anchors.horizontalCenter: parent.horizontalCenter + + anchors.top: caption.bottom + anchors.topMargin: 10 + + anchors.bottom: pushButtonConfigure.top + anchors.bottomMargin: 10 + clip: true Column { + width: scrollView.width + anchors.horizontalCenter: parent.horizontalCenter + spacing: 5 - Rectangle { - x: 5 - y: 5 - width: 368 - height: frame_new_server_setting_cloak.visible ? 140 : 72 - border.width: 1 - border.color: "lightgray" - radius: 2 - Rectangle { - id: frame_new_server_setting_cloak - height: 77 - width: 353 - border.width: 1 - border.color: "lightgray" - anchors.bottom: parent.bottom - anchors.bottomMargin: 5 - anchors.horizontalCenter: parent.horizontalCenter - visible: false - radius: 2 - Grid { - anchors.fill: parent - columns: 2 - horizontalItemAlignment: Grid.AlignHCenter - verticalItemAlignment: Grid.AlignVCenter - topPadding: 5 - leftPadding: 10 - spacing: 5 - LabelType { - width: 130 - height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 - text: qsTr("Port (TCP)") - } - TextFieldType { - width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 - height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 - text: NewServerProtocolsLogic.lineEditCloakPortText - onEditingFinished: { - NewServerProtocolsLogic.lineEditCloakPortText = text - } - } - LabelType { - width: 130 - height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 - text: qsTr("Fake Web Site") - } - TextFieldType { - width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 - height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 - text: NewServerProtocolsLogic.lineEditCloakSiteText - onEditingFinished: { - NewServerProtocolsLogic.lineEditCloakSiteText = text - } - } + InstallSettingsBase { + containerDescription: qsTr("OpenVPN and ShadowSocks\n with masking using Cloak plugin") + onContainerChecked: NewServerProtocolsLogic.checkBoxCloakChecked = checked + + LabelType { + width: 130 + height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 + text: qsTr("Port (TCP)") + } + TextFieldType { + width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 + height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 + text: NewServerProtocolsLogic.lineEditCloakPortText + onEditingFinished: { + NewServerProtocolsLogic.lineEditCloakPortText = text } } - Row { - anchors.top: parent.top - anchors.topMargin: 5 - leftPadding: 15 - rightPadding: 5 - height: 55 - width: parent.width - CheckBoxType { - text: qsTr("OpenVPN and ShadowSocks\n with masking using Cloak plugin") - height: parent.height - width: 308 - checked: NewServerProtocolsLogic.checkBoxCloakChecked - onCheckedChanged: { - NewServerProtocolsLogic.checkBoxCloakChecked = checked - } - } - ImageButtonType { - width: 35 - height: 35 - anchors.verticalCenter: parent.verticalCenter - icon.source: "qrc:/images/settings.png" - checkable: true - checked: NewServerProtocolsLogic.pushButtonSettingsCloakChecked - onCheckedChanged: { - NewServerProtocolsLogic.pushButtonSettingsCloakChecked = checked - if (checked) { - frame_new_server_setting_cloak.visible = true - } else { - frame_new_server_setting_cloak.visible = false - } - } + LabelType { + width: 130 + height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 + text: qsTr("Fake Web Site") + } + TextFieldType { + width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 + height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 + text: NewServerProtocolsLogic.lineEditCloakSiteText + onEditingFinished: { + NewServerProtocolsLogic.lineEditCloakSiteText = text } } + } - Rectangle { - x: 5 - y: 5 - width: 368 - height: frame_new_server_settings_ss.visible ? 140 : 72 - border.width: 1 - border.color: "lightgray" - radius: 2 - Rectangle { - id: frame_new_server_settings_ss - height: 77 - width: 353 - border.width: 1 - border.color: "lightgray" - anchors.bottom: parent.bottom - anchors.bottomMargin: 5 - anchors.horizontalCenter: parent.horizontalCenter - radius: 2 - visible: false - Grid { - anchors.fill: parent - columns: 2 - horizontalItemAlignment: Grid.AlignHCenter - verticalItemAlignment: Grid.AlignVCenter - topPadding: 5 - leftPadding: 10 - spacing: 5 - LabelType { - width: 130 - height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 - text: qsTr("Port (TCP)") - } - TextFieldType { - width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 - height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 - text: NewServerProtocolsLogic.lineEditSsPortText - onEditingFinished: { - NewServerProtocolsLogic.lineEditSsPortText = text - } - } - LabelType { - width: 130 - height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 - text: qsTr("Encryption") - } - ComboBoxType { - width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 - height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 - model: [ - qsTr("chacha20-ietf-poly1305"), - qsTr("xchacha20-ietf-poly1305"), - qsTr("aes-256-gcm"), - qsTr("aes-192-gcm"), - qsTr("aes-128-gcm") - ] - currentIndex: { - for (let i = 0; i < model.length; ++i) { - if (NewServerProtocolsLogic.comboBoxSsCipherText === model[i]) { - return i - } - } - return -1 - } - onCurrentTextChanged: { - NewServerProtocolsLogic.comboBoxSsCipherText = currentText - } - } + + InstallSettingsBase { + containerDescription: qsTr("ShadowSocks") + onContainerChecked: NewServerProtocolsLogic.checkBoxSsChecked = checked + + LabelType { + width: 130 + height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 + text: qsTr("Port (TCP)") + } + TextFieldType { + width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 + height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 + text: NewServerProtocolsLogic.lineEditSsPortText + onEditingFinished: { + NewServerProtocolsLogic.lineEditSsPortText = text } } - Row { - anchors.top: parent.top - anchors.topMargin: 5 - leftPadding: 15 - rightPadding: 5 - height: 55 - width: parent.width - CheckBoxType { - text: qsTr("ShadowSocks") - height: parent.height - width: 308 - checked: NewServerProtocolsLogic.checkBoxSsChecked - onCheckedChanged: { - NewServerProtocolsLogic.checkBoxSsChecked = checked - } - } - ImageButtonType { - width: 35 - height: 35 - anchors.verticalCenter: parent.verticalCenter - icon.source: "qrc:/images/settings.png" - checked: NewServerProtocolsLogic.pushButtonSettingsSsChecked - checkable: true - onCheckedChanged: { - NewServerProtocolsLogic.pushButtonSettingsSsChecked = checked - if (checked) { - frame_new_server_settings_ss.visible = true - } else { - frame_new_server_settings_ss.visible = false + LabelType { + width: 130 + height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 + text: qsTr("Encryption") + } + ComboBoxType { + width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 + height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 + model: [ + qsTr("chacha20-ietf-poly1305"), + qsTr("xchacha20-ietf-poly1305"), + qsTr("aes-256-gcm"), + qsTr("aes-192-gcm"), + qsTr("aes-128-gcm") + ] + currentIndex: { + for (let i = 0; i < model.length; ++i) { + if (NewServerProtocolsLogic.comboBoxSsCipherText === model[i]) { + return i } } + return -1 + } + onCurrentTextChanged: { + NewServerProtocolsLogic.comboBoxSsCipherText = currentText } } + } - Rectangle { - x: 5 - y: 5 - width: 368 - height: frame_new_server_settings_openvpn.visible ? 140 : 72 - border.width: 1 - border.color: "lightgray" - radius: 2 - Rectangle { - id: frame_new_server_settings_openvpn - height: 77 - width: 353 - border.width: 1 - border.color: "lightgray" - anchors.bottom: parent.bottom - anchors.bottomMargin: 5 - anchors.horizontalCenter: parent.horizontalCenter - radius: 2 - visible: false - Grid { - anchors.fill: parent - columns: 2 - horizontalItemAlignment: Grid.AlignHCenter - verticalItemAlignment: Grid.AlignVCenter - topPadding: 5 - leftPadding: 10 - spacing: 5 - LabelType { - width: 130 - height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 - text: qsTr("Port (TCP)") - } - TextFieldType { - width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 - height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 - text: NewServerProtocolsLogic.lineEditOpenvpnPortText - onEditingFinished: { - NewServerProtocolsLogic.lineEditOpenvpnPortText = text - } - } - LabelType { - width: 130 - height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 - text: qsTr("Protocol") - } - ComboBoxType { - width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 - height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 - model: [ - qsTr("udp"), - qsTr("tcp"), - ] - currentIndex: { - for (let i = 0; i < model.length; ++i) { - if (NewServerProtocolsLogic.comboBoxOpenvpnProtoText === model[i]) { - return i - } - } - return -1 - } - onCurrentTextChanged: { - NewServerProtocolsLogic.comboBoxOpenvpnProtoText = currentText - } - } + + InstallSettingsBase { + containerDescription: qsTr("OpenVPN") + onContainerChecked: NewServerProtocolsLogic.checkBoxOpenVpnChecked = checked + + LabelType { + width: 130 + height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 + text: qsTr("Port (TCP/UDP)") + } + TextFieldType { + width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 + height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 + text: NewServerProtocolsLogic.lineEditOpenvpnPortText + onEditingFinished: { + NewServerProtocolsLogic.lineEditOpenvpnPortText = text } } - Row { - anchors.top: parent.top - anchors.topMargin: 5 - leftPadding: 15 - rightPadding: 5 - height: 55 - width: parent.width - CheckBoxType { - text: qsTr("OpenVPN") - height: parent.height - width: 308 - checked: NewServerProtocolsLogic.checkBoxOpenvpnChecked - onCheckedChanged: { - NewServerProtocolsLogic.checkBoxOpenvpnChecked = checked - } - } - ImageButtonType { - width: 35 - height: 35 - anchors.verticalCenter: parent.verticalCenter - icon.source: "qrc:/images/settings.png" - checked: NewServerProtocolsLogic.pushButtonSettingsOpenvpnChecked - checkable: true - onCheckedChanged: { - NewServerProtocolsLogic.pushButtonSettingsOpenvpnChecked = checked - if (checked) { - frame_new_server_settings_openvpn.visible = true - } else { - frame_new_server_settings_openvpn.visible = false + LabelType { + width: 130 + height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 + text: qsTr("Protocol") + } + ComboBoxType { + width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 + height: (parent.height - parent.spacing - parent.topPadding * 2) / 2 + model: [ + qsTr("udp"), + qsTr("tcp"), + ] + currentIndex: { + for (let i = 0; i < model.length; ++i) { + if (NewServerProtocolsLogic.comboBoxOpenvpnProtoText === model[i]) { + return i } } + return -1 + } + onCurrentTextChanged: { + NewServerProtocolsLogic.comboBoxOpenvpnProtoText = currentText } } + } - Rectangle { - id: frame_new_server_settings_parent_wireguard - visible: NewServerProtocolsLogic.frameSettingsParentWireguardVisible - x: 5 - y: 5 - width: 368 - height: frame_new_server_settings_wireguard.visible ? 109 : 72 - border.width: 1 - border.color: "lightgray" - radius: 2 - Rectangle { - id: frame_new_server_settings_wireguard - height: 46 - width: 353 - border.width: 1 - border.color: "lightgray" - anchors.bottom: parent.bottom - anchors.bottomMargin: 5 - anchors.horizontalCenter: parent.horizontalCenter - radius: 2 - visible: false - Grid { - anchors.fill: parent - columns: 2 - horizontalItemAlignment: Grid.AlignHCenter - verticalItemAlignment: Grid.AlignVCenter - topPadding: 5 - leftPadding: 10 - spacing: 5 - LabelType { - width: 130 - height: (parent.height - parent.spacing - parent.topPadding * 2) - text: qsTr("Port (TCP)") - } - TextFieldType { - width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 - height: (parent.height - parent.spacing - parent.topPadding * 2) - text: "32767" - } - } + + InstallSettingsBase { + visible: false + containerDescription: qsTr("WireGuard") + onContainerChecked: NewServerProtocolsLogic.checkBoxWireGuardChecked = checked + + LabelType { + width: 130 + height: (parent.height - parent.spacing - parent.topPadding * 2) + text: qsTr("Port (UDP)") } - Row { - anchors.top: parent.top - anchors.topMargin: 5 - leftPadding: 15 - rightPadding: 5 - height: 55 - width: parent.width - CheckBoxType { - text: qsTr("WireGuard") - height: parent.height - width: 308 - } - ImageButtonType { - width: 35 - height: 35 - anchors.verticalCenter: parent.verticalCenter - icon.source: "qrc:/images/settings.png" - checkable: true - onCheckedChanged: { - if (checked) { - frame_new_server_settings_wireguard.visible = true - } else { - frame_new_server_settings_wireguard.visible = false - } - } - } + TextFieldType { + width: parent.width - 130 - parent.spacing - parent.leftPadding * 2 + height: (parent.height - parent.spacing - parent.topPadding * 2) + text: "32767" } } } diff --git a/client/ui/qml/Pages/PageServerContainers.qml b/client/ui/qml/Pages/PageServerContainers.qml index 0a3d4876..3efc920c 100644 --- a/client/ui/qml/Pages/PageServerContainers.qml +++ b/client/ui/qml/Pages/PageServerContainers.qml @@ -10,18 +10,8 @@ Item { BackButton { id: back } - Text { - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 24 - color: "#100A44" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + Caption { text: qsTr("Protocols") - x: 10 - y: 35 - width: 361 - height: 31 } ProgressBar { id: progress_bar diff --git a/client/ui/qml/Pages/PageServerList.qml b/client/ui/qml/Pages/PageServerList.qml index 73135579..44d515de 100644 --- a/client/ui/qml/Pages/PageServerList.qml +++ b/client/ui/qml/Pages/PageServerList.qml @@ -11,22 +11,15 @@ Item { BackButton { id: back } - Text { - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 24 - color: "#100A44" - horizontalAlignment: Text.AlignRight - verticalAlignment: Text.AlignVCenter + Caption { + id: caption text: qsTr("Servers list") - x: 50 - y: 30 - width: 171 - height: 40 } ImageButtonType { x: 240 y: 39 + anchors.left: caption.right + anchors.leftMargin: 10 width: 24 height: 24 icon.source: "qrc:/images/plus.png" diff --git a/client/ui/qml/Pages/PageServerSettings.qml b/client/ui/qml/Pages/PageServerSettings.qml index eaf39748..0b37ca5e 100644 --- a/client/ui/qml/Pages/PageServerSettings.qml +++ b/client/ui/qml/Pages/PageServerSettings.qml @@ -12,18 +12,9 @@ Item { BackButton { id: back } - Text { - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 24 - color: "#100A44" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + Caption { text: qsTr("Server settings") anchors.horizontalCenter: parent.horizontalCenter - y: 35 - width: 361 - height: 31 } Image { anchors.horizontalCenter: root.horizontalCenter diff --git a/client/ui/qml/Pages/PageSetupWizard.qml b/client/ui/qml/Pages/PageSetupWizard.qml index ab3cb5ab..a1c8705b 100644 --- a/client/ui/qml/Pages/PageSetupWizard.qml +++ b/client/ui/qml/Pages/PageSetupWizard.qml @@ -10,18 +10,8 @@ Item { BackButton { id: back_from_setup_wizard } - Text { - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 24 - color: "#100A44" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + Caption { text: qsTr("Setup your server to use VPN") - x: 10 - y: 35 - width: 361 - height: 31 } Item { x: 10 diff --git a/client/ui/qml/Pages/PageSetupWizardHighLevel.qml b/client/ui/qml/Pages/PageSetupWizardHighLevel.qml index 9a676146..7bf56bb0 100644 --- a/client/ui/qml/Pages/PageSetupWizardHighLevel.qml +++ b/client/ui/qml/Pages/PageSetupWizardHighLevel.qml @@ -10,18 +10,8 @@ Item { BackButton { id: back_from_setup_wizard } - Text { - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 24 - color: "#100A44" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + Caption { text: qsTr("Setup Wizard") - x: 10 - y: 35 - width: 361 - height: 31 } Item { x: 10 diff --git a/client/ui/qml/Pages/PageSetupWizardLowLevel.qml b/client/ui/qml/Pages/PageSetupWizardLowLevel.qml index 9bbfd585..d05d605e 100644 --- a/client/ui/qml/Pages/PageSetupWizardLowLevel.qml +++ b/client/ui/qml/Pages/PageSetupWizardLowLevel.qml @@ -9,18 +9,8 @@ Item { BackButton { id: back_from_setup_wizard } - Text { - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 24 - color: "#100A44" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + Caption { text: qsTr("Setup Wizard") - x: 10 - y: 35 - width: 361 - height: 31 } Item { x: 10 diff --git a/client/ui/qml/Pages/PageSetupWizardMediumLevel.qml b/client/ui/qml/Pages/PageSetupWizardMediumLevel.qml index eaf0d5ef..17f6da49 100644 --- a/client/ui/qml/Pages/PageSetupWizardMediumLevel.qml +++ b/client/ui/qml/Pages/PageSetupWizardMediumLevel.qml @@ -7,29 +7,11 @@ import "../Config" Item { id: root - ImageButtonType { + BackButton { id: back_from_setup_wizard - x: 10 - y: 10 - width: 26 - height: 20 - icon.source: "qrc:/images/arrow_left.png" - onClicked: { - UiLogic.closePage() - } } - Text { - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 24 - color: "#100A44" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + Caption { text: qsTr("Setup Wizard") - x: 10 - y: 35 - width: 361 - height: 31 } Item { x: 10 diff --git a/client/ui/qml/Pages/PageSetupWizardVPNMode.qml b/client/ui/qml/Pages/PageSetupWizardVPNMode.qml index 2a5b3a88..df81fae0 100644 --- a/client/ui/qml/Pages/PageSetupWizardVPNMode.qml +++ b/client/ui/qml/Pages/PageSetupWizardVPNMode.qml @@ -9,18 +9,8 @@ Item { BackButton { id: back_from_setup_wizard } - Text { - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 24 - color: "#100A44" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + Caption { text: qsTr("Setup Wizard") - x: 10 - y: 35 - width: 361 - height: 31 } Item { x: 10 diff --git a/client/ui/qml/Pages/PageStart.qml b/client/ui/qml/Pages/PageStart.qml index bc3ea304..d6e5dbcc 100644 --- a/client/ui/qml/Pages/PageStart.qml +++ b/client/ui/qml/Pages/PageStart.qml @@ -9,20 +9,28 @@ Item { BackButton { id: back_from_start } - Image { - anchors.horizontalCenter: root.horizontalCenter - width: GC.trW(150) - height: GC.trH(22) - y: GC.trY(590) - source: "qrc:/images/AmneziaVPN.png" + + Caption { + id: caption + text: start_switch_page.checked ? + qsTr("Setup your server to use VPN") : + qsTr("Connect to the already created VPN server") + } + + Logo { + id: logo } BasicButtonType { id: start_switch_page anchors.horizontalCenter: parent.horizontalCenter - y: 530 - width: 301 + anchors.bottom: logo.top + anchors.bottomMargin: 10 + + width: parent.width - 80 height: 40 + anchors.topMargin: 20 + text: qsTr("Set up your own server") checked: false checkable: true @@ -60,239 +68,203 @@ Item { } + Item { + id: page_start_import + width: parent.width + anchors.top: caption.bottom + anchors.bottom: start_switch_page.top + anchors.bottomMargin: 10 - Item { - id: page_start_import - width: 380 - height: 481 - x: 0 - y: 35 - visible: true - Text { - x: 0 - y: 20 - width: 381 - height: 71 + visible: true + + LabelType { + id: label_connection_code + anchors.top: parent.top + anchors.topMargin: 20 + text: qsTr("Connection code") + } + TextFieldType { + id: lineEdit_start_existing_code + anchors.top: label_connection_code.bottom + anchors.horizontalCenter: parent.horizontalCenter + placeholderText: "vpn://..." + text: StartPageLogic.lineEditStartExistingCodeText + onEditingFinished: { + StartPageLogic.lineEditStartExistingCodeText = text + } + } + BlueButtonType { + id: new_sever_import + anchors.horizontalCenter: parent.horizontalCenter + y: 210 + anchors.top: lineEdit_start_existing_code.bottom + anchors.topMargin: 40 + text: qsTr("Connect") + onClicked: { + StartPageLogic.onPushButtonImport() + } + } + } + + + Item { + id: page_start_new_server + width: parent.width + anchors.top: caption.bottom + anchors.bottom: start_switch_page.top + anchors.bottomMargin: 10 + + visible: false + + BasicButtonType { + id: new_sever_get_info + width: parent.width - 80 + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + anchors.topMargin: 5 + + text: qsTr("Where to get connection data →") + background: Item { + anchors.fill: parent + } + + contentItem: Text { + anchors.fill: parent font.family: "Lato" font.styleName: "normal" - font.pixelSize: 24 - font.bold: true - color: "#100A44" + font.pixelSize: 16 + color: "#15CDCB"; + text: new_sever_get_info.text horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter - text: qsTr("Connect to the already created VPN server") - wrapMode: Text.Wrap } - LabelType { - x: 40 - y: 110 - width: 301 - height: 21 - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter - text: qsTr("Connection code") - wrapMode: Text.Wrap + antialiasing: true + checkable: true + checked: true + onClicked: { + Qt.openUrlExternally("https://amnezia.org") } - TextFieldType { - id: lineEdit_start_existing_code - x: 40 - y: 140 - width: 300 - height: 40 - placeholderText: "vpn://..." - text: StartPageLogic.lineEditStartExistingCodeText - onEditingFinished: { - StartPageLogic.lineEditStartExistingCodeText = text - } - } - BlueButtonType { - id: new_sever_import - anchors.horizontalCenter: parent.horizontalCenter - y: 210 - width: 301 - height: 40 - text: qsTr("Connect") - onClicked: { - StartPageLogic.onPushButtonImport() - } + } + LabelType { + id: label_server_ip + x: 40 + anchors.top: new_sever_get_info.bottom + text: qsTr("Server IP address") + } + TextFieldType { + id: new_server_ip + anchors.top: label_server_ip.bottom + anchors.horizontalCenter: parent.horizontalCenter + text: StartPageLogic.lineEditIpText + onEditingFinished: { + StartPageLogic.lineEditIpText = text } } + LabelType { + id:label_login + x: 40 + anchors.top: new_server_ip.bottom + text: qsTr("Login to connect via SSH") + } + TextFieldType { + id: new_server_login + anchors.top: label_login.bottom + anchors.horizontalCenter: parent.horizontalCenter + text: StartPageLogic.lineEditLoginText + onEditingFinished: { + StartPageLogic.lineEditLoginText = text + } + } - Item { - id: page_start_new_server - width: 380 - height: 481 - x: 0 - y: 35 + LabelType { + id: label_new_server_password + x: 40 + anchors.top: new_server_login.bottom + text: qsTr("Password") + } + TextFieldType { + id: new_server_password + anchors.top: label_new_server_password.bottom + anchors.horizontalCenter: parent.horizontalCenter + echoMode: TextInput.Password + text: StartPageLogic.lineEditPasswordText + onEditingFinished: { + StartPageLogic.lineEditPasswordText = text + } + } + TextFieldType { + id: new_server_ssh_key + anchors.top: label_new_server_password.bottom + anchors.horizontalCenter: parent.horizontalCenter + + height: 71 + echoMode: TextInput.Password + font.pixelSize: 9 + verticalAlignment: Text.AlignTop + text: StartPageLogic.textEditSshKeyText + onEditingFinished: { + StartPageLogic.textEditSshKeyText = text + } visible: false - Label { - x:10 - y:0 - width: 361 - height: 31 + } + + LabelType { + x: 40 + y: 390 + width: 301 + height: 41 + text: StartPageLogic.labelWaitInfoText + visible: StartPageLogic.labelWaitInfoVisible + wrapMode: Text.Wrap + } + + + + BlueButtonType { + id: new_sever_connect + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: new_server_ssh_key.bottom + + text: StartPageLogic.pushButtonConnectText + visible: StartPageLogic.pushButtonConnectVisible + onClicked: { + StartPageLogic.onPushButtonConnect() + } + enabled: StartPageLogic.pushButtonConnectEnabled + } + BasicButtonType { + id: new_sever_connect_key + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: new_sever_connect.bottom + + width: 281 + height: 21 + text: qsTr("Connect using SSH key") + background: Item { + anchors.fill: parent + } + + contentItem: Text { + anchors.fill: parent font.family: "Lato" font.styleName: "normal" - font.pixelSize: 24 - font.bold: true - color: "#100A44" + font.pixelSize: 16 + color: "#15CDCB"; + text: new_sever_connect_key.text horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter - text: qsTr("Setup your server to use VPN") - wrapMode: Text.Wrap } - LabelType { - x: 40 - y: 70 - width: 171 - height: 21 - text: qsTr("Server IP address") - } - LabelType { - x: 40 - y: 150 - width: 261 - height: 21 - text: qsTr("Login to connect via SSH") - } - LabelType { - id: label_new_server_password - x: 40 - y: 230 - width: 171 - height: 21 - text: qsTr("Password") - } - LabelType { - x: 40 - y: 390 - width: 301 - height: 41 - text: StartPageLogic.labelWaitInfoText - visible: StartPageLogic.labelWaitInfoVisible - wrapMode: Text.Wrap - } - TextFieldType { - id: new_server_ip - x: 40 - y: 100 - width: 300 - height: 40 - text: StartPageLogic.lineEditIpText - onEditingFinished: { - StartPageLogic.lineEditIpText = text - } - } - TextFieldType { - id: new_server_login - x: 40 - y: 180 - width: 300 - height: 40 - text: StartPageLogic.lineEditLoginText - onEditingFinished: { - StartPageLogic.lineEditLoginText = text - } - } - TextFieldType { - id: new_server_password - x: 40 - y: 260 - width: 300 - height: 40 - echoMode: TextInput.Password - text: StartPageLogic.lineEditPasswordText - onEditingFinished: { - StartPageLogic.lineEditPasswordText = text - } - } - BlueButtonType { - id: new_sever_connect - anchors.horizontalCenter: parent.horizontalCenter - y: 350 - width: 301 - height: 40 - text: StartPageLogic.pushButtonConnectText - visible: StartPageLogic.pushButtonConnectVisible - onClicked: { - StartPageLogic.onPushButtonConnect() - } - enabled: StartPageLogic.pushButtonConnectEnabled - } - BasicButtonType { - id: new_sever_connect_key - anchors.horizontalCenter: parent.horizontalCenter - y: 450 - width: 281 - height: 21 - text: qsTr("Connect using SSH key") - background: Item { - anchors.fill: parent - } - - contentItem: Text { - anchors.fill: parent - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 16 - color: "#15CDCB"; - text: new_sever_connect_key.text - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - antialiasing: true - checkable: true - checked: StartPageLogic.pushButtonConnectKeyChecked - onCheckedChanged: { - StartPageLogic.pushButtonConnectKeyChecked = checked - label_new_server_password.text = checked ? qsTr("Private key") : qsTr("Password") - new_sever_connect_key.text = checked ? qsTr("Connect using SSH password") : qsTr("Connect using SSH key") - new_server_password.visible = !checked - new_server_ssh_key.visible = checked - } - } - BasicButtonType { - id: new_sever_get_info - anchors.horizontalCenter: parent.horizontalCenter - y: 40 - width: 281 - height: 21 - text: qsTr("Where to get connection data →") - background: Item { - anchors.fill: parent - } - - contentItem: Text { - anchors.fill: parent - font.family: "Lato" - font.styleName: "normal" - font.pixelSize: 16 - color: "#15CDCB"; - text: new_sever_get_info.text - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - antialiasing: true - checkable: true - checked: true - onClicked: { - Qt.openUrlExternally("https://amnezia.org") - } - } - TextFieldType { - id: new_server_ssh_key - x: 40 - y: 260 - width: 300 - height: 71 - echoMode: TextInput.Password - font.pixelSize: 9 - verticalAlignment: Text.AlignTop - text: StartPageLogic.textEditSshKeyText - onEditingFinished: { - StartPageLogic.textEditSshKeyText = text - } - visible: false + antialiasing: true + checkable: true + checked: StartPageLogic.pushButtonConnectKeyChecked + onCheckedChanged: { + StartPageLogic.pushButtonConnectKeyChecked = checked + label_new_server_password.text = checked ? qsTr("Private key") : qsTr("Password") + new_sever_connect_key.text = checked ? qsTr("Connect using SSH password") : qsTr("Connect using SSH key") + new_server_password.visible = !checked + new_server_ssh_key.visible = checked } } + } }