diff --git a/app/gui/oven_control/manualcookwindow.cpp b/app/gui/oven_control/manualcookwindow.cpp index bdfc402..777a752 100644 --- a/app/gui/oven_control/manualcookwindow.cpp +++ b/app/gui/oven_control/manualcookwindow.cpp @@ -8,6 +8,8 @@ #include "preheatpopup.h" #include "cooldownpopup.h" +#include + ManualCookWindow::ManualCookWindow(QWidget *parent, Oven::Mode mode) : QMainWindow(parent), ui(new Ui::ManualCookWindow) @@ -23,22 +25,11 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Oven::Mode mode) : oven = Oven::getInstance(); connect(oven, SIGNAL(changed(Oven*)), this, SLOT(onOvenUpdated(Oven*))); - connect(ui->steamButton, SIGNAL(clicked()), this, SIGNAL(modeButtonClicked())); - connect(ui->combiButton, SIGNAL(clicked()), this, SIGNAL(modeButtonClicked())); - connect(ui->dryheatButton, SIGNAL(clicked()), this, SIGNAL(modeButtonClicked())); - - QSignalMapper *sm = new QSignalMapper(this); - sm->setMapping(ui->steamButton, (int) Oven::SteamMode); - sm->setMapping(ui->combiButton, (int) Oven::CombinationMode); - sm->setMapping(ui->dryheatButton, (int) Oven::HeatMode); - connect(ui->steamButton, SIGNAL(clicked()), sm, SLOT(map())); - connect(ui->combiButton, SIGNAL(clicked()), sm, SLOT(map())); - connect(ui->dryheatButton, SIGNAL(clicked()), sm, SLOT(map())); - connect(sm, SIGNAL(mapped(int)), this, SLOT(onModeButtonClicked(int))); - 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))); + connect(ui->timeSlider, SIGNAL(valueChanged(int)), &startCookingTimer, SLOT(start())); + connect(ui->timeSlider, SIGNAL(valueChanged(int)), this, SLOT(updateLabels())); connect(ui->interTempSlider, SIGNAL(valueChanged(int)), oven, SLOT(setInterTemp(int))); connect(ui->humiditySlider, SIGNAL(sliderMoved(int)), this, SLOT(updateLabels())); @@ -48,53 +39,39 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Oven::Mode mode) : connect(ui->innerInterTempSlider, SIGNAL(sliderMoved(int)), this, SLOT(updateLabels())); connect(ui->innerInterTempSlider, SIGNAL(valueChanged(int)), this, SLOT(updateLabels())); - QTimer *cookingTimerCheckTimer = new QTimer(this); - cookingTimerCheckTimer->setInterval(100); - connect(cookingTimerCheckTimer, SIGNAL(timeout()), this, SLOT(checkTime())); - connect(this, SIGNAL(modeButtonClicked()), cookingTimerCheckTimer, SLOT(stop())); + checkTimeTimer.setInterval(100); + connect(&checkTimeTimer, SIGNAL(timeout()), SLOT(checkTime())); - cookingStartTimer = new QTimer(this); - cookingStartTimer->setSingleShot(true); - cookingStartTimer->setInterval(3000); - connect(ui->timeSlider, SIGNAL(valueChanged(int)), cookingStartTimer, SLOT(start())); - connect(ui->timeSlider, SIGNAL(valueChanged(int)), this, SLOT(updateLabels())); - connect(this, SIGNAL(modeButtonClicked()), cookingStartTimer, SLOT(stop())); - connect(cookingStartTimer, SIGNAL(timeout()), oven, SLOT(startCooking())); - connect(cookingStartTimer, SIGNAL(timeout()), cookingTimerCheckTimer, SLOT(start())); - - QTimer *showCurHumTimer = new QTimer(this); - QTimer *showCurTempTimer = new QTimer(this); - showCurHumTimer->setInterval(2000); - showCurTempTimer->setInterval(2000); - - connect(ui->humidityButton, SIGNAL(pressed()), showCurHumTimer, SLOT(start())); - connect(ui->humidityButton, SIGNAL(released()), showCurHumTimer, SLOT(stop())); - connect(showCurHumTimer, SIGNAL(timeout()), this, SLOT(showCurrentHumidity())); - connect(ui->humidityButton, SIGNAL(released()), this, SLOT(hideCurrentHumidity())); - - connect(ui->tempButton, SIGNAL(pressed()), showCurTempTimer, SLOT(start())); - connect(ui->tempButton, SIGNAL(released()), showCurTempTimer, SLOT(stop())); - connect(showCurTempTimer, SIGNAL(timeout()), this, SLOT(showCurrentTemp())); - connect(ui->tempButton, SIGNAL(released()), this, SLOT(hideCurrentTemp())); - - QSignalMapper *smStack = new QSignalMapper(this); - smStack->setMapping(ui->goFrontStackButton, 0); - smStack->setMapping(ui->goBackStackButton, 1); - connect(ui->goFrontStackButton, SIGNAL(clicked()), smStack, SLOT(map())); - connect(ui->goBackStackButton, SIGNAL(clicked()), smStack, SLOT(map())); - connect(smStack, SIGNAL(mapped(int)), ui->buttonStack, SLOT(setCurrentIndex(int))); - - connect(ui->backButton, SIGNAL(clicked()), this, SLOT(hide())); - connect(ui->backButton, SIGNAL(clicked()), oven, SLOT(stop())); - connect(ui->backButton, SIGNAL(clicked()), cookingTimerCheckTimer, SLOT(stop())); - connect(ui->backButton, SIGNAL(clicked()), cookingStartTimer, SLOT(stop())); - connect(ui->backButton, SIGNAL(clicked()), showCurHumTimer, SLOT(stop())); - connect(ui->backButton, SIGNAL(clicked()), showCurTempTimer, SLOT(stop())); - - connect(this, SIGNAL(cookStopRequested()), cookingStartTimer, SLOT(stop())); + startCookingTimer.setSingleShot(true); + startCookingTimer.setInterval(3000); + connect(&startCookingTimer, SIGNAL(timeout()), SLOT(start())); + + showCurrentHumidityTimer.setSingleShot(true); + showCurrentHumidityTimer.setInterval(3000); + connect(&showCurrentHumidityTimer, SIGNAL(timeout()), SLOT(showCurrentHumidity())); + + showCurrentTempTimer.setSingleShot(true); + showCurrentTempTimer.setInterval(3000); + connect(&showCurrentTempTimer, SIGNAL(timeout()), SLOT(showCurrentTemp())); ui->bodyStack->setCurrentIndex(0); + QTimer *setupAnimationTimer = new QTimer(this); + setupAnimationTimer->setSingleShot(true); + connect(setupAnimationTimer, SIGNAL(timeout()), SLOT(setupAnimation())); + + oven->setDefault(mode); + + setupAnimationTimer->start(0); +} + +ManualCookWindow::~ManualCookWindow() +{ + delete ui; +} + +void ManualCookWindow::setupAnimation() +{ 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"); @@ -105,13 +82,6 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Oven::Mode mode) : ui->openDoorAnimation->load(":/images/animation/door_big_02.png"); ui->openDoorAnimation->load(":/images/animation/door_big_01.png"); ui->openDoorAnimation->start(300); - - oven->setDefault(mode); -} - -ManualCookWindow::~ManualCookWindow() -{ - delete ui; } void ManualCookWindow::checkTime() @@ -214,13 +184,6 @@ void ManualCookWindow::updateLabels() ui->curInterTempLabel->setText(buf.sprintf("%d", oven->currentInterTemp())); } -void ManualCookWindow::onModeButtonClicked(int mode) -{ - oven->stop(); - oven->setDefault((Oven::Mode) mode); - ui->bodyStack->setCurrentIndex(0); -} - void ManualCookWindow::onOvenUpdated(Oven *oven) { switch (oven->mode()) @@ -342,24 +305,74 @@ QPushButton:pressed {\ updateLabels(); } -void ManualCookWindow::on_runStopButton_clicked() +void ManualCookWindow::setOvenDefault(Oven::Mode mode) { - if (oven->cooking()) - { - oven->stopCooking(); - emit cookStopRequested(); - } + stop(); + + oven->setDefault(mode); + ui->bodyStack->setCurrentIndex(0); +} + +void ManualCookWindow::start() +{ + oven->startCooking(); + checkTimeTimer.start(); +} + +void ManualCookWindow::stop() +{ + oven->stop(); + startCookingTimer.stop(); + checkTimeTimer.stop(); +} + +void ManualCookWindow::on_steamButton_clicked() +{ + setOvenDefault(Oven::SteamMode); +} + +void ManualCookWindow::on_combiButton_clicked() +{ + setOvenDefault(Oven::CombinationMode); +} + +void ManualCookWindow::on_dryheatButton_clicked() +{ + setOvenDefault(Oven::HeatMode); +} + +void ManualCookWindow::on_humidityButton_pressed() +{ + showCurrentHumidityTimer.start(); +} + +void ManualCookWindow::on_humidityButton_released() +{ + if (showCurrentHumidityTimer.isActive()) + showCurrentHumidityTimer.stop(); else - oven->startCooking(); + hideCurrentHumidity(); } -void ManualCookWindow::on_fanButton_clicked() +void ManualCookWindow::on_tempButton_pressed() { - int fan = oven->fan() + 1; - if (fan > oven->maxFan()) - fan = oven->minFan(); + showCurrentTempTimer.start(); +} - oven->setFan(fan); +void ManualCookWindow::on_tempButton_released() +{ + if (showCurrentTempTimer.isActive()) + showCurrentTempTimer.stop(); + else + hideCurrentTemp(); +} + +void ManualCookWindow::on_interTempButton_clicked() +{ + if (oven->interTempEnabled()) + oven->setInterTempEnabled(false); + else + ui->bodyStack->setCurrentIndex(1); } void ManualCookWindow::on_goOuterButton_clicked() @@ -375,17 +388,28 @@ void ManualCookWindow::on_applyButton_clicked() oven->setInterTempEnabled(true); } -void ManualCookWindow::on_interTempButton_clicked() +void ManualCookWindow::on_runStopButton_clicked() { - if (oven->interTempEnabled()) - oven->setInterTempEnabled(false); + if (oven->cooking()) + { + stop(); + } else - ui->bodyStack->setCurrentIndex(1); + oven->startCooking(); +} + +void ManualCookWindow::on_fanButton_clicked() +{ + int fan = oven->fan() + 1; + if (fan > oven->maxFan()) + fan = oven->minFan(); + + oven->setFan(fan); } void ManualCookWindow::on_preheatButton_clicked() { - cookingStartTimer->stop(); + startCookingTimer.stop(); PreheatPopup *p = new PreheatPopup(this, oven); p->setWindowModality(Qt::WindowModal); @@ -415,7 +439,7 @@ void ManualCookWindow::on_repeatButton_clicked() void ManualCookWindow::on_cooldownButton_clicked() { - cookingStartTimer->stop(); + startCookingTimer.stop(); CooldownPopup *p = new CooldownPopup(this, oven); p->setWindowModality(Qt::WindowModal); @@ -431,3 +455,19 @@ void ManualCookWindow::on_favoritesButton_clicked() { } + +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(); +} diff --git a/app/gui/oven_control/manualcookwindow.h b/app/gui/oven_control/manualcookwindow.h index 9003fe6..f4ca85e 100644 --- a/app/gui/oven_control/manualcookwindow.h +++ b/app/gui/oven_control/manualcookwindow.h @@ -19,14 +19,15 @@ public: ~ManualCookWindow(); signals: - void modeButtonClicked(); void cookStopRequested(); public slots: - void onModeButtonClicked(int mode); - void onOvenUpdated(Oven *oven); private slots: + void setupAnimation(); + void setOvenDefault(Oven::Mode mode); + void start(); + void stop(); void checkTime(); void updateLabels(); void showCurrentHumidity(); @@ -34,30 +35,44 @@ private slots: void showCurrentTemp(); void hideCurrentTemp(); - void on_runStopButton_clicked(); - void on_fanButton_clicked(); + void onOvenUpdated(Oven *oven); + + void on_steamButton_clicked(); + void on_combiButton_clicked(); + void on_dryheatButton_clicked(); + + void on_humidityButton_pressed(); + void on_humidityButton_released(); + void on_tempButton_pressed(); + void on_tempButton_released(); + void on_interTempButton_clicked(); void on_goOuterButton_clicked(); void on_applyButton_clicked(); - void on_interTempButton_clicked(); + void on_runStopButton_clicked(); + void on_fanButton_clicked(); void on_preheatButton_clicked(); - void on_damperButton_clicked(); - void on_humidificationButton_clicked(); - void on_repeatButton_clicked(); - void on_cooldownButton_clicked(); - void on_reserveButton_clicked(); - void on_favoritesButton_clicked(); + void on_goBackStackButton_clicked(); + void on_goFrontStackButton_clicked(); + + void on_backButton_clicked(); + private: Ui::ManualCookWindow *ui; Oven *oven; - QTimer *cookingStartTimer; + + QTimer startCookingTimer; + QTimer checkTimeTimer; + + QTimer showCurrentHumidityTimer; + QTimer showCurrentTempTimer; int humidity; int temp; diff --git a/app/gui/oven_control/manualcookwindow.ui b/app/gui/oven_control/manualcookwindow.ui index 38c5a5b..605c7e6 100644 --- a/app/gui/oven_control/manualcookwindow.ui +++ b/app/gui/oven_control/manualcookwindow.ui @@ -46,6 +46,18 @@ background-position: center; border: none; } +QPushButton[style="interTemp"] { +background-repeat: no-repeat; +background-position: center; +background-clip: border; +background-origin: border; + +border-top: 130px; +border-style: hidden; +color: white; +font-size: 30px; +} + QSlider::groove { background-image: url(:/images/slider/groove_ticks.png); background-repeat: no-repeat; @@ -73,24 +85,6 @@ height: 33px; 426 - - - 0 - 0 - - - - - 900 - 426 - - - - - 900 - 426 - - #clockContainer { background-image: url(:/images/clock/background.png); } @@ -119,12 +113,6 @@ height: 33px; 292 - - - - - :/images/animation/door_big_02.png - @@ -135,9 +123,6 @@ height: 33px; 24 - - - :/images/animation/close_door_arrow.png @@ -326,7 +311,7 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/help_ov.png); }0 0 900 - 1451 + 1600 @@ -1109,7 +1094,7 @@ QPushButton:pressed { background-image: url(:/images/manual_button/favorites_ov. - 스팀 + 0% Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -1173,7 +1158,7 @@ QPushButton:pressed { background-image: url(:/images/manual_button/favorites_ov. - 스팀 + 30<span style="font-size:11pt;">℃</span> Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -1237,7 +1222,7 @@ QPushButton:pressed { background-image: url(:/images/manual_button/favorites_ov. - 스팀 + 0<span style="font-size:11pt;">초</span> Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -1301,7 +1286,7 @@ QPushButton:pressed { background-image: url(:/images/manual_button/favorites_ov. - 스팀 + <span style="font-size:11pt;">℃</span> Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -1381,35 +1366,41 @@ QPushButton:pressed { image: url(:/images/slider_icon/core_temp_ov.png); } - 282 - 1314 - 86 - 85 + 200 + 1260 + 250 + 190 - QPushButton { border-image: url(:/images/manual_button/back.png); } -QPushButton:pressed { border-image: url(:/images/manual_button/back_ov.png); } + QPushButton { background-image: url(:/images/manual_button/back.png); } +QPushButton:pressed { background-image: url(:/images/manual_button/back_ov.png); } - + 이전으로 + + + interTemp - 532 - 1314 - 86 - 85 + 450 + 1260 + 250 + 190 - QPushButton { border-image: url(:/images/manual_button/ok.png); } -QPushButton:pressed { border-image: url(:/images/manual_button/ok_ov.png); } + QPushButton { background-image: url(:/images/manual_button/ok.png); } +QPushButton:pressed { background-image: url(:/images/manual_button/ok_ov.png); } - + 확인/적용하기 + + + interTemp @@ -2300,130 +2291,6 @@ QPushButton:pressed { border-image: url(:/images/manual_button/ok_ov.png); }Qt::AlignCenter - - - true - - - - 214 - 1390 - 225 - 50 - - - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 255 - 255 - - - - - - - - - 123 - 123 - 123 - - - - - - - - - Malgun Gothic - 11 - - - - 이전으로 - - - Qt::AlignBottom|Qt::AlignHCenter - - - - - true - - - - 467 - 1389 - 225 - 50 - - - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 255 - 255 - - - - - - - - - 123 - 123 - 123 - - - - - - - - - Malgun Gothic - 11 - - - - 확인/적용하기 - - - Qt::AlignBottom|Qt::AlignHCenter - - curHumidityLabel targetHumidityLabel curTempLabel @@ -2445,8 +2312,6 @@ QPushButton:pressed { border-image: url(:/images/manual_button/ok_ov.png); }steamLabel_11 steamLabel_12 steamLabel_13 - steamLabel_14 - steamLabel_15 bodyStack