1 /*
2 * Copyright (c) 2020-2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "main_widget.h"
17 #include <QMetaType>
18
19 namespace OHOS {
MainWidget(QWidget * parent)20 MainWidget::MainWidget(QWidget* parent) : QWidget(parent), guiThread_(nullptr), taskThread_(nullptr)
21 {
22 if (ui_ != nullptr) {
23 ui_->setupUi(this);
24 CreateGUIThread();
25 CreateTaskThread();
26 CreateSocketThread();
27 }
28 }
29
~MainWidget()30 MainWidget::~MainWidget()
31 {
32 if (ui_ != nullptr) {
33 delete ui_;
34 }
35 if (guiThread_ != nullptr) {
36 guiThread_->Quit();
37 guiThread_->wait();
38 delete guiThread_;
39 }
40 if (taskThread_ != nullptr) {
41 taskThread_->Quit();
42 taskThread_->wait();
43 delete taskThread_;
44 }
45 if (socketThread_ != nullptr) {
46 socketThread_->Quit();
47 socketThread_->wait();
48 delete socketThread_;
49 }
50 }
51
CreateGUIThread()52 void MainWidget::CreateGUIThread()
53 {
54 guiThread_ = new GUIThread(nullptr);
55 if (guiThread_ != nullptr) {
56 guiThread_->start();
57 qRegisterMetaType<uint32_t>("uint32_t");
58 connect(guiThread_->GetMonitor(), SIGNAL(UpdatePaintSignal(uint32_t*, uint32_t, uint32_t)), this,
59 SLOT(UpdatePaintSlot(uint32_t*, uint32_t, uint32_t)));
60 }
61 }
62
CreateTaskThread()63 void MainWidget::CreateTaskThread()
64 {
65 taskThread_ = new TaskThread();
66 if (taskThread_ != nullptr) {
67 taskThread_->start();
68 }
69 }
70
CreateSocketThread()71 void MainWidget::CreateSocketThread()
72 {
73 socketThread_ = new SocketThread();
74 if (socketThread_ != nullptr) {
75 socketThread_->start();
76 qRegisterMetaType<size_t>("size_t");
77 connect(socketThread_->GetClientManager(), SIGNAL(SendMsgSignal(size_t)), this,
78 SLOT(SendMsgSlot(size_t)));
79 }
80 }
81
paintEvent(QPaintEvent * event)82 void MainWidget::paintEvent(QPaintEvent* event)
83 {
84 Q_UNUSED(event)
85 QPainter painter(this);
86 painter.drawImage(0, 0, img_);
87 }
88
mouseMoveEvent(QMouseEvent * event)89 void MainWidget::mouseMoveEvent(QMouseEvent* event)
90 {
91 MouseInput::GetInstance()->MouseHandler(event);
92 }
93
mousePressEvent(QMouseEvent * event)94 void MainWidget::mousePressEvent(QMouseEvent* event)
95 {
96 #if USE_MOUSE != 0
97 MouseInput::GetInstance()->MouseHandler(event);
98 #endif
99 }
100
mouseReleaseEvent(QMouseEvent * event)101 void MainWidget::mouseReleaseEvent(QMouseEvent* event)
102 {
103 #if USE_MOUSE != 0
104 MouseInput::GetInstance()->MouseHandler(event);
105 #endif
106 }
wheelEvent(QWheelEvent * event)107 void MainWidget::wheelEvent(QWheelEvent* event)
108 {
109 #if USE_MOUSEWHEEL && ENABLE_ROTATE_INPUT
110 MousewheelInput::GetInstance()->MousewheelHandler(event);
111 #endif
112 }
113
keyPressEvent(QKeyEvent * event)114 void MainWidget::keyPressEvent(QKeyEvent* event)
115 {
116 #if USE_KEY != 0
117 KeyInput::GetInstance()->KeyHandler(event);
118 #endif
119 }
keyReleaseEvent(QKeyEvent * event)120 void MainWidget::keyReleaseEvent(QKeyEvent* event)
121 {
122 #if USE_KEY != 0
123 KeyInput::GetInstance()->KeyHandler(event);
124 #endif
125 }
126 } // namespace OHOS
127