Commit c36fa2b96f6121d96b093aae26c31bf6c1a769f5
1 parent
3606eb85f1
Exists in
master
and in
2 other branches
세척 시작 명령 순서 변경, 세척 중 문 열림 시 문 닫음 애니메이션 출력
Showing
2 changed files
with
85 additions
and
16 deletions
Show diff stats
app/gui/oven_control/washwindow.cpp
| @@ -153,15 +153,7 @@ void WashWindow::start(int type) | @@ -153,15 +153,7 @@ void WashWindow::start(int type) | ||
| 153 | 153 | ||
| 154 | returnToClockTimer.stop(); | 154 | returnToClockTimer.stop(); |
| 155 | 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); | 156 | + showOpenDoor(); |
| 165 | } | 157 | } |
| 166 | } | 158 | } |
| 167 | 159 | ||
| @@ -246,10 +238,67 @@ void WashWindow::updateView() | @@ -246,10 +238,67 @@ void WashWindow::updateView() | ||
| 246 | break; | 238 | break; |
| 247 | } | 239 | } |
| 248 | } | 240 | } |
| 241 | + | ||
| 242 | + switch (state) | ||
| 243 | + { | ||
| 244 | + case Idle: | ||
| 245 | + case CoolDown: | ||
| 246 | + showIdle(); | ||
| 247 | + break; | ||
| 248 | + case OpenDoor: | ||
| 249 | + if (udp->getData().door_state == 0) | ||
| 250 | + showOpenDoor(); | ||
| 251 | + break; | ||
| 252 | + case CloseDoor: | ||
| 253 | + case Request: | ||
| 254 | + case Running: | ||
| 255 | + case Stopping: | ||
| 256 | + case RequestClean: | ||
| 257 | + case RunningClean: | ||
| 258 | + if (udp->getData().door_state != 0) | ||
| 259 | + showCloseDoor(); | ||
| 260 | + else | ||
| 261 | + showWash(); | ||
| 262 | + break; | ||
| 263 | + } | ||
| 264 | +} | ||
| 265 | + | ||
| 266 | +void WashWindow::showIdle() | ||
| 267 | +{ | ||
| 268 | + if (animationState == Stopped) | ||
| 269 | + return; | ||
| 270 | + | ||
| 271 | + animationState = Stopped; | ||
| 272 | + | ||
| 273 | + ui->animation->stop(); | ||
| 274 | + ui->animation->clear(); | ||
| 275 | + ui->animation->load(":/images/animation/wash_04.png"); | ||
| 276 | +} | ||
| 277 | + | ||
| 278 | +void WashWindow::showOpenDoor() | ||
| 279 | +{ | ||
| 280 | + if (animationState == ShowingOpenDoor) | ||
| 281 | + return; | ||
| 282 | + | ||
| 283 | + animationState = ShowingOpenDoor; | ||
| 284 | + | ||
| 285 | + ui->animation->clear(); | ||
| 286 | + ui->animation->load(":/images/animation/pull_01.png"); | ||
| 287 | + ui->animation->load(":/images/animation/pull_02.png"); | ||
| 288 | + ui->animation->load(":/images/animation/pull_03.png"); | ||
| 289 | + ui->animation->load(":/images/animation/pull_04.png"); | ||
| 290 | + ui->animation->show(); | ||
| 291 | + ui->animation->start(300); | ||
| 292 | + ui->closeDoorArrow->hide(); | ||
| 249 | } | 293 | } |
| 250 | 294 | ||
| 251 | void WashWindow::showCloseDoor() | 295 | void WashWindow::showCloseDoor() |
| 252 | { | 296 | { |
| 297 | + if (animationState == ShowingCloseDoor) | ||
| 298 | + return; | ||
| 299 | + | ||
| 300 | + animationState = ShowingCloseDoor; | ||
| 301 | + | ||
| 253 | ui->animation->clear(); | 302 | ui->animation->clear(); |
| 254 | ui->animation->load(":/images/animation/door_big_09.png"); | 303 | ui->animation->load(":/images/animation/door_big_09.png"); |
| 255 | ui->animation->load(":/images/animation/door_big_08.png"); | 304 | ui->animation->load(":/images/animation/door_big_08.png"); |
| @@ -260,26 +309,39 @@ void WashWindow::showCloseDoor() | @@ -260,26 +309,39 @@ void WashWindow::showCloseDoor() | ||
| 260 | ui->animation->load(":/images/animation/door_big_03.png"); | 309 | ui->animation->load(":/images/animation/door_big_03.png"); |
| 261 | ui->animation->load(":/images/animation/door_big_02.png"); | 310 | ui->animation->load(":/images/animation/door_big_02.png"); |
| 262 | ui->animation->load(":/images/animation/door_big_01.png"); | 311 | ui->animation->load(":/images/animation/door_big_01.png"); |
| 312 | + ui->animation->show(); | ||
| 263 | ui->animation->start(300); | 313 | ui->animation->start(300); |
| 264 | ui->closeDoorArrow->show(); | 314 | ui->closeDoorArrow->show(); |
| 265 | } | 315 | } |
| 266 | 316 | ||
| 267 | -void WashWindow::request() | 317 | +void WashWindow::showWash() |
| 268 | { | 318 | { |
| 269 | - udp->set(TG_CLEAN_TYPE, type); | ||
| 270 | - udp->turnOn(TG_CLEANING); | ||
| 271 | - | ||
| 272 | - OvenStatistics::getInstance()->setWashState(true); | 319 | + if (animationState == ShowingWash) |
| 320 | + return; | ||
| 273 | 321 | ||
| 274 | - SoundPlayer::playStart(); | 322 | + animationState = ShowingWash; |
| 275 | 323 | ||
| 276 | - ui->closeDoorArrow->hide(); | ||
| 277 | ui->animation->clear(); | 324 | ui->animation->clear(); |
| 278 | ui->animation->load(":/images/animation/wash_01.png"); | 325 | ui->animation->load(":/images/animation/wash_01.png"); |
| 279 | ui->animation->load(":/images/animation/wash_02.png"); | 326 | ui->animation->load(":/images/animation/wash_02.png"); |
| 280 | ui->animation->load(":/images/animation/wash_03.png"); | 327 | ui->animation->load(":/images/animation/wash_03.png"); |
| 281 | ui->animation->load(":/images/animation/wash_04.png"); | 328 | ui->animation->load(":/images/animation/wash_04.png"); |
| 329 | + ui->animation->show(); | ||
| 282 | ui->animation->start(300); | 330 | ui->animation->start(300); |
| 331 | + ui->closeDoorArrow->hide(); | ||
| 332 | +} | ||
| 333 | + | ||
| 334 | +void WashWindow::request() | ||
| 335 | +{ | ||
| 336 | + udp->set(TG_OVEN_MODE, 2); | ||
| 337 | + udp->set(TG_CLEAN_TYPE, type); | ||
| 338 | + udp->turnOn(TG_CLEANING); | ||
| 339 | + | ||
| 340 | + OvenStatistics::getInstance()->setWashState(true); | ||
| 341 | + | ||
| 342 | + SoundPlayer::playStart(); | ||
| 343 | + | ||
| 344 | + showWash(); | ||
| 283 | 345 | ||
| 284 | ui->washStepGauge->setValue(0); | 346 | ui->washStepGauge->setValue(0); |
| 285 | ui->titleLabel->setText(tr("기기의 내부를 세척 중입니다")); | 347 | ui->titleLabel->setText(tr("기기의 내부를 세척 중입니다")); |
app/gui/oven_control/washwindow.h
| @@ -30,7 +30,10 @@ private slots: | @@ -30,7 +30,10 @@ private slots: | ||
| 30 | void updateGauge(); | 30 | void updateGauge(); |
| 31 | void updateView(); | 31 | void updateView(); |
| 32 | 32 | ||
| 33 | + void showIdle(); | ||
| 34 | + void showOpenDoor(); | ||
| 33 | void showCloseDoor(); | 35 | void showCloseDoor(); |
| 36 | + void showWash(); | ||
| 34 | void request(); | 37 | void request(); |
| 35 | 38 | ||
| 36 | void onChanged(); | 39 | void onChanged(); |
| @@ -48,6 +51,10 @@ private: | @@ -48,6 +51,10 @@ private: | ||
| 48 | RequestClean, RunningClean | 51 | RequestClean, RunningClean |
| 49 | } state = Idle; | 52 | } state = Idle; |
| 50 | 53 | ||
| 54 | + enum AnimationState { | ||
| 55 | + Stopped, ShowingOpenDoor, ShowingCloseDoor, ShowingWash | ||
| 56 | + } animationState = Stopped; | ||
| 57 | + | ||
| 51 | bool selected; | 58 | bool selected; |
| 52 | bool opened; | 59 | bool opened; |
| 53 | bool started; | 60 | bool started; |