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"
|
e00c6a2a9
김태훈
기능 추가 구현
|
9
10
11
|
#include "configwindow.h"
#include "washwindow.h"
#include "mainwindow.h"
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
12
13
|
AutoCookWindow::AutoCookWindow(QWidget *parent, Cook cook) :
|
99b8066f4
김태훈
V0.1.1
|
14
15
|
QMainWindow(parent),
ui(new Ui::AutoCookWindow),
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
16
|
cook(cook)
|
99b8066f4
김태훈
V0.1.1
|
17
18
|
{
ui->setupUi(this);
|
99b8066f4
김태훈
V0.1.1
|
19
|
ui->clockContainer->setParent(ui->upperStack);
|
6f96c947a
김태훈
GUI 0.1.4
|
20
|
setAttribute(Qt::WA_DeleteOnClose);
|
99b8066f4
김태훈
V0.1.1
|
21
|
|
f588aa273
김태훈
부가 기능 로직 추가
|
22
23
24
25
|
if (!this->cook.isLoaded())
this->cook.load();
autocook = AutoCook(this->cook);
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
26
27
28
|
processSelected = false;
setupUi();
|
99b8066f4
김태훈
V0.1.1
|
29
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
30
31
|
Oven *oven = Oven::getInstance();
connect(oven, SIGNAL(changed(Oven*)), SLOT(updateView()));
|
99b8066f4
김태훈
V0.1.1
|
32
33
34
35
|
returnToCurrentStepTimer.setSingleShot(true);
returnToCurrentStepTimer.setInterval(3000);
connect(&returnToCurrentStepTimer, SIGNAL(timeout()), SLOT(returnToCurrentStep()));
|
99b8066f4
김태훈
V0.1.1
|
36
37
38
|
showCurrentHumidityTimer.setSingleShot(true);
showCurrentHumidityTimer.setInterval(3000);
connect(&showCurrentHumidityTimer, SIGNAL(timeout()), SLOT(showCurrentHumidity()));
|
99b8066f4
김태훈
V0.1.1
|
39
40
41
|
showCurrentTempTimer.setSingleShot(true);
showCurrentTempTimer.setInterval(3000);
connect(&showCurrentTempTimer, SIGNAL(timeout()), SLOT(showCurrentTemp()));
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
42
43
|
connect(&checkCookTimer, SIGNAL(timeout()), SLOT(checkCook()));
checkCookTimer.start(100);
|
d66d7f5b4
김태훈
GUI 버전 0.1.2
|
44
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
45
|
connect(&checkProcessTimer, SIGNAL(timeout()), SLOT(checkProcess()));
|
f588aa273
김태훈
부가 기능 로직 추가
|
46
47
48
49
50
51
52
53
54
55
|
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
김태훈
환경 설정 대응
|
56
|
|
bbd7d8f29
김태훈
버튼 음향 추가
|
57
58
|
foreach (QPushButton *button, findChildren<QPushButton *>())
connect(button, &QPushButton::pressed, SoundPlayer::playClick);
|
2bfd3a050
김태훈
환경 설정 대응
|
59
60
|
connect(&updateViewTimer, SIGNAL(timeout()), SLOT(updateView()));
updateViewTimer.start(100);
|
c6dd03260
김태훈
요리 시작/종료 관련 음향 효과...
|
61
62
|
SoundPlayer::playStart();
|
99b8066f4
김태훈
V0.1.1
|
63
64
65
66
67
68
69
70
71
|
}
AutoCookWindow::~AutoCookWindow()
{
delete ui;
}
void AutoCookWindow::setupUi()
{
|
05f2a7552
김태훈
image 관리 구조 변경
|
72
73
74
|
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
|
75
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
76
77
|
ui->cookTypeIcon->setPixmap(Define::icon(cook.type));
ui->selectCookButton->setText(cook.name);
|
99b8066f4
김태훈
V0.1.1
|
78
|
|
a366f320c
김태훈
자동 요리 후속 공정 동작 개선
|
79
|
ui->stepIndicator->setMaximum(cook.steps.size() - 1);
|
99b8066f4
김태훈
V0.1.1
|
80
81
82
83
84
85
86
87
88
89
|
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 관리 구조 변경
|
90
91
92
93
94
95
96
97
98
|
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
|
99
100
101
|
ui->openDoorAnimation->start(300);
ui->openDoorAnimation->hide();
ui->openDoorArrow->hide();
|
05f2a7552
김태훈
image 관리 구조 변경
|
102
103
104
105
106
107
108
109
110
|
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
|
111
112
113
|
ui->closeDoorAnimation->start(300);
ui->closeDoorAnimation->hide();
ui->closeDoorArrow->hide();
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
114
115
116
117
118
119
|
lastViewCookMode = Define::InvalidMode;
lastViewCookType = Define::Invalid;
lastViewCoreTemp = 999;
lastViewDoorType = Define::Invalid;
lastViewTime = 0;
lastViewStepIndex = -1;
|
7d0288172
김태훈
기능 추가 구현
|
120
121
|
lastViewTemp = 999;
lastViewHumidity = 999;
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
122
123
124
|
selectedStepIndex = 0;
showingCurrentHumidity = false;
showingCurrentTemp = false;
|
99b8066f4
김태훈
V0.1.1
|
125
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
126
|
if (autocook.cook.processes.isEmpty())
|
99b8066f4
김태훈
V0.1.1
|
127
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
128
129
130
131
132
|
ui->processTitleLabel->hide();
ui->processTypeLabel->hide();
ui->processButton_1->hide();
ui->processButton_2->hide();
ui->processButton_3->hide();
|
99b8066f4
김태훈
V0.1.1
|
133
134
135
|
}
else
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
136
137
138
|
QString typeText;
QSignalMapper *sm = NULL;
for (int i = 0; i < 3; i++)
|
99b8066f4
김태훈
V0.1.1
|
139
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
140
141
|
QPushButton *pb;
switch (i)
|
99b8066f4
김태훈
V0.1.1
|
142
143
|
{
case 0:
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
144
|
pb = ui->processButton_1;
|
99b8066f4
김태훈
V0.1.1
|
145
146
|
break;
case 1:
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
147
|
pb = ui->processButton_2;
|
99b8066f4
김태훈
V0.1.1
|
148
149
|
break;
case 2:
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
150
|
pb = ui->processButton_3;
|
99b8066f4
김태훈
V0.1.1
|
151
152
|
break;
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
153
|
if (i < autocook.cook.processes.size())
|
99b8066f4
김태훈
V0.1.1
|
154
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
155
156
157
158
159
160
161
162
163
164
165
|
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
|
166
|
else
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
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
|
181
182
|
}
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
183
|
ui->processTypeLabel->setText(typeText);
|
99b8066f4
김태훈
V0.1.1
|
184
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
185
186
|
ui->processContainer->hide();
|
f588aa273
김태훈
부가 기능 로직 추가
|
187
|
ui->doorStepLabel->hide();
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
188
189
|
updateView();
|
99b8066f4
김태훈
V0.1.1
|
190
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
191
|
void AutoCookWindow::updateView()
|
99b8066f4
김태훈
V0.1.1
|
192
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
193
|
Oven *oven = Oven::getInstance();
|
2bfd3a050
김태훈
환경 설정 대응
|
194
|
if (!autocook.done())
|
99b8066f4
김태훈
V0.1.1
|
195
|
{
|
2bfd3a050
김태훈
환경 설정 대응
|
196
197
|
int remainingTime = qMax(0, autocook.msecs());
ui->timeLabel->setText(Stringer::remainingTime(remainingTime));
|
99b8066f4
김태훈
V0.1.1
|
198
|
}
|
99b8066f4
김태훈
V0.1.1
|
199
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
200
201
202
203
|
int coreTemp = oven->currentInterTemp();
if (coreTemp != lastViewCoreTemp)
{
lastViewCoreTemp = coreTemp;
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
204
|
if (cook.isCoreTempValid())
|
2bfd3a050
김태훈
환경 설정 대응
|
205
|
ui->interTempLabel->setText(Stringer::temperature(coreTemp, cook.coreTemp(), Stringer::fontSize14));
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
206
|
else
|
2bfd3a050
김태훈
환경 설정 대응
|
207
|
ui->interTempLabel->setText(Stringer::temperature(coreTemp, Stringer::fontSize14));
|
99b8066f4
김태훈
V0.1.1
|
208
|
}
|
99b8066f4
김태훈
V0.1.1
|
209
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
210
|
if (autocook.done())
|
99b8066f4
김태훈
V0.1.1
|
211
|
{
|
36aae9ce0
김태훈
바삭함 주기 중 문 열림/닫힘 ...
|
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
|
if (processSelected)
{
if (ui->openDoorAnimation->isVisible())
ui->openDoorAnimation->hide();
if (ui->openDoorArrow->isVisible())
ui->openDoorArrow->hide();
if (oven->door())
{
if (ui->closeDoorAnimation->isVisible())
ui->closeDoorAnimation->hide();
if (ui->closeDoorArrow->isVisible())
ui->closeDoorArrow->hide();
}
else
{
if (ui->closeDoorAnimation->isVisible())
ui->closeDoorAnimation->hide();
if (ui->closeDoorArrow->isVisible())
ui->closeDoorArrow->hide();
}
}
else if (!oven->door())
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
238
239
240
|
{
if (ui->openDoorAnimation->isHidden())
ui->openDoorAnimation->show();
|
6f96c947a
김태훈
GUI 0.1.4
|
241
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
242
243
244
245
246
247
248
249
250
251
|
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
|
252
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
253
254
255
256
257
258
259
260
261
262
263
|
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
|
264
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
265
|
|
36aae9ce0
김태훈
바삭함 주기 중 문 열림/닫힘 ...
|
266
267
268
|
if (processSelected)
ui->processContainer->hide();
else if (ui->processContainer->isHidden())
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
269
|
ui->processContainer->show();
|
99b8066f4
김태훈
V0.1.1
|
270
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
271
272
273
274
|
else if (autocook.isWaitingDoorOpened() && !oven->door())
{
if (ui->openDoorAnimation->isHidden())
ui->openDoorAnimation->show();
|
99b8066f4
김태훈
V0.1.1
|
275
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
276
277
|
if (ui->openDoorArrow->isHidden())
ui->openDoorArrow->show();
|
99b8066f4
김태훈
V0.1.1
|
278
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
279
280
|
if (ui->closeDoorAnimation->isVisible())
ui->closeDoorAnimation->hide();
|
99b8066f4
김태훈
V0.1.1
|
281
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
282
283
|
if (ui->closeDoorArrow->isVisible())
ui->closeDoorArrow->hide();
|
99b8066f4
김태훈
V0.1.1
|
284
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
285
286
287
288
|
else if (!autocook.isWaitingDoorOpened() && oven->door())
{
if (ui->openDoorAnimation->isVisible())
ui->openDoorAnimation->hide();
|
99b8066f4
김태훈
V0.1.1
|
289
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
290
291
|
if (ui->openDoorArrow->isVisible())
ui->openDoorArrow->hide();
|
99b8066f4
김태훈
V0.1.1
|
292
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
293
294
|
if (ui->closeDoorAnimation->isHidden())
ui->closeDoorAnimation->show();
|
99b8066f4
김태훈
V0.1.1
|
295
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
296
297
298
299
300
301
302
|
if (ui->closeDoorArrow->isHidden())
ui->closeDoorArrow->show();
}
else
{
if (ui->openDoorAnimation->isVisible())
ui->openDoorAnimation->hide();
|
99b8066f4
김태훈
V0.1.1
|
303
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
304
305
|
if (ui->openDoorArrow->isVisible())
ui->openDoorArrow->hide();
|
99b8066f4
김태훈
V0.1.1
|
306
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
307
308
|
if (ui->closeDoorAnimation->isVisible())
ui->closeDoorAnimation->hide();
|
99b8066f4
김태훈
V0.1.1
|
309
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
310
311
312
|
if (ui->closeDoorArrow->isVisible())
ui->closeDoorArrow->hide();
}
|
99b8066f4
김태훈
V0.1.1
|
313
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
314
315
316
317
|
if (autocook.cook.steps[autocook.currentStepIndex].type == Define::Preheat)
{
if (ui->preheatIcon->isHidden())
ui->preheatIcon->show();
|
6f96c947a
김태훈
GUI 0.1.4
|
318
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
319
320
|
if (ui->preheatLabel->isHidden())
ui->preheatLabel->show();
|
6f96c947a
김태훈
GUI 0.1.4
|
321
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
322
323
324
325
326
327
328
329
|
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
|
330
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
331
332
|
if (ui->preheatIcon->isVisible())
ui->preheatIcon->hide();
|
d66d7f5b4
김태훈
GUI 버전 0.1.2
|
333
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
334
335
|
if (ui->preheatLabel->isVisible())
ui->preheatLabel->hide();
|
6f96c947a
김태훈
GUI 0.1.4
|
336
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
337
338
|
if (ui->preheatGauge->isVisible())
ui->preheatGauge->hide();
|
99b8066f4
김태훈
V0.1.1
|
339
|
}
|
99b8066f4
김태훈
V0.1.1
|
340
|
|
b13e23ee4
김태훈
자동 요리 수정
|
341
342
343
344
345
346
347
|
if (selectedStepIndex != autocook.currentStepIndex)
{
if (!returnToCurrentStepTimer.isActive())
{
selectedStepIndex = autocook.currentStepIndex;
}
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
348
|
if (selectedStepIndex != lastViewStepIndex)
|
99b8066f4
김태훈
V0.1.1
|
349
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
350
|
lastViewStepIndex = selectedStepIndex;
|
a366f320c
김태훈
자동 요리 후속 공정 동작 개선
|
351
|
ui->stepIndicator->setCurrentIndex(selectedStepIndex);
|
d66d7f5b4
김태훈
GUI 버전 0.1.2
|
352
|
}
|
99b8066f4
김태훈
V0.1.1
|
353
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
354
355
|
CookStep showingStep = autocook.cook.steps[selectedStepIndex];
if (Define::classify(showingStep.type) == Define::DoorClass)
|
99b8066f4
김태훈
V0.1.1
|
356
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
357
358
|
if (ui->cookStepIcon->isVisible())
ui->cookStepIcon->hide();
|
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
|
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
|
391
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
392
|
lastViewDoorType = showingStep.type;
|
d66d7f5b4
김태훈
GUI 버전 0.1.2
|
393
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
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
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
|
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
|
437
438
439
|
}
}
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
440
|
else
|
6f96c947a
김태훈
GUI 0.1.4
|
441
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
|
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
|
476
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
477
|
lastViewCookType = showingStep.type;
|
6f96c947a
김태훈
GUI 0.1.4
|
478
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
479
480
|
ui->cookStepIcon->setPixmap(Define::icon(showingStep.type));
ui->cookStepLabel->setText(Define::name(showingStep.type));
|
6f96c947a
김태훈
GUI 0.1.4
|
481
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
482
483
|
if (showingStep.mode != lastViewCookMode)
|
6f96c947a
김태훈
GUI 0.1.4
|
484
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
485
|
lastViewCookMode = showingStep.mode;
|
6f96c947a
김태훈
GUI 0.1.4
|
486
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
487
488
489
490
491
492
493
494
495
496
497
498
499
500
|
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
|
501
502
|
}
}
|
d66d7f5b4
김태훈
GUI 버전 0.1.2
|
503
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
504
505
506
507
508
|
int humidity;
if (showingCurrentHumidity)
humidity = oven->currentHumidity();
else
humidity = showingStep.humidity;
|
99b8066f4
김태훈
V0.1.1
|
509
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
510
511
512
513
|
if (humidity != lastViewHumidity)
{
lastViewHumidity = humidity;
ui->humidityLabel->setText(QString("%1%").arg(humidity));
|
ecfb5801a
김태훈
디버깅 요청 사항 반영
|
514
|
ui->humidityGauge->setValue(humidity);
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
515
|
}
|
99b8066f4
김태훈
V0.1.1
|
516
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
517
518
519
520
521
|
int temp;
if (showingCurrentTemp)
temp = oven->currentTemp();
else
temp = showingStep.temp;
|
99b8066f4
김태훈
V0.1.1
|
522
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
523
524
525
|
if (temp != lastViewTemp)
{
lastViewTemp = temp;
|
2bfd3a050
김태훈
환경 설정 대응
|
526
|
ui->heatLabel->setText(Stringer::temperature(temp));
|
ecfb5801a
김태훈
디버깅 요청 사항 반영
|
527
|
ui->heatGauge->setValue(temp);
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
528
|
}
|
99b8066f4
김태훈
V0.1.1
|
529
530
531
532
533
|
}
}
void AutoCookWindow::checkCook()
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
534
535
|
int lastStepIndex = autocook.currentStepIndex;
if (autocook.advance())
|
99b8066f4
김태훈
V0.1.1
|
536
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
537
538
539
540
541
|
if (lastStepIndex != autocook.currentStepIndex)
selectedStepIndex = autocook.currentStepIndex;
if (autocook.done())
checkCookTimer.stop();
|
99b8066f4
김태훈
V0.1.1
|
542
543
544
545
|
}
updateView();
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
546
|
void AutoCookWindow::startProcess(int process)
|
99b8066f4
김태훈
V0.1.1
|
547
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
548
549
|
if (processSelected)
return;
|
99b8066f4
김태훈
V0.1.1
|
550
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
551
|
processSelected = true;
|
99b8066f4
김태훈
V0.1.1
|
552
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
553
554
555
556
557
558
|
Define::Process p = (Define::Process) process;
switch (p)
{
case Define::CookAgain:
{
close();
|
99b8066f4
김태훈
V0.1.1
|
559
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
560
561
562
563
|
AutoCookWindow *w = new AutoCookWindow(parentWidget(), cook);
w->setWindowModality(Qt::WindowModal);
w->showFullScreen();
w->raise();
|
99b8066f4
김태훈
V0.1.1
|
564
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
565
566
567
568
569
|
break;
}
case Define::MakeCrisper:
{
selectedProcess = (Define::Process) process;
|
99b8066f4
김태훈
V0.1.1
|
570
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
571
|
CookStep &step = autocook.cook.steps[autocook.cook.steps.size() - 1];
|
99b8066f4
김태훈
V0.1.1
|
572
|
|
a366f320c
김태훈
자동 요리 후속 공정 동작 개선
|
573
574
575
576
577
578
579
580
581
582
583
|
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
김태훈
자동 요리 관련 로직 전면 재작성
|
584
|
Oven *oven = Oven::getInstance();
|
a366f320c
김태훈
자동 요리 후속 공정 동작 개선
|
585
|
oven->setHumidity(0);
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
586
587
|
oven->setTemp(step.temp + 10);
oven->startCooking();
|
99b8066f4
김태훈
V0.1.1
|
588
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
589
|
checkProcessTimer.start(100);
|
c6dd03260
김태훈
요리 시작/종료 관련 음향 효과...
|
590
591
|
SoundPlayer::playStart();
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
592
593
594
595
596
597
|
break;
}
case Define::KeepWarm:
{
processSelected = false;
selectedProcess = (Define::Process) process;
|
99b8066f4
김태훈
V0.1.1
|
598
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
599
600
601
602
603
|
KeepWarmPopup *p = new KeepWarmPopup(this);
p->showFullScreen();
p->raise();
break;
}
|
1f7568d7e
김태훈
컴파일 경고 제거
|
604
605
|
default:
return;
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
606
|
}
|
99b8066f4
김태훈
V0.1.1
|
607
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
608
|
void AutoCookWindow::checkProcess()
|
99b8066f4
김태훈
V0.1.1
|
609
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
610
611
|
if (!processSelected)
return;
|
99b8066f4
김태훈
V0.1.1
|
612
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
613
614
615
616
617
618
|
switch (selectedProcess)
{
case Define::MakeCrisper:
{
Oven *oven = Oven::getInstance();
if (oven->currentTemp() >= oven->temp())
|
99b8066f4
김태훈
V0.1.1
|
619
|
{
|
c6dd03260
김태훈
요리 시작/종료 관련 음향 효과...
|
620
|
SoundPlayer::playStop();
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
621
622
|
oven->stopCooking();
checkProcessTimer.stop();
|
a366f320c
김태훈
자동 요리 후속 공정 동작 개선
|
623
|
processSelected = false;
|
99b8066f4
김태훈
V0.1.1
|
624
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
625
626
627
628
|
break;
}
default:
break;
|
99b8066f4
김태훈
V0.1.1
|
629
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
630
631
|
updateView();
|
99b8066f4
김태훈
V0.1.1
|
632
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
633
|
void AutoCookWindow::returnToCurrentStep()
|
99b8066f4
김태훈
V0.1.1
|
634
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
635
636
637
|
selectedStepIndex = autocook.currentStepIndex;
showingDifferentStep = false;
updateView();
|
99b8066f4
김태훈
V0.1.1
|
638
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
639
|
void AutoCookWindow::showCurrentHumidity()
|
99b8066f4
김태훈
V0.1.1
|
640
|
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
641
642
643
|
showingCurrentHumidity = true;
updateView();
}
|
99b8066f4
김태훈
V0.1.1
|
644
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
645
646
647
648
|
void AutoCookWindow::showCurrentTemp()
{
showingCurrentTemp = true;
updateView();
|
99b8066f4
김태훈
V0.1.1
|
649
|
}
|
f588aa273
김태훈
부가 기능 로직 추가
|
650
651
652
653
654
655
656
657
658
659
660
|
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();
}
|
e00c6a2a9
김태훈
기능 추가 구현
|
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
|
void AutoCookWindow::jumpConfig()
{
Oven::getInstance()->stop();
ConfigWindow *w = new ConfigWindow(MainWindow::getInstance());
w->setWindowModality(Qt::WindowModal);
w->showFullScreen();
w->raise();
MainWindow::jump(w);
}
void AutoCookWindow::jumpWash()
{
Oven::getInstance()->stop();
WashWindow *w = new WashWindow(MainWindow::getInstance());
w->setWindowModality(Qt::WindowModal);
w->showFullScreen();
w->raise();
MainWindow::jump(w);
}
|
7d0288172
김태훈
기능 추가 구현
|
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
|
void AutoCookWindow::on_selectCookButton_clicked()
{
}
void AutoCookWindow::on_homeButton_clicked()
{
Oven::getInstance()->stop();
MainWindow::killChild();
}
void AutoCookWindow::on_configCookButton_clicked()
{
}
|
99b8066f4
김태훈
V0.1.1
|
700
701
702
703
704
705
706
|
void AutoCookWindow::on_humidityGaugeButton_pressed()
{
showCurrentHumidityTimer.start();
}
void AutoCookWindow::on_humidityGaugeButton_released()
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
707
708
|
if (showCurrentHumidityTimer.isActive())
showCurrentHumidityTimer.stop();
|
99b8066f4
김태훈
V0.1.1
|
709
|
|
618320ecd
김태훈
불필요한 UI 갱신 제거
|
710
711
712
713
714
|
if (showingCurrentHumidity)
{
showingCurrentHumidity = false;
updateView();
}
|
99b8066f4
김태훈
V0.1.1
|
715
716
717
718
719
720
721
722
723
|
}
void AutoCookWindow::on_heatGaugeButton_pressed()
{
showCurrentTempTimer.start();
}
void AutoCookWindow::on_heatGaugeButton_released()
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
724
725
|
if (showCurrentTempTimer.isActive())
showCurrentTempTimer.stop();
|
99b8066f4
김태훈
V0.1.1
|
726
|
|
618320ecd
김태훈
불필요한 UI 갱신 제거
|
727
728
729
730
731
|
if (showingCurrentTemp)
{
showingCurrentTemp = false;
updateView();
}
|
99b8066f4
김태훈
V0.1.1
|
732
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
733
734
|
void AutoCookWindow::on_showPrevStepButton_clicked()
{
|
b13e23ee4
김태훈
자동 요리 수정
|
735
|
returnToCurrentStepTimer.start();
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
736
737
738
739
740
|
if (selectedStepIndex > 0)
{
selectedStepIndex--;
updateView();
}
|
99b8066f4
김태훈
V0.1.1
|
741
|
}
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
742
|
void AutoCookWindow::on_showNextStepButton_clicked()
|
99b8066f4
김태훈
V0.1.1
|
743
|
{
|
b13e23ee4
김태훈
자동 요리 수정
|
744
|
returnToCurrentStepTimer.start();
|
a366f320c
김태훈
자동 요리 후속 공정 동작 개선
|
745
|
if (selectedStepIndex + 1 < autocook.cook.steps.size())
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
746
747
748
749
|
{
selectedStepIndex++;
updateView();
}
|
99b8066f4
김태훈
V0.1.1
|
750
|
}
|
f588aa273
김태훈
부가 기능 로직 추가
|
751
|
|
e00c6a2a9
김태훈
기능 추가 구현
|
752
753
754
|
void AutoCookWindow::on_backButton_clicked()
{
Oven::getInstance()->stop();
|
b2ddac079
김태훈
버그 수정
|
755
|
emit back();
|
e00c6a2a9
김태훈
기능 추가 구현
|
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
|
close();
}
void AutoCookWindow::on_configButton_clicked()
{
if (autocook.done())
{
ConfigWindow *w = new ConfigWindow(MainWindow::getInstance());
w->setWindowModality(Qt::WindowModal);
w->showFullScreen();
w->raise();
MainWindow::jump(w);
}
else
{
ConfirmPopup *p = new ConfirmPopup(this, tr("요리가 중단되고 환경 설정 모드로 들어갑니다. 진행할까요?"));
p->showFullScreen();
connect(p, SIGNAL(accepted()), SLOT(jumpConfig()));
}
}
|
f588aa273
김태훈
부가 기능 로직 추가
|
778
779
780
781
782
783
784
785
786
787
|
void AutoCookWindow::on_favoritesButton_clicked()
{
if (!autocook.done())
return;
ConfirmPopup *p = new ConfirmPopup(this, tr("즐겨찾기 항목에 추가하시겠습니까?"));
p->showFullScreen();
connect(p, SIGNAL(accepted()), SLOT(addFavorite()));
}
|
e00c6a2a9
김태훈
기능 추가 구현
|
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
|
void AutoCookWindow::on_washButton_clicked()
{
if (autocook.done())
{
WashWindow *w = new WashWindow(MainWindow::getInstance());
w->setWindowModality(Qt::WindowModal);
w->showFullScreen();
w->raise();
MainWindow::jump(w);
}
else
{
ConfirmPopup *p = new ConfirmPopup(this, tr("요리가 중단되고 자동 세척 모드로 들어갑니다. 진행할까요?"));
p->showFullScreen();
connect(p, SIGNAL(accepted()), SLOT(jumpWash()));
}
}
void AutoCookWindow::on_helpButton_clicked()
{
}
|