玉兔远程控制 0.1.0-bate5
载入中...
搜索中...
未找到
BackendDesktop.h
1// Author: Kang Lin <kl222@126.com>
2
3#pragma once
4#include <QPoint>
5#include <QMouseEvent>
6#include <QKeyEvent>
7#include <QWheelEvent>
8#include <QMimeData>
9#include <QMessageBox>
10#if HAVE_QT6_MULTIMEDIA
11#include <QMediaCaptureSession>
12#endif
13#if HAVE_QT6_RECORD
14#include <QVideoFrameInput>
15#include <QAudioBufferInput>
16#include <QAudioBufferOutput>
17#include <QMediaRecorder>
18#include "ParameterRecord.h"
19#endif
20
21#include "FrmViewer.h"
22#include "OperateDesktop.h"
23
25
37class PLUGIN_EXPORT CBackendDesktop : public CBackend
38{
39 Q_OBJECT
40public:
41 explicit CBackendDesktop(COperateDesktop *pOperate = nullptr);
42 virtual ~CBackendDesktop();
43
44public Q_SLOTS:
45#if HAVE_QT6_RECORD
46 virtual int Stop() override;
47#endif
52 virtual void slotClipBoardChanged() = 0;
53
54private:
55 int SetConnect(COperateDesktop* pOperate);
56 int SetViewer(CFrmViewer* pView);
57
58Q_SIGNALS:
59 void sigSetDesktopSize(int width, int height);
60 void sigServerName(const QString& szName);
61
71 void sigUpdateRect(const QRect& r, const QImage& image);
76 void sigUpdateRect(const QImage& image);
77 void sigUpdateCursor(const QCursor& cursor);
78 void sigUpdateCursorPosition(const QPoint& pos);
79 void sigUpdateLedState(unsigned int state);
80 void sigSetClipboard(QMimeData* data);
81
82public Q_SLOTS:
83 // \~chinese 以下函数在 CFrmView 线程(主线程)中调用
84 // \~english The following functions are called in the CFrmView thread(main thread)
85 virtual void slotMousePressEvent(QMouseEvent* event, QPoint pos);
86 virtual void slotMouseReleaseEvent(QMouseEvent* event, QPoint pos);
87 virtual void slotMouseMoveEvent(QMouseEvent* event, QPoint pos);
88 virtual void slotWheelEvent(QWheelEvent* event, QPoint pos);
89 virtual void slotKeyPressEvent(QKeyEvent *event);
90 virtual void slotKeyReleaseEvent(QKeyEvent *event);
91 virtual void slotInputMethodEvent(QInputMethodEvent* event);
92
93protected:
98 virtual int WakeUp() override;
99 // \~chinese 以下函数在后台线程中调用
100 // \~english The following functions are called in the Backend thread(background thread)
101 virtual void mousePressEvent(QMouseEvent *event);
102 virtual void mouseReleaseEvent(QMouseEvent *event);
103 virtual void mouseMoveEvent(QMouseEvent *event);
104 virtual void wheelEvent(QWheelEvent *event);
105 virtual void keyPressEvent(QKeyEvent *event);
106 virtual void keyReleaseEvent(QKeyEvent *event);
107 virtual void InputMethodEvent(QInputMethodEvent* event);
108
109 // QObject interface
110public:
111 virtual bool event(QEvent *event) override;
112
113#if HAVE_QT6_RECORD
115private Q_SLOTS:
116 // menu
117 virtual void slotRecord(bool bRecord);
118 virtual void slotRecordPause(bool bPause);
119 // CFrmView
120 void slotRecordVideo(const QImage& img);
121Q_SIGNALS:
122 void sigRecordVideo(bool bRecord, qreal nRate = 0);
123private:
124 void RecordVideo(QRecordVideoEvent *event);
125 CParameterRecord* m_pParameterRecord;
126
127protected:
128 QVideoFrameInput m_VideoFrameInput;
129 QAudioBufferInput m_AudioBufferInput;
130 QAudioBufferOutput m_AudioBufferOutput;
131 QMediaRecorder m_Recorder;
132#endif
133#if HAVE_QT6_MULTIMEDIA
134 QMediaCaptureSession m_CaptureSession;
135#endif
136};
远程桌面接口。它由协议插件实现。
void sigUpdateRect(const QRect &r, const QImage &image)
通知视图,图像更新
void sigUpdateRect(const QImage &image)
Notify the CFrmView update image
virtual void slotClipBoardChanged()=0
当剪切板发生改变时调用
后端接口。它由协议插件实现。 它默认启动一个定时器来开启一个非 Qt 事件循环(就是普通的循环处理)。 详见: Start()、 slotTimeOut()、 OnProcess() 。 当然,它仍然支...
Definition Backend.h:42
virtual int Stop()
停止
Definition Backend.cpp:92
virtual int WakeUp()
Wake up.
Definition Backend.cpp:100
用于显示从 CConnectDesktop 输出的图像,和向 CConnectDesktop 发送键盘、鼠标事件。
Definition FrmViewer.h:48
远程桌面操作接口