Blame view

app/gui/oven_control/manualcookwindow.cpp 15 KB
8c2952457   김태훈   응용 프로그램 추가
1
2
3
4
5
6
  #include "manualcookwindow.h"
  #include "ui_manualcookwindow.h"
  
  #include <QSignalMapper>
  #include <QTimer>
  #include <QtDebug>
05f2a7552   김태훈   image 관리 구조 변경
7
  #include "preheatpopup.h"
cfc2fcc35   김태훈   쿨다운 팝업 추가
8
  #include "cooldownpopup.h"
f588aa273   김태훈   부가 기능 로직 추가
9
10
11
  #include "cookhistory.h"
  #include "favoritenamepopup.h"
  #include "confirmpopup.h"
05f2a7552   김태훈   image 관리 구조 변경
12
bb26a0523   김태훈   소스 코드 정리
13
  #include <QTime>
d0cfbd177   김태훈   GUI V0.1.10 (이 버전...
14
  ManualCookWindow::ManualCookWindow(QWidget *parent, Define::Mode mode) :
8c2952457   김태훈   응용 프로그램 추가
15
      QMainWindow(parent),
3f52600cc   김태훈   소스 코드 구조 개선
16
      ui(new Ui::ManualCookWindow)
8c2952457   김태훈   응용 프로그램 추가
17
18
  {
      ui->setupUi(this);
6f96c947a   김태훈   GUI 0.1.4
19
      ui->clockContainer->setParent(ui->upperStack);
cfc2fcc35   김태훈   쿨다운 팝업 추가
20
      ui->closeDoorWidget->setParent(ui->upperStack);
05f2a7552   김태훈   image 관리 구조 변경
21
22
      ui->outerStack->setParent(ui->bodyStack);
      ui->innerStack->setParent(ui->bodyStack);
6f96c947a   김태훈   GUI 0.1.4
23
      setAttribute(Qt::WA_DeleteOnClose);
3f52600cc   김태훈   소스 코드 구조 개선
24
      oven = Oven::getInstance();
8c2952457   김태훈   응용 프로그램 추가
25
      connect(oven, SIGNAL(changed(Oven*)), this, SLOT(onOvenUpdated(Oven*)));
8c2952457   김태훈   응용 프로그램 추가
26
27
28
      connect(ui->humiditySlider, SIGNAL(valueChanged(int)), oven, SLOT(setHumidity(int)));
      connect(ui->tempSlider, SIGNAL(valueChanged(int)), oven, SLOT(setTemp(int)));
      connect(ui->timeSlider, SIGNAL(valueChanged(int)), oven, SLOT(setTime(int)));
bb26a0523   김태훈   소스 코드 정리
29
30
      connect(ui->timeSlider, SIGNAL(valueChanged(int)), &startCookingTimer, SLOT(start()));
      connect(ui->timeSlider, SIGNAL(valueChanged(int)), this, SLOT(updateLabels()));
8c2952457   김태훈   응용 프로그램 추가
31
32
33
34
35
36
37
      connect(ui->interTempSlider, SIGNAL(valueChanged(int)), oven, SLOT(setInterTemp(int)));
  
      connect(ui->humiditySlider, SIGNAL(sliderMoved(int)), this, SLOT(updateLabels()));
      connect(ui->tempSlider, SIGNAL(sliderMoved(int)), this, SLOT(updateLabels()));
      connect(ui->timeSlider, SIGNAL(sliderMoved(int)), this, SLOT(updateLabels()));
      connect(ui->interTempSlider, SIGNAL(sliderMoved(int)), this, SLOT(updateLabels()));
      connect(ui->innerInterTempSlider, SIGNAL(sliderMoved(int)), this, SLOT(updateLabels()));
ae1095876   김태훈   중심 온도 설정 창에서 중심 온...
38
      connect(ui->innerInterTempSlider, SIGNAL(valueChanged(int)), this, SLOT(updateLabels()));
8c2952457   김태훈   응용 프로그램 추가
39
bb26a0523   김태훈   소스 코드 정리
40
41
      checkTimeTimer.setInterval(100);
      connect(&checkTimeTimer, SIGNAL(timeout()), SLOT(checkTime()));
8c2952457   김태훈   응용 프로그램 추가
42
bb26a0523   김태훈   소스 코드 정리
43
44
45
46
47
48
49
50
51
52
53
      startCookingTimer.setSingleShot(true);
      startCookingTimer.setInterval(3000);
      connect(&startCookingTimer, SIGNAL(timeout()), SLOT(start()));
  
      showCurrentHumidityTimer.setSingleShot(true);
      showCurrentHumidityTimer.setInterval(3000);
      connect(&showCurrentHumidityTimer, SIGNAL(timeout()), SLOT(showCurrentHumidity()));
  
      showCurrentTempTimer.setSingleShot(true);
      showCurrentTempTimer.setInterval(3000);
      connect(&showCurrentTempTimer, SIGNAL(timeout()), SLOT(showCurrentTemp()));
8c2952457   김태훈   응용 프로그램 추가
54
55
  
      ui->bodyStack->setCurrentIndex(0);
cfc2fcc35   김태훈   쿨다운 팝업 추가
56
bb26a0523   김태훈   소스 코드 정리
57
58
59
60
61
62
63
64
      QTimer *setupAnimationTimer = new QTimer(this);
      setupAnimationTimer->setSingleShot(true);
      connect(setupAnimationTimer, SIGNAL(timeout()), SLOT(setupAnimation()));
  
      oven->setDefault(mode);
  
      setupAnimationTimer->start(0);
  }
f588aa273   김태훈   부가 기능 로직 추가
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  ManualCookWindow::ManualCookWindow(QWidget *parent, ManualCookSetting setting)
      : ManualCookWindow(parent, setting.mode)
  {
      oven->setHumidity(setting.humidity);
      oven->setTemp(setting.temp);
      oven->setTime(setting.time);
      oven->setFan(setting.fan);
      oven->setInterTempEnabled(setting.coreTempEnabled);
      oven->setInterTemp(setting.coreTemp);
  
      startCookingTimer.start();
  
      onOvenUpdated(oven);
  }
bb26a0523   김태훈   소스 코드 정리
79
80
81
82
83
84
85
  ManualCookWindow::~ManualCookWindow()
  {
      delete ui;
  }
  
  void ManualCookWindow::setupAnimation()
  {
cfc2fcc35   김태훈   쿨다운 팝업 추가
86
87
88
89
90
91
92
93
94
95
      ui->openDoorAnimation->load(":/images/animation/door_big_09.png");
      ui->openDoorAnimation->load(":/images/animation/door_big_08.png");
      ui->openDoorAnimation->load(":/images/animation/door_big_07.png");
      ui->openDoorAnimation->load(":/images/animation/door_big_06.png");
      ui->openDoorAnimation->load(":/images/animation/door_big_05.png");
      ui->openDoorAnimation->load(":/images/animation/door_big_04.png");
      ui->openDoorAnimation->load(":/images/animation/door_big_03.png");
      ui->openDoorAnimation->load(":/images/animation/door_big_02.png");
      ui->openDoorAnimation->load(":/images/animation/door_big_01.png");
      ui->openDoorAnimation->start(300);
8c2952457   김태훈   응용 프로그램 추가
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
  }
  
  void ManualCookWindow::checkTime()
  {
      if (oven->cooking() && !ui->timeSlider->isSliderDown())
      {
          bool old = ui->timeSlider->blockSignals(true);
          ui->timeSlider->setSliderPosition(oven->time());
          ui->timeSlider->blockSignals(old);
  
          updateLabels();
      }
  }
  
  void ManualCookWindow::showCurrentHumidity()
  {
      showCurrentHumidity_ = true;
      updateLabels();
  }
  
  void ManualCookWindow::hideCurrentHumidity()
  {
      showCurrentHumidity_ = false;
      updateLabels();
  }
  
  void ManualCookWindow::showCurrentTemp()
  {
      showCurrentTemp_ = true;
      updateLabels();
  }
  
  void ManualCookWindow::hideCurrentTemp()
  {
      showCurrentTemp_ = false;
      updateLabels();
  }
  
  void ManualCookWindow::updateLabels()
  {
      QString buf;
  
      int humidity;
      if (showCurrentHumidity_)
          humidity = oven->currentHumidity();
      else if (ui->humiditySlider->isSliderDown())
          humidity = ui->humiditySlider->sliderPosition();
      else
          humidity = oven->humidity();
  
      ui->humidityLabel->setText(buf.sprintf("%d%%", humidity));
  
      int temp;
      if (showCurrentTemp_)
          temp = oven->currentTemp();
      else if (ui->tempSlider->isSliderDown())
          temp = ui->tempSlider->sliderPosition();
      else
          temp = oven->temp();
6f96c947a   김태훈   GUI 0.1.4
155
      ui->tempLabel->setText(buf.sprintf("%d<span style=\"font-size:11pt;\">℃</span>", temp));
8c2952457   김태훈   응용 프로그램 추가
156
157
158
159
160
161
  
      int time;
      if (ui->timeSlider->isSliderDown())
          time = ui->timeSlider->sliderPosition();
      else
          time = oven->time();
c598b01b2   김태훈   GUI 업데이트
162
      if (time >= 3600)
6f96c947a   김태훈   GUI 0.1.4
163
          ui->timeLabel->setText(buf.sprintf("%d<span style=\"font-size:11pt;\">시간</span> %02d<span style=\"font-size:11pt;\">분</span>", time / 3600, (time % 3600) / 60));
c598b01b2   김태훈   GUI 업데이트
164
      else if (time >= 60)
6f96c947a   김태훈   GUI 0.1.4
165
          ui->timeLabel->setText(buf.sprintf("%d<span style=\"font-size:11pt;\">분</span> %02d<span style=\"font-size:11pt;\">초</span>", time / 60, time % 60));
c598b01b2   김태훈   GUI 업데이트
166
      else
6f96c947a   김태훈   GUI 0.1.4
167
          ui->timeLabel->setText(buf.sprintf("%d<span style=\"font-size:11pt;\">초</span>", time));
8c2952457   김태훈   응용 프로그램 추가
168
169
170
171
172
173
174
175
  
      if (oven->interTempEnabled())
      {
          int interTemp;
          if (ui->interTempSlider->isSliderDown())
              interTemp = ui->interTempSlider->sliderPosition();
          else
              interTemp = oven->interTemp();
6f96c947a   김태훈   GUI 0.1.4
176
          ui->interTempLabel->setText(buf.sprintf("%d<span style=\"font-size:11pt;\">℃</span>", interTemp));
8c2952457   김태훈   응용 프로그램 추가
177
178
      }
      else
6f96c947a   김태훈   GUI 0.1.4
179
          ui->interTempLabel->setText("<span style=\"font-size:11pt;\">℃</span>");
8c2952457   김태훈   응용 프로그램 추가
180
ae1095876   김태훈   중심 온도 설정 창에서 중심 온...
181
182
183
184
185
      int innerInterTemp = ui->innerInterTempSlider->sliderPosition();
  //    if (ui->innerInterTempSlider->isSliderDown())
  //        innerInterTemp = ui->innerInterTempSlider->sliderPosition();
  //    else
  //        innerInterTemp = oven->interTemp();
8c2952457   김태훈   응용 프로그램 추가
186
6f96c947a   김태훈   GUI 0.1.4
187
      ui->innerInterTempLabel->setText(buf.sprintf("%d<span style=\"font-size:11pt;\">℃</span>", innerInterTemp));
8c2952457   김태훈   응용 프로그램 추가
188
189
190
191
192
193
  
      ui->curHumidityLabel->setText(buf.sprintf("%d", oven->currentHumidity()));
      ui->targetHumidityLabel->setText(buf.sprintf("%d", oven->humidity()));
      ui->curTempLabel->setText(buf.sprintf("%d", oven->currentTemp()));
      ui->curInterTempLabel->setText(buf.sprintf("%d", oven->currentInterTemp()));
  }
8c2952457   김태훈   응용 프로그램 추가
194
195
  void ManualCookWindow::onOvenUpdated(Oven *oven)
  {
8c2952457   김태훈   응용 프로그램 추가
196
197
      switch (oven->mode())
      {
d0cfbd177   김태훈   GUI V0.1.10 (이 버전...
198
      case Define::DryMode:
8c2952457   김태훈   응용 프로그램 추가
199
          ui->dryheatButton->setChecked(true);
8c2952457   김태훈   응용 프로그램 추가
200
          break;
d0cfbd177   김태훈   GUI V0.1.10 (이 버전...
201
      case Define::SteamMode:
8c2952457   김태훈   응용 프로그램 추가
202
          ui->steamButton->setChecked(true);
8c2952457   김태훈   응용 프로그램 추가
203
          break;
d0cfbd177   김태훈   GUI V0.1.10 (이 버전...
204
      case Define::CombiMode:
8c2952457   김태훈   응용 프로그램 추가
205
          ui->combiButton->setChecked(true);
8c2952457   김태훈   응용 프로그램 추가
206
207
208
209
210
211
212
213
          break;
      default:
          break;
      }
  
      bool old;
      old = ui->humiditySlider->blockSignals(true);
      ui->humiditySlider->setValue(oven->humidity());
d0cfbd177   김태훈   GUI V0.1.10 (이 버전...
214
      ui->humiditySlider->setEnabled(oven->mode() == Define::CombiMode);
8c2952457   김태훈   응용 프로그램 추가
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
      ui->humiditySlider->blockSignals(old);
  
      old = ui->tempSlider->blockSignals(true);
      ui->tempSlider->setRange(oven->minTemp(), oven->maxTemp());
      ui->tempSlider->setValue(oven->temp());
      ui->tempSlider->blockSignals(old);
  
      if (!ui->timeSlider->isSliderDown())
      {
          old = ui->timeSlider->blockSignals(true);
          ui->timeSlider->setValue(oven->time());
          ui->timeSlider->blockSignals(old);
      }
  
  //    ui->interTempButton->setChecked(oven->interTempEnabled());
      if (oven->interTempEnabled())
          ui->interTempButton->setStyleSheet("\
6f96c947a   김태훈   GUI 0.1.4
232
  QPushButton {\
05f2a7552   김태훈   image 관리 구조 변경
233
      image: url(:/images/slider_icon/core_temp_enabled.png);\
8c2952457   김태훈   응용 프로그램 추가
234
  }\
6f96c947a   김태훈   GUI 0.1.4
235
  QPushButton:pressed {\
05f2a7552   김태훈   image 관리 구조 변경
236
      image: url(:/images/slider_icon/core_temp_ov.png);\
8c2952457   김태훈   응용 프로그램 추가
237
238
239
  }");
      else
          ui->interTempButton->setStyleSheet("\
6f96c947a   김태훈   GUI 0.1.4
240
  QPushButton {\
05f2a7552   김태훈   image 관리 구조 변경
241
      image: url(:/images/slider_icon/core_temp.png);\
8c2952457   김태훈   응용 프로그램 추가
242
  }\
6f96c947a   김태훈   GUI 0.1.4
243
  QPushButton:pressed {\
05f2a7552   김태훈   image 관리 구조 변경
244
      image: url(:/images/slider_icon/core_temp_ov.png);\
8c2952457   김태훈   응용 프로그램 추가
245
246
247
248
249
250
251
252
253
254
255
256
  }");
  
      old = ui->interTempSlider->blockSignals(true);
      ui->interTempSlider->setEnabled(oven->interTempEnabled());
      ui->interTempSlider->setRange(oven->minInterTemp(), oven->maxInterTemp());
      ui->interTempSlider->setValue(oven->interTemp());
      ui->interTempSlider->blockSignals(old);
  
      old = ui->innerInterTempSlider->blockSignals(true);
      ui->innerInterTempSlider->setRange(oven->minInterTemp(), oven->maxInterTemp());
      ui->innerInterTempSlider->setValue(oven->interTemp());
      ui->innerInterTempSlider->blockSignals(old);
c598b01b2   김태훈   GUI 업데이트
257
258
      if (oven->cooking())
          ui->runStopButton->setStyleSheet(
05f2a7552   김태훈   image 관리 구조 변경
259
                      "border-image: url(:/images/manual_button/stop.png)");
c598b01b2   김태훈   GUI 업데이트
260
261
      else
          ui->runStopButton->setStyleSheet(
05f2a7552   김태훈   image 관리 구조 변경
262
                      "border-image: url(:/images/manual_button/run.png)");
c598b01b2   김태훈   GUI 업데이트
263
264
265
  
      if (oven->damper())
          ui->damperButton->setStyleSheet(
05f2a7552   김태훈   image 관리 구조 변경
266
                      "background-image: url(:/images/manual_button/damper_open.png)");
c598b01b2   김태훈   GUI 업데이트
267
268
      else
          ui->damperButton->setStyleSheet(
05f2a7552   김태훈   image 관리 구조 변경
269
                      "background-image: url(:/images/manual_button/damper_close.png)");
c598b01b2   김태훈   GUI 업데이트
270
271
272
  
      if (oven->humidification())
          ui->humidificationButton->setStyleSheet(
05f2a7552   김태훈   image 관리 구조 변경
273
                      "background-image: url(:/images/manual_button/side_nozzle_open.png)");
c598b01b2   김태훈   GUI 업데이트
274
275
      else
          ui->humidificationButton->setStyleSheet(
05f2a7552   김태훈   image 관리 구조 변경
276
                      "background-image: url(:/images/manual_button/side_nozzle_close.png)");
8c2952457   김태훈   응용 프로그램 추가
277
278
279
280
281
  
      switch (oven->fan())
      {
      case 1:
          ui->fanButton->setStyleSheet(
05f2a7552   김태훈   image 관리 구조 변경
282
                      "background-image: url(:/images/manual_button/fan_1.png)");
8c2952457   김태훈   응용 프로그램 추가
283
284
285
          break;
      case 2:
          ui->fanButton->setStyleSheet(
05f2a7552   김태훈   image 관리 구조 변경
286
                      "background-image: url(:/images/manual_button/fan_2.png)");
8c2952457   김태훈   응용 프로그램 추가
287
288
289
          break;
      case 3:
          ui->fanButton->setStyleSheet(
05f2a7552   김태훈   image 관리 구조 변경
290
                      "background-image: url(:/images/manual_button/fan_3.png)");
8c2952457   김태훈   응용 프로그램 추가
291
292
293
          break;
      case 4:
          ui->fanButton->setStyleSheet(
05f2a7552   김태훈   image 관리 구조 변경
294
                      "background-image: url(:/images/manual_button/fan_4.png)");
8c2952457   김태훈   응용 프로그램 추가
295
296
297
          break;
      case 5:
          ui->fanButton->setStyleSheet(
05f2a7552   김태훈   image 관리 구조 변경
298
                      "background-image: url(:/images/manual_button/fan_5.png)");
8c2952457   김태훈   응용 프로그램 추가
299
300
301
          break;
      default:
          ui->fanButton->setStyleSheet(
05f2a7552   김태훈   image 관리 구조 변경
302
                      "background-image: url(:/images/manual_button/fan_1.png)");
8c2952457   김태훈   응용 프로그램 추가
303
304
          break;
      }
cfc2fcc35   김태훈   쿨다운 팝업 추가
305
306
307
308
      if (oven->paused() && !oven->cooldown() && oven->door())
          ui->upperStack->setCurrentIndex(1);
      else
          ui->upperStack->setCurrentIndex(0);
8c2952457   김태훈   응용 프로그램 추가
309
310
      updateLabels();
  }
d0cfbd177   김태훈   GUI V0.1.10 (이 버전...
311
  void ManualCookWindow::setOvenDefault(Define::Mode mode)
8c2952457   김태훈   응용 프로그램 추가
312
  {
bb26a0523   김태훈   소스 코드 정리
313
314
315
316
317
318
319
320
      stop();
  
      oven->setDefault(mode);
      ui->bodyStack->setCurrentIndex(0);
  }
  
  void ManualCookWindow::start()
  {
f588aa273   김태훈   부가 기능 로직 추가
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
      if (oven->time() > 0)
      {
          if (startCookingTimer.isActive())
              startCookingTimer.stop();
  
          oven->startCooking();
          checkTimeTimer.start();
  
          ManualCookSetting s;
          s.mode = oven->mode();
          s.humidity = oven->humidity();
          s.temp = oven->temp();
          s.time = oven->time();
          s.fan = oven->fan();
          s.coreTempEnabled = oven->interTempEnabled();
          s.coreTemp = oven->interTemp();
  
          CookHistory::record(s);
      }
bb26a0523   김태훈   소스 코드 정리
340
341
342
343
344
345
346
347
348
349
350
  }
  
  void ManualCookWindow::stop()
  {
      oven->stop();
      startCookingTimer.stop();
      checkTimeTimer.stop();
  }
  
  void ManualCookWindow::on_steamButton_clicked()
  {
d0cfbd177   김태훈   GUI V0.1.10 (이 버전...
351
      setOvenDefault(Define::SteamMode);
bb26a0523   김태훈   소스 코드 정리
352
353
354
355
  }
  
  void ManualCookWindow::on_combiButton_clicked()
  {
d0cfbd177   김태훈   GUI V0.1.10 (이 버전...
356
      setOvenDefault(Define::CombiMode);
bb26a0523   김태훈   소스 코드 정리
357
358
359
360
  }
  
  void ManualCookWindow::on_dryheatButton_clicked()
  {
d0cfbd177   김태훈   GUI V0.1.10 (이 버전...
361
      setOvenDefault(Define::DryMode);
bb26a0523   김태훈   소스 코드 정리
362
363
364
365
366
367
368
369
370
371
372
  }
  
  void ManualCookWindow::on_humidityButton_pressed()
  {
      showCurrentHumidityTimer.start();
  }
  
  void ManualCookWindow::on_humidityButton_released()
  {
      if (showCurrentHumidityTimer.isActive())
          showCurrentHumidityTimer.stop();
c598b01b2   김태훈   GUI 업데이트
373
      else
bb26a0523   김태훈   소스 코드 정리
374
          hideCurrentHumidity();
8c2952457   김태훈   응용 프로그램 추가
375
  }
bb26a0523   김태훈   소스 코드 정리
376
  void ManualCookWindow::on_tempButton_pressed()
8c2952457   김태훈   응용 프로그램 추가
377
  {
bb26a0523   김태훈   소스 코드 정리
378
379
      showCurrentTempTimer.start();
  }
8c2952457   김태훈   응용 프로그램 추가
380
bb26a0523   김태훈   소스 코드 정리
381
382
383
384
385
386
387
388
389
390
391
392
393
394
  void ManualCookWindow::on_tempButton_released()
  {
      if (showCurrentTempTimer.isActive())
          showCurrentTempTimer.stop();
      else
          hideCurrentTemp();
  }
  
  void ManualCookWindow::on_interTempButton_clicked()
  {
      if (oven->interTempEnabled())
          oven->setInterTempEnabled(false);
      else
          ui->bodyStack->setCurrentIndex(1);
8c2952457   김태훈   응용 프로그램 추가
395
396
397
398
399
400
401
402
403
404
405
406
  }
  
  void ManualCookWindow::on_goOuterButton_clicked()
  {
      ui->bodyStack->setCurrentIndex(0);
  }
  
  void ManualCookWindow::on_applyButton_clicked()
  {
      ui->bodyStack->setCurrentIndex(0);
  
      oven->setInterTemp(ui->innerInterTempSlider->value());
8c2952457   김태훈   응용 프로그램 추가
407
      oven->setInterTempEnabled(true);
8c2952457   김태훈   응용 프로그램 추가
408
  }
bb26a0523   김태훈   소스 코드 정리
409
  void ManualCookWindow::on_runStopButton_clicked()
8c2952457   김태훈   응용 프로그램 추가
410
  {
bb26a0523   김태훈   소스 코드 정리
411
      if (oven->cooking())
bb26a0523   김태훈   소스 코드 정리
412
          stop();
8c2952457   김태훈   응용 프로그램 추가
413
      else
f588aa273   김태훈   부가 기능 로직 추가
414
          start();
bb26a0523   김태훈   소스 코드 정리
415
416
417
418
419
420
421
422
423
  }
  
  void ManualCookWindow::on_fanButton_clicked()
  {
      int fan = oven->fan() + 1;
      if (fan > oven->maxFan())
          fan = oven->minFan();
  
      oven->setFan(fan);
8c2952457   김태훈   응용 프로그램 추가
424
425
426
427
  }
  
  void ManualCookWindow::on_preheatButton_clicked()
  {
bb26a0523   김태훈   소스 코드 정리
428
      startCookingTimer.stop();
4fc65fb81   김태훈   GUI V0.1.6(이 버전으로...
429
05f2a7552   김태훈   image 관리 구조 변경
430
431
432
      PreheatPopup *p = new PreheatPopup(this, oven);
      p->setWindowModality(Qt::WindowModal);
      p->showFullScreen();
8c2952457   김태훈   응용 프로그램 추가
433
434
435
436
  }
  
  void ManualCookWindow::on_damperButton_clicked()
  {
c598b01b2   김태훈   GUI 업데이트
437
438
      if (oven->damper())
          oven->closeDamper();
8c2952457   김태훈   응용 프로그램 추가
439
      else
c598b01b2   김태훈   GUI 업데이트
440
          oven->openDamper();
8c2952457   김태훈   응용 프로그램 추가
441
442
443
444
  }
  
  void ManualCookWindow::on_humidificationButton_clicked()
  {
c598b01b2   김태훈   GUI 업데이트
445
446
      if (oven->humidification())
          oven->stopHumidification();
8c2952457   김태훈   응용 프로그램 추가
447
      else
c598b01b2   김태훈   GUI 업데이트
448
          oven->startHumidification();
8c2952457   김태훈   응용 프로그램 추가
449
450
451
452
  }
  
  void ManualCookWindow::on_repeatButton_clicked()
  {
8c2952457   김태훈   응용 프로그램 추가
453
8c2952457   김태훈   응용 프로그램 추가
454
455
456
457
  }
  
  void ManualCookWindow::on_cooldownButton_clicked()
  {
bb26a0523   김태훈   소스 코드 정리
458
      startCookingTimer.stop();
cfc2fcc35   김태훈   쿨다운 팝업 추가
459
460
461
462
  
      CooldownPopup *p = new CooldownPopup(this, oven);
      p->setWindowModality(Qt::WindowModal);
      p->showFullScreen();
8c2952457   김태훈   응용 프로그램 추가
463
464
465
466
  }
  
  void ManualCookWindow::on_reserveButton_clicked()
  {
8c2952457   김태훈   응용 프로그램 추가
467
8c2952457   김태훈   응용 프로그램 추가
468
469
470
471
  }
  
  void ManualCookWindow::on_favoritesButton_clicked()
  {
f588aa273   김태훈   부가 기능 로직 추가
472
473
474
475
476
      if (oven->cooking())
          return;
  
      ConfirmPopup *p = new ConfirmPopup(this, tr("즐겨찾기 항목에 추가하시겠습니까?"));
      p->showFullScreen();
8c2952457   김태훈   응용 프로그램 추가
477
f588aa273   김태훈   부가 기능 로직 추가
478
479
480
481
482
483
484
      connect(p, SIGNAL(accepted()), SLOT(addFavorite()));
  
      if (startCookingTimer.isActive())
      {
          startCookingTimer.stop();
          connect(p, SIGNAL(rejected()), &startCookingTimer, SLOT(start()));
      }
8c2952457   김태훈   응용 프로그램 추가
485
  }
bb26a0523   김태훈   소스 코드 정리
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
  
  void ManualCookWindow::on_goBackStackButton_clicked()
  {
      ui->buttonStack->setCurrentIndex(1);
  }
  
  void ManualCookWindow::on_goFrontStackButton_clicked()
  {
      ui->buttonStack->setCurrentIndex(0);
  }
  
  void ManualCookWindow::on_backButton_clicked()
  {
      stop();
      close();
  }
f588aa273   김태훈   부가 기능 로직 추가
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
  
  void ManualCookWindow::addFavorite()
  {
      ManualCookSetting s;
      s.mode = oven->mode();
      s.humidity = oven->humidity();
      s.temp = oven->temp();
      s.time = oven->time();
      s.fan = oven->fan();
      s.coreTempEnabled = oven->interTempEnabled();
      s.coreTemp = oven->interTemp();
  
      FavoriteNamePopup *p = new FavoriteNamePopup(this, s);
      p->showFullScreen();
  }