Rabbit Remote Control 0.0.37
Loading...
Searching...
No Matches
Plugin.cpp
1// Author: Kang Lin <kl222@126.com>
2
3#include <QDir>
4#include <QLoggingCategory>
5#include "RabbitCommonTools.h"
6
7#include "Plugin.h"
8
9static Q_LOGGING_CATEGORY(log, "Plugin")
10
11CPlugin::CPlugin(QObject *parent)
12 : QObject{parent}
13{}
14
15CPlugin::~CPlugin()
16{
17 qDebug(log) << Q_FUNC_INFO;
18 if(m_Translator)
19 RabbitCommon::CTools::Instance()->RemoveTranslator(m_Translator);
20}
21
22// 因为 Name() 是重载函数,需要子类化才有,所以此函数不能在构造函数中调用
24{
25 m_Translator = RabbitCommon::CTools::Instance()->InstallTranslator(
26 Name(),
27 RabbitCommon::CTools::TranslationType::Plugin,
28 "plugins");
29 if(m_Translator)
30 return 0;
31
32 return -1;
33}
34
35const QString CPlugin::TypeName(const TYPE t) const
36{
37 if(t >= TYPE::Custom) {
38 qWarning(log) << "Please override `const QString CPlugin::TypeName(const TYPE t) const` with "
39 + QString(metaObject()->className()) + "::TypeName(const Type t)" ;
40 return tr("Custom");
41 }
42 switch(t)
43 {
44 case TYPE::Client:
45 return tr("Client");
46 case TYPE::Service:
47 return tr("Service");
48 case TYPE::RemoteDesktop:
49 return tr("Remote Desktop");
50 case TYPE::Terminal:
51 return tr("Terminal");
52 case TYPE::Tools:
53 return tr("Tools");
54 case TYPE::FileTransfers:
55 return tr("File transfers");
56 case TYPE::NetworkTools:
57 return tr("Network Tools");
58 case TYPE::Custom:
59 qWarning(log) << "Please override `const QString CPlugin::TypeName(const TYPE t) const` with "
60 + QString(metaObject()->className()) + "::TypeName(const Type t)" ;
61 return tr("Custom");
62 default:
63 qCritical(log) << "Don't support type:" << (int)t;
64 }
65 return QString();
66}
67
68const QString CPlugin::Id()
69{
70 return QString::number((int)Type()) + ":" + Protocol() + ":" + Name();
71}
72
73const QString CPlugin::DisplayName() const
74{
75 return Name();
76}
77
78const QString CPlugin::Details() const
79{
80 return QString();
81}
82
85 const QString &szId, CParameterPlugin* para)
86{
87 COperate* p = OnCreateOperate(szId);
88 if(p) {
89 int nRet = 0;
90 //nRet = p->Initial();
91 bool bRet = QMetaObject::invokeMethod(
92 p,
93 "Initial",
94 Qt::DirectConnection,
95 Q_RETURN_ARG(int, nRet));
96 if(!bRet) {
97 qCritical(log) << "Call p->Initial() fail.";
98 return nullptr;
99 }
100 if(nRet) {
101 qCritical(log) << "Operate initial fail" << nRet;
102 DeleteOperate(p);
103 return nullptr;
104 }
105 //nRet = p->SetGlobalParameters(para);
106 bRet = QMetaObject::invokeMethod(
107 p,
108 "SetGlobalParameters",
109 Qt::DirectConnection,
110 Q_RETURN_ARG(int, nRet),
111 Q_ARG(CParameterPlugin*, para));
112 if(!bRet) {
113 qCritical(log) << "Call p->SetParameterClient(para) fail.";
114 return nullptr;
115 }
116 if(nRet) {
117 qCritical(log) << "SetParameterClient fail" << nRet;
118 DeleteOperate(p);
119 return nullptr;
120 }
121 }
122 return p;
123}
125
127{
128 qDebug(log) << Q_FUNC_INFO;
129 if(!p) return 0;
130 int nRet = 0;
131 bool bRet = false;
132 //nRet = p->Clean();
133 bRet = QMetaObject::invokeMethod(
134 p,
135 "Clean",
136 Qt::DirectConnection,
137 Q_RETURN_ARG(int, nRet));
138 if(!bRet) {
139 qCritical(log) << "Call p->Clean() fail.";
140 return -1;
141 }
142 if(nRet)
143 qWarning(log) << "Operate clean fail" << nRet;
144 p->deleteLater();
145 return 0;
146}
Operate interface.
Definition Operate.h:50
Global parameters of plugins.
Plugin interface.
Definition Plugin.h:15
virtual const QString Details() const
Display more information in About dialog or log.
Definition Plugin.cpp:78
virtual Q_INVOKABLE int DeleteOperate(COperate *p)
Delete COperate.
Definition Plugin.cpp:126
Q_INVOKABLE int InitTranslator()
Initialize the translation resource, which is only called by CClient.
Definition Plugin.cpp:23
virtual const QString Id()
ID. Default: Type() + ":" + Protocol() + ":" + Name()
Definition Plugin.cpp:68
virtual const QString Name() const =0
This name must be the same as the project name (${PROJECT_NAME}). The translation file (${PROJECT_NAM...
virtual const QString DisplayName() const
The plugin display name.
Definition Plugin.cpp:73
virtual const QString Protocol() const =0
Plugin Protocol.
virtual Q_INVOKABLE COperate * CreateOperate(const QString &szId, CParameterPlugin *para)
New COperate instance.
Definition Plugin.cpp:84