玉兔远程控制 0.1.0-bate11
载入中...
搜索中...
未找到
OperateServer.cpp
1// Author: Kang Lin <kl222@126.com>
2
3#include <QLoggingCategory>
4
5#include "BackendThread.h"
6#include "FrmViewServer.h"
7#include "OperateServer.h"
8
9static Q_LOGGING_CATEGORY(log, "Operate.Server")
11 : COperate(plugin)
12 , m_pViewer(nullptr)
13 , m_pThread(nullptr)
14 , m_pActionStart(nullptr)
15{
16 qDebug(log) << Q_FUNC_INFO;
17}
18
19COperateServer::~COperateServer()
20{
21 qDebug(log) << Q_FUNC_INFO;
22}
23
25{
26 return m_pViewer;
27}
28
30{
31 int nRet = 0;
32 nRet = COperate::Initial();
33 if(nRet) return nRet;
34 m_pViewer = new CFrmViewServer();
35
36 m_pActionStart = m_Menu.addAction(
37 QIcon::fromTheme("media-playback-start"), tr("Start server"));
38 if(m_pActionStart) {
39 m_pActionStart->setStatusTip(m_pActionStart->text());
40 m_pActionStart->setToolTip(m_pActionStart->text());
41 m_pActionStart->setCheckable(true);
42 bool check = connect(m_pActionStart, &QAction::toggled,
43 this, &COperateServer::slotStart);
44 Q_ASSERT(check);
45 m_pViewer->AddActionInToolBar(m_pActionStart);
46 }
47 m_Menu.addSeparator();
48 if(m_pActionSettings) {
49 m_Menu.addAction(m_pActionSettings);
50 m_pViewer->AddActionInToolBar(m_pActionSettings);
51 }
52 return nRet;
53}
54
56{
57 int nRet = 0;
58 if(m_pViewer) {
59 delete m_pViewer;
60 m_pViewer = nullptr;
61 }
62 nRet = COperate::Clean();
63 return nRet;
64}
65
67{
68 qDebug(log) << Q_FUNC_INFO;
69 emit sigRunning();
70 return 0;
71}
72
74{
75 qDebug(log) << Q_FUNC_INFO;
76 int nRet = 0;
77 if(m_pActionStart && m_pActionStart->isChecked()) {
78 if(m_pThread) {
79 bool check = connect(m_pThread, SIGNAL(finished()),
80 this, SIGNAL(sigFinished()));
81 Q_ASSERT(check);
82 }
83 m_pActionStart->setChecked(false);
84 } else
85 emit sigFinished();
86
87 return nRet;
88}
89
90void COperateServer::slotStart(bool checked)
91{
92 qDebug(log) << Q_FUNC_INFO << m_pActionStart->isChecked();
93 bool check = false;
94 if(!checked) {
95 m_pActionStart->setText(tr("Start server"));
96 m_pActionStart->setToolTip(m_pActionStart->text());
97 m_pActionStart->setIcon(QIcon::fromTheme("media-playback-start"));
98 if(m_pThread)
99 {
100 slotSetSecurityLevel(CSecurityLevel::Level::No);
101 m_pThread->quit();
102 // NOTE: Don't delete m_pThread, See CBackendThread
103 m_pThread = nullptr;
104 }
105 return;
106 }
107
108 m_pActionStart->setText(tr("Stop server"));
109 m_pActionStart->setToolTip(m_pActionStart->text());
110 m_pActionStart->setIcon(QIcon::fromTheme("media-playback-stop"));
111 Q_ASSERT(!m_pThread);
112 m_pThread = new CBackendThread(this);
113 if(!m_pThread) {
114 qCritical(log) << "new CBackendThread fail";
115 return;
116 }
117 check = connect(this, &COperateServer::sigError,
118 this, [this](const int nError, const QString &szError){
119 m_pActionStart->setChecked(false);
120 });
121 Q_ASSERT(check);
122 m_pThread->start();
123}
CBackendThread(COperate *pOperate, QObject *pParent=nullptr)
CBackendThread
The CFrmViewServer class
服务操作接口
virtual Q_INVOKABLE int Initial() override
Initial parameters and resource
virtual QWidget * GetViewer() override
得到显示视图
virtual int Stop() override
关闭
virtual int Start() override
开始
virtual Q_INVOKABLE int Clean() override
Clean parameters and resource
操作接口。
void sigFinished()
断开连接成功信号。仅由插件触发
void sigRunning()
开始成功信号。仅由插件触发。
void sigError(const int nError, const QString &szError)
当有错误产生时触发。
virtual Q_INVOKABLE int Initial()
Initial parameters and resource
virtual Q_INVOKABLE int Clean()
Clean parameters and resource
插件接口