From f7926847ac9139bb23bf77a185c73d99cf1764c4 Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Tue, 22 Aug 2023 14:37:29 +0500 Subject: [PATCH] minor ui fixes --- client/containers/containers_defs.cpp | 10 ++++++++ client/containers/containers_defs.h | 2 ++ client/ui/controllers/exportController.cpp | 25 +++---------------- client/ui/controllers/exportController.h | 2 +- client/ui/models/containers_model.cpp | 2 ++ client/ui/models/containers_model.h | 3 ++- .../qml/Components/ShareConnectionDrawer.qml | 12 ++++++++- client/ui/qml/Pages2/PageSettingsAbout.qml | 2 +- .../ui/qml/Pages2/PageSettingsConnection.qml | 1 - .../ui/qml/Pages2/PageSetupWizardQrReader.qml | 4 --- client/ui/qml/Pages2/PageShare.qml | 21 +++++++++++++--- 11 files changed, 50 insertions(+), 34 deletions(-) diff --git a/client/containers/containers_defs.cpp b/client/containers/containers_defs.cpp index fc4570f4..98b2d0da 100644 --- a/client/containers/containers_defs.cpp +++ b/client/containers/containers_defs.cpp @@ -249,3 +249,13 @@ QString ContainerProps::easySetupDescription(DockerContainer container) default: return ""; } } + +bool ContainerProps::isShareable(DockerContainer container) +{ + switch (container) { + case DockerContainer::TorWebSite: return false; + case DockerContainer::Dns: return false; + case DockerContainer::Sftp: return false; + default: return true; + } +} diff --git a/client/containers/containers_defs.h b/client/containers/containers_defs.h index a84d997c..24782407 100644 --- a/client/containers/containers_defs.h +++ b/client/containers/containers_defs.h @@ -64,6 +64,8 @@ namespace amnezia static bool isEasySetupContainer(amnezia::DockerContainer container); static QString easySetupHeader(amnezia::DockerContainer container); static QString easySetupDescription(amnezia::DockerContainer container); + + static bool isShareable(amnezia::DockerContainer container); }; static void declareQmlContainerEnum() diff --git a/client/ui/controllers/exportController.cpp b/client/ui/controllers/exportController.cpp index 8fbd69f1..abe9fda2 100644 --- a/client/ui/controllers/exportController.cpp +++ b/client/ui/controllers/exportController.cpp @@ -12,6 +12,7 @@ #include "configurators/openvpn_configurator.h" #include "configurators/wireguard_configurator.h" #include "core/errorstrings.h" +#include "utilities.h" #ifdef Q_OS_ANDROID #include "platforms/android/android_controller.h" #include "platforms/android/androidutils.h" @@ -201,7 +202,7 @@ QList ExportController::getQrCodes() return m_qrCodes; } -void ExportController::saveFile() +void ExportController::saveFile(const QString &fileExtension, const QString &caption, const QString &fileName) { #if defined Q_OS_IOS // ext.replace("*", ""); @@ -229,27 +230,7 @@ void ExportController::saveFile() return; #endif - QString fileExtension = ".vpn"; - QString docDir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); - QUrl fileName; - fileName = QFileDialog::getSaveFileUrl(nullptr, tr("Save AmneziaVPN config"), - QUrl::fromLocalFile(docDir + "/" + "amnezia_config"), "*" + fileExtension); - if (fileName.isEmpty()) - return; - if (!fileName.toString().endsWith(fileExtension)) { - fileName = QUrl(fileName.toString() + fileExtension); - } - if (fileName.isEmpty()) - return; - - QFile save(fileName.toLocalFile()); - - save.open(QIODevice::WriteOnly); - save.write(m_config.toUtf8()); - save.close(); - - QFileInfo fi(fileName.toLocalFile()); - QDesktopServices::openUrl(fi.absoluteDir().absolutePath()); + Utils::saveFile(fileExtension, caption, fileName, m_config); } QList ExportController::generateQrCodeImageSeries(const QByteArray &data) diff --git a/client/ui/controllers/exportController.h b/client/ui/controllers/exportController.h index ce952096..913dfc3a 100644 --- a/client/ui/controllers/exportController.h +++ b/client/ui/controllers/exportController.h @@ -35,7 +35,7 @@ public slots: QString getConfig(); QList getQrCodes(); - void saveFile(); + void saveFile(const QString &fileExtension, const QString &caption, const QString &fileName); signals: void generateConfig(int type); diff --git a/client/ui/models/containers_model.cpp b/client/ui/models/containers_model.cpp index 0a07895c..67847727 100644 --- a/client/ui/models/containers_model.cpp +++ b/client/ui/models/containers_model.cpp @@ -79,6 +79,7 @@ QVariant ContainersModel::data(const QModelIndex &index, int role) const case IsCurrentlyProcessedRole: return container == static_cast(m_currentlyProcessedContainerIndex); case IsDefaultRole: return container == m_defaultContainerIndex; case IsSupportedRole: return ContainerProps::isSupportedByCurrentPlatform(container); + case IsShareableRole: return ContainerProps::isShareable(container); } return QVariant(); @@ -235,5 +236,6 @@ QHash ContainersModel::roleNames() const roles[IsCurrentlyProcessedRole] = "isCurrentlyProcessed"; roles[IsDefaultRole] = "isDefault"; roles[IsSupportedRole] = "isSupported"; + roles[IsShareableRole] = "isShareable"; return roles; } diff --git a/client/ui/models/containers_model.h b/client/ui/models/containers_model.h index cde77526..547eea83 100644 --- a/client/ui/models/containers_model.h +++ b/client/ui/models/containers_model.h @@ -30,7 +30,8 @@ public: IsInstalledRole, IsCurrentlyProcessedRole, IsDefaultRole, - IsSupportedRole + IsSupportedRole, + IsShareableRole }; int rowCount(const QModelIndex &parent = QModelIndex()) const override; diff --git a/client/ui/qml/Components/ShareConnectionDrawer.qml b/client/ui/qml/Components/ShareConnectionDrawer.qml index 7ad724ea..368d503a 100644 --- a/client/ui/qml/Components/ShareConnectionDrawer.qml +++ b/client/ui/qml/Components/ShareConnectionDrawer.qml @@ -19,9 +19,19 @@ DrawerType { property alias configContentHeaderText: configContentHeader.headerText property alias contentVisible: content.visible + property string configExtension: ".vpn" + property string configCaption: qsTr("Save AmneziaVPN config") + property string configFileName: "amnezia_config.vpn" + width: parent.width height: parent.height * 0.9 + onClosed: { + configExtension = ".vpn" + configCaption = qsTr("Save AmneziaVPN config") + configFileName = "amnezia_config.vpn" + } + Item { anchors.fill: parent @@ -58,7 +68,7 @@ DrawerType { imageSource: "qrc:/images/controls/share-2.svg" onClicked: { - ExportController.saveFile() + ExportController.saveFile(configExtension, configCaption, configFileName) } } diff --git a/client/ui/qml/Pages2/PageSettingsAbout.qml b/client/ui/qml/Pages2/PageSettingsAbout.qml index 67dada43..1a6f7e80 100644 --- a/client/ui/qml/Pages2/PageSettingsAbout.qml +++ b/client/ui/qml/Pages2/PageSettingsAbout.qml @@ -161,7 +161,7 @@ And if you don't like the app, all the more support it - the donation will be us leftImageSource: "qrc:/images/controls/amnezia.svg" clickedFunction: function() { - Qt.openUrlExternally(qsTr("amnezia.org/")) + Qt.openUrlExternally(qsTr("https://amnezia.org")) } } diff --git a/client/ui/qml/Pages2/PageSettingsConnection.qml b/client/ui/qml/Pages2/PageSettingsConnection.qml index 6465e40e..0765f7d2 100644 --- a/client/ui/qml/Pages2/PageSettingsConnection.qml +++ b/client/ui/qml/Pages2/PageSettingsConnection.qml @@ -67,7 +67,6 @@ PageType { Layout.rightMargin: 16 text: qsTr("Use AmneziaDNS if installed on the server") - descriptionText: qsTr("Internal IP address 172.29.172.254") checked: SettingsController.isAmneziaDnsEnabled() onCheckedChanged: { diff --git a/client/ui/qml/Pages2/PageSetupWizardQrReader.qml b/client/ui/qml/Pages2/PageSetupWizardQrReader.qml index 695175fd..1fa71592 100644 --- a/client/ui/qml/Pages2/PageSetupWizardQrReader.qml +++ b/client/ui/qml/Pages2/PageSetupWizardQrReader.qml @@ -73,10 +73,6 @@ PageType { } Component.onCompleted: { - console.log(qrCodeRectange.x) - console.log(qrCodeRectange.y) - console.log(qrCodeRectange.width) - qrCodeReader.setCameraSize(Qt.rect(qrCodeRectange.x, qrCodeRectange.y, qrCodeRectange.width, diff --git a/client/ui/qml/Pages2/PageShare.qml b/client/ui/qml/Pages2/PageShare.qml index 28f5ca06..120e04fc 100644 --- a/client/ui/qml/Pages2/PageShare.qml +++ b/client/ui/qml/Pages2/PageShare.qml @@ -41,8 +41,20 @@ PageType { } break; } - case PageShare.ConfigType.OpenVpn: ExportController.generateOpenVpnConfig(); break; - case PageShare.ConfigType.WireGuard: ExportController.generateWireGuardConfig(); break; + case PageShare.ConfigType.OpenVpn: { + ExportController.generateOpenVpnConfig(); + shareConnectionDrawer.configCaption = qsTr("Save OpenVPN config") + shareConnectionDrawer.configExtension = ".ovpn" + shareConnectionDrawer.configFileName = "amnezia_for_openvpn" + break; + } + case PageShare.ConfigType.WireGuard: { + ExportController.generateWireGuardConfig(); + shareConnectionDrawer.configCaption = qsTr("Save WireGuard config") + shareConnectionDrawer.configExtension = ".conf" + shareConnectionDrawer.configFileName = "amnezia_for_wireguard" + break; + } } PageController.showBusyIndicator(false) @@ -267,6 +279,10 @@ PageType { ValueFilter { roleName: "isInstalled" value: true + }, + ValueFilter { + roleName: "isShareable" + value: true } ] } @@ -339,7 +355,6 @@ PageType { listView: ListViewWithRadioButtonType { onCurrentIndexChanged: { - console.log(currentIndex) exportTypeSelector.currentIndex = currentIndex exportTypeSelector.text = selectedText }