00a512484
김태훈
세척 모드 화면 추가
|
1
2
|
#include "washwindow.h"
#include "ui_washwindow.h"
|
05f2a7552
김태훈
image 관리 구조 변경
|
3
|
#include <QSignalMapper>
|
271dda4ae
김태훈
엔코더 구현
|
4
|
#include <QKeyEvent>
|
05f2a7552
김태훈
image 관리 구조 변경
|
5
|
|
ac60b5cec
김태훈
음향 효과 일부 적용 및 소스 ...
|
6
|
#include "soundplayer.h"
|
6d5da5fca
김태훈
청결/관리 상태 기능 반영
|
7
|
#include "dirtylevel.h"
|
e00c6a2a9
김태훈
기능 추가 구현
|
8
9
|
#include "configwindow.h"
#include "mainwindow.h"
|
ac60b5cec
김태훈
음향 효과 일부 적용 및 소스 ...
|
10
|
|
538041ab9
김태훈
소스 코드 구조 개선
|
11
|
WashWindow::WashWindow(QWidget *parent) :
|
00a512484
김태훈
세척 모드 화면 추가
|
12
|
QMainWindow(parent),
|
05f2a7552
김태훈
image 관리 구조 변경
|
13
|
ui(new Ui::WashWindow),
|
61ba89b34
김태훈
GUI V0.1.6
|
14
15
16
17
|
selected(false),
opened(false),
started(false),
run(false),
|
aa40dc807
김태훈
세척 모드 중 뒤로 가기 버튼을...
|
18
|
canceled(false),
|
61ba89b34
김태훈
GUI V0.1.6
|
19
|
type(0)
|
00a512484
김태훈
세척 모드 화면 추가
|
20
21
22
23
24
25
|
{
ui->setupUi(this);
ui->clockContainer->setParent(ui->upperStack);
ui->progressContainer->setParent(ui->upperStack);
setAttribute(Qt::WA_DeleteOnClose);
|
05f2a7552
김태훈
image 관리 구조 변경
|
26
|
|
538041ab9
김태훈
소스 코드 구조 개선
|
27
|
udp = UdpHandler::getInstance();
|
05f2a7552
김태훈
image 관리 구조 변경
|
28
|
connect(udp, SIGNAL(changed()), SLOT(onChanged()));
|
05f2a7552
김태훈
image 관리 구조 변경
|
29
|
ui->animation->load(":/images/animation/wash_04.png");
|
61ba89b34
김태훈
GUI V0.1.6
|
30
|
ui->closeDoorArrow->hide();
|
05f2a7552
김태훈
image 관리 구조 변경
|
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
QSignalMapper *sm = new QSignalMapper(this);
connect(sm, SIGNAL(mapped(int)), SLOT(start(int)));
sm->setMapping(ui->washButton_1, 1);
sm->setMapping(ui->washButton_2, 2);
sm->setMapping(ui->washButton_3, 3);
sm->setMapping(ui->washButton_4, 4);
sm->setMapping(ui->washButton_5, 5);
connect(ui->washButton_1, SIGNAL(clicked()), sm, SLOT(map()));
connect(ui->washButton_2, SIGNAL(clicked()), sm, SLOT(map()));
connect(ui->washButton_3, SIGNAL(clicked()), sm, SLOT(map()));
connect(ui->washButton_4, SIGNAL(clicked()), sm, SLOT(map()));
connect(ui->washButton_5, SIGNAL(clicked()), sm, SLOT(map()));
|
61ba89b34
김태훈
GUI V0.1.6
|
46
47
48
|
returnToClockTimer.setSingleShot(true);
returnToClockTimer.setInterval(10 * 1000);
connect(&returnToClockTimer, SIGNAL(timeout()), SLOT(returnToClock()));
|
bbd7d8f29
김태훈
버튼 음향 추가
|
49
50
51
|
foreach (QPushButton *button, findChildren<QPushButton *>())
connect(button, &QPushButton::pressed, SoundPlayer::playClick);
|
6d5da5fca
김태훈
청결/관리 상태 기능 반영
|
52
53
|
updateGauge();
|
271dda4ae
김태훈
엔코더 구현
|
54
55
|
setFocus();
|
00a512484
김태훈
세척 모드 화면 추가
|
56
57
58
59
60
61
|
}
WashWindow::~WashWindow()
{
delete ui;
}
|
05f2a7552
김태훈
image 관리 구조 변경
|
62
|
|
271dda4ae
김태훈
엔코더 구현
|
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
void WashWindow::keyPressEvent(QKeyEvent *event)
{
switch (event->key())
{
case 0x01000030: // Turn left
onEncoderLeft();
break;
case 0x01000031: // Push
pushed = focusWidget();
break;
case 0x01000032: // Turn right
onEncoderRight();
break;
}
}
void WashWindow::keyReleaseEvent(QKeyEvent *event)
{
switch (event->key())
{
case 0x01000030: // Turn left
onEncoderLeft();
break;
case 0x01000031: // Push
if (focusWidget() == pushed)
onEncoderClicked(pushed);
pushed = NULL;
break;
case 0x01000032: // Turn right
onEncoderRight();
break;
}
}
|
05f2a7552
김태훈
image 관리 구조 변경
|
97
98
|
void WashWindow::start(int type)
{
|
61ba89b34
김태훈
GUI V0.1.6
|
99
|
if (selected)
|
05f2a7552
김태훈
image 관리 구조 변경
|
100
101
102
103
|
return;
if (type < 1 || type > 5)
return;
|
61ba89b34
김태훈
GUI V0.1.6
|
104
|
selected = true;
|
05f2a7552
김태훈
image 관리 구조 변경
|
105
|
|
61ba89b34
김태훈
GUI V0.1.6
|
106
107
108
|
this->type = type;
returnToClockTimer.stop();
|
05f2a7552
김태훈
image 관리 구조 변경
|
109
|
|
61ba89b34
김태훈
GUI V0.1.6
|
110
111
112
113
114
115
|
ui->animation->clear();
ui->animation->load(":/images/animation/pull_01.png");
ui->animation->load(":/images/animation/pull_02.png");
ui->animation->load(":/images/animation/pull_03.png");
ui->animation->load(":/images/animation/pull_04.png");
ui->animation->show();
|
05f2a7552
김태훈
image 관리 구조 변경
|
116
|
ui->animation->start(300);
|
61ba89b34
김태훈
GUI V0.1.6
|
117
118
|
udp->set(TG_OVEN_MODE, 2);
|
05f2a7552
김태훈
image 관리 구조 변경
|
119
120
121
122
|
}
void WashWindow::stop()
{
|
aa40dc807
김태훈
세척 모드 중 뒤로 가기 버튼을...
|
123
124
125
126
127
128
129
|
if (!started)
return;
if (canceled)
return;
canceled = true;
|
05f2a7552
김태훈
image 관리 구조 변경
|
130
131
|
udp->turnOff(TG_CLEANING);
}
|
61ba89b34
김태훈
GUI V0.1.6
|
132
133
134
135
|
void WashWindow::returnToClock()
{
ui->upperStack->setCurrentIndex(0);
}
|
6d5da5fca
김태훈
청결/관리 상태 기능 반영
|
136
137
138
139
140
|
void WashWindow::updateGauge()
{
ui->dirtySlider->setValue(DirtyLevel::dirty());
ui->stateSlider->setValue(DirtyLevel::state());
}
|
05f2a7552
김태훈
image 관리 구조 변경
|
141
142
|
void WashWindow::onChanged()
{
|
61ba89b34
김태훈
GUI V0.1.6
|
143
|
if (!selected)
|
05f2a7552
김태훈
image 관리 구조 변경
|
144
|
return;
|
61ba89b34
김태훈
GUI V0.1.6
|
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
oven_state_t state;
udp->fillData(state);
if (!opened)
{
if (state.door_state)
{
opened = true;
ui->animation->clear();
ui->animation->load(":/images/animation/door_big_09.png");
ui->animation->load(":/images/animation/door_big_08.png");
ui->animation->load(":/images/animation/door_big_07.png");
ui->animation->load(":/images/animation/door_big_06.png");
ui->animation->load(":/images/animation/door_big_05.png");
ui->animation->load(":/images/animation/door_big_04.png");
ui->animation->load(":/images/animation/door_big_03.png");
ui->animation->load(":/images/animation/door_big_02.png");
ui->animation->load(":/images/animation/door_big_01.png");
ui->closeDoorArrow->show();
}
}
else if (!started)
{
if (!state.door_state)
{
started = true;
|
ac60b5cec
김태훈
음향 효과 일부 적용 및 소스 ...
|
173
|
SoundPlayer::playStart();
|
61ba89b34
김태훈
GUI V0.1.6
|
174
175
176
177
178
179
180
181
|
ui->closeDoorArrow->hide();
ui->animation->clear();
ui->animation->load(":/images/animation/wash_01.png");
ui->animation->load(":/images/animation/wash_02.png");
ui->animation->load(":/images/animation/wash_03.png");
ui->animation->load(":/images/animation/wash_04.png");
ui->washStepGauge->setValue(0);
|
3d5fe1187
고영탁
한글화 진행 washwindow...
|
182
183
184
|
ui->titleLabel->setText(tr("기기의 내부를 세척 중입니다"));
ui->descLabel->setText(tr("완료될 때까지 문을 열지 마세요.
기기의 내부의 자동 세척 기능을 실행 중입니다."));
|
61ba89b34
김태훈
GUI V0.1.6
|
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
ui->washStepTypeLabel->setText("");
ui->washStepCountLabel->setText("");
ui->upperStack->setCurrentIndex(1);
udp->set(TG_CLEAN_TYPE, type);
udp->turnOn(TG_CLEANING);
}
}
else if (state.cleaning_sate)
{
if (!run)
run = true;
oven_control_t control;
udp->fillControl(control);
if (control.clean_total != 0 && control.clean_step != 0 && control.clean_step_type != 0)
{
ui->washStepGauge->setMaximum(control.clean_total);
ui->washStepGauge->setValue(control.clean_step);
ui->washStepCountLabel->setText(QString().sprintf("%d/%d", control.clean_step, control.clean_total));
switch (control.clean_step_type)
{
case 1:
|
3d5fe1187
고영탁
한글화 진행 washwindow...
|
211
|
ui->washStepTypeLabel->setText(tr("내부 헹굼 진행 중입니다."));
|
61ba89b34
김태훈
GUI V0.1.6
|
212
213
|
break;
case 2:
|
3d5fe1187
고영탁
한글화 진행 washwindow...
|
214
|
ui->washStepTypeLabel->setText(tr("스팀 급수 진행 중입니다."));
|
61ba89b34
김태훈
GUI V0.1.6
|
215
216
|
break;
case 3:
|
3d5fe1187
고영탁
한글화 진행 washwindow...
|
217
|
ui->washStepTypeLabel->setText(tr("내부 팬 세척 진행 중입니다."));
|
61ba89b34
김태훈
GUI V0.1.6
|
218
219
|
break;
case 4:
|
3d5fe1187
고영탁
한글화 진행 washwindow...
|
220
|
ui->washStepTypeLabel->setText(tr("내부 스팀 불림 진행 중입니다."));
|
61ba89b34
김태훈
GUI V0.1.6
|
221
222
|
break;
case 5:
|
3d5fe1187
고영탁
한글화 진행 washwindow...
|
223
|
ui->washStepTypeLabel->setText(tr("내부 강 세척 진행 중입니다."));
|
61ba89b34
김태훈
GUI V0.1.6
|
224
225
|
break;
case 6:
|
3d5fe1187
고영탁
한글화 진행 washwindow...
|
226
|
ui->washStepTypeLabel->setText(tr("내부 상부 세척 진행 중입니다."));
|
61ba89b34
김태훈
GUI V0.1.6
|
227
228
|
break;
case 7:
|
3d5fe1187
고영탁
한글화 진행 washwindow...
|
229
|
ui->washStepTypeLabel->setText(tr("내부 스팀 세척 진행 중입니다."));
|
61ba89b34
김태훈
GUI V0.1.6
|
230
231
|
break;
case 8:
|
3d5fe1187
고영탁
한글화 진행 washwindow...
|
232
|
ui->washStepTypeLabel->setText(tr("세척 종료 진행 중입니다."));
|
61ba89b34
김태훈
GUI V0.1.6
|
233
234
|
break;
case 9:
|
3d5fe1187
고영탁
한글화 진행 washwindow...
|
235
|
ui->washStepTypeLabel->setText(tr("세제 세척수 만들기 진행 중입니다."));
|
61ba89b34
김태훈
GUI V0.1.6
|
236
237
|
break;
case 10:
|
3d5fe1187
고영탁
한글화 진행 washwindow...
|
238
|
ui->washStepTypeLabel->setText(tr("세제 세척수 헹굼 진행 중입니다."));
|
61ba89b34
김태훈
GUI V0.1.6
|
239
240
|
break;
case 11:
|
3d5fe1187
고영탁
한글화 진행 washwindow...
|
241
|
ui->washStepTypeLabel->setText(tr("하부 탱크 세척수 만들기 진행 중입니다."));
|
61ba89b34
김태훈
GUI V0.1.6
|
242
243
244
245
|
break;
}
}
}
|
aa40dc807
김태훈
세척 모드 중 뒤로 가기 버튼을...
|
246
247
|
else if (canceled)
{
|
ac60b5cec
김태훈
음향 효과 일부 적용 및 소스 ...
|
248
|
SoundPlayer::playStop();
|
aa40dc807
김태훈
세척 모드 중 뒤로 가기 버튼을...
|
249
250
|
close();
}
|
61ba89b34
김태훈
GUI V0.1.6
|
251
252
|
else if (run)
{
|
ac60b5cec
김태훈
음향 효과 일부 적용 및 소스 ...
|
253
|
SoundPlayer::playStop();
|
6d5da5fca
김태훈
청결/관리 상태 기능 반영
|
254
|
DirtyLevel::wash(type);
|
ac60b5cec
김태훈
음향 효과 일부 적용 및 소스 ...
|
255
|
|
3d5fe1187
고영탁
한글화 진행 washwindow...
|
256
|
ui->titleLabel->setText(tr("세척이 종료되었습니다"));
|
aa40dc807
김태훈
세척 모드 중 뒤로 가기 버튼을...
|
257
258
|
ui->descLabel->setText("");
ui->washStepTypeLabel->setText("");
|
61ba89b34
김태훈
GUI V0.1.6
|
259
260
261
262
263
264
265
266
267
268
269
270
|
ui->washStepCountLabel->setText("");
ui->animation->stop();
ui->animation->clear();
ui->animation->load(":/images/animation/wash_04.png");
returnToClockTimer.start();
selected = false;
opened = false;
started = false;
run = false;
|
6d5da5fca
김태훈
청결/관리 상태 기능 반영
|
271
272
|
updateGauge();
|
61ba89b34
김태훈
GUI V0.1.6
|
273
|
}
|
05f2a7552
김태훈
image 관리 구조 변경
|
274
275
276
277
|
}
void WashWindow::on_backButton_clicked()
{
|
aa40dc807
김태훈
세척 모드 중 뒤로 가기 버튼을...
|
278
279
280
281
|
if (started)
stop();
else
close();
|
05f2a7552
김태훈
image 관리 구조 변경
|
282
|
}
|
ac60b5cec
김태훈
음향 효과 일부 적용 및 소스 ...
|
283
284
285
|
void WashWindow::on_configButton_clicked()
{
|
e00c6a2a9
김태훈
기능 추가 구현
|
286
287
288
289
290
291
292
293
|
if (started)
stop();
else
{
ConfigWindow *w = new ConfigWindow(MainWindow::getInstance());
w->setWindowModality(Qt::WindowModal);
w->showFullScreen();
w->raise();
|
ac60b5cec
김태훈
음향 효과 일부 적용 및 소스 ...
|
294
|
|
e00c6a2a9
김태훈
기능 추가 구현
|
295
296
|
MainWindow::jump(w);
}
|
ac60b5cec
김태훈
음향 효과 일부 적용 및 소스 ...
|
297
298
299
300
|
}
void WashWindow::on_helpButton_clicked()
{
|
ac60b5cec
김태훈
음향 효과 일부 적용 및 소스 ...
|
301
302
|
}
|
271dda4ae
김태훈
엔코더 구현
|
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
|
void WashWindow::onEncoderLeft()
{
focusPreviousChild();
}
void WashWindow::onEncoderRight()
{
focusNextChild();
}
void WashWindow::onEncoderClicked(QWidget *clicked)
{
QPushButton *b = qobject_cast<QPushButton *>(clicked);
if (b)
b->click();
}
|