Blame view

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