From b3dfd3b4b0b3af328d36fea4a79b2d297076b1ab Mon Sep 17 00:00:00 2001 From: morg Date: Tue, 7 Jan 2025 18:12:41 +0100 Subject: [PATCH] Move ResourceManagerInterface to its own file. Refactor Plugin interface --- OpenRGB.pro | 1 + OpenRGBPluginInterface.h | 4 +- PluginManager.cpp | 5 +- ResourceManager.h | 46 +---------------- ResourceManagerInterface.h | 54 ++++++++++++++++++++ qt/OpenRGBPluginsPage/OpenRGBPluginsPage.cpp | 1 + 6 files changed, 61 insertions(+), 50 deletions(-) create mode 100644 ResourceManagerInterface.h diff --git a/OpenRGB.pro b/OpenRGB.pro index 4ac6ab33..5ff7240b 100644 --- a/OpenRGB.pro +++ b/OpenRGB.pro @@ -179,6 +179,7 @@ HEADERS += PluginManager.h \ ProfileManager.h \ ResourceManager.h \ + ResourceManagerInterface.h \ SettingsManager.h \ Detector.h \ DeviceDetector.h \ diff --git a/OpenRGBPluginInterface.h b/OpenRGBPluginInterface.h index 1a081dfe..13d72d46 100644 --- a/OpenRGBPluginInterface.h +++ b/OpenRGBPluginInterface.h @@ -15,7 +15,7 @@ #include #include #include -#include "ResourceManager.h" +#include "ResourceManagerInterface.h" #define OpenRGBPluginInterface_IID "com.OpenRGBPluginInterface" @@ -77,7 +77,7 @@ public: /*-------------------------------------------------------------------------------------------------*\ | Plugin Functionality | \*-------------------------------------------------------------------------------------------------*/ - virtual void Load(bool dark_theme, ResourceManager* resource_manager_ptr) = 0; + virtual void Load(ResourceManagerInterface* resource_manager_ptr) = 0; virtual QWidget* GetWidget() = 0; virtual QMenu* GetTrayMenu() = 0; virtual void Unload() = 0; diff --git a/PluginManager.cpp b/PluginManager.cpp index c3353012..dacbe531 100644 --- a/PluginManager.cpp +++ b/PluginManager.cpp @@ -12,6 +12,7 @@ #include "PluginManager.h" #include "OpenRGBThemeManager.h" #include "SettingsManager.h" +#include "ResourceManager.h" #ifdef _WIN32 #include @@ -423,8 +424,6 @@ void PluginManager::LoadPlugin(OpenRGBPluginEntry* plugin_entry) QObject* instance = plugin_entry->loader->instance(); - bool dark_theme = OpenRGBThemeManager::IsDarkTheme(); - if(instance) { OpenRGBPluginInterface* plugin = qobject_cast(instance); @@ -435,7 +434,7 @@ void PluginManager::LoadPlugin(OpenRGBPluginEntry* plugin_entry) { plugin_entry->plugin = plugin; - plugin->Load(dark_theme, ResourceManager::get()); + plugin->Load(ResourceManager::get()); /*-------------------------------------------------*\ | Call the Add Plugin callback | diff --git a/ResourceManager.h b/ResourceManager.h index 0a558f33..264f127c 100644 --- a/ResourceManager.h +++ b/ResourceManager.h @@ -22,6 +22,7 @@ #include "SPDWrapper.h" #include "hidapi_wrapper.h" #include "i2c_smbus.h" +#include "ResourceManagerInterface.h" #include "filesystem.h" #include "json.hpp" @@ -94,12 +95,6 @@ typedef struct uint8_t dimm_type; } I2CDIMMDeviceDetectorBlock; -typedef void (*DeviceListChangeCallback)(void *); -typedef void (*DetectionProgressCallback)(void *); -typedef void (*DetectionStartCallback)(void *); -typedef void (*DetectionEndCallback)(void *); -typedef void (*I2CBusListChangeCallback)(void *); - /*-------------------------------------------------------------------------*\ | Define a macro for QT lupdate to parse | \*-------------------------------------------------------------------------*/ @@ -110,45 +105,6 @@ extern const char* I2C_ERR_LINUX; extern const char* UDEV_MISSING; extern const char* UDEV_MULTI; -class ResourceManagerInterface -{ -public: - virtual std::vector & GetI2CBusses() = 0; - - virtual void RegisterRGBController(RGBController *rgb_controller) = 0; - virtual void UnregisterRGBController(RGBController *rgb_controller) = 0; - - virtual void RegisterDeviceListChangeCallback(DeviceListChangeCallback new_callback, void * new_callback_arg) = 0; - virtual void RegisterDetectionProgressCallback(DetectionProgressCallback new_callback, void * new_callback_arg) = 0; - virtual void RegisterDetectionStartCallback(DetectionStartCallback new_callback, void * new_callback_arg) = 0; - virtual void RegisterDetectionEndCallback(DetectionEndCallback new_callback, void * new_callback_arg) = 0; - virtual void RegisterI2CBusListChangeCallback(I2CBusListChangeCallback new_callback, void * new_callback_arg) = 0; - - virtual void UnregisterDeviceListChangeCallback(DeviceListChangeCallback callback, void * callback_arg) = 0; - virtual void UnregisterDetectionProgressCallback(DetectionProgressCallback callback, void *callback_arg) = 0; - virtual void UnregisterDetectionStartCallback(DetectionStartCallback callback, void *callback_arg) = 0; - virtual void UnregisterDetectionEndCallback(DetectionEndCallback callback, void *callback_arg) = 0; - virtual void UnregisterI2CBusListChangeCallback(I2CBusListChangeCallback callback, void * callback_arg) = 0; - - virtual std::vector & GetRGBControllers() = 0; - - virtual unsigned int GetDetectionPercent() = 0; - - virtual filesystem::path GetConfigurationDirectory() = 0; - - virtual std::vector& GetClients() = 0; - virtual NetworkServer* GetServer() = 0; - - virtual ProfileManager* GetProfileManager() = 0; - virtual SettingsManager* GetSettingsManager() = 0; - - virtual void UpdateDeviceList() = 0; - virtual void WaitForDeviceDetection() = 0; - -protected: - virtual ~ResourceManagerInterface() {}; -}; - class ResourceManager: public ResourceManagerInterface { public: diff --git a/ResourceManagerInterface.h b/ResourceManagerInterface.h new file mode 100644 index 00000000..e0fbc23d --- /dev/null +++ b/ResourceManagerInterface.h @@ -0,0 +1,54 @@ +#pragma once + +#include +#include "RGBController.h" +#include "i2c_smbus.h" +#include "filesystem.h" +#include "NetworkClient.h" +#include "NetworkServer.h" +#include "SettingsManager.h" + +typedef void (*DeviceListChangeCallback)(void *); +typedef void (*DetectionProgressCallback)(void *); +typedef void (*DetectionStartCallback)(void *); +typedef void (*DetectionEndCallback)(void *); +typedef void (*I2CBusListChangeCallback)(void *); + +class ResourceManagerInterface +{ +public: + virtual std::vector & GetI2CBusses() = 0; + + virtual void RegisterRGBController(RGBController *rgb_controller) = 0; + virtual void UnregisterRGBController(RGBController *rgb_controller) = 0; + + virtual void RegisterDeviceListChangeCallback(DeviceListChangeCallback new_callback, void * new_callback_arg) = 0; + virtual void RegisterDetectionProgressCallback(DetectionProgressCallback new_callback, void * new_callback_arg) = 0; + virtual void RegisterDetectionStartCallback(DetectionStartCallback new_callback, void * new_callback_arg) = 0; + virtual void RegisterDetectionEndCallback(DetectionEndCallback new_callback, void * new_callback_arg) = 0; + virtual void RegisterI2CBusListChangeCallback(I2CBusListChangeCallback new_callback, void * new_callback_arg) = 0; + + virtual void UnregisterDeviceListChangeCallback(DeviceListChangeCallback callback, void * callback_arg) = 0; + virtual void UnregisterDetectionProgressCallback(DetectionProgressCallback callback, void *callback_arg) = 0; + virtual void UnregisterDetectionStartCallback(DetectionStartCallback callback, void *callback_arg) = 0; + virtual void UnregisterDetectionEndCallback(DetectionEndCallback callback, void *callback_arg) = 0; + virtual void UnregisterI2CBusListChangeCallback(I2CBusListChangeCallback callback, void * callback_arg) = 0; + + virtual std::vector & GetRGBControllers() = 0; + + virtual unsigned int GetDetectionPercent() = 0; + + virtual filesystem::path GetConfigurationDirectory() = 0; + + virtual std::vector& GetClients() = 0; + virtual NetworkServer* GetServer() = 0; + + virtual ProfileManager* GetProfileManager() = 0; + virtual SettingsManager* GetSettingsManager() = 0; + + virtual void UpdateDeviceList() = 0; + virtual void WaitForDeviceDetection() = 0; + +protected: + virtual ~ResourceManagerInterface() {}; +}; diff --git a/qt/OpenRGBPluginsPage/OpenRGBPluginsPage.cpp b/qt/OpenRGBPluginsPage/OpenRGBPluginsPage.cpp index 0e9c5c03..44f6fb2a 100644 --- a/qt/OpenRGBPluginsPage/OpenRGBPluginsPage.cpp +++ b/qt/OpenRGBPluginsPage/OpenRGBPluginsPage.cpp @@ -16,6 +16,7 @@ #include "SettingsManager.h" #include "OpenRGBPluginsPage.h" #include "ui_OpenRGBPluginsPage.h" +#include "ResourceManager.h" void EnableClickCallbackFunction(void* this_ptr, void* entry_ptr) {