玉兔远程控制 0.1.0-bate11
载入中...
搜索中...
未找到
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:
94 // \~chinese 以下函数在后台线程中调用
95 // \~english The following functions are called in the Backend thread(background thread)
96 virtual void mousePressEvent(QMouseEvent *event) = 0;
97 virtual void mouseReleaseEvent(QMouseEvent *event) = 0;
98 virtual void mouseMoveEvent(QMouseEvent *event) = 0;
99 virtual void wheelEvent(QWheelEvent *event) = 0;
100 virtual void keyPressEvent(QKeyEvent *event) = 0;
101 virtual void keyReleaseEvent(QKeyEvent *event) = 0;
102 virtual void InputMethodEvent(QInputMethodEvent* event) = 0;
103
104 // QObject interface
105public:
106 virtual bool event(QEvent *event) override;
107
108#if HAVE_QT6_RECORD
110private Q_SLOTS:
111 // menu
112 virtual void slotRecord(bool bRecord);
113 virtual void slotRecordPause(bool bPause);
114 // CFrmView
115 void slotRecordVideo(const QImage& img);
116Q_SIGNALS:
117 void sigRecordVideo(bool bRecord, qreal nRate = 0);
118private:
119 void RecordVideo(QRecordVideoEvent *event);
120 CParameterRecord* m_pParameterRecord;
121
122protected:
123 QVideoFrameInput m_VideoFrameInput;
124 QAudioBufferInput m_AudioBufferInput;
125 QAudioBufferOutput m_AudioBufferOutput;
126 QMediaRecorder m_Recorder;
127#endif
128#if HAVE_QT6_MULTIMEDIA
129 QMediaCaptureSession m_CaptureSession;
130#endif
131};
void sigUpdateRect(const QRect &r, const QImage &image)
通知视图,图像更新
int SetViewer(CFrmViewer *pView)
void sigUpdateRect(const QImage &image)
Notify the CFrmView update image
virtual void slotClipBoardChanged()=0
当剪切板发生改变时调用
virtual int Stop()
停止
CBackend(COperate *pOperate=nullptr, bool bStopSignal=true)
CBackend
用于显示从 CConnectDesktop 输出的图像,和向 CConnectDesktop 发送键盘、鼠标事件。
远程桌面操作接口