From c36fa2b96f6121d96b093aae26c31bf6c1a769f5 Mon Sep 17 00:00:00 2001 From: victor Date: Mon, 21 Aug 2017 16:40:15 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=B8=EC=B2=99=20=EC=8B=9C=EC=9E=91=20?= =?UTF-8?q?=EB=AA=85=EB=A0=B9=20=EC=88=9C=EC=84=9C=20=EB=B3=80=EA=B2=BD,?= =?UTF-8?q?=20=EC=84=B8=EC=B2=99=20=EC=A4=91=20=EB=AC=B8=20=EC=97=B4?= =?UTF-8?q?=EB=A6=BC=20=EC=8B=9C=20=EB=AC=B8=20=EB=8B=AB=EC=9D=8C=20?= =?UTF-8?q?=EC=95=A0=EB=8B=88=EB=A9=94=EC=9D=B4=EC=85=98=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/gui/oven_control/washwindow.cpp | 94 ++++++++++++++++++++++++++++++------- app/gui/oven_control/washwindow.h | 7 +++ 2 files changed, 85 insertions(+), 16 deletions(-) diff --git a/app/gui/oven_control/washwindow.cpp b/app/gui/oven_control/washwindow.cpp index ae94e0e..91afb25 100644 --- a/app/gui/oven_control/washwindow.cpp +++ b/app/gui/oven_control/washwindow.cpp @@ -153,15 +153,7 @@ void WashWindow::start(int type) returnToClockTimer.stop(); - ui->animation->clear(); - ui->animation->load(":/images/animation/pull_01.png"); - ui->animation->load(":/images/animation/pull_02.png"); - ui->animation->load(":/images/animation/pull_03.png"); - ui->animation->load(":/images/animation/pull_04.png"); - ui->animation->show(); - ui->animation->start(300); - - udp->set(TG_OVEN_MODE, 2); + showOpenDoor(); } } @@ -246,10 +238,67 @@ void WashWindow::updateView() break; } } + + switch (state) + { + case Idle: + case CoolDown: + showIdle(); + break; + case OpenDoor: + if (udp->getData().door_state == 0) + showOpenDoor(); + break; + case CloseDoor: + case Request: + case Running: + case Stopping: + case RequestClean: + case RunningClean: + if (udp->getData().door_state != 0) + showCloseDoor(); + else + showWash(); + break; + } +} + +void WashWindow::showIdle() +{ + if (animationState == Stopped) + return; + + animationState = Stopped; + + ui->animation->stop(); + ui->animation->clear(); + ui->animation->load(":/images/animation/wash_04.png"); +} + +void WashWindow::showOpenDoor() +{ + if (animationState == ShowingOpenDoor) + return; + + animationState = ShowingOpenDoor; + + ui->animation->clear(); + ui->animation->load(":/images/animation/pull_01.png"); + ui->animation->load(":/images/animation/pull_02.png"); + ui->animation->load(":/images/animation/pull_03.png"); + ui->animation->load(":/images/animation/pull_04.png"); + ui->animation->show(); + ui->animation->start(300); + ui->closeDoorArrow->hide(); } void WashWindow::showCloseDoor() { + if (animationState == ShowingCloseDoor) + return; + + animationState = ShowingCloseDoor; + ui->animation->clear(); ui->animation->load(":/images/animation/door_big_09.png"); ui->animation->load(":/images/animation/door_big_08.png"); @@ -260,26 +309,39 @@ void WashWindow::showCloseDoor() ui->animation->load(":/images/animation/door_big_03.png"); ui->animation->load(":/images/animation/door_big_02.png"); ui->animation->load(":/images/animation/door_big_01.png"); + ui->animation->show(); ui->animation->start(300); ui->closeDoorArrow->show(); } -void WashWindow::request() +void WashWindow::showWash() { - udp->set(TG_CLEAN_TYPE, type); - udp->turnOn(TG_CLEANING); - - OvenStatistics::getInstance()->setWashState(true); + if (animationState == ShowingWash) + return; - SoundPlayer::playStart(); + animationState = ShowingWash; - ui->closeDoorArrow->hide(); ui->animation->clear(); ui->animation->load(":/images/animation/wash_01.png"); ui->animation->load(":/images/animation/wash_02.png"); ui->animation->load(":/images/animation/wash_03.png"); ui->animation->load(":/images/animation/wash_04.png"); + ui->animation->show(); ui->animation->start(300); + ui->closeDoorArrow->hide(); +} + +void WashWindow::request() +{ + udp->set(TG_OVEN_MODE, 2); + udp->set(TG_CLEAN_TYPE, type); + udp->turnOn(TG_CLEANING); + + OvenStatistics::getInstance()->setWashState(true); + + SoundPlayer::playStart(); + + showWash(); ui->washStepGauge->setValue(0); ui->titleLabel->setText(tr("기기의 내부를 세척 중입니다")); diff --git a/app/gui/oven_control/washwindow.h b/app/gui/oven_control/washwindow.h index d62d4ff..8919427 100644 --- a/app/gui/oven_control/washwindow.h +++ b/app/gui/oven_control/washwindow.h @@ -30,7 +30,10 @@ private slots: void updateGauge(); void updateView(); + void showIdle(); + void showOpenDoor(); void showCloseDoor(); + void showWash(); void request(); void onChanged(); @@ -48,6 +51,10 @@ private: RequestClean, RunningClean } state = Idle; + enum AnimationState { + Stopped, ShowingOpenDoor, ShowingCloseDoor, ShowingWash + } animationState = Stopped; + bool selected; bool opened; bool started; -- 2.1.4