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