Blame view

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