Normalising config directory to ensure it has trailing path separator resolving #2552

* Moved Setter next to Getter
* Set `config_dir` to ensure consistent directory for all files resolving #2551
* Changed PluginManager loading log message to include directory
This commit is contained in:
Chris 2022-06-25 22:23:12 +10:00 committed by Adam Honse
parent 663b28508c
commit 2770206a8d
3 changed files with 32 additions and 19 deletions

View file

@ -1,4 +1,5 @@
#include "LogManager.h"
#include "filesystem.h"
#include "PluginManager.h"
#include "OpenRGBThemeManager.h"
@ -11,6 +12,13 @@ PluginManager::PluginManager()
AddPluginCallbackArg = nullptr;
RemovePluginCallbackVal = nullptr;
RemovePluginCallbackArg = nullptr;
/*-------------------------------------------------------------------------*\
| Create OpenRGB plugins directory |
\*-------------------------------------------------------------------------*/
std::string plugins_dir = ResourceManager::get()->GetConfigurationDirectory() + plugins_path;
filesystem::create_directories(plugins_dir);
}
void PluginManager::RegisterAddPluginCallback(AddPluginCallback new_callback, void * new_callback_arg)
@ -27,15 +35,14 @@ void PluginManager::RegisterRemovePluginCallback(RemovePluginCallback new_callba
void PluginManager::ScanAndLoadPlugins()
{
LOG_INFO("Loading plugins");
/*---------------------------------------------------------*\
| Get the plugins directory |
| |
| The plugins directory is a directory named "plugins" in |
| the configuration directory |
\*---------------------------------------------------------*/
const QDir plugins_dir = QString().fromStdString(ResourceManager::get()->GetConfigurationDirectory()) + "plugins/";
const QDir plugins_dir = QString(ResourceManager::get()->GetConfigurationDirectory().c_str()).append(plugins_path);
LOG_INFO("[PluginManager] Scanning plugin directory: %s", plugins_dir.absolutePath().toStdString().c_str());
/*---------------------------------------------------------*\
| Get a list of all files in the plugins directory |

View file

@ -52,4 +52,6 @@ private:
RemovePluginCallback RemovePluginCallbackVal;
void * RemovePluginCallbackArg;
const char * plugins_path = "plugins/";
};

View file

@ -481,13 +481,6 @@ void ResourceManager::SetupConfigurationDirectory()
| Create OpenRGB configuration directory if it doesn't exist |
\*-------------------------------------------------------------------------*/
filesystem::create_directories(config_dir);
/*-------------------------------------------------------------------------*\
| Create OpenRGB plugins directory |
\*-------------------------------------------------------------------------*/
std::string plugins_dir = config_dir + "plugins";
filesystem::create_directories(plugins_dir);
}
else
{
@ -500,6 +493,26 @@ std::string ResourceManager::GetConfigurationDirectory()
return(config_dir);
}
void ResourceManager::SetConfigurationDirectory(std::string directory)
{
/*-----------------------------------------------------*\
| Ensure the directory string has a trailing slash |
\*-----------------------------------------------------*/
const char separator = filesystem::path::preferred_separator;
if(directory[directory.size() - 1] != separator)
{
directory += separator;
}
config_dir = directory;
settings_manager->LoadSettings(directory + "OpenRGB.json");
profile_manager->SetConfigurationDirectory(directory);
rgb_controllers_sizes.clear();
rgb_controllers_sizes = profile_manager->LoadProfileToList("sizes", true);
}
NetworkServer* ResourceManager::GetServer()
{
return(server);
@ -579,15 +592,6 @@ const char *ResourceManager::GetDetectionString()
return (detection_string);
}
void ResourceManager::SetConfigurationDirectory(std::string directory)
{
settings_manager->LoadSettings(directory + "OpenRGB.json");
profile_manager->SetConfigurationDirectory(directory);
rgb_controllers_sizes.clear();
rgb_controllers_sizes = profile_manager->LoadProfileToList("sizes", true);
}
void ResourceManager::Cleanup()
{
ResourceManager::get()->WaitForDeviceDetection();