Rabbit Remote Control 0.0.37
Loading...
Searching...
No Matches
Manager.h
1// Author: Kang Lin <kl222@126.com>
2
3#pragma once
4
5#include <QObject>
6#include <QDir>
7#include <QMap>
8#include <QIcon>
9#include <QTranslator>
10#include <QSharedPointer>
11
12#include "Plugin.h"
13#include "Hook.h"
14#include "ParameterPlugin.h"
15
16#if defined(__clang__) || defined(__GNUC__)
17#define CPP_STANDARD __cplusplus
18#elif defined(_MSC_VER)
19#define CPP_STANDARD _MSVC_LANG
20#endif
21#if CPP_STANDARD >= 199711L
22#define HAS_CPP_03 1
23#endif
24#if CPP_STANDARD >= 201103L
25#define HAS_CPP_11 1
26#endif
27#if CPP_STANDARD >= 201402L
28#define HAS_CPP_14 1
29#endif
30#if CPP_STANDARD >= 201703L
31#define HAS_CPP_17 1
32#endif
33
34#if HAS_CPP_11
35#include <functional>
36#endif
37
44class PLUGIN_EXPORT CManager : public QObject
45{
46 Q_OBJECT
47public:
48 explicit CManager(QObject *parent = nullptr, QString szFile = QString());
49 virtual ~CManager();
50
67 virtual COperate* CreateOperate(const QString &id);
71 virtual int DeleteOperate(COperate* p);
72
86 virtual COperate* LoadOperate(const QString& szFile);
87
93 virtual int SaveOperate(COperate* pOperate);
94
120 virtual QList<QWidget*> GetSettingsWidgets(QWidget *parent);
128 virtual int LoadSettings(const QString szFile = QString());
136 virtual int SaveSettings(const QString szFile = QString());
137
145 class Handle{
146 public:
147 Handle(){}
153 virtual int onProcess(const QString& id, CPlugin* pPlugin) = 0;
154 };
158 virtual int EnumPlugins(Handle* handle);
159#if HAS_CPP_11
164 virtual int EnumPlugins(
170 std::function<int(const QString& id, CPlugin* pPlugin)> cb);
171#endif
172
173 const QString Details() const;
174
175private:
176 int LoadPlugins();
177 int FindPlugins(QDir dir, QStringList filters);
178 int AppendPlugin(CPlugin* plugin);
179
180private Q_SLOTS:
181 void slotNativeWindowRecieveKeyboard();
182
183private:
184 QString m_szSettingsFile;
185 QMap<QString, CPlugin*> m_Plugins;
186 qint8 m_FileVersion;
187 QSharedPointer<QTranslator> m_Translator;
188 CHook* m_pHook;
189 CParameterPlugin* m_pParameter;
190 QString m_szDetails;
191};
The class is the HOOK abstract class.
Definition Hook.h:15
The Handle COperate class.
Definition Manager.h:145
virtual int onProcess(const QString &id, CPlugin *pPlugin)=0
Process plugins.
Manage plugins.
Definition Manager.h:45
virtual int EnumPlugins(std::function< int(const QString &id, CPlugin *pPlugin)> cb)
Enum plugins.
Operate interface.
Definition Operate.h:50
Global parameters of plugins.
Plugin interface.
Definition Plugin.h:15