玉兔远程控制 0.1.0-bate6
载入中...
搜索中...
未找到
OperateFtpServer.cpp
1// Copyright Copyright (c) Kang Lin studio, All Rights Reserved
2// Author: Kang Lin <kl222@126.com>
3
4#include <QLoggingCategory>
5#include "OperateFtpServer.h"
6#include "BackendFtpServer.h"
7#include "DlgSettings.h"
8
9static Q_LOGGING_CATEGORY(log, "FtpServer.Operate")
11 : COperate(plugin)
12 , m_pThread(nullptr)
13 , m_pView(nullptr)
14 , m_pStart(nullptr)
15{
16 qDebug(log) << Q_FUNC_INFO;
17}
18
19COperateFtpServer::~COperateFtpServer()
20{
21 qDebug(log) << Q_FUNC_INFO;
22}
23
24const qint16 COperateFtpServer::Version() const
25{
26 return 0;
27}
28
30{
31 return m_pView;
32}
33
35{
36 qDebug(log) << Q_FUNC_INFO;
37 emit sigRunning();
38 return 0;
39}
40
42{
43 qDebug(log) << Q_FUNC_INFO;
44 if(m_pStart && m_pStart->isChecked())
45 m_pStart->setChecked(false);
46 emit sigFinished();
47 return 0;
48}
49
50CBackend* COperateFtpServer::InstanceBackend()
51{
52 auto p = new CBackendFtpServer(this);
53 bool check = connect(p, SIGNAL(sigConnectCount(int,int,int)),
54 m_pView, SLOT(slotConnectCount(int,int,int)));
55 Q_ASSERT(check);
56 check = connect(p, SIGNAL(sigConnected(QString,quint16)),
57 m_pView, SLOT(slotConnected(QString,quint16)));
58 Q_ASSERT(check);
59 check = connect(p, SIGNAL(sigDisconnected(QString,quint16)),
60 m_pView, SLOT(slotDisconnected(QString,quint16)));
61 Q_ASSERT(check);
62 check = connect(m_pView, SIGNAL(sigDisconnect(QString,quint16)),
63 p, SLOT(slotDisconnect(QString,quint16)));
64 Q_ASSERT(check);
65 return p;
66}
67
69{
70 qDebug(log) << Q_FUNC_INFO;
71 return 0;
72}
73
75{
76 auto pDlg = new CDlgSettings(m_Para, parent);
77 return pDlg;
78}
79
80int COperateFtpServer::Load(QSettings &set)
81{
82 if(m_Para)
83 return m_Para->Load(set);
84 return 0;
85}
86
87int COperateFtpServer::Save(QSettings &set)
88{
89 if(m_Para)
90 return m_Para->Save(set);
91 return 0;
92}
93
95{
96 qDebug(log) << Q_FUNC_INFO;
97 int nRet = 0;
98 bool check = false;
99
100 m_Para = QSharedPointer<CParameterFtpServer>(new CParameterFtpServer());
101 if(!m_Para)
102 return -1;
103
104 check = connect(m_Para.get(), &CParameter::sigChanged,
105 this, [&](){
106 emit this->sigUpdateParameters(this);
107 });
108 Q_ASSERT(check);
109
110 nRet = COperate::Initial();
111 if(nRet)
112 return nRet;
113
114 m_pStart = m_Menu.addAction(QIcon::fromTheme("media-playback-start"), tr("Start server"));
115 check = connect(m_pStart, &QAction::toggled, this, &COperateFtpServer::slotStart);
116 Q_ASSERT(check);
117 m_pStart->setCheckable(true);
118 m_pStart->setToolTip(m_pStart->text());
119 if(m_pActionSettings) {
120 m_Menu.addSeparator();
121 m_Menu.addAction(m_pActionSettings);
122 }
123
124 m_pView = new CFrmMain(this);
125 return nRet;
126}
127
129{
130 qDebug(log) << Q_FUNC_INFO;
131 if(m_pView)
132 delete m_pView;
133 return 0;
134}
135
136QSharedPointer<CParameterFtpServer> COperateFtpServer::GetParameter()
137{
138 return m_Para;
139}
140
141void COperateFtpServer::slotStart(bool checked)
142{
143 qDebug(log) << Q_FUNC_INFO << m_pStart->isChecked();
144 bool check = false;
145 if(!checked) {
146 m_pStart->setText(tr("Start server"));
147 m_pStart->setToolTip(m_pStart->text());
148 m_pStart->setIcon(QIcon::fromTheme("media-playback-start"));
149 if(m_pThread)
150 {
151 m_pThread->quit();
152 //Don't delete m_pThread, See CBackendThread
153 m_pThread = nullptr;
154 }
155 return;
156 }
157
158 m_pStart->setText(tr("Stop server"));
159 m_pStart->setToolTip(m_pStart->text());
160 m_pStart->setIcon(QIcon::fromTheme("media-playback-stop"));
161 Q_ASSERT(!m_pThread);
162 m_pThread = new CBackendThread(this, false);
163 if(!m_pThread) {
164 qCritical(log) << "new CBackendThread fail";
165 return;
166 }
167 check = connect(this, &COperateFtpServer::sigError,
168 this, [this](const int nError, const QString &szError){
169 m_pStart->setChecked(false);
170 });
171 Q_ASSERT(check);
172 m_pThread->start();
173}
The backend thread
virtual void quit()
Quit
后端接口。它由协议插件实现。 它默认启动一个定时器来开启一个非 Qt 事件循环(就是普通的循环处理)。 详见: Start()、 slotTimeOut()、 OnProcess() 。 当然,它仍然支...
Definition Backend.h:42
virtual QDialog * OnOpenDialogSettings(QWidget *parent) override
得到设置对话框
virtual int Stop() override
关闭
virtual const qint16 Version() const override
Version
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 int Save(QSettings &set) override
保存参数
virtual int Load(QSettings &set) override
加载参数
操作接口。
Definition Operate.h:51
void sigFinished()
断开连接成功信号。仅由插件触发
void sigRunning()
开始成功信号。仅由插件触发。
void sigError(const int nError, const QString &szError)
当有错误产生时触发。
virtual Q_INVOKABLE int Initial()
Initial parameters and resource
Definition Operate.cpp:223
插件的全局参数。
void sigChanged()
当参数改变时,触发 通常如果需要,则相应的参数会对应一个改变事件。
插件接口
Definition Plugin.h:15