diff options
author | Fabian Müller <fmueller@owncloud.com> | 2022-10-19 01:47:35 +0300 |
---|---|---|
committer | Fabian Müller <80399010+fmoc@users.noreply.github.com> | 2022-11-11 19:06:54 +0300 |
commit | b428fbd60cbc31ad827a20530a732b7898bee2fd (patch) | |
tree | a628aa72e7318ae320d62b093ac1e2cc5c956378 | |
parent | 4180a4f34100ce289fdcf2cf13a7a90a89378e96 (diff) |
Move platform specific init code to platform class
-rw-r--r-- | src/gui/application.cpp | 11 | ||||
-rw-r--r-- | src/gui/platform.cpp | 6 | ||||
-rw-r--r-- | src/gui/platform.h | 10 | ||||
-rw-r--r-- | src/gui/platform_unix.cpp | 20 | ||||
-rw-r--r-- | src/gui/platform_win.cpp | 9 |
5 files changed, 41 insertions, 15 deletions
diff --git a/src/gui/application.cpp b/src/gui/application.cpp index b8b5a994c..85cae35fd 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -232,15 +232,8 @@ Application::Application(int &argc, char **argv, Platform *platform) , _userTriggeredConnect(false) , _debugMode(false) { -#ifdef Q_OS_WIN - // Ensure OpenSSL config file is only loaded from app directory - const QString opensslConf = QCoreApplication::applicationDirPath() + QStringLiteral("/openssl.cnf"); - qputenv("OPENSSL_CONF", opensslConf.toLocal8Bit()); -#elif defined(Q_OS_LINUX) -#if defined(OC_PLUGIN_DIR) - addLibraryPath(QDir(QApplication::applicationDirPath()).filePath(QStringLiteral(OC_PLUGIN_DIR))); -#endif -#endif + platform->setApplication(this); + // TODO: Can't set this without breaking current config paths // setOrganizationName(QLatin1String(APPLICATION_VENDOR)); setOrganizationDomain(QStringLiteral(APPLICATION_REV_DOMAIN)); diff --git a/src/gui/platform.cpp b/src/gui/platform.cpp index fee225985..400acbedb 100644 --- a/src/gui/platform.cpp +++ b/src/gui/platform.cpp @@ -13,6 +13,7 @@ */ #include "platform.h" +#include "application.h" namespace OCC { @@ -24,4 +25,9 @@ void Platform::migrate() { } +void Platform::setApplication(Application *application) +{ + Q_UNUSED(application); +} + } // OCC namespace diff --git a/src/gui/platform.h b/src/gui/platform.h index cde0d8d55..d2112689c 100644 --- a/src/gui/platform.h +++ b/src/gui/platform.h @@ -15,12 +15,16 @@ #ifndef PLATFORM_H #define PLATFORM_H -#include <memory> - +#include <QCoreApplication> #include <QString> +#include <memory> + namespace OCC { +// forward declaration to avoid cyclic dependency +class Application; + /** * @brief The Platform is the baseclass for all platform classes, which in turn implement platform * specific functionality for the GUI. @@ -33,6 +37,8 @@ public: static std::unique_ptr<Platform> create(); virtual void migrate(); + + virtual void setApplication(Application *application); }; } // OCC namespace diff --git a/src/gui/platform_unix.cpp b/src/gui/platform_unix.cpp index e0e796fe3..a6f3f43db 100644 --- a/src/gui/platform_unix.cpp +++ b/src/gui/platform_unix.cpp @@ -12,14 +12,15 @@ * for more details. */ +#include "application.h" +#include "guiutility.h" +#include "platform.h" + +#include <QDir> #include <QLoggingCategory> #include <signal.h> #include <sys/resource.h> -#include <sys/time.h> - -#include "guiutility.h" -#include "platform.h" namespace OCC { @@ -36,6 +37,8 @@ public: ~UnixPlatform() override; + void setApplication(Application *application) override; + private: void setLimitsForCoreDumps(); }; @@ -60,6 +63,15 @@ void UnixPlatform::setLimitsForCoreDumps() } } +void UnixPlatform::setApplication(Application *application) +{ + Platform::setApplication(application); + +#if defined(OC_PLUGIN_DIR) + application->addLibraryPath(QDir(application::applicationDirPath()).filePath(QStringLiteral(OC_PLUGIN_DIR))); +#endif +} + std::unique_ptr<Platform> Platform::create() { return std::make_unique<UnixPlatform>(); diff --git a/src/gui/platform_win.cpp b/src/gui/platform_win.cpp index 167be35ed..08fd5dc80 100644 --- a/src/gui/platform_win.cpp +++ b/src/gui/platform_win.cpp @@ -28,6 +28,8 @@ public: } ~WinPlatform() override; + + void setApplication(Application *application) override; }; WinPlatform::~WinPlatform() @@ -39,4 +41,11 @@ std::unique_ptr<Platform> Platform::create() return std::make_unique<WinPlatform>(); } +void Platform::setApplication(OCC::Application *application) +{ + // Ensure OpenSSL config file is only loaded from app directory + const QString opensslConf = QCoreApplication::applicationDirPath() + QStringLiteral("/openssl.cnf"); + qputenv("OPENSSL_CONF", opensslConf.toLocal8Bit()); +} + } // namespace OCC |