Blame view

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