99b8066f4
김태훈
V0.1.1
|
1
2
|
#include "autocookwindow.h"
#include "ui_autocookwindow.h"
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
3
4
5
|
#include "keepwarmpopup.h"
AutoCookWindow::AutoCookWindow(QWidget *parent, Cook cook) :
|
99b8066f4
김태훈
V0.1.1
|
6
7
|
QMainWindow(parent),
ui(new Ui::AutoCookWindow),
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
8
|
cook(cook)
|
99b8066f4
김태훈
V0.1.1
|
9
10
|
{
ui->setupUi(this);
|
99b8066f4
김태훈
V0.1.1
|
11
|
ui->clockContainer->setParent(ui->upperStack);
|
6f96c947a
김태훈
GUI 0.1.4
|
12
|
setAttribute(Qt::WA_DeleteOnClose);
|
99b8066f4
김태훈
V0.1.1
|
13
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
14
15
16
17
|
autocook = AutoCook(cook);
processSelected = false;
setupUi();
|
99b8066f4
김태훈
V0.1.1
|
18
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
19
20
|
Oven *oven = Oven::getInstance();
connect(oven, SIGNAL(changed(Oven*)), SLOT(updateView()));
|
99b8066f4
김태훈
V0.1.1
|
21
22
23
24
|
returnToCurrentStepTimer.setSingleShot(true);
returnToCurrentStepTimer.setInterval(3000);
connect(&returnToCurrentStepTimer, SIGNAL(timeout()), SLOT(returnToCurrentStep()));
|
99b8066f4
김태훈
V0.1.1
|
25
26
27
|
showCurrentHumidityTimer.setSingleShot(true);
showCurrentHumidityTimer.setInterval(3000);
connect(&showCurrentHumidityTimer, SIGNAL(timeout()), SLOT(showCurrentHumidity()));
|
99b8066f4
김태훈
V0.1.1
|
28
29
30
|
showCurrentTempTimer.setSingleShot(true);
showCurrentTempTimer.setInterval(3000);
connect(&showCurrentTempTimer, SIGNAL(timeout()), SLOT(showCurrentTemp()));
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
31
32
|
connect(&checkCookTimer, SIGNAL(timeout()), SLOT(checkCook()));
checkCookTimer.start(100);
|
d66d7f5b4
김태훈
GUI 버전 0.1.2
|
33
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
34
|
connect(&checkProcessTimer, SIGNAL(timeout()), SLOT(checkProcess()));
|
99b8066f4
김태훈
V0.1.1
|
35
36
37
38
39
40
41
42
43
|
}
AutoCookWindow::~AutoCookWindow()
{
delete ui;
}
void AutoCookWindow::setupUi()
{
|
05f2a7552
김태훈
image 관리 구조 변경
|
44
45
46
47
48
|
bulletPixmap.load(":/images/symbol/step_bullet.png");
selectedBulletPixmap.load(":/images/symbol/selected_step_bullet.png");
steamModeIcon.load(":/images/cook_mode/small_steam.png");
dryModeIcon.load(":/images/cook_mode/small_dryheat.png");
combiModeIcon.load(":/images/cook_mode/small_combi.png");
|
6f96c947a
김태훈
GUI 0.1.4
|
49
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
50
51
|
ui->cookTypeIcon->setPixmap(Define::icon(cook.type));
ui->selectCookButton->setText(cook.name);
|
99b8066f4
김태훈
V0.1.1
|
52
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
53
|
int offsetX = (900 - (cook.steps.size() * 19 * 2 - 19)) / 2;
|
99b8066f4
김태훈
V0.1.1
|
54
|
int offsetY = 1150;
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
55
|
for (int idx = 0; idx < cook.steps.size(); idx++)
|
99b8066f4
김태훈
V0.1.1
|
56
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
57
|
QLabel *bullet = new QLabel(this);
|
99b8066f4
김태훈
V0.1.1
|
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
bullet->setPixmap(bulletPixmap);
bullet->setGeometry(offsetX + 19 * 2 * idx, offsetY, 19, 19);
bullets.append(bullet);
}
ui->cookStepAnimation->start(300);
ui->humidityGauge->setMinimum(0);
ui->humidityGauge->setMaximum(100);
ui->humidityGauge->setValue(0);
ui->heatGauge->setMinimum(30);
ui->heatGauge->setMaximum(300);
ui->heatGauge->setValue(30);
|
05f2a7552
김태훈
image 관리 구조 변경
|
72
73
74
75
76
77
78
79
80
|
ui->openDoorAnimation->load(":/images/animation/door_01.png");
ui->openDoorAnimation->load(":/images/animation/door_02.png");
ui->openDoorAnimation->load(":/images/animation/door_03.png");
ui->openDoorAnimation->load(":/images/animation/door_04.png");
ui->openDoorAnimation->load(":/images/animation/door_05.png");
ui->openDoorAnimation->load(":/images/animation/door_06.png");
ui->openDoorAnimation->load(":/images/animation/door_07.png");
ui->openDoorAnimation->load(":/images/animation/door_08.png");
ui->openDoorAnimation->load(":/images/animation/door_09.png");
|
6f96c947a
김태훈
GUI 0.1.4
|
81
82
83
|
ui->openDoorAnimation->start(300);
ui->openDoorAnimation->hide();
ui->openDoorArrow->hide();
|
05f2a7552
김태훈
image 관리 구조 변경
|
84
85
86
87
88
89
90
91
92
|
ui->closeDoorAnimation->load(":/images/animation/door_09.png");
ui->closeDoorAnimation->load(":/images/animation/door_08.png");
ui->closeDoorAnimation->load(":/images/animation/door_07.png");
ui->closeDoorAnimation->load(":/images/animation/door_06.png");
ui->closeDoorAnimation->load(":/images/animation/door_05.png");
ui->closeDoorAnimation->load(":/images/animation/door_04.png");
ui->closeDoorAnimation->load(":/images/animation/door_03.png");
ui->closeDoorAnimation->load(":/images/animation/door_02.png");
ui->closeDoorAnimation->load(":/images/animation/door_01.png");
|
6f96c947a
김태훈
GUI 0.1.4
|
93
94
95
|
ui->closeDoorAnimation->start(300);
ui->closeDoorAnimation->hide();
ui->closeDoorArrow->hide();
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
96
97
98
99
100
101
102
103
104
|
lastViewCookMode = Define::InvalidMode;
lastViewCookType = Define::Invalid;
lastViewCoreTemp = 999;
lastViewDoorType = Define::Invalid;
lastViewTime = 0;
lastViewStepIndex = -1;
selectedStepIndex = 0;
showingCurrentHumidity = false;
showingCurrentTemp = false;
|
99b8066f4
김태훈
V0.1.1
|
105
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
106
|
if (autocook.cook.processes.isEmpty())
|
99b8066f4
김태훈
V0.1.1
|
107
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
108
109
110
111
112
|
ui->processTitleLabel->hide();
ui->processTypeLabel->hide();
ui->processButton_1->hide();
ui->processButton_2->hide();
ui->processButton_3->hide();
|
99b8066f4
김태훈
V0.1.1
|
113
114
115
|
}
else
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
116
117
118
|
QString typeText;
QSignalMapper *sm = NULL;
for (int i = 0; i < 3; i++)
|
99b8066f4
김태훈
V0.1.1
|
119
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
120
121
|
QPushButton *pb;
switch (i)
|
99b8066f4
김태훈
V0.1.1
|
122
123
|
{
case 0:
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
124
|
pb = ui->processButton_1;
|
99b8066f4
김태훈
V0.1.1
|
125
126
|
break;
case 1:
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
127
|
pb = ui->processButton_2;
|
99b8066f4
김태훈
V0.1.1
|
128
129
|
break;
case 2:
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
130
|
pb = ui->processButton_3;
|
99b8066f4
김태훈
V0.1.1
|
131
132
|
break;
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
133
|
if (i < autocook.cook.processes.size())
|
99b8066f4
김태훈
V0.1.1
|
134
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
135
136
137
138
139
140
141
142
143
144
145
|
if (sm == NULL)
{
sm = new QSignalMapper(this);
connect(sm, SIGNAL(mapped(int)), SLOT(startProcess(int)));
}
Define::Process process = autocook.cook.processes[i];
QString text = Define::name(process);
if (typeText.isEmpty())
typeText = text;
|
6f96c947a
김태훈
GUI 0.1.4
|
146
|
else
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
typeText += ", " + text;
QString styleSheet = QString("QPushButton { border-image: url(%1) } QPushButton:pressed { border-image: url(%2) }")
.arg(Define::icon(process))
.arg(Define::iconOverlay(process));
pb->setStyleSheet(styleSheet);
sm->setMapping(pb, (int) process);
connect(pb, SIGNAL(clicked()), sm, SLOT(map()));
}
else
{
pb->hide();
|
99b8066f4
김태훈
V0.1.1
|
161
162
|
}
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
163
|
ui->processTypeLabel->setText(typeText);
|
99b8066f4
김태훈
V0.1.1
|
164
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
165
166
167
168
|
ui->processContainer->hide();
updateView();
|
99b8066f4
김태훈
V0.1.1
|
169
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
170
|
void AutoCookWindow::updateView()
|
99b8066f4
김태훈
V0.1.1
|
171
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
172
173
174
175
176
177
178
|
Oven *oven = Oven::getInstance();
QString spanFontSize11("<span style=\"font-size:11pt\">%1</span>");
QString spanFontSize9("<span style=\"font-size:9pt\">%1</span>");
int remainingTime = qMax(0, autocook.remainingTime());
if (remainingTime != lastViewTime)
|
99b8066f4
김태훈
V0.1.1
|
179
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
lastViewTime = remainingTime;
QString hour = spanFontSize11.arg("시간");
QString min = spanFontSize11.arg("분");
QString sec = spanFontSize11.arg("초");
if (remainingTime >= 3600)
ui->timeLabel->setText(QString("%1%2 %3%4")
.arg(remainingTime / 3600)
.arg(hour)
.arg((remainingTime % 3600) / 60, 2, 10, QLatin1Char('0'))
.arg(min));
else if (remainingTime >= 60)
ui->timeLabel->setText(QString("%1%2 %3%4")
.arg(remainingTime / 60)
.arg(min)
.arg(remainingTime % 60, 2, 10, QLatin1Char('0'))
.arg(sec));
else
ui->timeLabel->setText(QString("%1%2")
.arg(remainingTime)
.arg(sec));
|
99b8066f4
김태훈
V0.1.1
|
202
|
}
|
99b8066f4
김태훈
V0.1.1
|
203
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
204
205
206
207
|
int coreTemp = oven->currentInterTemp();
if (coreTemp != lastViewCoreTemp)
{
lastViewCoreTemp = coreTemp;
|
99b8066f4
김태훈
V0.1.1
|
208
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
209
210
211
212
213
|
QString coreTempLabel = QString::number(coreTemp);
if (cook.isCoreTempValid())
coreTempLabel += spanFontSize11.arg("℃ / " + QString::number(cook.coreTemp())) + spanFontSize9.arg("℃");
else
coreTempLabel += spanFontSize11.arg("℃");
|
99b8066f4
김태훈
V0.1.1
|
214
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
215
|
ui->interTempLabel->setText(coreTempLabel);
|
99b8066f4
김태훈
V0.1.1
|
216
|
}
|
99b8066f4
김태훈
V0.1.1
|
217
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
218
|
if (autocook.done())
|
99b8066f4
김태훈
V0.1.1
|
219
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
220
221
222
223
|
if (!oven->door())
{
if (ui->openDoorAnimation->isHidden())
ui->openDoorAnimation->show();
|
6f96c947a
김태훈
GUI 0.1.4
|
224
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
225
226
227
228
229
230
231
232
233
234
|
if (ui->openDoorArrow->isHidden())
ui->openDoorArrow->show();
if (ui->closeDoorAnimation->isVisible())
ui->closeDoorAnimation->hide();
if (ui->closeDoorArrow->isVisible())
ui->closeDoorArrow->hide();
}
else
|
6f96c947a
김태훈
GUI 0.1.4
|
235
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
236
237
238
239
240
241
242
243
244
245
246
|
if (ui->openDoorAnimation->isVisible())
ui->openDoorAnimation->hide();
if (ui->openDoorArrow->isVisible())
ui->openDoorArrow->hide();
if (ui->closeDoorAnimation->isVisible())
ui->closeDoorAnimation->hide();
if (ui->closeDoorArrow->isVisible())
ui->closeDoorArrow->hide();
|
6f96c947a
김태훈
GUI 0.1.4
|
247
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
248
249
250
|
if (ui->processContainer->isHidden())
ui->processContainer->show();
|
99b8066f4
김태훈
V0.1.1
|
251
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
252
253
254
255
|
else if (autocook.isWaitingDoorOpened() && !oven->door())
{
if (ui->openDoorAnimation->isHidden())
ui->openDoorAnimation->show();
|
99b8066f4
김태훈
V0.1.1
|
256
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
257
258
|
if (ui->openDoorArrow->isHidden())
ui->openDoorArrow->show();
|
99b8066f4
김태훈
V0.1.1
|
259
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
260
261
|
if (ui->closeDoorAnimation->isVisible())
ui->closeDoorAnimation->hide();
|
99b8066f4
김태훈
V0.1.1
|
262
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
263
264
|
if (ui->closeDoorArrow->isVisible())
ui->closeDoorArrow->hide();
|
99b8066f4
김태훈
V0.1.1
|
265
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
266
267
268
269
|
else if (!autocook.isWaitingDoorOpened() && oven->door())
{
if (ui->openDoorAnimation->isVisible())
ui->openDoorAnimation->hide();
|
99b8066f4
김태훈
V0.1.1
|
270
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
271
272
|
if (ui->openDoorArrow->isVisible())
ui->openDoorArrow->hide();
|
99b8066f4
김태훈
V0.1.1
|
273
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
274
275
|
if (ui->closeDoorAnimation->isHidden())
ui->closeDoorAnimation->show();
|
99b8066f4
김태훈
V0.1.1
|
276
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
277
278
279
280
281
282
283
|
if (ui->closeDoorArrow->isHidden())
ui->closeDoorArrow->show();
}
else
{
if (ui->openDoorAnimation->isVisible())
ui->openDoorAnimation->hide();
|
99b8066f4
김태훈
V0.1.1
|
284
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
285
286
|
if (ui->openDoorArrow->isVisible())
ui->openDoorArrow->hide();
|
99b8066f4
김태훈
V0.1.1
|
287
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
288
289
|
if (ui->closeDoorAnimation->isVisible())
ui->closeDoorAnimation->hide();
|
99b8066f4
김태훈
V0.1.1
|
290
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
291
292
293
|
if (ui->closeDoorArrow->isVisible())
ui->closeDoorArrow->hide();
}
|
99b8066f4
김태훈
V0.1.1
|
294
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
295
296
297
298
|
if (autocook.cook.steps[autocook.currentStepIndex].type == Define::Preheat)
{
if (ui->preheatIcon->isHidden())
ui->preheatIcon->show();
|
6f96c947a
김태훈
GUI 0.1.4
|
299
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
300
301
|
if (ui->preheatLabel->isHidden())
ui->preheatLabel->show();
|
6f96c947a
김태훈
GUI 0.1.4
|
302
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
303
304
305
306
307
308
309
310
|
if (ui->preheatGauge->isHidden())
ui->preheatGauge->show();
ui->preheatGauge->setMaximum(autocook.cook.steps[autocook.currentStepIndex].temp);
ui->preheatGauge->setMinimum(autocook.startTemp);
ui->preheatGauge->setValue(oven->currentTemp());
}
else
|
99b8066f4
김태훈
V0.1.1
|
311
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
312
313
|
if (ui->preheatIcon->isVisible())
ui->preheatIcon->hide();
|
d66d7f5b4
김태훈
GUI 버전 0.1.2
|
314
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
315
316
|
if (ui->preheatLabel->isVisible())
ui->preheatLabel->hide();
|
6f96c947a
김태훈
GUI 0.1.4
|
317
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
318
319
|
if (ui->preheatGauge->isVisible())
ui->preheatGauge->hide();
|
99b8066f4
김태훈
V0.1.1
|
320
|
}
|
99b8066f4
김태훈
V0.1.1
|
321
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
322
|
if (selectedStepIndex != lastViewStepIndex)
|
99b8066f4
김태훈
V0.1.1
|
323
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
324
|
lastViewStepIndex = selectedStepIndex;
|
d66d7f5b4
김태훈
GUI 버전 0.1.2
|
325
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
326
327
328
329
330
331
332
|
for (int idx = 0; idx < bullets.length(); idx++)
{
QLabel *bullet = bullets.at(idx);
if (idx == selectedStepIndex)
bullet->setPixmap(selectedBulletPixmap);
else
bullet->setPixmap(bulletPixmap);
|
d66d7f5b4
김태훈
GUI 버전 0.1.2
|
333
334
|
}
}
|
99b8066f4
김태훈
V0.1.1
|
335
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
336
337
|
CookStep showingStep = autocook.cook.steps[selectedStepIndex];
if (Define::classify(showingStep.type) == Define::DoorClass)
|
99b8066f4
김태훈
V0.1.1
|
338
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
339
340
|
if (ui->cookStepIcon->isVisible())
ui->cookStepIcon->hide();
|
d66d7f5b4
김태훈
GUI 버전 0.1.2
|
341
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
|
if (ui->cookStepLabel->isVisible())
ui->cookStepLabel->hide();
if (ui->cookModeIcon->isVisible())
ui->cookModeIcon->hide();
if (ui->humidityGauge->isVisible())
ui->humidityGauge->hide();
if (ui->humidityGaugeButton->isVisible())
ui->humidityGaugeButton->hide();
if (ui->humidityLabel->isVisible())
ui->humidityLabel->hide();
if (ui->heatGauge->isVisible())
ui->heatGauge->hide();
if (ui->heatGaugeButton->isVisible())
ui->heatGaugeButton->hide();
if (ui->heatLabel->isVisible())
ui->heatLabel->hide();
if (ui->doorStepLabel->isHidden())
ui->doorStepLabel->show();
if (ui->cookStepAnimation->isHidden())
ui->cookStepAnimation->show();
if (showingStep.type != lastViewDoorType)
|
99b8066f4
김태훈
V0.1.1
|
373
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
374
|
lastViewDoorType = showingStep.type;
|
d66d7f5b4
김태훈
GUI 버전 0.1.2
|
375
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
|
ui->doorStepLabel->setText(Define::name(showingStep.type));
ui->cookStepAnimation->clear();
switch (showingStep.type)
{
case Define::PutThermometer:
ui->doorStepLabel->setText("중심 온도계 삽입");
ui->cookStepAnimation->load(":/images/animation/thermometer_01.png");
ui->cookStepAnimation->load(":/images/animation/thermometer_02.png");
ui->cookStepAnimation->setGeometry((900-210)/2, 800, 210, 307);
ui->cookStepAnimation->start(300);
break;
case Define::Load:
ui->doorStepLabel->setText("식재료 적재");
ui->cookStepAnimation->load(":/images/animation/load_01.png");
ui->cookStepAnimation->load(":/images/animation/load_02.png");
ui->cookStepAnimation->load(":/images/animation/load_03.png");
ui->cookStepAnimation->load(":/images/animation/load_04.png");
ui->cookStepAnimation->load(":/images/animation/load_03.png");
ui->cookStepAnimation->load(":/images/animation/load_02.png");
ui->cookStepAnimation->load(":/images/animation/load_01.png");
ui->cookStepAnimation->setGeometry((900-264)/2, 800, 264, 307);
ui->cookStepAnimation->start(300);
break;
case Define::Cut:
ui->doorStepLabel->setText("자르기");
ui->cookStepAnimation->load(":/images/animation/cut_01.png");
ui->cookStepAnimation->load(":/images/animation/cut_02.png");
ui->cookStepAnimation->load(":/images/animation/cut_03.png");
ui->cookStepAnimation->setGeometry((900-264)/2, 800, 264, 307);
ui->cookStepAnimation->start(300);
break;
case Define::Pour:
ui->doorStepLabel->setText("물 붓기");
ui->cookStepAnimation->load(":/images/animation/pour_01.png");
ui->cookStepAnimation->load(":/images/animation/pour_02.png");
ui->cookStepAnimation->load(":/images/animation/pour_03.png");
ui->cookStepAnimation->load(":/images/animation/pour_04.png");
ui->cookStepAnimation->setGeometry((900-264)/2, 800, 264, 307);
ui->cookStepAnimation->start(300);
break;
default:
ui->doorStepLabel->hide();
ui->cookStepAnimation->hide();
|
99b8066f4
김태훈
V0.1.1
|
419
420
421
|
}
}
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
422
|
else
|
6f96c947a
김태훈
GUI 0.1.4
|
423
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
|
if (ui->doorStepLabel->isVisible())
ui->doorStepLabel->hide();
if (ui->cookStepAnimation->isVisible())
ui->cookStepAnimation->hide();
if (ui->cookStepIcon->isHidden())
ui->cookStepIcon->show();
if (ui->cookStepLabel->isHidden())
ui->cookStepLabel->show();
if (ui->cookModeIcon->isHidden())
ui->cookModeIcon->show();
if (ui->humidityGauge->isHidden())
ui->humidityGauge->show();
if (ui->humidityGaugeButton->isHidden())
ui->humidityGaugeButton->show();
if (ui->humidityLabel->isHidden())
ui->humidityLabel->show();
if (ui->heatGauge->isHidden())
ui->heatGauge->show();
if (ui->heatGaugeButton->isHidden())
ui->heatGaugeButton->show();
if (ui->heatLabel->isHidden())
ui->heatLabel->show();
if (showingStep.type != lastViewCookType)
|
6f96c947a
김태훈
GUI 0.1.4
|
458
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
459
|
lastViewCookType = showingStep.type;
|
6f96c947a
김태훈
GUI 0.1.4
|
460
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
461
462
|
ui->cookStepIcon->setPixmap(Define::icon(showingStep.type));
ui->cookStepLabel->setText(Define::name(showingStep.type));
|
6f96c947a
김태훈
GUI 0.1.4
|
463
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
464
465
|
if (showingStep.mode != lastViewCookMode)
|
6f96c947a
김태훈
GUI 0.1.4
|
466
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
467
|
lastViewCookMode = showingStep.mode;
|
6f96c947a
김태훈
GUI 0.1.4
|
468
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
469
470
471
472
473
474
475
476
477
478
479
480
481
482
|
switch (showingStep.mode)
{
case Define::SteamMode:
ui->cookModeIcon->setPixmap(steamModeIcon);
break;
case Define::CombiMode:
ui->cookModeIcon->setPixmap(combiModeIcon);
break;
case Define::DryMode:
ui->cookModeIcon->setPixmap(dryModeIcon);
break;
case Define::InvalidClass:
ui->cookModeIcon->hide();
break;
|
6f96c947a
김태훈
GUI 0.1.4
|
483
484
|
}
}
|
d66d7f5b4
김태훈
GUI 버전 0.1.2
|
485
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
486
|
ui->humidityGauge->setValue(showingStep.humidity);
|
99b8066f4
김태훈
V0.1.1
|
487
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
488
489
490
491
492
|
int humidity;
if (showingCurrentHumidity)
humidity = oven->currentHumidity();
else
humidity = showingStep.humidity;
|
99b8066f4
김태훈
V0.1.1
|
493
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
494
495
496
497
498
|
if (humidity != lastViewHumidity)
{
lastViewHumidity = humidity;
ui->humidityLabel->setText(QString("%1%").arg(humidity));
}
|
99b8066f4
김태훈
V0.1.1
|
499
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
500
|
ui->heatGauge->setValue(showingStep.temp);
|
99b8066f4
김태훈
V0.1.1
|
501
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
502
503
504
505
506
|
int temp;
if (showingCurrentTemp)
temp = oven->currentTemp();
else
temp = showingStep.temp;
|
99b8066f4
김태훈
V0.1.1
|
507
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
508
509
510
511
512
|
if (temp != lastViewTemp)
{
lastViewTemp = temp;
ui->heatLabel->setText(QString("%1℃").arg(temp));
}
|
99b8066f4
김태훈
V0.1.1
|
513
514
515
516
517
|
}
}
void AutoCookWindow::checkCook()
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
518
519
|
int lastStepIndex = autocook.currentStepIndex;
if (autocook.advance())
|
99b8066f4
김태훈
V0.1.1
|
520
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
521
522
523
524
525
|
if (lastStepIndex != autocook.currentStepIndex)
selectedStepIndex = autocook.currentStepIndex;
if (autocook.done())
checkCookTimer.stop();
|
99b8066f4
김태훈
V0.1.1
|
526
527
528
529
|
}
updateView();
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
530
|
void AutoCookWindow::startProcess(int process)
|
99b8066f4
김태훈
V0.1.1
|
531
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
532
533
|
if (processSelected)
return;
|
99b8066f4
김태훈
V0.1.1
|
534
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
535
|
processSelected = true;
|
99b8066f4
김태훈
V0.1.1
|
536
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
537
538
539
540
541
542
|
Define::Process p = (Define::Process) process;
switch (p)
{
case Define::CookAgain:
{
close();
|
99b8066f4
김태훈
V0.1.1
|
543
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
544
545
546
547
|
AutoCookWindow *w = new AutoCookWindow(parentWidget(), cook);
w->setWindowModality(Qt::WindowModal);
w->showFullScreen();
w->raise();
|
99b8066f4
김태훈
V0.1.1
|
548
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
549
550
551
552
553
|
break;
}
case Define::MakeCrisper:
{
selectedProcess = (Define::Process) process;
|
99b8066f4
김태훈
V0.1.1
|
554
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
555
|
CookStep &step = autocook.cook.steps[autocook.cook.steps.size() - 1];
|
99b8066f4
김태훈
V0.1.1
|
556
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
557
558
559
560
|
Oven *oven = Oven::getInstance();
oven->setHumidity(step.humidity);
oven->setTemp(step.temp + 10);
oven->startCooking();
|
99b8066f4
김태훈
V0.1.1
|
561
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
562
563
564
565
566
567
568
|
checkProcessTimer.start(100);
break;
}
case Define::KeepWarm:
{
processSelected = false;
selectedProcess = (Define::Process) process;
|
99b8066f4
김태훈
V0.1.1
|
569
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
570
571
572
573
574
575
|
KeepWarmPopup *p = new KeepWarmPopup(this);
p->showFullScreen();
p->raise();
break;
}
}
|
99b8066f4
김태훈
V0.1.1
|
576
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
577
|
void AutoCookWindow::checkProcess()
|
99b8066f4
김태훈
V0.1.1
|
578
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
579
580
|
if (!processSelected)
return;
|
99b8066f4
김태훈
V0.1.1
|
581
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
582
583
584
585
586
587
|
switch (selectedProcess)
{
case Define::MakeCrisper:
{
Oven *oven = Oven::getInstance();
if (oven->currentTemp() >= oven->temp())
|
99b8066f4
김태훈
V0.1.1
|
588
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
589
590
|
oven->stopCooking();
checkProcessTimer.stop();
|
99b8066f4
김태훈
V0.1.1
|
591
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
592
593
594
595
|
break;
}
default:
break;
|
99b8066f4
김태훈
V0.1.1
|
596
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
597
598
|
updateView();
|
99b8066f4
김태훈
V0.1.1
|
599
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
600
|
void AutoCookWindow::returnToCurrentStep()
|
99b8066f4
김태훈
V0.1.1
|
601
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
602
603
604
|
selectedStepIndex = autocook.currentStepIndex;
showingDifferentStep = false;
updateView();
|
99b8066f4
김태훈
V0.1.1
|
605
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
606
|
void AutoCookWindow::showCurrentHumidity()
|
99b8066f4
김태훈
V0.1.1
|
607
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
608
609
610
|
showingCurrentHumidity = true;
updateView();
}
|
99b8066f4
김태훈
V0.1.1
|
611
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
612
613
614
615
|
void AutoCookWindow::showCurrentTemp()
{
showingCurrentTemp = true;
updateView();
|
99b8066f4
김태훈
V0.1.1
|
616
617
618
619
620
621
622
623
624
|
}
void AutoCookWindow::on_humidityGaugeButton_pressed()
{
showCurrentHumidityTimer.start();
}
void AutoCookWindow::on_humidityGaugeButton_released()
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
625
626
|
if (showCurrentHumidityTimer.isActive())
showCurrentHumidityTimer.stop();
|
99b8066f4
김태훈
V0.1.1
|
627
|
|
618320ecd
김태훈
불필요한 UI 갱신 제거
|
628
629
630
631
632
|
if (showingCurrentHumidity)
{
showingCurrentHumidity = false;
updateView();
}
|
99b8066f4
김태훈
V0.1.1
|
633
634
635
636
637
638
639
640
641
|
}
void AutoCookWindow::on_heatGaugeButton_pressed()
{
showCurrentTempTimer.start();
}
void AutoCookWindow::on_heatGaugeButton_released()
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
642
643
|
if (showCurrentTempTimer.isActive())
showCurrentTempTimer.stop();
|
99b8066f4
김태훈
V0.1.1
|
644
|
|
618320ecd
김태훈
불필요한 UI 갱신 제거
|
645
646
647
648
649
|
if (showingCurrentTemp)
{
showingCurrentTemp = false;
updateView();
}
|
99b8066f4
김태훈
V0.1.1
|
650
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
651
|
void AutoCookWindow::on_backButton_clicked()
|
99b8066f4
김태훈
V0.1.1
|
652
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
653
654
655
|
Oven::getInstance()->stop();
close();
}
|
99b8066f4
김태훈
V0.1.1
|
656
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
657
658
659
660
661
662
663
664
665
|
void AutoCookWindow::on_showPrevStepButton_clicked()
{
if (selectedStepIndex > 0)
{
selectedStepIndex--;
updateView();
}
returnToCurrentStepTimer.start();
|
99b8066f4
김태훈
V0.1.1
|
666
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
667
|
void AutoCookWindow::on_showNextStepButton_clicked()
|
99b8066f4
김태훈
V0.1.1
|
668
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
669
670
671
672
673
|
if (selectedStepIndex + 1 < cook.steps.size())
{
selectedStepIndex++;
updateView();
}
|
99b8066f4
김태훈
V0.1.1
|
674
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
675
|
returnToCurrentStepTimer.start();
|
99b8066f4
김태훈
V0.1.1
|
676
|
}
|