Rabbit Remote Control 0.1.0-bate5
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);
49 virtual ~CManager();
50
51 int Initial(QString szFile = QString());
52
69 virtual COperate* CreateOperate(const QString &id);
73 virtual int DeleteOperate(COperate* p);
74
88 virtual COperate* LoadOperate(const QString& szFile);
89
95 virtual int SaveOperate(COperate* pOperate);
96
122 virtual QList<QWidget*> GetSettingsWidgets(QWidget *parent);
130 virtual int LoadSettings(const QString szFile = QString());
138 virtual int SaveSettings(const QString szFile = QString());
139
147 class Handle{
148 public:
149 Handle(){}
155 virtual int onProcess(const QString& id, CPlugin* pPlugin) = 0;
156 };
160 virtual int EnumPlugins(Handle* handle);
161#if HAS_CPP_11
166 virtual int EnumPlugins(
172 std::function<int(const QString& id, CPlugin* pPlugin)> cb);
173#endif
174
175 const QString Details() const;
176
177private:
178 int LoadPlugins();
179 int FindPlugins(QDir dir, QStringList filters);
180 int AppendPlugin(CPlugin* plugin);
181
182private Q_SLOTS:
183 void slotCaptureAllKeyboard();
184
185private:
186 QString m_szSettingsFile;
187 QMap<QString, CPlugin*> m_Plugins;
188 qint8 m_FileVersion;
189 QSharedPointer<QTranslator> m_Translator;
190 CHook* m_pHook;
191 CParameterPlugin* m_pParameter;
192 QString m_szDetails;
193};
The class is the HOOK abstract class.
Definition Hook.h:15
The Handle COperate class.
Definition Manager.h:147
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:51
Global parameters of plugins.
Plugin interface.
Definition Plugin.h:15