Commit a366f320c8d15b5d9a6a61e0df3584686995ca0b

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

자동 요리 후속 공정 동작 개선

- 바삭하게 만들기 동작 시 GUI에 표현
   - 습도 0, 온도 +10 한 단계 추가 후 표시
   - 자동 요리 단계 표시 위젯 구조 개선
app/gui/oven_control/autocookwindow.cpp
@@ -46,8 +46,6 @@ AutoCookWindow::~AutoCookWindow() @@ -46,8 +46,6 @@ AutoCookWindow::~AutoCookWindow()
46 46
47 void AutoCookWindow::setupUi() 47 void AutoCookWindow::setupUi()
48 { 48 {
49 - bulletPixmap.load(":/images/symbol/step_bullet.png");  
50 - selectedBulletPixmap.load(":/images/symbol/selected_step_bullet.png");  
51 steamModeIcon.load(":/images/cook_mode/small_steam.png"); 49 steamModeIcon.load(":/images/cook_mode/small_steam.png");
52 dryModeIcon.load(":/images/cook_mode/small_dryheat.png"); 50 dryModeIcon.load(":/images/cook_mode/small_dryheat.png");
53 combiModeIcon.load(":/images/cook_mode/small_combi.png"); 51 combiModeIcon.load(":/images/cook_mode/small_combi.png");
@@ -55,15 +53,7 @@ void AutoCookWindow::setupUi() @@ -55,15 +53,7 @@ void AutoCookWindow::setupUi()
55 ui->cookTypeIcon->setPixmap(Define::icon(cook.type)); 53 ui->cookTypeIcon->setPixmap(Define::icon(cook.type));
56 ui->selectCookButton->setText(cook.name); 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 ui->cookStepAnimation->start(300); 58 ui->cookStepAnimation->start(300);
69 59
@@ -333,15 +323,7 @@ void AutoCookWindow::updateView() @@ -333,15 +323,7 @@ void AutoCookWindow::updateView()
333 if (selectedStepIndex != lastViewStepIndex) 323 if (selectedStepIndex != lastViewStepIndex)
334 { 324 {
335 lastViewStepIndex = selectedStepIndex; 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 CookStep showingStep = autocook.cook.steps[selectedStepIndex]; 329 CookStep showingStep = autocook.cook.steps[selectedStepIndex];
@@ -566,8 +548,20 @@ void AutoCookWindow::startProcess(int process) @@ -566,8 +548,20 @@ void AutoCookWindow::startProcess(int process)
566 548
567 CookStep &step = autocook.cook.steps[autocook.cook.steps.size() - 1]; 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 Oven *oven = Oven::getInstance(); 563 Oven *oven = Oven::getInstance();
570 - oven->setHumidity(step.humidity); 564 + oven->setHumidity(0);
571 oven->setTemp(step.temp + 10); 565 oven->setTemp(step.temp + 10);
572 oven->startCooking(); 566 oven->startCooking();
573 567
@@ -601,6 +595,7 @@ void AutoCookWindow::checkProcess() @@ -601,6 +595,7 @@ void AutoCookWindow::checkProcess()
601 { 595 {
602 oven->stopCooking(); 596 oven->stopCooking();
603 checkProcessTimer.stop(); 597 checkProcessTimer.stop();
  598 + processSelected = false;
604 } 599 }
605 break; 600 break;
606 } 601 }
@@ -683,7 +678,7 @@ void AutoCookWindow::on_showPrevStepButton_clicked() @@ -683,7 +678,7 @@ void AutoCookWindow::on_showPrevStepButton_clicked()
683 678
684 void AutoCookWindow::on_showNextStepButton_clicked() 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 selectedStepIndex++; 683 selectedStepIndex++;
689 updateView(); 684 updateView();
app/gui/oven_control/autocookwindow.h
@@ -27,10 +27,6 @@ private: @@ -27,10 +27,6 @@ private:
27 27
28 QTimer checkCookTimer; 28 QTimer checkCookTimer;
29 29
30 - QPixmap bulletPixmap;  
31 - QPixmap selectedBulletPixmap;  
32 - QList<QLabel *> bullets;  
33 -  
34 QPixmap steamModeIcon; 30 QPixmap steamModeIcon;
35 QPixmap dryModeIcon; 31 QPixmap dryModeIcon;
36 QPixmap combiModeIcon; 32 QPixmap combiModeIcon;
app/gui/oven_control/autocookwindow.ui
@@ -1304,6 +1304,16 @@ QPushButton:pressed { border-image: url(:/images/button/152_ov.png); }&lt;/string&gt; @@ -1304,6 +1304,16 @@ QPushButton:pressed { border-image: url(:/images/button/152_ov.png); }&lt;/string&gt;
1304 </property> 1304 </property>
1305 </widget> 1305 </widget>
1306 </widget> 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 <zorder>openDoorAnimation</zorder> 1317 <zorder>openDoorAnimation</zorder>
1308 <zorder>closeDoorAnimation</zorder> 1318 <zorder>closeDoorAnimation</zorder>
1309 <zorder>upperStack</zorder> 1319 <zorder>upperStack</zorder>
@@ -1336,10 +1346,17 @@ QPushButton:pressed { border-image: url(:/images/button/152_ov.png); }&lt;/string&gt; @@ -1336,10 +1346,17 @@ QPushButton:pressed { border-image: url(:/images/button/152_ov.png); }&lt;/string&gt;
1336 <zorder>openDoorArrow</zorder> 1346 <zorder>openDoorArrow</zorder>
1337 <zorder>heatGaugeButton</zorder> 1347 <zorder>heatGaugeButton</zorder>
1338 <zorder>processContainer</zorder> 1348 <zorder>processContainer</zorder>
  1349 + <zorder>stepIndicator</zorder>
1339 </widget> 1350 </widget>
1340 </widget> 1351 </widget>
1341 <customwidgets> 1352 <customwidgets>
1342 <customwidget> 1353 <customwidget>
  1354 + <class>BulletIndicator</class>
  1355 + <extends>QWidget</extends>
  1356 + <header>bulletindicator.h</header>
  1357 + <container>1</container>
  1358 + </customwidget>
  1359 + <customwidget>
1343 <class>Clock</class> 1360 <class>Clock</class>
1344 <extends>QWidget</extends> 1361 <extends>QWidget</extends>
1345 <header>clock.h</header> 1362 <header>clock.h</header>
app/gui/oven_control/bulletindicator.cpp
@@ -0,0 +1,142 @@ @@ -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 @@ @@ -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,7 +60,8 @@ SOURCES += main.cpp\
60 operationtimeparts.cpp \ 60 operationtimeparts.cpp \
61 realtimemain.cpp \ 61 realtimemain.cpp \
62 realtimepartswindow.cpp \ 62 realtimepartswindow.cpp \
63 - realtimesensorwindow.cpp 63 + realtimesensorwindow.cpp \
  64 + bulletindicator.cpp
64 65
65 HEADERS += mainwindow.h \ 66 HEADERS += mainwindow.h \
66 cook.h \ 67 cook.h \
@@ -109,7 +110,8 @@ HEADERS += mainwindow.h \ @@ -109,7 +110,8 @@ HEADERS += mainwindow.h \
109 operationtimeparts.h \ 110 operationtimeparts.h \
110 realtimemain.h \ 111 realtimemain.h \
111 realtimepartswindow.h \ 112 realtimepartswindow.h \
112 - realtimesensorwindow.h 113 + realtimesensorwindow.h \
  114 + bulletindicator.h
113 115
114 FORMS += mainwindow.ui \ 116 FORMS += mainwindow.ui \
115 manualcookwindow.ui \ 117 manualcookwindow.ui \