Commit cfc2fcc35abae38edf16dfbbc56d5afc4cec12d3

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

쿨다운 팝업 추가

app/gui/oven_control/cooldownpopup.cpp
... ... @@ -0,0 +1,205 @@
  1 +#include "cooldownpopup.h"
  2 +#include "ui_cooldownpopup.h"
  3 +
  4 +CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) :
  5 + QWidget(parent),
  6 + ui(new Ui::CooldownPopup),
  7 + oven(oven),
  8 + showingCurrentTemp(false)
  9 +{
  10 + ui->setupUi(this);
  11 +
  12 + setAttribute(Qt::WA_DeleteOnClose);
  13 +
  14 + ui->openDoorAnimation->load(":/images/animation/door_big_01.png");
  15 + ui->openDoorAnimation->load(":/images/animation/door_big_02.png");
  16 + ui->openDoorAnimation->load(":/images/animation/door_big_03.png");
  17 + ui->openDoorAnimation->load(":/images/animation/door_big_04.png");
  18 + ui->openDoorAnimation->load(":/images/animation/door_big_05.png");
  19 + ui->openDoorAnimation->load(":/images/animation/door_big_06.png");
  20 + ui->openDoorAnimation->load(":/images/animation/door_big_07.png");
  21 + ui->openDoorAnimation->load(":/images/animation/door_big_08.png");
  22 + ui->openDoorAnimation->load(":/images/animation/door_big_09.png");
  23 + ui->openDoorAnimation->start(300);
  24 +
  25 + cookingFanLevel = oven->fan();
  26 + expectingFanLevel = oven->maxFan();
  27 + started = false;
  28 + opened = false;
  29 +
  30 + connect(oven, SIGNAL(changed(Oven*)), SLOT(updateView()));
  31 +
  32 + cooldownStartTimer.setSingleShot(true);
  33 + cooldownStartTimer.setInterval(2000);
  34 + connect(&cooldownStartTimer, SIGNAL(timeout()), SLOT(start()));
  35 +
  36 + showCurrentTempTimer.setSingleShot(true);
  37 + showCurrentTempTimer.setInterval(2000);
  38 + connect(&showCurrentTempTimer, SIGNAL(timeout()), SLOT(showCurrentTemp()));
  39 +
  40 + checkOvenTimer.setInterval(100);
  41 + connect(&checkOvenTimer, SIGNAL(timeout()), SLOT(checkOven()));
  42 +
  43 + connect(ui->tempSlider, SIGNAL(valueChanged(int)), SLOT(updateView()));
  44 +
  45 + updateView();
  46 +
  47 + cooldownStartTimer.start();
  48 +}
  49 +
  50 +CooldownPopup::~CooldownPopup()
  51 +{
  52 + delete ui;
  53 +}
  54 +
  55 +void CooldownPopup::start()
  56 +{
  57 + started = true;
  58 + opened = false;
  59 +
  60 + checkOvenTimer.start();
  61 +
  62 + updateView();
  63 +}
  64 +
  65 +void CooldownPopup::stop()
  66 +{
  67 + started = false;
  68 +
  69 + oven->stopCooldown();
  70 + oven->setFan(cookingFanLevel);
  71 +
  72 + close();
  73 +}
  74 +
  75 +void CooldownPopup::showCurrentTemp()
  76 +{
  77 + showingCurrentTemp = true;
  78 + updateView();
  79 +}
  80 +
  81 +void CooldownPopup::updateView()
  82 +{
  83 + int temp;
  84 + if (showingCurrentTemp)
  85 + temp = oven->currentTemp();
  86 + else
  87 + temp = ui->tempSlider->value();
  88 +
  89 + ui->tempCurrentLabel->setText(QString("%1<span style=\"font-size:11pt;\">℃</span>").arg(temp));
  90 +
  91 + switch (expectingFanLevel)
  92 + {
  93 + case 1:
  94 + ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan1.png);");
  95 + break;
  96 + case 2:
  97 + ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan2.png);");
  98 + break;
  99 + case 3:
  100 + ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan3.png);");
  101 + break;
  102 + case 4:
  103 + ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan4.png);");
  104 + break;
  105 + case 5:
  106 + ui->fanButton->setStyleSheet("background-image: url(:/images/cooldown/fan5.png);");
  107 + break;
  108 + }
  109 +
  110 + if (oven->humidification())
  111 + ui->humidificationButton->setStyleSheet("background-image: url(:/images/cooldown/side_nozzle_ov.png);");
  112 + else
  113 + ui->humidificationButton->setStyleSheet("background-image: url(:/images/cooldown/side_nozzle.png);");
  114 +
  115 + if (started && !oven->door())
  116 + ui->openDoorWidget->show();
  117 + else
  118 + ui->openDoorWidget->hide();
  119 +}
  120 +
  121 +void CooldownPopup::checkOven()
  122 +{
  123 + updateView();
  124 +
  125 + if (!started)
  126 + return;
  127 +
  128 + if (!opened)
  129 + {
  130 + if (oven->door())
  131 + {
  132 + opened = true;
  133 + oven->setFan(expectingFanLevel);
  134 + oven->startCooldown();
  135 + }
  136 + }
  137 + else
  138 + {
  139 + if (oven->currentTemp() <= ui->tempSlider->value())
  140 + {
  141 + stop();
  142 + }
  143 + }
  144 +}
  145 +
  146 +void CooldownPopup::on_closeButton_clicked()
  147 +{
  148 + stop();
  149 + close();
  150 +}
  151 +
  152 +void CooldownPopup::on_closeButton_2_clicked()
  153 +{
  154 + stop();
  155 + close();
  156 +}
  157 +
  158 +void CooldownPopup::on_tempButton_pressed()
  159 +{
  160 + showCurrentTempTimer.start();
  161 +}
  162 +
  163 +void CooldownPopup::on_tempButton_released()
  164 +{
  165 + if (showCurrentTempTimer.isActive())
  166 + showCurrentTempTimer.stop();
  167 +
  168 + if (showingCurrentTemp)
  169 + {
  170 + showingCurrentTemp = false;
  171 + updateView();
  172 + }
  173 +}
  174 +
  175 +void CooldownPopup::on_runButton_clicked()
  176 +{
  177 + if (cooldownStartTimer.isActive())
  178 + {
  179 + cooldownStartTimer.stop();
  180 + start();
  181 + }
  182 +}
  183 +
  184 +void CooldownPopup::on_fanButton_clicked()
  185 +{
  186 + expectingFanLevel--;
  187 + if (expectingFanLevel < oven->minFan())
  188 + expectingFanLevel = oven->maxFan();
  189 +
  190 + if (oven->cooldown())
  191 + oven->setFan(expectingFanLevel);
  192 + else
  193 + updateView();
  194 +
  195 + if (cooldownStartTimer.isActive())
  196 + cooldownStartTimer.start();
  197 +}
  198 +
  199 +void CooldownPopup::on_humidificationButton_clicked()
  200 +{
  201 + if (oven->humidification())
  202 + oven->stopHumidification();
  203 + else
  204 + oven->startHumidification();
  205 +}
... ...
app/gui/oven_control/cooldownpopup.h
... ... @@ -0,0 +1,58 @@
  1 +#ifndef COOLDOWNPOPUP_H
  2 +#define COOLDOWNPOPUP_H
  3 +
  4 +#include <QWidget>
  5 +#include <QTimer>
  6 +
  7 +#include "oven.h"
  8 +
  9 +namespace Ui {
  10 +class CooldownPopup;
  11 +}
  12 +
  13 +class CooldownPopup : public QWidget
  14 +{
  15 + Q_OBJECT
  16 +
  17 +public:
  18 + explicit CooldownPopup(QWidget *parent = 0, Oven *oven = 0);
  19 + ~CooldownPopup();
  20 +
  21 +private slots:
  22 + void start();
  23 + void stop();
  24 + void showCurrentTemp();
  25 + void updateView();
  26 + void checkOven();
  27 +
  28 + void on_closeButton_clicked();
  29 +
  30 + void on_closeButton_2_clicked();
  31 +
  32 + void on_tempButton_pressed();
  33 +
  34 + void on_tempButton_released();
  35 +
  36 + void on_runButton_clicked();
  37 +
  38 + void on_fanButton_clicked();
  39 +
  40 + void on_humidificationButton_clicked();
  41 +
  42 +private:
  43 + Ui::CooldownPopup *ui;
  44 + Oven *oven;
  45 +
  46 + QTimer cooldownStartTimer;
  47 + QTimer checkOvenTimer;
  48 +
  49 + bool showingCurrentTemp;
  50 + QTimer showCurrentTempTimer;
  51 +
  52 + int cookingFanLevel;
  53 + int expectingFanLevel;
  54 + bool started;
  55 + bool opened;
  56 +};
  57 +
  58 +#endif // COOLDOWNPOPUP_H
... ...
app/gui/oven_control/cooldownpopup.ui
... ... @@ -0,0 +1,445 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<ui version="4.0">
  3 + <class>CooldownPopup</class>
  4 + <widget class="QWidget" name="CooldownPopup">
  5 + <property name="geometry">
  6 + <rect>
  7 + <x>0</x>
  8 + <y>0</y>
  9 + <width>900</width>
  10 + <height>1600</height>
  11 + </rect>
  12 + </property>
  13 + <property name="windowTitle">
  14 + <string>Form</string>
  15 + </property>
  16 + <property name="styleSheet">
  17 + <string notr="true">#closeButton { border: none; }
  18 +#closeButton_2 { border: none; }
  19 +#background { background-image: url(:/images/background/popup/373.png); }
  20 +
  21 +QPushButton {
  22 +background-position: center;
  23 +background-repeat: no-repeat;
  24 +border: none;
  25 +}
  26 +
  27 +QPushButton[style=&quot;icon&quot;] { background-image: url(:/images/slider_icon/background.png); }
  28 +
  29 +QSlider::groove {
  30 +background-image: url(:/images/slider/groove.png);
  31 +background-repeat: no-repeat;
  32 +background-position: center;
  33 +}
  34 +
  35 +QSlider::sub-page {
  36 +background-repeat: no-repeat;
  37 +background-position: left center;
  38 +margin: 0px 5px;
  39 +}
  40 +
  41 +QSlider[sliderColor=&quot;red&quot;]::sub-page {
  42 +background-image: url(:/images/slider/sub_red.png);
  43 +}
  44 +
  45 +QSlider[sliderColor=&quot;yellow&quot;]::sub-page {
  46 +background-image: url(:/images/slider/sub_yellow.png);
  47 +}
  48 +
  49 +QSlider[sliderColor=&quot;white&quot;]::sub-page {
  50 +background-image: url(:/images/slider/sub_white.png);
  51 +}
  52 +
  53 +QSlider[sliderColor=&quot;blue&quot;]::sub-page {
  54 +background-image: url(:/images/slider/sub_blue.png);
  55 +}
  56 +
  57 +QSlider[sliderColor=&quot;green&quot;]::sub-page {
  58 +background-image: url(:/images/slider/sub_green.png);
  59 +}
  60 +
  61 +QSlider::handle {
  62 +background-image: url(:/images/slider/handle_big.png);
  63 +background-repeat: no-repeat;
  64 +background-position: center;
  65 +width: 23px;
  66 +height: 33px;
  67 +}</string>
  68 + </property>
  69 + <widget class="QPushButton" name="closeButton_2">
  70 + <property name="geometry">
  71 + <rect>
  72 + <x>0</x>
  73 + <y>801</y>
  74 + <width>900</width>
  75 + <height>799</height>
  76 + </rect>
  77 + </property>
  78 + <property name="text">
  79 + <string/>
  80 + </property>
  81 + </widget>
  82 + <widget class="QWidget" name="background" native="true">
  83 + <property name="geometry">
  84 + <rect>
  85 + <x>0</x>
  86 + <y>426</y>
  87 + <width>900</width>
  88 + <height>373</height>
  89 + </rect>
  90 + </property>
  91 + <widget class="QPushButton" name="tempButton">
  92 + <property name="geometry">
  93 + <rect>
  94 + <x>30</x>
  95 + <y>50</y>
  96 + <width>140</width>
  97 + <height>140</height>
  98 + </rect>
  99 + </property>
  100 + <property name="styleSheet">
  101 + <string notr="true">QPushButton { image: url(:/images/slider_icon/cooldown.png); }
  102 +QPushButton::pressed { image: url(:/images/slider_icon/cooldown_ov.png); }</string>
  103 + </property>
  104 + <property name="text">
  105 + <string notr="true"/>
  106 + </property>
  107 + <property name="style" stdset="0">
  108 + <string notr="true">icon</string>
  109 + </property>
  110 + </widget>
  111 + <widget class="QPushButton" name="runButton">
  112 + <property name="geometry">
  113 + <rect>
  114 + <x>590</x>
  115 + <y>260</y>
  116 + <width>78</width>
  117 + <height>78</height>
  118 + </rect>
  119 + </property>
  120 + <property name="styleSheet">
  121 + <string notr="true">QPushButton { background-image: url(:/images/cooldown/run.png); }
  122 +QPushButton:pressed { background-image: url(:/images/cooldown/run_ov.png); }</string>
  123 + </property>
  124 + <property name="text">
  125 + <string/>
  126 + </property>
  127 + </widget>
  128 + <widget class="QPushButton" name="fanButton">
  129 + <property name="geometry">
  130 + <rect>
  131 + <x>690</x>
  132 + <y>260</y>
  133 + <width>78</width>
  134 + <height>78</height>
  135 + </rect>
  136 + </property>
  137 + <property name="styleSheet">
  138 + <string notr="true">QPushButton { background-image: url(:/images/cooldown/fan5.png); }</string>
  139 + </property>
  140 + <property name="text">
  141 + <string/>
  142 + </property>
  143 + </widget>
  144 + <widget class="QPushButton" name="humidificationButton">
  145 + <property name="geometry">
  146 + <rect>
  147 + <x>790</x>
  148 + <y>260</y>
  149 + <width>78</width>
  150 + <height>78</height>
  151 + </rect>
  152 + </property>
  153 + <property name="styleSheet">
  154 + <string notr="true">QPushButton { background-image: url(:/images/cooldown/side_nozzle.png); }
  155 +QPushButton:pressed { background-image: url(:/images/cooldown/side_nozzle_ov.png); }</string>
  156 + </property>
  157 + <property name="text">
  158 + <string/>
  159 + </property>
  160 + </widget>
  161 + <widget class="QLabel" name="tempMaxLabel">
  162 + <property name="enabled">
  163 + <bool>true</bool>
  164 + </property>
  165 + <property name="geometry">
  166 + <rect>
  167 + <x>711</x>
  168 + <y>60</y>
  169 + <width>151</width>
  170 + <height>51</height>
  171 + </rect>
  172 + </property>
  173 + <property name="palette">
  174 + <palette>
  175 + <active>
  176 + <colorrole role="WindowText">
  177 + <brush brushstyle="SolidPattern">
  178 + <color alpha="255">
  179 + <red>255</red>
  180 + <green>255</green>
  181 + <blue>255</blue>
  182 + </color>
  183 + </brush>
  184 + </colorrole>
  185 + </active>
  186 + <inactive>
  187 + <colorrole role="WindowText">
  188 + <brush brushstyle="SolidPattern">
  189 + <color alpha="255">
  190 + <red>255</red>
  191 + <green>255</green>
  192 + <blue>255</blue>
  193 + </color>
  194 + </brush>
  195 + </colorrole>
  196 + </inactive>
  197 + <disabled>
  198 + <colorrole role="WindowText">
  199 + <brush brushstyle="SolidPattern">
  200 + <color alpha="255">
  201 + <red>123</red>
  202 + <green>123</green>
  203 + <blue>123</blue>
  204 + </color>
  205 + </brush>
  206 + </colorrole>
  207 + </disabled>
  208 + </palette>
  209 + </property>
  210 + <property name="font">
  211 + <font>
  212 + <family>Malgun Gothic</family>
  213 + <pointsize>9</pointsize>
  214 + </font>
  215 + </property>
  216 + <property name="text">
  217 + <string>증가</string>
  218 + </property>
  219 + <property name="alignment">
  220 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  221 + </property>
  222 + </widget>
  223 + <widget class="QLabel" name="tempMinLabel">
  224 + <property name="enabled">
  225 + <bool>true</bool>
  226 + </property>
  227 + <property name="geometry">
  228 + <rect>
  229 + <x>196</x>
  230 + <y>60</y>
  231 + <width>151</width>
  232 + <height>51</height>
  233 + </rect>
  234 + </property>
  235 + <property name="palette">
  236 + <palette>
  237 + <active>
  238 + <colorrole role="WindowText">
  239 + <brush brushstyle="SolidPattern">
  240 + <color alpha="255">
  241 + <red>255</red>
  242 + <green>255</green>
  243 + <blue>255</blue>
  244 + </color>
  245 + </brush>
  246 + </colorrole>
  247 + </active>
  248 + <inactive>
  249 + <colorrole role="WindowText">
  250 + <brush brushstyle="SolidPattern">
  251 + <color alpha="255">
  252 + <red>255</red>
  253 + <green>255</green>
  254 + <blue>255</blue>
  255 + </color>
  256 + </brush>
  257 + </colorrole>
  258 + </inactive>
  259 + <disabled>
  260 + <colorrole role="WindowText">
  261 + <brush brushstyle="SolidPattern">
  262 + <color alpha="255">
  263 + <red>123</red>
  264 + <green>123</green>
  265 + <blue>123</blue>
  266 + </color>
  267 + </brush>
  268 + </colorrole>
  269 + </disabled>
  270 + </palette>
  271 + </property>
  272 + <property name="font">
  273 + <font>
  274 + <family>Malgun Gothic</family>
  275 + <pointsize>9</pointsize>
  276 + </font>
  277 + </property>
  278 + <property name="text">
  279 + <string>감소</string>
  280 + </property>
  281 + <property name="alignment">
  282 + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
  283 + </property>
  284 + </widget>
  285 + <widget class="QSlider" name="tempSlider">
  286 + <property name="geometry">
  287 + <rect>
  288 + <x>196</x>
  289 + <y>103</y>
  290 + <width>666</width>
  291 + <height>33</height>
  292 + </rect>
  293 + </property>
  294 + <property name="minimum">
  295 + <number>30</number>
  296 + </property>
  297 + <property name="maximum">
  298 + <number>300</number>
  299 + </property>
  300 + <property name="pageStep">
  301 + <number>10</number>
  302 + </property>
  303 + <property name="tracking">
  304 + <bool>true</bool>
  305 + </property>
  306 + <property name="orientation">
  307 + <enum>Qt::Horizontal</enum>
  308 + </property>
  309 + <property name="sliderColor" stdset="0">
  310 + <string>red</string>
  311 + </property>
  312 + </widget>
  313 + <widget class="QLabel" name="tempCurrentLabel">
  314 + <property name="enabled">
  315 + <bool>true</bool>
  316 + </property>
  317 + <property name="geometry">
  318 + <rect>
  319 + <x>210</x>
  320 + <y>130</y>
  321 + <width>641</width>
  322 + <height>51</height>
  323 + </rect>
  324 + </property>
  325 + <property name="palette">
  326 + <palette>
  327 + <active>
  328 + <colorrole role="WindowText">
  329 + <brush brushstyle="SolidPattern">
  330 + <color alpha="255">
  331 + <red>255</red>
  332 + <green>255</green>
  333 + <blue>255</blue>
  334 + </color>
  335 + </brush>
  336 + </colorrole>
  337 + </active>
  338 + <inactive>
  339 + <colorrole role="WindowText">
  340 + <brush brushstyle="SolidPattern">
  341 + <color alpha="255">
  342 + <red>255</red>
  343 + <green>255</green>
  344 + <blue>255</blue>
  345 + </color>
  346 + </brush>
  347 + </colorrole>
  348 + </inactive>
  349 + <disabled>
  350 + <colorrole role="WindowText">
  351 + <brush brushstyle="SolidPattern">
  352 + <color alpha="255">
  353 + <red>123</red>
  354 + <green>123</green>
  355 + <blue>123</blue>
  356 + </color>
  357 + </brush>
  358 + </colorrole>
  359 + </disabled>
  360 + </palette>
  361 + </property>
  362 + <property name="font">
  363 + <font>
  364 + <family>Roboto</family>
  365 + <pointsize>16</pointsize>
  366 + <weight>75</weight>
  367 + <bold>true</bold>
  368 + </font>
  369 + </property>
  370 + <property name="text">
  371 + <string>스팀</string>
  372 + </property>
  373 + <property name="alignment">
  374 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  375 + </property>
  376 + </widget>
  377 + </widget>
  378 + <widget class="QPushButton" name="closeButton">
  379 + <property name="geometry">
  380 + <rect>
  381 + <x>0</x>
  382 + <y>0</y>
  383 + <width>900</width>
  384 + <height>426</height>
  385 + </rect>
  386 + </property>
  387 + <property name="text">
  388 + <string/>
  389 + </property>
  390 + </widget>
  391 + <widget class="QWidget" name="openDoorWidget" native="true">
  392 + <property name="geometry">
  393 + <rect>
  394 + <x>0</x>
  395 + <y>0</y>
  396 + <width>900</width>
  397 + <height>426</height>
  398 + </rect>
  399 + </property>
  400 + <property name="styleSheet">
  401 + <string notr="true">#openDoorWidget { background-image: url(:/images/clock/background.png); }</string>
  402 + </property>
  403 + <widget class="AnimatedImageBox" name="openDoorAnimation">
  404 + <property name="geometry">
  405 + <rect>
  406 + <x>366</x>
  407 + <y>20</y>
  408 + <width>251</width>
  409 + <height>292</height>
  410 + </rect>
  411 + </property>
  412 + <property name="text">
  413 + <string>TextLabel</string>
  414 + </property>
  415 + </widget>
  416 + <widget class="QLabel" name="label_5">
  417 + <property name="geometry">
  418 + <rect>
  419 + <x>430</x>
  420 + <y>170</y>
  421 + <width>85</width>
  422 + <height>24</height>
  423 + </rect>
  424 + </property>
  425 + <property name="text">
  426 + <string/>
  427 + </property>
  428 + <property name="pixmap">
  429 + <pixmap resource="resources.qrc">:/images/animation/open_door_arrow.png</pixmap>
  430 + </property>
  431 + </widget>
  432 + </widget>
  433 + </widget>
  434 + <customwidgets>
  435 + <customwidget>
  436 + <class>AnimatedImageBox</class>
  437 + <extends>QLabel</extends>
  438 + <header>animatedimagebox.h</header>
  439 + </customwidget>
  440 + </customwidgets>
  441 + <resources>
  442 + <include location="resources.qrc"/>
  443 + </resources>
  444 + <connections/>
  445 +</ui>
... ...
app/gui/oven_control/manualcookwindow.cpp
... ... @@ -6,6 +6,7 @@
6 6 #include <QtDebug>
7 7  
8 8 #include "preheatpopup.h"
  9 +#include "cooldownpopup.h"
9 10  
10 11 ManualCookWindow::ManualCookWindow(QWidget *parent, Oven *oven, UdpHandler *udp) :
11 12 QMainWindow(parent),
... ... @@ -14,6 +15,7 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Oven *oven, UdpHandler *udp)
14 15 ui->setupUi(this);
15 16  
16 17 ui->clockContainer->setParent(ui->upperStack);
  18 + ui->closeDoorWidget->setParent(ui->upperStack);
17 19 ui->outerStack->setParent(ui->bodyStack);
18 20 ui->innerStack->setParent(ui->bodyStack);
19 21 setAttribute(Qt::WA_DeleteOnClose);
... ... @@ -91,6 +93,17 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Oven *oven, UdpHandler *udp)
91 93 connect(this, SIGNAL(cookStopRequested()), cookingStartTimer, SLOT(stop()));
92 94  
93 95 ui->bodyStack->setCurrentIndex(0);
  96 +
  97 + ui->openDoorAnimation->load(":/images/animation/door_big_09.png");
  98 + ui->openDoorAnimation->load(":/images/animation/door_big_08.png");
  99 + ui->openDoorAnimation->load(":/images/animation/door_big_07.png");
  100 + ui->openDoorAnimation->load(":/images/animation/door_big_06.png");
  101 + ui->openDoorAnimation->load(":/images/animation/door_big_05.png");
  102 + ui->openDoorAnimation->load(":/images/animation/door_big_04.png");
  103 + ui->openDoorAnimation->load(":/images/animation/door_big_03.png");
  104 + ui->openDoorAnimation->load(":/images/animation/door_big_02.png");
  105 + ui->openDoorAnimation->load(":/images/animation/door_big_01.png");
  106 + ui->openDoorAnimation->start(300);
94 107 }
95 108  
96 109 ManualCookWindow::~ManualCookWindow()
... ... @@ -318,6 +331,11 @@ QPushButton:pressed {\
318 331 break;
319 332 }
320 333  
  334 + if (oven->paused() && !oven->cooldown() && oven->door())
  335 + ui->upperStack->setCurrentIndex(1);
  336 + else
  337 + ui->upperStack->setCurrentIndex(0);
  338 +
321 339 updateLabels();
322 340 }
323 341  
... ... @@ -394,10 +412,11 @@ void ManualCookWindow::on_repeatButton_clicked()
394 412  
395 413 void ManualCookWindow::on_cooldownButton_clicked()
396 414 {
397   - if (oven->cooldown())
398   - oven->stopCooldown();
399   - else
400   - oven->startCooldown();
  415 + cookingStartTimer->stop();
  416 +
  417 + CooldownPopup *p = new CooldownPopup(this, oven);
  418 + p->setWindowModality(Qt::WindowModal);
  419 + p->showFullScreen();
401 420 }
402 421  
403 422 void ManualCookWindow::on_reserveButton_clicked()
... ...
app/gui/oven_control/manualcookwindow.ui
... ... @@ -106,6 +106,43 @@ height: 33px;
106 106 </property>
107 107 </widget>
108 108 </widget>
  109 + <widget class="QWidget" name="closeDoorWidget">
  110 + <property name="styleSheet">
  111 + <string notr="true">#closeDoorWidget { background-image: url(:/images/clock/background.png); }</string>
  112 + </property>
  113 + <widget class="AnimatedImageBox" name="openDoorAnimation">
  114 + <property name="geometry">
  115 + <rect>
  116 + <x>366</x>
  117 + <y>20</y>
  118 + <width>251</width>
  119 + <height>292</height>
  120 + </rect>
  121 + </property>
  122 + <property name="text">
  123 + <string/>
  124 + </property>
  125 + <property name="pixmap">
  126 + <pixmap resource="resources.qrc">:/images/animation/door_big_02.png</pixmap>
  127 + </property>
  128 + </widget>
  129 + <widget class="QLabel" name="label_5">
  130 + <property name="geometry">
  131 + <rect>
  132 + <x>430</x>
  133 + <y>170</y>
  134 + <width>85</width>
  135 + <height>24</height>
  136 + </rect>
  137 + </property>
  138 + <property name="text">
  139 + <string/>
  140 + </property>
  141 + <property name="pixmap">
  142 + <pixmap resource="resources.qrc">:/images/animation/close_door_arrow.png</pixmap>
  143 + </property>
  144 + </widget>
  145 + </widget>
109 146 </widget>
110 147 <widget class="QPushButton" name="combiButton">
111 148 <property name="geometry">
... ... @@ -2427,6 +2464,11 @@ QPushButton:pressed { border-image: url(:/images/manual_button/ok_ov.png); }&lt;/st
2427 2464 <header>clock.h</header>
2428 2465 <container>1</container>
2429 2466 </customwidget>
  2467 + <customwidget>
  2468 + <class>AnimatedImageBox</class>
  2469 + <extends>QLabel</extends>
  2470 + <header>animatedimagebox.h</header>
  2471 + </customwidget>
2430 2472 </customwidgets>
2431 2473 <resources>
2432 2474 <include location="resources.qrc"/>
... ...
app/gui/oven_control/oven_control.pro
... ... @@ -41,7 +41,8 @@ SOURCES += main.cpp\
41 41 washwindow.cpp \
42 42 washstepgauge.cpp \
43 43 preheatpopup.cpp \
44   - longpreheattempgauge.cpp
  44 + longpreheattempgauge.cpp \
  45 + cooldownpopup.cpp
45 46  
46 47 HEADERS += mainwindow.h \
47 48 cook.h \
... ... @@ -71,7 +72,8 @@ HEADERS += mainwindow.h \
71 72 washwindow.h \
72 73 washstepgauge.h \
73 74 preheatpopup.h \
74   - longpreheattempgauge.h
  75 + longpreheattempgauge.h \
  76 + cooldownpopup.h
75 77  
76 78 FORMS += mainwindow.ui \
77 79 manualcookwindow.ui \
... ... @@ -87,7 +89,8 @@ FORMS += mainwindow.ui \
87 89 autocookwindow.ui \
88 90 autocookconfigwindow.ui \
89 91 washwindow.ui \
90   - preheatpopup.ui
  92 + preheatpopup.ui \
  93 + cooldownpopup.ui
91 94  
92 95 RESOURCES += \
93 96 resources.qrc
... ...