Blame view

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