From 810da0db615bf457ac817af8bc843962d1e399c7 Mon Sep 17 00:00:00 2001 From: pokamest Date: Mon, 28 Aug 2023 14:14:10 -0700 Subject: [PATCH 1/3] Fixes for iOS --- client/platforms/ios/ios_controller.h | 2 +- client/platforms/ios/ios_controller.mm | 28 ++++++++++---------- client/ui/controllers/settingsController.cpp | 4 +++ client/ui/controllers/sitesController.cpp | 4 +++ 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/client/platforms/ios/ios_controller.h b/client/platforms/ios/ios_controller.h index 0750f7cd..4d1122b2 100644 --- a/client/platforms/ios/ios_controller.h +++ b/client/platforms/ios/ios_controller.h @@ -47,7 +47,7 @@ public: void getBackendLogs(std::function &&callback); void checkStatus(); signals: - void connectionStateChanged(VpnProtocol::VpnConnectionState state); + void connectionStateChanged(Vpn::ConnectionState state); void bytesChanged(quint64 receivedBytes, quint64 sentBytes); protected slots: diff --git a/client/platforms/ios/ios_controller.mm b/client/platforms/ios/ios_controller.mm index c8e27252..6f23ac81 100644 --- a/client/platforms/ios/ios_controller.mm +++ b/client/platforms/ios/ios_controller.mm @@ -30,22 +30,22 @@ const char* MessageKey::host = "host"; const char* MessageKey::port = "port"; const char* MessageKey::isOnDemand = "is-on-demand"; -VpnProtocol::VpnConnectionState iosStatusToState(NEVPNStatus status) { +Vpn::ConnectionState iosStatusToState(NEVPNStatus status) { switch (status) { case NEVPNStatusInvalid: - return VpnProtocol::VpnConnectionState::Unknown; + return Vpn::ConnectionState::Unknown; case NEVPNStatusDisconnected: - return VpnProtocol::VpnConnectionState::Disconnected; + return Vpn::ConnectionState::Disconnected; case NEVPNStatusConnecting: - return VpnProtocol::VpnConnectionState::Connecting; + return Vpn::ConnectionState::Connecting; case NEVPNStatusConnected: - return VpnProtocol::VpnConnectionState::Connected; + return Vpn::ConnectionState::Connected; case NEVPNStatusReasserting: - return VpnProtocol::VpnConnectionState::Connecting; + return Vpn::ConnectionState::Connecting; case NEVPNStatusDisconnecting: - return VpnProtocol::VpnConnectionState::Disconnecting; + return Vpn::ConnectionState::Disconnecting; default: - return VpnProtocol::VpnConnectionState::Unknown; + return Vpn::ConnectionState::Unknown; } } @@ -85,7 +85,7 @@ bool IosController::initialize() @try { if (error) { qDebug() << "IosController::initialize : Error:" << [error.localizedDescription UTF8String]; - emit connectionStateChanged(VpnProtocol::VpnConnectionState::Error); + emit connectionStateChanged(Vpn::ConnectionState::Error); ok = false; return; } @@ -147,7 +147,7 @@ bool IosController::connectVpn(amnezia::Proto proto, const QJsonObject& configur @try { if (error) { qDebug() << "IosController::connectVpn : Error:" << [error.localizedDescription UTF8String]; - emit connectionStateChanged(VpnProtocol::VpnConnectionState::Error); + emit connectionStateChanged(Vpn::ConnectionState::Error); ok = false; return; } @@ -161,7 +161,7 @@ bool IosController::connectVpn(amnezia::Proto proto, const QJsonObject& configur m_currentTunnel = manager; qDebug() << "IosController::connectVpn : Using existing tunnel"; if (manager.connection.status == NEVPNStatusConnected) { - emit connectionStateChanged(VpnProtocol::VpnConnectionState::Connected); + emit connectionStateChanged(Vpn::ConnectionState::Connected); return; } @@ -356,7 +356,7 @@ void IosController::startTunnel() if (saveError) { qDebug() << "IosController::startOpenVPN : Connect OpenVPN Tunnel Save Error" << saveError.localizedDescription.UTF8String; - emit connectionStateChanged(VpnProtocol::VpnConnectionState::Error); + emit connectionStateChanged(Vpn::ConnectionState::Error); return; } @@ -365,7 +365,7 @@ void IosController::startTunnel() if (loadError) { qDebug() << "IosController::startOpenVPN : Connect OpenVPN Tunnel Load Error" << loadError.localizedDescription.UTF8String; - emit connectionStateChanged(VpnProtocol::VpnConnectionState::Error); + emit connectionStateChanged(Vpn::ConnectionState::Error); return; } @@ -389,7 +389,7 @@ void IosController::startTunnel() if (!started || startError) { qDebug() << "IosController::startOpenVPN : Connect OpenVPN Tunnel Start Error" << (startError ? startError.localizedDescription.UTF8String : ""); - emit connectionStateChanged(VpnProtocol::VpnConnectionState::Error); + emit connectionStateChanged(Vpn::ConnectionState::Error); } else { qDebug() << "IosController::startOpenVPN : Starting the tunnel succeeded"; } diff --git a/client/ui/controllers/settingsController.cpp b/client/ui/controllers/settingsController.cpp index 531d3c50..7d1bf643 100644 --- a/client/ui/controllers/settingsController.cpp +++ b/client/ui/controllers/settingsController.cpp @@ -2,6 +2,10 @@ #include +#ifdef Q_OS_IOS + #include +#endif + #include "fileUtilites.h" #include "logger.h" #include "ui/qautostart.h" diff --git a/client/ui/controllers/sitesController.cpp b/client/ui/controllers/sitesController.cpp index 891ddb6f..00704bca 100644 --- a/client/ui/controllers/sitesController.cpp +++ b/client/ui/controllers/sitesController.cpp @@ -3,6 +3,10 @@ #include #include +#ifdef Q_OS_IOS + #include +#endif + #include "fileUtilites.h" #include "utilities.h" From 0eda42f29fa9d49540fea3dd93da7935cef575f9 Mon Sep 17 00:00:00 2001 From: Mykola Baibuz Date: Wed, 30 Aug 2023 01:17:14 +0300 Subject: [PATCH 2/3] Savefile for iOS --- client/fileUtilites.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/client/fileUtilites.cpp b/client/fileUtilites.cpp index 87fa7aed..94ef077e 100644 --- a/client/fileUtilites.cpp +++ b/client/fileUtilites.cpp @@ -1,4 +1,5 @@ #include "fileUtilites.h" +#include "platforms/ios/MobileUtils.h" #include #include @@ -6,9 +7,15 @@ void FileUtilites::saveFile(const QString &fileExtension, const QString &caption, const QString &fileName, const QString &data) { + +#ifdef Q_OS_IOS + QUrl fileUrl = QDir::tempPath() + "/" + fileName; +#else QString docDir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); QUrl fileUrl = QFileDialog::getSaveFileUrl(nullptr, caption, QUrl::fromLocalFile(docDir + "/" + fileName), "*" + fileExtension); +#endif + if (fileUrl.isEmpty()) return; if (!fileUrl.toString().endsWith(fileExtension)) { @@ -17,13 +24,24 @@ void FileUtilites::saveFile(const QString &fileExtension, const QString &caption if (fileUrl.isEmpty()) return; +#ifdef Q_OS_IOS + QFile save(fileUrl.toString()); +#else QFile save(fileUrl.toLocalFile()); +#endif // todo check if save successful save.open(QIODevice::WriteOnly); save.write(data.toUtf8()); save.close(); +#ifdef Q_OS_IOS + QStringList filesToSend; + filesToSend.append(fileUrl.toString()); + MobileUtils::shareText(filesToSend); + return; +#endif + QFileInfo fi(fileUrl.toLocalFile()); QDesktopServices::openUrl(fi.absoluteDir().absolutePath()); } From 1c1a82696b52d0f5a8d86923f7137a1d6e629998 Mon Sep 17 00:00:00 2001 From: Mykola Baibuz Date: Wed, 30 Aug 2023 17:23:55 -0400 Subject: [PATCH 3/3] Fix qrDecoder for Android --- client/ui/qml/Pages2/PageSetupWizardConfigSource.qml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/ui/qml/Pages2/PageSetupWizardConfigSource.qml b/client/ui/qml/Pages2/PageSetupWizardConfigSource.qml index 45aad9d0..68544497 100644 --- a/client/ui/qml/Pages2/PageSetupWizardConfigSource.qml +++ b/client/ui/qml/Pages2/PageSetupWizardConfigSource.qml @@ -87,7 +87,9 @@ It's okay as long as it's from someone you trust.") clickedFunction: function() { ImportController.startDecodingQr() - goToPage(PageEnum.PageSetupWizardQrReader) + if (Qt.platform.os === "ios") { + goToPage(PageEnum.PageSetupWizardQrReader) + } } }