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