Blame view

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