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 \ | ... | ... |