Commit a366f320c8d15b5d9a6a61e0df3584686995ca0b
1 parent
069c755078
Exists in
master
and in
2 other branches
자동 요리 후속 공정 동작 개선
- 바삭하게 만들기 동작 시 GUI에 표현 - 습도 0, 온도 +10 한 단계 추가 후 표시 - 자동 요리 단계 표시 위젯 구조 개선
Showing
6 changed files
with
221 additions
and
28 deletions
Show diff stats
app/gui/oven_control/autocookwindow.cpp
| ... | ... | @@ -46,8 +46,6 @@ AutoCookWindow::~AutoCookWindow() |
| 46 | 46 | |
| 47 | 47 | void AutoCookWindow::setupUi() |
| 48 | 48 | { |
| 49 | - bulletPixmap.load(":/images/symbol/step_bullet.png"); | |
| 50 | - selectedBulletPixmap.load(":/images/symbol/selected_step_bullet.png"); | |
| 51 | 49 | steamModeIcon.load(":/images/cook_mode/small_steam.png"); |
| 52 | 50 | dryModeIcon.load(":/images/cook_mode/small_dryheat.png"); |
| 53 | 51 | combiModeIcon.load(":/images/cook_mode/small_combi.png"); |
| ... | ... | @@ -55,15 +53,7 @@ void AutoCookWindow::setupUi() |
| 55 | 53 | ui->cookTypeIcon->setPixmap(Define::icon(cook.type)); |
| 56 | 54 | ui->selectCookButton->setText(cook.name); |
| 57 | 55 | |
| 58 | - int offsetX = (900 - (cook.steps.size() * 19 * 2 - 19)) / 2; | |
| 59 | - int offsetY = 1150; | |
| 60 | - for (int idx = 0; idx < cook.steps.size(); idx++) | |
| 61 | - { | |
| 62 | - QLabel *bullet = new QLabel(this); | |
| 63 | - bullet->setPixmap(bulletPixmap); | |
| 64 | - bullet->setGeometry(offsetX + 19 * 2 * idx, offsetY, 19, 19); | |
| 65 | - bullets.append(bullet); | |
| 66 | - } | |
| 56 | + ui->stepIndicator->setMaximum(cook.steps.size() - 1); | |
| 67 | 57 | |
| 68 | 58 | ui->cookStepAnimation->start(300); |
| 69 | 59 | |
| ... | ... | @@ -333,15 +323,7 @@ void AutoCookWindow::updateView() |
| 333 | 323 | if (selectedStepIndex != lastViewStepIndex) |
| 334 | 324 | { |
| 335 | 325 | lastViewStepIndex = selectedStepIndex; |
| 336 | - | |
| 337 | - for (int idx = 0; idx < bullets.length(); idx++) | |
| 338 | - { | |
| 339 | - QLabel *bullet = bullets.at(idx); | |
| 340 | - if (idx == selectedStepIndex) | |
| 341 | - bullet->setPixmap(selectedBulletPixmap); | |
| 342 | - else | |
| 343 | - bullet->setPixmap(bulletPixmap); | |
| 344 | - } | |
| 326 | + ui->stepIndicator->setCurrentIndex(selectedStepIndex); | |
| 345 | 327 | } |
| 346 | 328 | |
| 347 | 329 | CookStep showingStep = autocook.cook.steps[selectedStepIndex]; |
| ... | ... | @@ -566,8 +548,20 @@ void AutoCookWindow::startProcess(int process) |
| 566 | 548 | |
| 567 | 549 | CookStep &step = autocook.cook.steps[autocook.cook.steps.size() - 1]; |
| 568 | 550 | |
| 551 | + CookStep newStep = step; | |
| 552 | + newStep.type = Define::MakeCrispy; | |
| 553 | + newStep.humidity = 0; | |
| 554 | + newStep.temp += 10; | |
| 555 | + newStep.time = 0; | |
| 556 | + newStep.humidification = 0; | |
| 557 | + newStep.dehumidification = 0; | |
| 558 | + autocook.cook.steps.append(newStep); | |
| 559 | + autocook.currentStepIndex = autocook.cook.steps.size() - 1; | |
| 560 | + ui->stepIndicator->setMaximum(autocook.cook.steps.size() - 1); | |
| 561 | + returnToCurrentStep(); | |
| 562 | + | |
| 569 | 563 | Oven *oven = Oven::getInstance(); |
| 570 | - oven->setHumidity(step.humidity); | |
| 564 | + oven->setHumidity(0); | |
| 571 | 565 | oven->setTemp(step.temp + 10); |
| 572 | 566 | oven->startCooking(); |
| 573 | 567 | |
| ... | ... | @@ -601,6 +595,7 @@ void AutoCookWindow::checkProcess() |
| 601 | 595 | { |
| 602 | 596 | oven->stopCooking(); |
| 603 | 597 | checkProcessTimer.stop(); |
| 598 | + processSelected = false; | |
| 604 | 599 | } |
| 605 | 600 | break; |
| 606 | 601 | } |
| ... | ... | @@ -683,7 +678,7 @@ void AutoCookWindow::on_showPrevStepButton_clicked() |
| 683 | 678 | |
| 684 | 679 | void AutoCookWindow::on_showNextStepButton_clicked() |
| 685 | 680 | { |
| 686 | - if (selectedStepIndex + 1 < cook.steps.size()) | |
| 681 | + if (selectedStepIndex + 1 < autocook.cook.steps.size()) | |
| 687 | 682 | { |
| 688 | 683 | selectedStepIndex++; |
| 689 | 684 | updateView(); | ... | ... |
app/gui/oven_control/autocookwindow.h
app/gui/oven_control/autocookwindow.ui
| ... | ... | @@ -1304,6 +1304,16 @@ QPushButton:pressed { border-image: url(:/images/button/152_ov.png); }</string> |
| 1304 | 1304 | </property> |
| 1305 | 1305 | </widget> |
| 1306 | 1306 | </widget> |
| 1307 | + <widget class="BulletIndicator" name="stepIndicator" native="true"> | |
| 1308 | + <property name="geometry"> | |
| 1309 | + <rect> | |
| 1310 | + <x>100</x> | |
| 1311 | + <y>1130</y> | |
| 1312 | + <width>700</width> | |
| 1313 | + <height>50</height> | |
| 1314 | + </rect> | |
| 1315 | + </property> | |
| 1316 | + </widget> | |
| 1307 | 1317 | <zorder>openDoorAnimation</zorder> |
| 1308 | 1318 | <zorder>closeDoorAnimation</zorder> |
| 1309 | 1319 | <zorder>upperStack</zorder> |
| ... | ... | @@ -1336,10 +1346,17 @@ QPushButton:pressed { border-image: url(:/images/button/152_ov.png); }</string> |
| 1336 | 1346 | <zorder>openDoorArrow</zorder> |
| 1337 | 1347 | <zorder>heatGaugeButton</zorder> |
| 1338 | 1348 | <zorder>processContainer</zorder> |
| 1349 | + <zorder>stepIndicator</zorder> | |
| 1339 | 1350 | </widget> |
| 1340 | 1351 | </widget> |
| 1341 | 1352 | <customwidgets> |
| 1342 | 1353 | <customwidget> |
| 1354 | + <class>BulletIndicator</class> | |
| 1355 | + <extends>QWidget</extends> | |
| 1356 | + <header>bulletindicator.h</header> | |
| 1357 | + <container>1</container> | |
| 1358 | + </customwidget> | |
| 1359 | + <customwidget> | |
| 1343 | 1360 | <class>Clock</class> |
| 1344 | 1361 | <extends>QWidget</extends> |
| 1345 | 1362 | <header>clock.h</header> | ... | ... |
app/gui/oven_control/bulletindicator.cpp
| ... | ... | @@ -0,0 +1,142 @@ |
| 1 | +#include "bulletindicator.h" | |
| 2 | + | |
| 3 | +BulletIndicator::BulletIndicator(QWidget *parent) : QWidget(parent) | |
| 4 | +{ | |
| 5 | + max = 1; | |
| 6 | + cur = 0; | |
| 7 | + bulletPixmap.load(":/images/symbol/step_bullet.png"); | |
| 8 | + currentBulletPixmap.load(":/images/symbol/selected_step_bullet.png"); | |
| 9 | + padding = qMin(bulletPixmap.width(), currentBulletPixmap.width()); | |
| 10 | + | |
| 11 | + QRect defaultGeometry; | |
| 12 | + defaultGeometry.setSize(bulletPixmap.size()); | |
| 13 | + | |
| 14 | + QLabel *bullet; | |
| 15 | + | |
| 16 | + bullet = new QLabel(this); | |
| 17 | + bullet->setPixmap(currentBulletPixmap); | |
| 18 | + bullet->setGeometry(defaultGeometry); | |
| 19 | + bullets.append(bullet); | |
| 20 | + | |
| 21 | + bullet = new QLabel(this); | |
| 22 | + bullet->setPixmap(bulletPixmap); | |
| 23 | + bullet->setGeometry(defaultGeometry); | |
| 24 | + bullets.append(bullet); | |
| 25 | + | |
| 26 | + updatePosition(); | |
| 27 | +} | |
| 28 | + | |
| 29 | +void BulletIndicator::setBulletPixmap(QPixmap &pixmap) | |
| 30 | +{ | |
| 31 | + bulletPixmap = pixmap; | |
| 32 | + | |
| 33 | + for (int i = 0; i <= max; i++) | |
| 34 | + if (i != cur) | |
| 35 | + bullets.at(i)->setPixmap(pixmap); | |
| 36 | + | |
| 37 | + padding = qMin(pixmap.width(), padding); | |
| 38 | + | |
| 39 | + updatePosition(); | |
| 40 | +} | |
| 41 | + | |
| 42 | +void BulletIndicator::setCurrentBulletPixmap(QPixmap &pixmap) | |
| 43 | +{ | |
| 44 | + currentBulletPixmap = pixmap; | |
| 45 | + | |
| 46 | + bullets.at(cur)->setPixmap(pixmap); | |
| 47 | + | |
| 48 | + padding = qMin(pixmap.width(), padding); | |
| 49 | + | |
| 50 | + updatePosition(); | |
| 51 | +} | |
| 52 | + | |
| 53 | +void BulletIndicator::setCurrentIndex(int index) | |
| 54 | +{ | |
| 55 | + if (index == cur || index < 0 || index > max) | |
| 56 | + return; | |
| 57 | + | |
| 58 | + bullets.at(cur)->setPixmap(bulletPixmap); | |
| 59 | + bullets.at(index)->setPixmap(currentBulletPixmap); | |
| 60 | + | |
| 61 | + cur = index; | |
| 62 | + | |
| 63 | + updatePosition(); | |
| 64 | +} | |
| 65 | + | |
| 66 | +void BulletIndicator::setMaximum(int maximum) | |
| 67 | +{ | |
| 68 | + if (maximum == max || maximum < 1) | |
| 69 | + return; | |
| 70 | + | |
| 71 | + if (bullets.size() <= maximum) | |
| 72 | + { | |
| 73 | + QRect defaultGeometry; | |
| 74 | + defaultGeometry.setSize(bulletPixmap.size()); | |
| 75 | + for (int i = bullets.size(); i <= maximum; i++) | |
| 76 | + { | |
| 77 | + QLabel *l = new QLabel(this); | |
| 78 | + l->setPixmap(bulletPixmap); | |
| 79 | + l->setGeometry(defaultGeometry); | |
| 80 | + bullets.append(l); | |
| 81 | + } | |
| 82 | + } | |
| 83 | + | |
| 84 | + if (maximum > max) | |
| 85 | + { | |
| 86 | + for (int i = max + 1; i <= maximum; i++) | |
| 87 | + { | |
| 88 | + QLabel *l = bullets.at(i); | |
| 89 | + if (l->isHidden()) | |
| 90 | + l->show(); | |
| 91 | + } | |
| 92 | + } | |
| 93 | + else if (maximum < max) | |
| 94 | + { | |
| 95 | + for (int i = maximum + 1; i <= max; i++) | |
| 96 | + { | |
| 97 | + QLabel *l = bullets.at(i); | |
| 98 | + if (l->isVisible()) | |
| 99 | + l->hide(); | |
| 100 | + } | |
| 101 | + } | |
| 102 | + | |
| 103 | + max = maximum; | |
| 104 | + | |
| 105 | + if (maximum < cur) | |
| 106 | + setCurrentIndex(maximum); | |
| 107 | + else | |
| 108 | + updatePosition(); | |
| 109 | +} | |
| 110 | + | |
| 111 | +void BulletIndicator::resizeEvent(QResizeEvent *event) | |
| 112 | +{ | |
| 113 | + QWidget::resizeEvent(event); | |
| 114 | + | |
| 115 | + updatePosition(); | |
| 116 | +} | |
| 117 | + | |
| 118 | +void BulletIndicator::updatePosition() | |
| 119 | +{ | |
| 120 | + int bulletWidth = bulletPixmap.width(); | |
| 121 | + int bulletHeight = bulletPixmap.height(); | |
| 122 | + int currentBulletWidth = currentBulletPixmap.width(); | |
| 123 | + int currentBulletHeight = currentBulletPixmap.height(); | |
| 124 | + | |
| 125 | + int x = (width() - ((bulletWidth + padding) * max + currentBulletWidth)) / 2; | |
| 126 | + int bulletY = (height() - bulletHeight) / 2; | |
| 127 | + int currentBulletY = (height() - currentBulletHeight) / 2; | |
| 128 | + | |
| 129 | + for (int i = 0; i <= max; i++) | |
| 130 | + { | |
| 131 | + if (i == cur) | |
| 132 | + { | |
| 133 | + bullets.at(i)->setGeometry(x, currentBulletY, currentBulletWidth, currentBulletHeight); | |
| 134 | + x += currentBulletWidth + padding; | |
| 135 | + } | |
| 136 | + else | |
| 137 | + { | |
| 138 | + bullets.at(i)->setGeometry(x, bulletY, bulletWidth, bulletHeight); | |
| 139 | + x += bulletWidth + padding; | |
| 140 | + } | |
| 141 | + } | |
| 142 | +} | ... | ... |
app/gui/oven_control/bulletindicator.h
| ... | ... | @@ -0,0 +1,41 @@ |
| 1 | +#ifndef BULLETINDICATOR_H | |
| 2 | +#define BULLETINDICATOR_H | |
| 3 | + | |
| 4 | +#include <QWidget> | |
| 5 | +#include <QLabel> | |
| 6 | + | |
| 7 | +class BulletIndicator : public QWidget | |
| 8 | +{ | |
| 9 | + Q_OBJECT | |
| 10 | +public: | |
| 11 | + explicit BulletIndicator(QWidget *parent = 0); | |
| 12 | + | |
| 13 | + void setBulletPixmap(QPixmap &pixmap); | |
| 14 | + void setCurrentBulletPixmap(QPixmap &pixmap); | |
| 15 | + | |
| 16 | + int maximum() { return max; } | |
| 17 | + int currentIndex() { return cur; } | |
| 18 | + | |
| 19 | +signals: | |
| 20 | + | |
| 21 | +public slots: | |
| 22 | + void setCurrentIndex(int index); | |
| 23 | + void setMaximum(int maximum); | |
| 24 | + | |
| 25 | +protected: | |
| 26 | + void resizeEvent(QResizeEvent *event); | |
| 27 | + | |
| 28 | +private: | |
| 29 | + int max; | |
| 30 | + int cur; | |
| 31 | + | |
| 32 | + int padding; | |
| 33 | + QPixmap bulletPixmap; | |
| 34 | + QPixmap currentBulletPixmap; | |
| 35 | + | |
| 36 | + QList<QLabel *> bullets; | |
| 37 | + | |
| 38 | + void updatePosition(); | |
| 39 | +}; | |
| 40 | + | |
| 41 | +#endif // BULLETINDICATOR_H | ... | ... |
app/gui/oven_control/oven_control.pro
| ... | ... | @@ -60,7 +60,8 @@ SOURCES += main.cpp\ |
| 60 | 60 | operationtimeparts.cpp \ |
| 61 | 61 | realtimemain.cpp \ |
| 62 | 62 | realtimepartswindow.cpp \ |
| 63 | - realtimesensorwindow.cpp | |
| 63 | + realtimesensorwindow.cpp \ | |
| 64 | + bulletindicator.cpp | |
| 64 | 65 | |
| 65 | 66 | HEADERS += mainwindow.h \ |
| 66 | 67 | cook.h \ |
| ... | ... | @@ -109,7 +110,8 @@ HEADERS += mainwindow.h \ |
| 109 | 110 | operationtimeparts.h \ |
| 110 | 111 | realtimemain.h \ |
| 111 | 112 | realtimepartswindow.h \ |
| 112 | - realtimesensorwindow.h | |
| 113 | + realtimesensorwindow.h \ | |
| 114 | + bulletindicator.h | |
| 113 | 115 | |
| 114 | 116 | FORMS += mainwindow.ui \ |
| 115 | 117 | manualcookwindow.ui \ | ... | ... |