Commit 8d6b74605c6ec03508dd9e9fa130bb3aaaf85eaa

Authored by 김태훈
1 parent 4c8eff3826
Exists in master and in 2 other branches fhd, fhd-demo

세척 시작 전 온도 검사 후 쿨다운

app/gui/oven_control/cooldownpopup.cpp
... ... @@ -6,10 +6,9 @@
6 6 #include "soundplayer.h"
7 7 #include "stringer.h"
8 8  
9   -CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) :
  9 +CooldownPopup::CooldownPopup(QWidget *parent, int target) :
10 10 QWidget(parent),
11 11 ui(new Ui::CooldownPopup),
12   - oven(oven),
13 12 showingCurrentTemp(false),
14 13 needCookStarting(false)
15 14 {
... ... @@ -17,6 +16,8 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) :
17 16  
18 17 setAttribute(Qt::WA_DeleteOnClose);
19 18  
  19 + oven = Oven::getInstance();
  20 +
20 21 lastDisplayedFanLevel = -1;
21 22 lastDisplayedHumidification = !oven->humidification();
22 23  
... ... @@ -33,6 +34,7 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) :
33 34  
34 35 ui->tempSlider->setSubPixmap(":/images/slider/sub_red.png");
35 36 ui->tempSlider->setRange(30, 300);
  37 + ui->tempSlider->setValue(target);
36 38  
37 39 cookingFanLevel = oven->fan();
38 40 expectingFanLevel = oven->maxFan();
... ...
app/gui/oven_control/cooldownpopup.h
... ... @@ -15,7 +15,7 @@ class CooldownPopup : public QWidget
15 15 Q_OBJECT
16 16  
17 17 public:
18   - explicit CooldownPopup(QWidget *parent = 0, Oven *oven = 0);
  18 + explicit CooldownPopup(QWidget *parent = 0, int target = 30);
19 19 ~CooldownPopup();
20 20  
21 21 protected:
... ...
app/gui/oven_control/manualcookwindow.cpp
... ... @@ -988,7 +988,7 @@ void ManualCookWindow::on_cooldownButton_clicked()
988 988 {
989 989 startCookingTimer.stop();
990 990  
991   - CooldownPopup *p = new CooldownPopup(this, oven);
  991 + CooldownPopup *p = new CooldownPopup(this, 30);
992 992 p->setWindowModality(Qt::WindowModal);
993 993 p->showFullScreen();
994 994  
... ...
app/gui/oven_control/washwindow.cpp
... ... @@ -9,6 +9,7 @@
9 9 #include "configwindow.h"
10 10 #include "mainwindow.h"
11 11 #include "ovenstatics.h"
  12 +#include "cooldownpopup.h"
12 13  
13 14 WashWindow::WashWindow(QWidget *parent) :
14 15 QMainWindow(parent),
... ... @@ -134,21 +135,48 @@ void WashWindow::start(int type)
134 135 if (type < 1 || type > 5)
135 136 return;
136 137  
137   - state = OpenDoor;
138   -
139 138 this->type = type;
140 139  
141   - returnToClockTimer.stop();
  140 + if (udp->getData().curr_heat > 60)
  141 + {
  142 + state = CoolDown;
142 143  
143   - ui->animation->clear();
144   - ui->animation->load(":/images/animation/pull_01.png");
145   - ui->animation->load(":/images/animation/pull_02.png");
146   - ui->animation->load(":/images/animation/pull_03.png");
147   - ui->animation->load(":/images/animation/pull_04.png");
148   - ui->animation->show();
149   - ui->animation->start(300);
  144 + CooldownPopup *p = new CooldownPopup(this, 60);
  145 + p->setWindowModality(Qt::WindowModal);
  146 + p->showFullScreen();
  147 +
  148 + connect(p, SIGNAL(destroyed(QObject*)), SLOT(resume()));
  149 + }
  150 + else
  151 + {
  152 + state = OpenDoor;
150 153  
151   - udp->set(TG_OVEN_MODE, 2);
  154 + returnToClockTimer.stop();
  155 +
  156 + ui->animation->clear();
  157 + ui->animation->load(":/images/animation/pull_01.png");
  158 + ui->animation->load(":/images/animation/pull_02.png");
  159 + ui->animation->load(":/images/animation/pull_03.png");
  160 + ui->animation->load(":/images/animation/pull_04.png");
  161 + ui->animation->show();
  162 + ui->animation->start(300);
  163 +
  164 + udp->set(TG_OVEN_MODE, 2);
  165 + }
  166 +}
  167 +
  168 +void WashWindow::resume()
  169 +{
  170 + if (udp->getData().door_state)
  171 + {
  172 + state = CloseDoor;
  173 + showCloseDoor();
  174 + }
  175 + else
  176 + {
  177 + state = Request;
  178 + request();
  179 + }
152 180 }
153 181  
154 182 void WashWindow::stop()
... ... @@ -220,6 +248,48 @@ void WashWindow::updateView()
220 248 }
221 249 }
222 250  
  251 +void WashWindow::showCloseDoor()
  252 +{
  253 + ui->animation->clear();
  254 + ui->animation->load(":/images/animation/door_big_09.png");
  255 + ui->animation->load(":/images/animation/door_big_08.png");
  256 + ui->animation->load(":/images/animation/door_big_07.png");
  257 + ui->animation->load(":/images/animation/door_big_06.png");
  258 + ui->animation->load(":/images/animation/door_big_05.png");
  259 + ui->animation->load(":/images/animation/door_big_04.png");
  260 + ui->animation->load(":/images/animation/door_big_03.png");
  261 + ui->animation->load(":/images/animation/door_big_02.png");
  262 + ui->animation->load(":/images/animation/door_big_01.png");
  263 + ui->animation->start(300);
  264 + ui->closeDoorArrow->show();
  265 +}
  266 +
  267 +void WashWindow::request()
  268 +{
  269 + udp->set(TG_CLEAN_TYPE, type);
  270 + udp->turnOn(TG_CLEANING);
  271 +
  272 + OvenStatistics::getInstance()->setWashState(true);
  273 +
  274 + SoundPlayer::playStart();
  275 +
  276 + ui->closeDoorArrow->hide();
  277 + ui->animation->clear();
  278 + ui->animation->load(":/images/animation/wash_01.png");
  279 + ui->animation->load(":/images/animation/wash_02.png");
  280 + ui->animation->load(":/images/animation/wash_03.png");
  281 + ui->animation->load(":/images/animation/wash_04.png");
  282 + ui->animation->start(300);
  283 +
  284 + ui->washStepGauge->setValue(0);
  285 + ui->titleLabel->setText(tr("기기의 내부를 세척 중입니다"));
  286 + ui->descLabel->setText(tr("완료될 때까지 문을 열지 마세요.\n제품 내부의 자동 세척 기능을 실행 중입니다."));
  287 + ui->washStepTypeLabel->setText("");
  288 + ui->washStepCountLabel->setText("");
  289 +
  290 + ui->upperStack->setCurrentIndex(1);
  291 +}
  292 +
223 293 void WashWindow::onChanged()
224 294 {
225 295 if (state == Idle)
... ... @@ -228,51 +298,20 @@ void WashWindow::onChanged()
228 298 switch (state)
229 299 {
230 300 case Idle:
  301 + case CoolDown:
231 302 return;
232 303 case OpenDoor:
233 304 if (udp->getData().door_state)
234 305 {
235 306 state = CloseDoor;
236   -
237   - ui->animation->clear();
238   - ui->animation->load(":/images/animation/door_big_09.png");
239   - ui->animation->load(":/images/animation/door_big_08.png");
240   - ui->animation->load(":/images/animation/door_big_07.png");
241   - ui->animation->load(":/images/animation/door_big_06.png");
242   - ui->animation->load(":/images/animation/door_big_05.png");
243   - ui->animation->load(":/images/animation/door_big_04.png");
244   - ui->animation->load(":/images/animation/door_big_03.png");
245   - ui->animation->load(":/images/animation/door_big_02.png");
246   - ui->animation->load(":/images/animation/door_big_01.png");
247   - ui->closeDoorArrow->show();
  307 + showCloseDoor();
248 308 }
249 309 break;
250 310 case CloseDoor:
251 311 if (!udp->getData().door_state)
252 312 {
253 313 state = Request;
254   -
255   - SoundPlayer::playStart();
256   -
257   - ui->closeDoorArrow->hide();
258   - ui->animation->clear();
259   -
260   - ui->animation->load(":/images/animation/wash_01.png");
261   - ui->animation->load(":/images/animation/wash_02.png");
262   - ui->animation->load(":/images/animation/wash_03.png");
263   - ui->animation->load(":/images/animation/wash_04.png");
264   - ui->washStepGauge->setValue(0);
265   - ui->titleLabel->setText(tr("기기의 내부를 세척 중입니다"));
266   - ui->descLabel->setText(tr("완료될 때까지 문을 열지 마세요.\n제품 내부의 자동 세척 기능을 실행 중입니다."));
267   - ui->washStepTypeLabel->setText("");
268   - ui->washStepCountLabel->setText("");
269   -
270   - ui->upperStack->setCurrentIndex(1);
271   -
272   - udp->set(TG_CLEAN_TYPE, type);
273   - udp->turnOn(TG_CLEANING);
274   -
275   - OvenStatistics::getInstance()->setWashState(true);
  314 + request();
276 315 }
277 316 break;
278 317 case Request:
... ... @@ -371,6 +410,7 @@ void WashWindow::on_backButton_clicked()
371 410 case Running:
372 411 stop();
373 412 break;
  413 + case CoolDown:
374 414 case Stopping:
375 415 case RequestClean:
376 416 case RunningClean:
... ... @@ -398,6 +438,7 @@ void WashWindow::on_configButton_clicked()
398 438 case Running:
399 439 stop();
400 440 break;
  441 + case CoolDown:
401 442 case Stopping:
402 443 case RequestClean:
403 444 case RunningClean:
... ...
app/gui/oven_control/washwindow.h
... ... @@ -24,11 +24,15 @@ protected:
24 24  
25 25 private slots:
26 26 void start(int type);
  27 + void resume();
27 28 void stop();
28 29 void returnToClock();
29 30 void updateGauge();
30 31 void updateView();
31 32  
  33 + void showCloseDoor();
  34 + void request();
  35 +
32 36 void onChanged();
33 37  
34 38 void on_backButton_clicked();
... ... @@ -40,7 +44,7 @@ private:
40 44 UdpHandler *udp;
41 45  
42 46 enum State {
43   - Idle, OpenDoor, CloseDoor, Request, Running, Stopping,
  47 + Idle, CoolDown, OpenDoor, CloseDoor, Request, Running, Stopping,
44 48 RequestClean, RunningClean
45 49 } state = Idle;
46 50  
... ...