4#include <QLoggingCategory>
6#include "BackendFtpServer.h"
7#include "DlgSettings.h"
9#include "OperateFtpServer.h"
11static Q_LOGGING_CATEGORY(log,
"FtpServer.Operate")
18 qDebug(log) << Q_FUNC_INFO;
21COperateFtpServer::~COperateFtpServer()
23 qDebug(log) << Q_FUNC_INFO;
38 qDebug(log) << Q_FUNC_INFO;
45 qDebug(log) << Q_FUNC_INFO;
46 if(m_pStart && m_pStart->isChecked())
47 m_pStart->setChecked(
false);
52CBackend* COperateFtpServer::InstanceBackend()
55 bool check = connect(p, SIGNAL(sigConnectCount(
int,
int,
int)),
56 m_pView, SLOT(slotConnectCount(
int,
int,
int)));
58 check = connect(p, SIGNAL(sigConnected(QString,quint16)),
59 m_pView, SLOT(slotConnected(QString,quint16)));
61 check = connect(p, SIGNAL(sigDisconnected(QString,quint16)),
62 m_pView, SLOT(slotDisconnected(QString,quint16)));
64 check = connect(m_pView, SIGNAL(sigDisconnect(QString,quint16)),
65 p, SLOT(slotDisconnect(QString,quint16)));
73 GetParameter()->SetGlobalParameters(pPara);
74 GetParameter()->m_Net.m_User.SetSavePassword(
true);
76 bool check = connect(pPara, SIGNAL(sigNameStylesChanged()),
77 this, SLOT(slotUpdateName()));
82 QString szMsg =
"There is not parameters! "
83 "please first create parameters, "
84 "then call SetParameter() in the ";
85 szMsg += metaObject()->className() + QString(
"::")
86 + metaObject()->className();
87 szMsg += QString(
"() or ") + metaObject()->className()
88 + QString(
"::") +
"Initial()";
89 szMsg +=
" to set the parameters pointer. "
90 "Default set CParameterClient for the parameters of operate "
91 "(CParameterOperate or its derived classes) "
92 "See CManager::CreateOperate. "
93 "If you are sure the parameter of operate "
94 "does not need CParameterClient. "
95 "Please overload the SetGlobalParameters() in the ";
96 szMsg += QString(metaObject()->className()) +
" . don't set it";
97 qCritical(log) << szMsg.toStdString().c_str();
112 return m_Para->Load(set);
119 return m_Para->Save(set);
125 qDebug(log) << Q_FUNC_INFO;
135 emit this->sigUpdateParameters(this);
143 m_pStart = m_Menu.addAction(QIcon::fromTheme(
"media-playback-start"), tr(
"Start server"));
144 check = connect(m_pStart, &QAction::toggled,
this, &COperateFtpServer::slotStart);
146 m_pStart->setCheckable(
true);
147 m_pStart->setToolTip(m_pStart->text());
148 if(m_pActionSettings) {
149 m_Menu.addSeparator();
150 m_Menu.addAction(m_pActionSettings);
159 qDebug(log) << Q_FUNC_INFO;
165QSharedPointer<CParameterFtpServer> COperateFtpServer::GetParameter()
const
170void COperateFtpServer::slotStart(
bool checked)
172 qDebug(log) << Q_FUNC_INFO << m_pStart->isChecked();
175 m_pStart->setText(tr(
"Start server"));
176 m_pStart->setToolTip(m_pStart->text());
177 m_pStart->setIcon(QIcon::fromTheme(
"media-playback-start"));
180 slotSetSecurityLevel(CSecurityLevel::Level::No);
188 m_pStart->setText(tr(
"Stop server"));
189 m_pStart->setToolTip(m_pStart->text());
190 m_pStart->setIcon(QIcon::fromTheme(
"media-playback-stop"));
191 Q_ASSERT(!m_pThread);
194 qCritical(log) <<
"new CBackendThread fail";
198 this, [
this](
const int nError,
const QString &szError){
199 m_pStart->setChecked(
false);
209 if(GetParameter() && !(GetParameter()->GetName().isEmpty()))
210 szName += GetParameter()->GetName();
217 QString szSecurityLevel;
219 if((GetParameter()->GetGlobalParameters()->GetNameStyles()
220 & CParameterPlugin::NameStyle::SecurityLevel)
222 && !sl.GetUnicodeIcon().isEmpty())
223 szSecurityLevel = sl.GetUnicodeIcon().left(2);
225 return szSecurityLevel + szName;
230 QString szDescription;
231 if(!
Name().isEmpty())
232 szDescription = tr(
"Name: ") +
Name() +
"\n";
235 szDescription += tr(
"Type: ") +
GetTypeName() +
"\n";
238 szDescription += tr(
"Protocol: ") +
Protocol();
240 if(!
GetPlugin()->DisplayName().isEmpty())
243 szDescription +=
"\n";
248 szDescription += tr(
"Security level: ");
249 if(!sl.GetUnicodeIcon().isEmpty())
250 szDescription += sl.GetUnicodeIcon() +
" ";
251 szDescription += sl.GetString() +
"\n";
257 return szDescription;
后端接口。它由协议插件实现。 它默认启动一个定时器来开启一个非 Qt 事件循环(就是普通的循环处理)。 详见: Start()、 slotTimeOut()、 OnProcess() 。 当然,它仍然支...
virtual const QString Name() override
名称
virtual QDialog * OnOpenDialogSettings(QWidget *parent) override
得到设置对话框
virtual int Stop() override
关闭
virtual const qint16 Version() const override
版本
virtual int SetGlobalParameters(CParameterPlugin *pPara) override
应用插件全局参数
virtual int Start() override
开始
virtual int Initial() override
Initial parameters and resource
virtual int Clean() override
Clean parameters and resource
virtual QWidget * GetViewer() override
得到显示视图
virtual const QString Description() override
描述
virtual int Save(QSettings &set) override
保存参数
virtual int Load(QSettings &set) override
加载参数
virtual CSecurityLevel::Levels GetSecurityLevel() const
Get Security Level
void sigFinished()
断开连接成功信号。仅由插件触发
void sigRunning()
开始成功信号。仅由插件触发。
void sigError(const int nError, const QString &szError)
当有错误产生时触发。
virtual Q_INVOKABLE int Initial()
Initial parameters and resource
virtual const QString Protocol() const
协议
Q_INVOKABLE CPlugin * GetPlugin() const
Get plugin
virtual const QString Name()
名称
virtual const QString GetTypeName() const
类型名
void sigChanged()
当参数改变时,触发 通常如果需要,则相应的参数会对应一个改变事件。
virtual const QString DisplayName() const
在界面上显示的名称
virtual const QString Description() const =0
描述