玉兔远程控制 0.0.31
载入中...
搜索中...
未找到
PluginClient.cpp
1// Author: Kang Lin <kl222@126.com>
2
3#include <QLocale>
4#include <QDebug>
5#include <QApplication>
6#include <QDir>
7#include <QLoggingCategory>
8
9#include "PluginClient.h"
10#include "RabbitCommonTools.h"
11
12static Q_LOGGING_CATEGORY(log, "Client.Plugin")
13
14CPluginClient::CPluginClient(QObject *parent) : QObject(parent)
15{}
16
18{
19 qDebug(log) << "CPluginClient::~CPluginClient()";
20 if(m_Translator)
21 RabbitCommon::CTools::Instance()->RemoveTranslator(m_Translator);
22}
23
24// 因为 Name() 是重载函数,需要子类化才有,所以此函数不能在构造函数中调用
26{
27 m_Translator = RabbitCommon::CTools::Instance()->InstallTranslator(
28 Name(),
29 RabbitCommon::CTools::TranslationType::Plugin,
30 "plugins/Client");
31 if(m_Translator)
32 return 0;
33
34 return -1;
35}
36
37const QString CPluginClient::Id() const
38{
39 return Protocol() + ":" + Name();
40}
41
42const QString CPluginClient::DisplayName() const
43{
44 return Name();
45}
46
47const QIcon CPluginClient::Icon() const
48{
49 return QIcon::fromTheme("network-wired");
50}
51
52const QString CPluginClient::Details() const
53{
54 return QString();
55}
客户端插件接口。用于建立 CConnecter 实例,它由协议插件实现。
virtual const QString Details() const
显示更多细节。 例如: 在关于对话框或日志中显示。 包括插件的依赖库的版本信息和描述
virtual const QString Id() const
标识。默认: Protocol() + ":" + Name()
virtual const QString DisplayName() const
在界面上显示的名称
virtual const QString Name() const =0
插件名,这个名一定要与工程名(${PROJECT_NAME})相同。 翻译文件(${PROJECT_NAME}_*.ts))名与其相关。
Q_INVOKABLE int InitTranslator()
初始化翻译资源,仅由 CClient 调用。 因为它调用了 Name() ,所以不能在此类的构造函数中直接调用。
virtual const QString Protocol() const =0
协议
virtual ~CPluginClient()
派生类实现它,用于释放资源。例如: