5#include <QLoggingCategory>
6#include "RabbitCommonTools.h"
10static Q_LOGGING_CATEGORY(log,
"Plugin")
18 qDebug(log) << Q_FUNC_INFO;
20 RabbitCommon::CTools::Instance()->RemoveTranslator(m_Translator);
26 m_Translator = RabbitCommon::CTools::Instance()->InstallTranslator(
28 RabbitCommon::CTools::TranslationType::Plugin,
36const QString CPlugin::TypeName(
const TYPE t)
const
38 if(t >= TYPE::Custom) {
39 qWarning(log) <<
"Please override `const QString CPlugin::TypeName(const TYPE t) const` with "
40 + QString(metaObject()->className()) +
"::TypeName(const Type t)" ;
49 case TYPE::RemoteDesktop:
50 return tr(
"Remote Desktop");
52 return tr(
"Terminal");
55 case TYPE::FileTransfers:
56 return tr(
"File Transfer");
57 case TYPE::NetworkTools:
58 return tr(
"Network Tools");
60 qWarning(log) <<
"Please override `const QString CPlugin::TypeName(const TYPE t) const` with "
61 + QString(metaObject()->className()) +
"::TypeName(const Type t)" ;
64 qCritical(log) <<
"Don't support type:" << (int)t;
65 QMetaEnum me = QMetaEnum::fromType<CPlugin::TYPE>();
66 return me.valueToKey((quint64)t);
73 return QString::number((
int)Type()) +
":" +
Protocol() +
":" +
Name();
94 bool bRet = QMetaObject::invokeMethod(
98 Q_RETURN_ARG(
int, nRet));
100 qCritical(log) <<
"Call p->Initial() fail.";
104 qCritical(log) <<
"Operate initial fail" << nRet;
109 bRet = QMetaObject::invokeMethod(
111 "SetGlobalParameters",
112 Qt::DirectConnection,
113 Q_RETURN_ARG(
int, nRet),
116 qCritical(log) <<
"Call p->SetParameterClient(para) fail.";
120 qCritical(log) <<
"SetParameterClient fail" << nRet;
131 qDebug(log) << Q_FUNC_INFO;
136 bRet = QMetaObject::invokeMethod(
139 Qt::DirectConnection,
140 Q_RETURN_ARG(
int, nRet));
142 qCritical(log) <<
"Call p->Clean() fail.";
146 qWarning(log) <<
"Operate clean fail" << nRet;
virtual Q_INVOKABLE QWidget * GetSettingsWidget(QWidget *parent)
得到设置此插件全局参数的窗口
virtual const QString Details() const
显示更多细节。 例如: 在关于对话框或日志中显示。 包括插件的依赖库的版本信息和描述
virtual Q_INVOKABLE int DeleteOperate(COperate *p)
Delete COperate
Q_INVOKABLE int InitTranslator()
初始化翻译资源,仅由 CManager 调用。 因为它调用了 Name() ,所以不能在此类的构造函数中直接调用。
virtual const QString Name() const =0
插件名,这个名一定要与工程名(${PROJECT_NAME})相同。 翻译文件(${PROJECT_NAME}_*.ts))名与其相关。
virtual const QString DisplayName() const
在界面上显示的名称
virtual const QString Protocol() const =0
协议
virtual const QString Id() const
标识。默认: Type() + ":" + Protocol() + ":" + Name()
virtual Q_INVOKABLE COperate * CreateOperate(const QString &szId, CParameterPlugin *para)
新建 COperate 实例。仅由 CManager 调用