Commit d66d7f5b443cd02409863597861746bad5822987
1 parent
f97982552e
Exists in
master
and in
2 other branches
GUI 버전 0.1.2
Showing
7 changed files
with
70 additions
and
18 deletions
Show diff stats
app/gui/oven_control/autocookselectionwindow.cpp
| @@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
| 8 | AutoCookSelectionWindow::AutoCookSelectionWindow(QWidget *parent, Oven *oven, Cook::CookType type) : | 8 | AutoCookSelectionWindow::AutoCookSelectionWindow(QWidget *parent, Oven *oven, Cook::CookType type) : |
| 9 | QMainWindow(parent), | 9 | QMainWindow(parent), |
| 10 | ui(new Ui::AutoCookSelectionWindow), | 10 | ui(new Ui::AutoCookSelectionWindow), |
| 11 | - oven(oven), type(type) | 11 | + oven(oven), type(type), autoCookWindowOpened(false) |
| 12 | { | 12 | { |
| 13 | ui->setupUi(this); | 13 | ui->setupUi(this); |
| 14 | 14 | ||
| @@ -47,7 +47,6 @@ AutoCookSelectionWindow::AutoCookSelectionWindow(QWidget *parent, Oven *oven, Co | @@ -47,7 +47,6 @@ AutoCookSelectionWindow::AutoCookSelectionWindow(QWidget *parent, Oven *oven, Co | ||
| 47 | 47 | ||
| 48 | for (int idx = 0; idx < cookList.size(); idx++) | 48 | for (int idx = 0; idx < cookList.size(); idx++) |
| 49 | { | 49 | { |
| 50 | - // TODO: make pushbuttons, map buttons to index, | ||
| 51 | int x = 12 + (idx % 3) * 294; | 50 | int x = 12 + (idx % 3) * 294; |
| 52 | int y = 615 + (idx / 3) * 80; | 51 | int y = 615 + (idx / 3) * 80; |
| 53 | 52 | ||
| @@ -72,8 +71,19 @@ AutoCookSelectionWindow::~AutoCookSelectionWindow() | @@ -72,8 +71,19 @@ AutoCookSelectionWindow::~AutoCookSelectionWindow() | ||
| 72 | 71 | ||
| 73 | void AutoCookSelectionWindow::onCookSelected(int idx) | 72 | void AutoCookSelectionWindow::onCookSelected(int idx) |
| 74 | { | 73 | { |
| 74 | + if (autoCookWindowOpened) | ||
| 75 | + return; | ||
| 76 | + | ||
| 77 | + autoCookWindowOpened = true; | ||
| 78 | + | ||
| 75 | AutoCookWindow *w = new AutoCookWindow(this, oven, cookList.at(idx)); | 79 | AutoCookWindow *w = new AutoCookWindow(this, oven, cookList.at(idx)); |
| 76 | w->showFullScreen(); | 80 | w->showFullScreen(); |
| 81 | + connect(w, SIGNAL(destroyed(QObject*)), SLOT(onAutoCookWindowDestroyed())); | ||
| 82 | +} | ||
| 83 | + | ||
| 84 | +void AutoCookSelectionWindow::onAutoCookWindowDestroyed() | ||
| 85 | +{ | ||
| 86 | + autoCookWindowOpened = false; | ||
| 77 | } | 87 | } |
| 78 | 88 | ||
| 79 | void AutoCookSelectionWindow::on_backButton_clicked() | 89 | void AutoCookSelectionWindow::on_backButton_clicked() |
app/gui/oven_control/autocookselectionwindow.h
| @@ -20,6 +20,7 @@ public: | @@ -20,6 +20,7 @@ public: | ||
| 20 | 20 | ||
| 21 | private slots: | 21 | private slots: |
| 22 | void onCookSelected(int idx); | 22 | void onCookSelected(int idx); |
| 23 | + void onAutoCookWindowDestroyed(); | ||
| 23 | 24 | ||
| 24 | void on_backButton_clicked(); | 25 | void on_backButton_clicked(); |
| 25 | 26 | ||
| @@ -28,6 +29,7 @@ private: | @@ -28,6 +29,7 @@ private: | ||
| 28 | Oven *oven; | 29 | Oven *oven; |
| 29 | Cook::CookType type; | 30 | Cook::CookType type; |
| 30 | QList<AbstractCook *> cookList; | 31 | QList<AbstractCook *> cookList; |
| 32 | + bool autoCookWindowOpened; | ||
| 31 | }; | 33 | }; |
| 32 | 34 | ||
| 33 | #endif // AUTOCOOKSELECTIONWINDOW_H | 35 | #endif // AUTOCOOKSELECTIONWINDOW_H |
app/gui/oven_control/autocookwindow.cpp
| @@ -32,8 +32,6 @@ AutoCookWindow::AutoCookWindow(QWidget *parent, Oven *oven, AbstractCook *cook) | @@ -32,8 +32,6 @@ AutoCookWindow::AutoCookWindow(QWidget *parent, Oven *oven, AbstractCook *cook) | ||
| 32 | cookStartTimer->setInterval(3000); | 32 | cookStartTimer->setInterval(3000); |
| 33 | connect(cookStartTimer, SIGNAL(timeout()), SLOT(start())); | 33 | connect(cookStartTimer, SIGNAL(timeout()), SLOT(start())); |
| 34 | 34 | ||
| 35 | - cookStartTimer->start(); | ||
| 36 | - | ||
| 37 | connect(ui->configButton_1, SIGNAL(pressed()), SIGNAL(stopCookStartTimer())); | 35 | connect(ui->configButton_1, SIGNAL(pressed()), SIGNAL(stopCookStartTimer())); |
| 38 | connect(ui->configButton_2, SIGNAL(pressed()), SIGNAL(stopCookStartTimer())); | 36 | connect(ui->configButton_2, SIGNAL(pressed()), SIGNAL(stopCookStartTimer())); |
| 39 | connect(ui->configButton_3, SIGNAL(pressed()), SIGNAL(stopCookStartTimer())); | 37 | connect(ui->configButton_3, SIGNAL(pressed()), SIGNAL(stopCookStartTimer())); |
| @@ -97,6 +95,8 @@ AutoCookWindow::AutoCookWindow(QWidget *parent, Oven *oven, AbstractCook *cook) | @@ -97,6 +95,8 @@ AutoCookWindow::AutoCookWindow(QWidget *parent, Oven *oven, AbstractCook *cook) | ||
| 97 | connect(&showCurrentTempTimer, SIGNAL(timeout()), SLOT(showCurrentTemp())); | 95 | connect(&showCurrentTempTimer, SIGNAL(timeout()), SLOT(showCurrentTemp())); |
| 98 | 96 | ||
| 99 | setupUi(); | 97 | setupUi(); |
| 98 | + | ||
| 99 | + cookStartTimer->start(); | ||
| 100 | } | 100 | } |
| 101 | 101 | ||
| 102 | AutoCookWindow::~AutoCookWindow() | 102 | AutoCookWindow::~AutoCookWindow() |
| @@ -248,6 +248,7 @@ void AutoCookWindow::setupUi() | @@ -248,6 +248,7 @@ void AutoCookWindow::setupUi() | ||
| 248 | 248 | ||
| 249 | void AutoCookWindow::updateView() | 249 | void AutoCookWindow::updateView() |
| 250 | { | 250 | { |
| 251 | + qDebug() << "updateView"; | ||
| 251 | if (started) | 252 | if (started) |
| 252 | { | 253 | { |
| 253 | ui->stackedWidget->setCurrentIndex(1); | 254 | ui->stackedWidget->setCurrentIndex(1); |
| @@ -345,6 +346,7 @@ void AutoCookWindow::updateView() | @@ -345,6 +346,7 @@ void AutoCookWindow::updateView() | ||
| 345 | 346 | ||
| 346 | void AutoCookWindow::viewStep(Cook::Step step) | 347 | void AutoCookWindow::viewStep(Cook::Step step) |
| 347 | { | 348 | { |
| 349 | + qDebug() << "viewStep" << step.type; | ||
| 348 | switch (Cook::classify(step.type)) | 350 | switch (Cook::classify(step.type)) |
| 349 | { | 351 | { |
| 350 | case Cook::PreheatClass: | 352 | case Cook::PreheatClass: |
| @@ -403,6 +405,7 @@ void AutoCookWindow::viewPreheatStep(Cook::Step step) | @@ -403,6 +405,7 @@ void AutoCookWindow::viewPreheatStep(Cook::Step step) | ||
| 403 | 405 | ||
| 404 | void AutoCookWindow::viewDoorStep(Cook::Step step) | 406 | void AutoCookWindow::viewDoorStep(Cook::Step step) |
| 405 | { | 407 | { |
| 408 | + qDebug() << "viewDoorStep"; | ||
| 406 | ui->cookStepLabel->hide(); | 409 | ui->cookStepLabel->hide(); |
| 407 | ui->cookStepIcon->hide(); | 410 | ui->cookStepIcon->hide(); |
| 408 | ui->doorStepLabel->show(); | 411 | ui->doorStepLabel->show(); |
| @@ -521,11 +524,9 @@ void AutoCookWindow::doCookStep(Cook::Step step) | @@ -521,11 +524,9 @@ void AutoCookWindow::doCookStep(Cook::Step step) | ||
| 521 | 524 | ||
| 522 | static bool checkReached(int target, int last, int current) | 525 | static bool checkReached(int target, int last, int current) |
| 523 | { | 526 | { |
| 524 | - if (target == current) | ||
| 525 | - return true; | ||
| 526 | - | ||
| 527 | - return ((target > last) && (target <= current)) | ||
| 528 | - || ((target < last) && (target >= current)); | 527 | + qDebug() << "checkReached" << target << last << current; |
| 528 | + return ((target >= last) && (target <= current)) | ||
| 529 | + || ((target <= last) && (target >= current)); | ||
| 529 | } | 530 | } |
| 530 | 531 | ||
| 531 | void AutoCookWindow::checkPreheatStep(Cook::Step step) | 532 | void AutoCookWindow::checkPreheatStep(Cook::Step step) |
| @@ -533,6 +534,9 @@ void AutoCookWindow::checkPreheatStep(Cook::Step step) | @@ -533,6 +534,9 @@ void AutoCookWindow::checkPreheatStep(Cook::Step step) | ||
| 533 | if (/*checkReached(step.humidity, lastHumidity, oven->currentHumidity()) | 534 | if (/*checkReached(step.humidity, lastHumidity, oven->currentHumidity()) |
| 534 | && */checkReached(step.temp, lastTemp, oven->currentTemp())) | 535 | && */checkReached(step.temp, lastTemp, oven->currentTemp())) |
| 535 | { | 536 | { |
| 537 | + if (selectedStepIndex == cook->currentStepIndex()) | ||
| 538 | + selectedStepIndex = cook->currentStepIndex() + 1; | ||
| 539 | + | ||
| 536 | cook->setCurrentStepIndex(cook->currentStepIndex() + 1); | 540 | cook->setCurrentStepIndex(cook->currentStepIndex() + 1); |
| 537 | doStep(); | 541 | doStep(); |
| 538 | } | 542 | } |
| @@ -540,13 +544,23 @@ void AutoCookWindow::checkPreheatStep(Cook::Step step) | @@ -540,13 +544,23 @@ void AutoCookWindow::checkPreheatStep(Cook::Step step) | ||
| 540 | 544 | ||
| 541 | void AutoCookWindow::checkDoorStep(Cook::Step /*step*/) | 545 | void AutoCookWindow::checkDoorStep(Cook::Step /*step*/) |
| 542 | { | 546 | { |
| 543 | - if (opened && !oven->door()) | 547 | + qDebug() << "checkDoorStep" << opened << oven->door(); |
| 548 | + if (opened) | ||
| 544 | { | 549 | { |
| 545 | - cook->setCurrentStepIndex(cook->currentStepIndex() + 1); | ||
| 546 | - doStep(); | 550 | + if (!oven->door()) |
| 551 | + { | ||
| 552 | + if (selectedStepIndex == cook->currentStepIndex()) | ||
| 553 | + selectedStepIndex = cook->currentStepIndex() + 1; | ||
| 554 | + | ||
| 555 | + cook->setCurrentStepIndex(cook->currentStepIndex() + 1); | ||
| 556 | + doStep(); | ||
| 557 | + } | ||
| 558 | + } | ||
| 559 | + else | ||
| 560 | + { | ||
| 561 | + if (oven->door()) | ||
| 562 | + opened = true; | ||
| 547 | } | 563 | } |
| 548 | - else if (!opened && oven->door()) | ||
| 549 | - opened = true; | ||
| 550 | } | 564 | } |
| 551 | 565 | ||
| 552 | void AutoCookWindow::checkCookStep(Cook::Step step) | 566 | void AutoCookWindow::checkCookStep(Cook::Step step) |
| @@ -556,6 +570,9 @@ void AutoCookWindow::checkCookStep(Cook::Step step) | @@ -556,6 +570,9 @@ void AutoCookWindow::checkCookStep(Cook::Step step) | ||
| 556 | if (/*checkReached(step.humidity, lastHumidity, oven->currentHumidity()) | 570 | if (/*checkReached(step.humidity, lastHumidity, oven->currentHumidity()) |
| 557 | && */checkReached(step.temp, lastTemp, oven->currentTemp())) | 571 | && */checkReached(step.temp, lastTemp, oven->currentTemp())) |
| 558 | { | 572 | { |
| 573 | + if (selectedStepIndex == cook->currentStepIndex()) | ||
| 574 | + selectedStepIndex = cook->currentStepIndex() + 1; | ||
| 575 | + | ||
| 559 | cook->setCurrentStepIndex(cook->currentStepIndex() + 1); | 576 | cook->setCurrentStepIndex(cook->currentStepIndex() + 1); |
| 560 | doStep(); | 577 | doStep(); |
| 561 | } | 578 | } |
| @@ -563,6 +580,9 @@ void AutoCookWindow::checkCookStep(Cook::Step step) | @@ -563,6 +580,9 @@ void AutoCookWindow::checkCookStep(Cook::Step step) | ||
| 563 | { | 580 | { |
| 564 | if (cook->interTemp() == oven->currentInterTemp()) | 581 | if (cook->interTemp() == oven->currentInterTemp()) |
| 565 | { | 582 | { |
| 583 | + if (selectedStepIndex == cook->currentStepIndex()) | ||
| 584 | + selectedStepIndex = cook->stepCount() - 1; | ||
| 585 | + | ||
| 566 | cook->setCurrentStepIndex(cook->stepCount() - 1); | 586 | cook->setCurrentStepIndex(cook->stepCount() - 1); |
| 567 | doStep(); | 587 | doStep(); |
| 568 | } | 588 | } |
| @@ -572,6 +592,8 @@ void AutoCookWindow::checkCookStep(Cook::Step step) | @@ -572,6 +592,8 @@ void AutoCookWindow::checkCookStep(Cook::Step step) | ||
| 572 | 592 | ||
| 573 | void AutoCookWindow::start() | 593 | void AutoCookWindow::start() |
| 574 | { | 594 | { |
| 595 | + qDebug() << "start"; | ||
| 596 | + | ||
| 575 | started = true; | 597 | started = true; |
| 576 | oven->setTime(cook->time()); | 598 | oven->setTime(cook->time()); |
| 577 | oven->setInterTempEnabled(interTempEnabled); | 599 | oven->setInterTempEnabled(interTempEnabled); |
| @@ -585,6 +607,7 @@ void AutoCookWindow::start() | @@ -585,6 +607,7 @@ void AutoCookWindow::start() | ||
| 585 | 607 | ||
| 586 | void AutoCookWindow::stop() | 608 | void AutoCookWindow::stop() |
| 587 | { | 609 | { |
| 610 | + qDebug() << "stop"; | ||
| 588 | oven->stop(); | 611 | oven->stop(); |
| 589 | checkCookTimer.stop(); | 612 | checkCookTimer.stop(); |
| 590 | 613 | ||
| @@ -593,6 +616,7 @@ void AutoCookWindow::stop() | @@ -593,6 +616,7 @@ void AutoCookWindow::stop() | ||
| 593 | 616 | ||
| 594 | void AutoCookWindow::doStep() | 617 | void AutoCookWindow::doStep() |
| 595 | { | 618 | { |
| 619 | + qDebug() << "doStep"; | ||
| 596 | Cook::Step step = cook->currentStep(); | 620 | Cook::Step step = cook->currentStep(); |
| 597 | switch (Cook::classify(step.type)) | 621 | switch (Cook::classify(step.type)) |
| 598 | { | 622 | { |
| @@ -612,6 +636,7 @@ void AutoCookWindow::doStep() | @@ -612,6 +636,7 @@ void AutoCookWindow::doStep() | ||
| 612 | 636 | ||
| 613 | void AutoCookWindow::checkCook() | 637 | void AutoCookWindow::checkCook() |
| 614 | { | 638 | { |
| 639 | + qDebug() << "checkCook"; | ||
| 615 | Cook::Step step = cook->currentStep(); | 640 | Cook::Step step = cook->currentStep(); |
| 616 | switch (Cook::classify(step.type)) | 641 | switch (Cook::classify(step.type)) |
| 617 | { | 642 | { |
app/gui/oven_control/cook.cpp
| @@ -62,7 +62,7 @@ int AbstractCook::currentStepIndex() | @@ -62,7 +62,7 @@ int AbstractCook::currentStepIndex() | ||
| 62 | 62 | ||
| 63 | void AbstractCook::setCurrentStepIndex(int index) | 63 | void AbstractCook::setCurrentStepIndex(int index) |
| 64 | { | 64 | { |
| 65 | - if (index < stepCount_) | 65 | + if (index < stepCount_ && index >= 0) |
| 66 | currentStep_ = index; | 66 | currentStep_ = index; |
| 67 | } | 67 | } |
| 68 | 68 |
app/gui/oven_control/mainwindow.ui
| @@ -1647,7 +1647,7 @@ QPushButton#primeButton:pressed { | @@ -1647,7 +1647,7 @@ QPushButton#primeButton:pressed { | ||
| 1647 | </font> | 1647 | </font> |
| 1648 | </property> | 1648 | </property> |
| 1649 | <property name="text"> | 1649 | <property name="text"> |
| 1650 | - <string>V0.1.1</string> | 1650 | + <string>V0.1.2</string> |
| 1651 | </property> | 1651 | </property> |
| 1652 | <property name="alignment"> | 1652 | <property name="alignment"> |
| 1653 | <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set> | 1653 | <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set> |
app/gui/oven_control/ovencontroller.cpp
| @@ -12,8 +12,21 @@ void OvenController::setUdpHandler(UdpHandler *udp) | @@ -12,8 +12,21 @@ void OvenController::setUdpHandler(UdpHandler *udp) | ||
| 12 | 12 | ||
| 13 | void OvenController::onDataChanged() | 13 | void OvenController::onDataChanged() |
| 14 | { | 14 | { |
| 15 | + bool opened = state.door_state != 0; | ||
| 16 | + | ||
| 15 | udp->fillControl(control); | 17 | udp->fillControl(control); |
| 16 | udp->fillData(state); | 18 | udp->fillData(state); |
| 19 | + | ||
| 20 | + if (opened) | ||
| 21 | + { | ||
| 22 | + if (state.door_state == 0) | ||
| 23 | + emit doorClosed(); | ||
| 24 | + } | ||
| 25 | + else | ||
| 26 | + { | ||
| 27 | + if (state.door_state != 0) | ||
| 28 | + emit doorOpened(); | ||
| 29 | + } | ||
| 17 | } | 30 | } |
| 18 | 31 | ||
| 19 | int OvenController::currentTemp() | 32 | int OvenController::currentTemp() |
| @@ -34,7 +47,7 @@ int OvenController::currentInterTemp() | @@ -34,7 +47,7 @@ int OvenController::currentInterTemp() | ||
| 34 | 47 | ||
| 35 | bool OvenController::door() | 48 | bool OvenController::door() |
| 36 | { | 49 | { |
| 37 | - return state.door_state; | 50 | + return state.door_state != 0; |
| 38 | } | 51 | } |
| 39 | 52 | ||
| 40 | void OvenController::setHumidity(int percentage) | 53 | void OvenController::setHumidity(int percentage) |
app/gui/oven_control/udphandler.cpp
| @@ -43,18 +43,20 @@ void UdpHandler::readPendingDatagrams() | @@ -43,18 +43,20 @@ void UdpHandler::readPendingDatagrams() | ||
| 43 | 43 | ||
| 44 | void UdpHandler::processDatagram(QByteArray &datagram) | 44 | void UdpHandler::processDatagram(QByteArray &datagram) |
| 45 | { | 45 | { |
| 46 | - qDebug() << "Received"; | ||
| 47 | sock->writeDatagram(datagram, QHostAddress("192.168.4.191"), 4000); | 46 | sock->writeDatagram(datagram, QHostAddress("192.168.4.191"), 4000); |
| 48 | packet_t *packet = (packet_t *) datagram.data(); | 47 | packet_t *packet = (packet_t *) datagram.data(); |
| 49 | switch (packet->header) | 48 | switch (packet->header) |
| 50 | { | 49 | { |
| 51 | case HDR_OVEN_CONTROL: | 50 | case HDR_OVEN_CONTROL: |
| 51 | + qDebug() << "Received Control"; | ||
| 52 | processControl((oven_control_t *) packet->body); | 52 | processControl((oven_control_t *) packet->body); |
| 53 | break; | 53 | break; |
| 54 | case HDR_OVEN_STATE: | 54 | case HDR_OVEN_STATE: |
| 55 | + qDebug() << "Received State"; | ||
| 55 | processState((oven_state_t *) packet->body); | 56 | processState((oven_state_t *) packet->body); |
| 56 | break; | 57 | break; |
| 57 | case HDR_ERROR_CODE: | 58 | case HDR_ERROR_CODE: |
| 59 | + qDebug() << "Received Error"; | ||
| 58 | break; | 60 | break; |
| 59 | } | 61 | } |
| 60 | } | 62 | } |