Add GetTrayMenu to plugin API to provide a dedicated interface for registering a tray menu for a plugin

This commit is contained in:
Adam Honse 2021-08-29 22:43:39 -05:00
parent 2f25c4af7f
commit 2800e76e9d
5 changed files with 54 additions and 36 deletions

View file

@ -18,20 +18,21 @@ typedef struct
QPluginLoader* loader;
bool loaded;
QWidget* widget;
QMenu* traymenu;
std::string path;
bool enabled;
} OpenRGBPluginEntry;
typedef void (*AddPluginTabCallback)(void *, OpenRGBPluginEntry* plugin);
typedef void (*RemovePluginTabCallback)(void *, OpenRGBPluginEntry* plugin);
typedef void (*AddPluginCallback)(void *, OpenRGBPluginEntry* plugin);
typedef void (*RemovePluginCallback)(void *, OpenRGBPluginEntry* plugin);
class PluginManager
{
public:
PluginManager(bool dark_theme);
void RegisterAddPluginTabCallback(AddPluginTabCallback new_callback, void * new_callback_arg);
void RegisterRemovePluginTabCallback(RemovePluginTabCallback new_callback, void * new_callback_arg);
void RegisterAddPluginCallback(AddPluginCallback new_callback, void * new_callback_arg);
void RegisterRemovePluginCallback(RemovePluginCallback new_callback, void * new_callback_arg);
void ScanAndLoadPlugins();
@ -46,9 +47,9 @@ public:
private:
bool dark_theme;
AddPluginTabCallback AddPluginTabCallbackVal;
void * AddPluginTabCallbackArg;
AddPluginCallback AddPluginCallbackVal;
void * AddPluginCallbackArg;
RemovePluginTabCallback RemovePluginTabCallbackVal;
void * RemovePluginTabCallbackArg;
RemovePluginCallback RemovePluginCallbackVal;
void * RemovePluginCallbackArg;
};