Rabbit Remote Control 0.1.0-bate10
Loading...
Searching...
No Matches
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 bool check = connect(m_pThread, SIGNAL(finished()),
79 this, SIGNAL(sigFinished()));
80 Q_ASSERT(check);
81 m_pActionStart->setChecked(false);
82 } else
83 emit sigFinished();
84
85 return nRet;
86}
87
88void COperateServer::slotStart(bool checked)
89{
90 qDebug(log) << Q_FUNC_INFO << m_pActionStart->isChecked();
91 bool check = false;
92 if(!checked) {
93 m_pActionStart->setText(tr("Start server"));
94 m_pActionStart->setToolTip(m_pActionStart->text());
95 m_pActionStart->setIcon(QIcon::fromTheme("media-playback-start"));
96 if(m_pThread)
97 {
98 slotSetSecurityLevel(CSecurityLevel::Level::No);
99 m_pThread->quit();
100 // NOTE: Don't delete m_pThread, See CBackendThread
101 m_pThread = nullptr;
102 }
103 return;
104 }
105
106 m_pActionStart->setText(tr("Stop server"));
107 m_pActionStart->setToolTip(m_pActionStart->text());
108 m_pActionStart->setIcon(QIcon::fromTheme("media-playback-stop"));
109 Q_ASSERT(!m_pThread);
110 m_pThread = new CBackendThread(this, false, false);
111 if(!m_pThread) {
112 qCritical(log) << "new CBackendThread fail";
113 return;
114 }
115 check = connect(this, &COperateServer::sigError,
116 this, [this](const int nError, const QString &szError){
117 m_pActionStart->setChecked(false);
118 });
119 Q_ASSERT(check);
120 m_pThread->start();
121}
The backend thread.
virtual void quit()
Quit.
The CFrmViewServer class.
Server operate interface.
virtual Q_INVOKABLE int Initial() override
Initial parameters and resource.
virtual QWidget * GetViewer() override
Get Viewer.
virtual int Stop() override
Stop.
virtual int Start() override
Start.
virtual Q_INVOKABLE int Clean() override
Clean parameters and resource.
Operate interface.
Definition Operate.h:51
void sigFinished()
Successful disconnection signal.
void sigRunning()
Start success signal.
void sigError(const int nError, const QString &szError)
Triggered when an error is generated.
virtual Q_INVOKABLE int Initial()
Initial parameters and resource.
Definition Operate.cpp:190
virtual Q_INVOKABLE int Clean()
Clean parameters and resource.
Definition Operate.cpp:209
Plugin interface.
Definition Plugin.h:15