CCIMXDesktop
 
Loading...
Searching...
No Matches
DesktopPluginServer.h
Go to the documentation of this file.
1
6#ifndef DESKTOPPLUGINSERVER_H
7#define DESKTOPPLUGINSERVER_H
8
9#include "core/server/DesktopServerBase.h" // Base class for server-like functionalities
10#include <QHash> // For storing a map of plugin names to QPluginLoader instances
11
12// Forward declarations to avoid heavy includes and circular dependencies
13class QPluginLoader;
14class FileMonitor;
16class QWidget; // Required for queryWidget return type
17
29 Q_OBJECT
30
31public:
38 explicit DesktopWidgetPluginServer(const QString& monitoring_dll, DesktopMainWindow* parent);
39
46
55 void insertPlugin(const QString& pluginName, const QString& plugin_path);
56
65 bool unloadPlugin(const QString& plugin_name);
66
73 void scanTargetDirent();
74
80 void removeAllPlugins();
81
91 QWidget* queryWidget(const QString& pluginName, QWidget* expected_parent);
92
97 DesktopMainWindow* hooked_window() const { return window; };
98
99signals:
105 void pluginLoaded(const QString& pluginName, const QString& pluginPath);
106
113 void pluginFailed(const QString& pluginName,
114 const QString& pluginPath,
115 const QString& pluginErrorString);
116
121 void pluginUnloaded(const QString& pluginName);
122
128 void pluginUnloadedFailed(const QString& pluginName,
129 const QString& pluginErrorString);
130
131private:
137 QHash<QString, QPluginLoader*> plugin_map;
138
144 DesktopMainWindow* window;
145
151 FileMonitor* hot_loaded;
152};
153
154#endif // DESKTOPPLUGINSERVER_H
DesktopMainWindow is the main frontend window of the application. For beginners, this is the starting...
Definition desktopmainwindow.h:39
The DesktopServerBase class notifies the backend Server for desktop with eventloop engaged in desktop...
Definition DesktopServerBase.h:12
Manages the lifecycle of dynamically loaded QWidget-based plugins.
Definition DesktopPluginServer.h:28
bool unloadPlugin(const QString &plugin_name)
Unloads a plugin identified by its name.
Definition DesktopPluginServer.cpp:67
void removeAllPlugins()
Unloads and removes all currently loaded plugins.
Definition DesktopPluginServer.cpp:114
~DesktopWidgetPluginServer() override
Destroys the DesktopWidgetPluginServer object.
Definition DesktopPluginServer.cpp:30
void pluginUnloaded(const QString &pluginName)
Signal emitted when a plugin has been successfully unloaded.
void insertPlugin(const QString &pluginName, const QString &plugin_path)
Inserts (loads) a plugin into the server.
Definition DesktopPluginServer.cpp:34
DesktopMainWindow * hooked_window() const
Returns a pointer to the associated DesktopMainWindow.
Definition DesktopPluginServer.h:97
void pluginFailed(const QString &pluginName, const QString &pluginPath, const QString &pluginErrorString)
Signal emitted when a plugin fails to load.
void scanTargetDirent()
Scans the target directory for new or updated plugin DLLs.
Definition DesktopPluginServer.cpp:83
QWidget * queryWidget(const QString &pluginName, QWidget *expected_parent)
Queries and instantiates a QWidget from a loaded plugin.
Definition DesktopPluginServer.cpp:125
void pluginLoaded(const QString &pluginName, const QString &pluginPath)
Signal emitted when a plugin has been successfully loaded.
void pluginUnloadedFailed(const QString &pluginName, const QString &pluginErrorString)
Signal emitted when a plugin fails to unload.
Monitors a specified directory for file additions or deletions at regular intervals.
Definition FileMonitor.h:28