1#include <QLoggingCategory>
2#include <QRegularExpression>
3#include "ConnecterConnect.h"
4#include "PluginClientThread.h"
6static Q_LOGGING_CATEGORY(log,
"Client.Connecter.Connect")
11 qDebug(log) << Q_FUNC_INFO;
14CConnecterConnect::~CConnecterConnect()
16 qDebug(log) << Q_FUNC_INFO;
21 QString szId =
Protocol() +
"_" + GetPlugClient()->
Name();
28 +
"_" + QString::number(
GetParameter()->m_Net.GetPort());
30 static QRegularExpression exp(
"[-@:/#%!^&* \\.]");
31 szId = szId.replace(exp,
"_");
55 &&
GetParameter()->GetParameterClient()->GetShowProtocolPrefix())
67 return tr(
"Name: ") +
Name() +
"\n"
74 + tr(
"Description: ") + GetPlugClient()->
Description();
79 return qobject_cast<CParameterBase*>(CConnecter::GetParameter());
89 check = connect(
GetParameter(), SIGNAL(sigNameChanged()),
90 this, SLOT(slotUpdateName()));
92 check = connect(
GetParameter(), SIGNAL(sigShowServerNameChanged()),
93 this, SLOT(slotShowServerName()));
102 check = connect(
GetParameter(), SIGNAL(sigZoomFactorChanged(
double)),
103 pViewer, SLOT(slotSetZoomFactor(
double)));
122 bool check = connect(pPara, SIGNAL(sigShowProtocolPrefixChanged()),
123 this, SLOT(slotUpdateName()));
125 check = connect(pPara, SIGNAL(sigSHowIpPortInNameChanged()),
126 this, SLOT(slotUpdateName()));
131 QString szMsg =
"The CConnecter is not parameters! "
132 "please first create parameters, "
133 "then call SetParameter in the ";
134 szMsg += metaObject()->className() + QString(
"::")
135 + metaObject()->className();
136 szMsg += QString(
" or ") + metaObject()->className()
137 + QString(
"::") +
"Initial()";
138 szMsg +=
" to set the parameters pointer. "
139 "Default set CParameterClient for the parameters of connecter "
140 "(CParameterConnecter or its derived classes) "
141 "See: CClient::CreateConnecter. "
142 "If you are sure the parameter of connecter "
143 "does not need CParameterClient. "
144 "Please overload the SetParameterClient in the ";
145 szMsg += QString(metaObject()->className()) +
" . don't set it";
146 qCritical(log) << szMsg.toStdString().c_str();
154 qDebug(log) << Q_FUNC_INFO;
156 = qobject_cast<CPluginClientThread*>(GetPlugClient());
158 emit sigOpenConnect(
this);
162 int nRet = m_pConnect->
Connect();
172 qDebug(log) << Q_FUNC_INFO;
174 = qobject_cast<CPluginClientThread*>(GetPlugClient());
176 emit sigCloseconnect(
this);
180 m_pConnect->deleteLater();
191 &&
GetParameter()->GetParameterClient()->GetShowIpPortInName())
194 +
":" + QString::number(
GetParameter()->m_Net.GetPort());
199 return m_szServerName;
204 if(m_szServerName == szName)
207 m_szServerName = szName;
virtual int Disconnect()
断开
virtual int Connect()
开始连接。根据 OnInit() 返回值来决定是否开始定时器来支持非 qt 事件
插件的连接者接口,此接口仅由插件使用。 所有的需要 CConnect 的插件连接者均需要从此接口派生。
virtual const QString Id() override
Identity
virtual int DisConnect() override
在此函数中触发 sigDisconnected()
virtual const QString Description() override
Description
virtual int Connect() override
virtual void slotSetServerName(const QString &szName)
virtual CParameterBase * GetParameter()
Get parameter
virtual const QString Name() override
显示顺序:
virtual int SetParameterClient(CParameterClient *pPara) override
Set CParameterClient
virtual CConnect * InstanceConnect()=0
新建 CConnect 对象。它的所有者是调用者, 如果调用者不再使用它,调用者必须负责释放它。
virtual QString ServerName()
当前连接名(远程桌面的名称,如果没有,则是 IP:端口)。例如:服务名或 IP:端口
void sigUpdateName(const QString &szName)
void sigConnected()
连接成功信号。仅由插件触发。 应用程序需要在此时设置视图属性 Enabled 为 true 。允许接收键盘和鼠标事件
virtual QWidget * GetViewer()=0
得到显示视图
void sigDisconnected()
断开连接成功信号。仅由插件触发
virtual int SetParameter(CParameter *p)
设置参数
virtual const QString Protocol() const
Protocol
void sigUpdateParameters(CConnecter *pConnecter)
更新参数,通知应用程序保存或显示参数
用于显示从 CConnectDesktop 输出的图像,和向 CConnectDesktop 发送键盘、鼠标事件。
连接基础参数接口。包括基本参数(网络参数等)。 所有插件的连接参数都应从此类派生。
客户端库 (CClient) 参数。仅在客户端库 (CClient) 和插件中使用。
void sigChanged()
当参数改变时,触发 通常如果需要,则相应的参数会对应一个改变事件。
它默认启动一个后台线程。 它与 CConnecterConnect 一起可实现一个后台线程处理多个远程桌面连接。
客户端插件接口。用于建立 CConnecter 实例,它由协议插件实现。
virtual const QString DisplayName() const
在界面上显示的名称
virtual const QString Description() const =0
描述
virtual const QString Name() const =0
插件名,这个名一定要与工程名(${PROJECT_NAME})相同。 翻译文件(${PROJECT_NAME}_*.ts))名与其相关。