From 42e9b6d2f3292aa3855af13e55d5a51e7772b13e Mon Sep 17 00:00:00 2001 From: Xavier Michelon Date: Thu, 4 Aug 2022 19:53:04 +0200 Subject: [PATCH] Other: moved user folder paths functions to bridgepp. --- .../bridge-gui/bridge-gui/CMakeLists.txt | 5 +- .../bridge-gui/bridge-gui/UserDirectories.h | 79 ------------------- .../frontend/bridge-gui/bridge-gui/main.cpp | 6 +- .../bridgepp/bridgepp/BridgeUtils.cpp | 54 +++++++++++-- .../bridgepp/bridgepp/BridgeUtils.h | 1 + 5 files changed, 53 insertions(+), 92 deletions(-) delete mode 100644 internal/frontend/bridge-gui/bridge-gui/UserDirectories.h diff --git a/internal/frontend/bridge-gui/bridge-gui/CMakeLists.txt b/internal/frontend/bridge-gui/bridge-gui/CMakeLists.txt index 83d86319..f51b9765 100644 --- a/internal/frontend/bridge-gui/bridge-gui/CMakeLists.txt +++ b/internal/frontend/bridge-gui/bridge-gui/CMakeLists.txt @@ -34,7 +34,6 @@ else() message(STATUS "Bridge version is ${BRIDGE_APP_VERSION}") endif() -configure_file(Version.h.in ${CMAKE_SOURCE_DIR}/Version.h) if (APPLE) # On macOS, we have some Objective-C++ code in DockIcon to deal with the dock icon. enable_language(OBJC OBJCXX) endif() @@ -68,7 +67,7 @@ message(STATUS "Using Qt ${Qt6_VERSION}") #***************************************************************************************************************************************************** -configure_file(Version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/Version.h) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/Version.h) if (NOT TARGET bridgepp) add_subdirectory(../bridgepp bridgepp) @@ -91,7 +90,7 @@ add_executable(bridge-gui QMLBackend.cpp QMLBackend.h UserList.cpp UserList.h ${DOCK_ICON_SRC_FILE} DockIcon/DockIcon.h - UserDirectories.h) + ) target_precompile_headers(bridge-gui PRIVATE Pch.h) target_include_directories(bridge-gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/internal/frontend/bridge-gui/bridge-gui/UserDirectories.h b/internal/frontend/bridge-gui/bridge-gui/UserDirectories.h deleted file mode 100644 index 4a78767e..00000000 --- a/internal/frontend/bridge-gui/bridge-gui/UserDirectories.h +++ /dev/null @@ -1,79 +0,0 @@ -// -// Created by romain on 01/08/22. -// - -#ifndef PROTON_BRIDGE_GUI_USERDIRECTORIES_H -#define PROTON_BRIDGE_GUI_USERDIRECTORIES_H - -#include - -using namespace bridgepp; - -namespace UserDirectories { - - QString const configFolder = "protonmail/bridge"; - -//**************************************************************************************************************************************************** -/// \return user configuration directory used by bridge (based on Golang OS/File's UserConfigDir). -//**************************************************************************************************************************************************** - static const QString UserConfigDir() - { - QString dir; -#ifdef Q_OS_WIN - dir = qgetenv ("AppData"); - if (dir.isEmpty()) - throw Exception("%AppData% is not defined."); -#elif defined(Q_OS_IOS) || defined(Q_OS_DARWIN) - dir = qgetenv ("HOME"); - if (dir.isEmpty()) - throw Exception("$HOME is not defined."); - dir += "/Library/Application Support"; -#else - dir = qgetenv ("XDG_CONFIG_HOME"); - if (dir.isEmpty()) - dir = qgetenv ("HOME"); - if (dir.isEmpty()) - throw Exception("neither $XDG_CONFIG_HOME nor $HOME are defined"); - dir += "/.config"; -#endif - QString folder = dir + "/" + configFolder; - QDir().mkpath(folder); - - return folder; - } - - -//**************************************************************************************************************************************************** -/// \return user configuration directory used by bridge (based on Golang OS/File's UserCacheDir). -//**************************************************************************************************************************************************** - static const QString UserCacheDir() - { - QString dir; - -#ifdef Q_OS_WIN - dir = qgetenv ("LocalAppData"); - if (dir.isEmpty()) - throw Exception("%LocalAppData% is not defined."); -#elif defined(Q_OS_IOS) || defined(Q_OS_DARWIN) - dir = qgetenv ("HOME"); - if (dir.isEmpty()) - throw Exception("$HOME is not defined."); - dir += "/Library/Caches"; -#else - dir = qgetenv ("XDG_CACHE_HOME"); - if (dir.isEmpty()) - dir = qgetenv ("HOME"); - if (dir.isEmpty()) - throw Exception("neither XDG_CACHE_HOME nor $HOME are defined"); - dir += "/.cache"; -#endif - QString folder = dir + "/" + configFolder; - QDir().mkpath(folder); - - return folder; - } - -}; - - -#endif //PROTON_BRIDGE_GUI_USERDIRECTORIES_H diff --git a/internal/frontend/bridge-gui/bridge-gui/main.cpp b/internal/frontend/bridge-gui/bridge-gui/main.cpp index a9e9d730..f90214bf 100644 --- a/internal/frontend/bridge-gui/bridge-gui/main.cpp +++ b/internal/frontend/bridge-gui/bridge-gui/main.cpp @@ -19,8 +19,8 @@ #include "QMLBackend.h" #include "BridgeMonitor.h" #include "Version.h" -#include "UserDirectories.h" #include +#include #include @@ -130,7 +130,7 @@ void parseArguments(int argc, char *argv[], QStringList& args, QString& launcher // list from the original argc and argv values. for (int i = 1; i < argc; i++) { QString const &arg = QString::fromLocal8Bit(argv[i]); - // we can't use QCommandLineParser here since it will fails on unknown options. + // we can't use QCommandLineParser here since it will fail on unknown options. // Arguments may contain some bridge flags. if (arg == launcherFlag) { @@ -214,7 +214,7 @@ int main(int argc, char *argv[]) Log &log = initLog(); - QLockFile lock(UserDirectories::UserCacheDir() + "/" + bridgeLock); + QLockFile lock(bridgepp::userCacheDir() + "/" + bridgeLock); if (!checkSingleInstance(lock)) return EXIT_FAILURE; diff --git a/internal/frontend/bridge-gui/bridgepp/bridgepp/BridgeUtils.cpp b/internal/frontend/bridge-gui/bridgepp/bridgepp/BridgeUtils.cpp index d8928cc3..1631cbe4 100644 --- a/internal/frontend/bridge-gui/bridgepp/bridgepp/BridgeUtils.cpp +++ b/internal/frontend/bridge-gui/bridgepp/bridgepp/BridgeUtils.cpp @@ -23,6 +23,14 @@ namespace bridgepp { +namespace { + +QString const configFolder = "protonmail/bridge"; + + +} + + //**************************************************************************************************************************************************** /// \return user configuration directory used by bridge (based on Golang OS/File's UserConfigDir). //**************************************************************************************************************************************************** @@ -34,19 +42,51 @@ QString userConfigDir() if (dir.isEmpty()) throw Exception("%AppData% is not defined."); #elif defined(Q_OS_IOS) || defined(Q_OS_DARWIN) - dir = qgetenv("HOME"); + dir = qgetenv ("HOME"); if (dir.isEmpty()) throw Exception("$HOME is not defined."); dir += "/Library/Application Support"; #else dir = qgetenv ("XDG_CONFIG_HOME"); - if (dir.isEmpty()) - dir = qgetenv ("HOME"); - if (dir.isEmpty()) - throw Exception("neither $XDG_CONFIG_HOME nor $HOME are defined"); - dir += "/.config"; + if (dir.isEmpty()) + dir = qgetenv ("HOME"); + if (dir.isEmpty()) + throw Exception("neither $XDG_CONFIG_HOME nor $HOME are defined"); + dir += "/.config"; #endif - QString folder = dir + "/protonmail/bridge"; + QString const folder = QDir(dir).absoluteFilePath(configFolder); + QDir().mkpath(folder); + + return folder; +} + + +//**************************************************************************************************************************************************** +/// \return user configuration directory used by bridge (based on Golang OS/File's UserCacheDir). +//**************************************************************************************************************************************************** +QString userCacheDir() +{ + QString dir; + +#ifdef Q_OS_WIN + dir = qgetenv ("LocalAppData"); + if (dir.isEmpty()) + throw Exception("%LocalAppData% is not defined."); +#elif defined(Q_OS_IOS) || defined(Q_OS_DARWIN) + dir = qgetenv ("HOME"); + if (dir.isEmpty()) + throw Exception("$HOME is not defined."); + dir += "/Library/Caches"; +#else + dir = qgetenv ("XDG_CACHE_HOME"); + if (dir.isEmpty()) + dir = qgetenv ("HOME"); + if (dir.isEmpty()) + throw Exception("neither XDG_CACHE_HOME nor $HOME are defined"); + dir += "/.cache"; +#endif + + QString const folder = QDir(dir).absoluteFilePath(configFolder); QDir().mkpath(folder); return folder; diff --git a/internal/frontend/bridge-gui/bridgepp/bridgepp/BridgeUtils.h b/internal/frontend/bridge-gui/bridgepp/bridgepp/BridgeUtils.h index cdd607c0..43f9f9e3 100644 --- a/internal/frontend/bridge-gui/bridgepp/bridgepp/BridgeUtils.h +++ b/internal/frontend/bridge-gui/bridgepp/bridgepp/BridgeUtils.h @@ -24,6 +24,7 @@ namespace bridgepp { QString userConfigDir(); ///< Get the path of the user configuration folder. +QString userCacheDir(); ///< Get the path of the user cache folder. } // namespace