Commit 097e5e14a0305b3201feafe4c1e372360c4637d9

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

프로그래밍 모드 세부 사항 구현

- 선택한 요리가 끝나면 다음 요리 시작
app/gui/oven_control/autocookwindow.cpp
... ... @@ -644,7 +644,10 @@ void AutoCookWindow::checkCook()
644 644 selectedStepIndex = autocook.currentStepIndex;
645 645  
646 646 if (autocook.done())
  647 + {
647 648 checkCookTimer.stop();
  649 + emit done();
  650 + }
648 651 }
649 652  
650 653 updateView();
... ...
app/gui/oven_control/autocookwindow.h
... ... @@ -122,6 +122,7 @@ private slots:
122 122 signals:
123 123 void back();
124 124 void newWindow(AutoCookWindow *);
  125 + void done();
125 126 };
126 127  
127 128 #endif // AUTOCOOKWINDOW_H
... ...
app/gui/oven_control/cookhistory.cpp
... ... @@ -1294,7 +1294,7 @@ QPixmap CookHistory::render(CookRecord record)
1294 1294 return QPixmap();
1295 1295 }
1296 1296  
1297   -void CookHistory::start(CookRecord record, QWidget *parent)
  1297 +QMainWindow *CookHistory::start(CookRecord record, QWidget *parent)
1298 1298 {
1299 1299 if (record.type == CookRecord::Manual)
1300 1300 {
... ... @@ -1302,6 +1302,8 @@ void CookHistory::start(CookRecord record, QWidget *parent)
1302 1302 w->setWindowModality(Qt::WindowModal);
1303 1303 w->showFullScreen();
1304 1304 w->raise();
  1305 +
  1306 + return w;
1305 1307 }
1306 1308 else if (record.type == CookRecord::Auto)
1307 1309 {
... ... @@ -1317,7 +1319,11 @@ void CookHistory::start(CookRecord record, QWidget *parent)
1317 1319 w->setWindowModality(Qt::WindowModal);
1318 1320 w->showFullScreen();
1319 1321 w->raise();
  1322 +
  1323 + return w;
1320 1324 }
  1325 +
  1326 + return NULL;
1321 1327 }
1322 1328  
1323 1329 void CookHistory::removeMostCooked(CookRecord record)
... ...
app/gui/oven_control/cookhistory.h
... ... @@ -3,6 +3,7 @@
3 3  
4 4  
5 5 #include <QList>
  6 +#include <QMainWindow>
6 7  
7 8 #include "cook.h"
8 9  
... ... @@ -62,7 +63,7 @@ QList&lt;CookRecord&gt; listRecents();
62 63 QList<CookRecord> listFavorites();
63 64  
64 65 QPixmap render(CookRecord record);
65   -void start(CookRecord record, QWidget *parent = 0);
  66 +QMainWindow *start(CookRecord record, QWidget *parent = 0);
66 67 }
67 68  
68 69 #endif // COOKHISTORY_H
... ...
app/gui/oven_control/cookpanelbutton.cpp
... ... @@ -5,13 +5,16 @@
5 5  
6 6 #include "soundplayer.h"
7 7 #include "manualcooksettingwidget.h"
  8 +#include "autocookwindow.h"
  9 +#include "manualcookwindow.h"
8 10  
9 11 CookPanelButton::CookPanelButton(CookRecord record, QWidget *parent) :
10 12 QWidget(parent),
11 13 record(record),
12 14 ui(new Ui::CookPanelButton),
13 15 rendered(false),
14   - longPressEnabled(false)
  16 + longPressEnabled(false),
  17 + emitted(false)
15 18 {
16 19 ui->setupUi(this);
17 20  
... ... @@ -155,7 +158,24 @@ void CookPanelButton::on_pushButton_clicked()
155 158 if (longPressEnabled && emitted)
156 159 return;
157 160  
158   - CookHistory::start(record, parentWidget());
  161 + QMainWindow *w = CookHistory::start(record, parentWidget());
  162 +
  163 + if (next == NULL)
  164 + return;
  165 +
  166 + AutoCookWindow *a = qobject_cast<AutoCookWindow *>(w);
  167 + if (a)
  168 + {
  169 + connect(a, SIGNAL(done()), next, SLOT(on_pushButton_clicked()));
  170 + connect(a, SIGNAL(done()), a, SLOT(deleteLater()));
  171 + }
  172 +
  173 + ManualCookWindow *m = qobject_cast<ManualCookWindow *>(w);
  174 + if (m)
  175 + {
  176 + connect(m, SIGNAL(done()), next, SLOT(on_pushButton_clicked()));
  177 + connect(m, SIGNAL(done()), m, SLOT(deleteLater()));
  178 + }
159 179 }
160 180  
161 181 void CookPanelButton::on_deleteButton_clicked()
... ...
app/gui/oven_control/cookpanelbutton.h
... ... @@ -43,6 +43,7 @@ public:
43 43 QPushButton *deleteButton();
44 44  
45 45 CookRecord record;
  46 + CookPanelButton *next = NULL;
46 47  
47 48 public slots:
48 49 void setEnabled(bool enabled = true);
... ...
app/gui/oven_control/manualcookwindow.cpp
... ... @@ -82,6 +82,7 @@ ManualCookWindow::ManualCookWindow(QWidget *parent, Define::Mode mode) :
82 82 lastViewDamper = false;
83 83 lastViewHumidification = false;
84 84 lastViewFan = -1;
  85 + lastCheckedCooking = false;
85 86  
86 87 Config *config = Config::getInstance();
87 88 config_item item = config->getConfigValue(Define::config_cooking_door_monitoring);
... ... @@ -421,31 +422,9 @@ void ManualCookWindow::updateView()
421 422  
422 423 bool damper = oven->damper();
423 424 ui->damperButton->setChecked(damper);
424   -// if (damper != lastViewDamper)
425   -// {
426   -// lastViewDamper = damper;
427   -
428   -// if (damper)
429   -// ui->damperButton->setStyleSheet(
430   -// "background-image: url(:/images/manual_button/damper_open.png)");
431   -// else
432   -// ui->damperButton->setStyleSheet(
433   -// "background-image: url(:/images/manual_button/damper_close.png)");
434   -// }
435 425  
436 426 bool humidification = oven->humidification();
437 427 ui->humidificationButton->setChecked(humidification);
438   -// if (humidification != lastViewHumidification)
439   -// {
440   -// lastViewHumidification = humidification;
441   -
442   -// if (humidification)
443   -// ui->humidificationButton->setStyleSheet(
444   -// "background-image: url(:/images/manual_button/side_nozzle_open.png)");
445   -// else
446   -// ui->humidificationButton->setStyleSheet(
447   -// "background-image: url(:/images/manual_button/side_nozzle_close.png)");
448   -// }
449 428  
450 429 int fan = oven->fan();
451 430 if (fan != lastViewFan)
... ... @@ -533,6 +512,16 @@ QPushButton:pressed { background-image: url(:/images/manual_button/repeat_ov.png
533 512 oven->setInterTempEnabled(repeatSetting.coreTempEnabled);
534 513 oven->setInterTemp(repeatSetting.coreTemp);
535 514 }
  515 + else if (lastCheckedCooking && !oven->cooking()){
  516 + if ((oven->interTempEnabled() && oven->currentInterTemp() >= oven->interTemp())
  517 + || oven->time() == 0)
  518 + {
  519 + lastCheckedCooking = oven->cooking();
  520 + emit done();
  521 + }
  522 + }
  523 +
  524 + lastCheckedCooking = oven->cooking();
536 525  
537 526 if (oven->paused() && oven->door())
538 527 {
... ...
app/gui/oven_control/manualcookwindow.h
... ... @@ -27,6 +27,7 @@ protected:
27 27  
28 28 signals:
29 29 void cookStopRequested();
  30 + void done();
30 31  
31 32 public slots:
32 33  
... ... @@ -111,6 +112,7 @@ private:
111 112 int temp;
112 113 int time;
113 114 int interTemp;
  115 + bool lastCheckedCooking = false;
114 116  
115 117 bool showCurrentHumidity_ = false;
116 118 bool showCurrentTemp_ = false;
... ...
app/gui/oven_control/oven_control.pro
... ... @@ -121,7 +121,8 @@ SOURCES += main.cpp\
121 121 slider.cpp \
122 122 autocookselectionpopup.cpp \
123 123 autocookcheckwindow.cpp \
124   - autocookcheckconfigwindow.cpp
  124 + autocookcheckconfigwindow.cpp \
  125 + programmedcookpanelbutton.cpp
125 126  
126 127 HEADERS += mainwindow.h \
127 128 cook.h \
... ... @@ -232,7 +233,8 @@ HEADERS += mainwindow.h \
232 233 slider.h \
233 234 autocookselectionpopup.h \
234 235 autocookcheckwindow.h \
235   - autocookcheckconfigwindow.h
  236 + autocookcheckconfigwindow.h \
  237 + programmedcookpanelbutton.h
236 238  
237 239 FORMS += mainwindow.ui \
238 240 manualcookwindow.ui \
... ... @@ -309,7 +311,8 @@ FORMS += mainwindow.ui \
309 311 config1digitsetandenablesetdlg.ui \
310 312 autocookselectionpopup.ui \
311 313 autocookcheckwindow.ui \
312   - autocookcheckconfigwindow.ui
  314 + autocookcheckconfigwindow.ui \
  315 + programmedcookpanelbutton.ui
313 316  
314 317 RESOURCES += \
315 318 resources.qrc
... ...
app/gui/oven_control/programmedcookpanelbutton.cpp
... ... @@ -0,0 +1,175 @@
  1 +#include "programmedcookpanelbutton.h"
  2 +#include "ui_programmedcookpanelbutton.h"
  3 +
  4 +#include <QKeyEvent>
  5 +
  6 +#include "soundplayer.h"
  7 +
  8 +ProgrammedCookPanelButton::ProgrammedCookPanelButton(CookRecord record, QWidget *parent) :
  9 + QWidget(parent),
  10 + record(record),
  11 + ui(new Ui::ProgrammedCookPanelButton),
  12 + rendered(false),
  13 + longPressEnabled(false)
  14 +{
  15 + ui->setupUi(this);
  16 +
  17 + setText(record.name);
  18 +
  19 + foreach (QPushButton *button, findChildren<QPushButton *>())
  20 + connect(button, &QPushButton::pressed, SoundPlayer::playClick);
  21 +
  22 + longPressedTimer.setSingleShot(true);
  23 + longPressedTimer.setInterval(3000);
  24 + connect(&longPressedTimer, SIGNAL(timeout()), SLOT(emitLongPressed()));
  25 +}
  26 +
  27 +ProgrammedCookPanelButton::~ProgrammedCookPanelButton()
  28 +{
  29 + delete ui;
  30 +}
  31 +
  32 +void ProgrammedCookPanelButton::setText(QString text)
  33 +{
  34 + ui->pushButton->setText(text);
  35 +}
  36 +
  37 +void ProgrammedCookPanelButton::showInfo()
  38 +{
  39 + if (!rendered)
  40 + {
  41 + QPixmap p = CookHistory::render(record);
  42 +
  43 + label = new QLabel(this);
  44 + label->setPixmap(p);
  45 + label->setGeometry((width() - p.width()) / 2, 65, p.width(), p.height());
  46 + }
  47 +
  48 + label->show();
  49 + setMinimumHeight(ui->pushButton->height() + label->height());
  50 +}
  51 +
  52 +void ProgrammedCookPanelButton::hideInfo()
  53 +{
  54 + label->hide();
  55 + setMinimumHeight(ui->pushButton->height());
  56 +}
  57 +
  58 +void ProgrammedCookPanelButton::setLongPressEnabled(bool enabled)
  59 +{
  60 + longPressEnabled = enabled;
  61 +}
  62 +
  63 +QPushButton *ProgrammedCookPanelButton::bar()
  64 +{
  65 + return ui->pushButton;
  66 +}
  67 +
  68 +QPushButton *ProgrammedCookPanelButton::infoButton()
  69 +{
  70 + return ui->showInfoButton;
  71 +}
  72 +
  73 +QPushButton *ProgrammedCookPanelButton::deleteButton()
  74 +{
  75 + return ui->deleteButton;
  76 +}
  77 +
  78 +void ProgrammedCookPanelButton::setEnabled(bool enabled)
  79 +{
  80 + ui->pushButton->setEnabled(enabled);
  81 + ui->showInfoButton->setEnabled(enabled);
  82 + ui->deleteButton->setEnabled(enabled);
  83 +}
  84 +
  85 +void ProgrammedCookPanelButton::keyPressEvent(QKeyEvent *event)
  86 +{
  87 + switch (event->key())
  88 + {
  89 + case 0x01000030: // Turn left
  90 + event->ignore();
  91 + break;
  92 + case 0x01000031: // Push
  93 + pushed = focusWidget();
  94 + if (pushed == ui->pushButton)
  95 + on_pushButton_pressed();
  96 + break;
  97 + case 0x01000032: // Turn right
  98 + event->ignore();
  99 + break;
  100 + }
  101 +}
  102 +
  103 +void ProgrammedCookPanelButton::keyReleaseEvent(QKeyEvent *event)
  104 +{
  105 + switch (event->key())
  106 + {
  107 + case 0x01000030: // Turn left
  108 + event->ignore();
  109 + break;
  110 + case 0x01000031: // Push
  111 + if (pushed == ui->pushButton)
  112 + on_pushButton_released();
  113 +
  114 + if (focusWidget() == pushed)
  115 + onEncoderClicked(pushed);
  116 +
  117 + pushed = NULL;
  118 + break;
  119 + case 0x01000032: // Turn right
  120 + event->ignore();
  121 + break;
  122 + }
  123 +}
  124 +
  125 +void ProgrammedCookPanelButton::onEncoderLeft()
  126 +{
  127 +
  128 +}
  129 +
  130 +void ProgrammedCookPanelButton::onEncoderRight()
  131 +{
  132 +
  133 +}
  134 +
  135 +void ProgrammedCookPanelButton::onEncoderClicked(QWidget *clicked)
  136 +{
  137 + QPushButton *b = qobject_cast<QPushButton *>(clicked);
  138 + if (b)
  139 + b->click();
  140 +}
  141 +
  142 +void ProgrammedCookPanelButton::emitLongPressed()
  143 +{
  144 + emitted = true;
  145 + emit longPressed(this);
  146 +}
  147 +
  148 +void ProgrammedCookPanelButton::on_pushButton_pressed()
  149 +{
  150 + longPressedTimer.start();
  151 + emitted = false;
  152 +}
  153 +
  154 +void ProgrammedCookPanelButton::on_pushButton_released()
  155 +{
  156 + longPressedTimer.stop();
  157 +}
  158 +
  159 +void ProgrammedCookPanelButton::on_pushButton_clicked()
  160 +{
  161 + if (longPressEnabled && emitted)
  162 + return;
  163 +
  164 + emit clicked(this);
  165 +}
  166 +
  167 +void ProgrammedCookPanelButton::on_showInfoButton_clicked()
  168 +{
  169 + emit infoClicked(this);
  170 +}
  171 +
  172 +void ProgrammedCookPanelButton::on_deleteButton_clicked()
  173 +{
  174 + emit deleteClicked(this);
  175 +}
... ...
app/gui/oven_control/programmedcookpanelbutton.h
... ... @@ -0,0 +1,74 @@
  1 +#ifndef PROGRAMMEDCOOKPANELBUTTON_H
  2 +#define PROGRAMMEDCOOKPANELBUTTON_H
  3 +
  4 +#include <QWidget>
  5 +#include <QLabel>
  6 +#include <QButtonGroup>
  7 +#include <QTimer>
  8 +#include <QPushButton>
  9 +
  10 +#include "cookhistory.h"
  11 +
  12 +namespace Ui {
  13 +class ProgrammedCookPanelButton;
  14 +}
  15 +
  16 +class ProgrammedCookPanelButton : public QWidget
  17 +{
  18 + Q_OBJECT
  19 +
  20 +public:
  21 + explicit ProgrammedCookPanelButton(CookRecord record, QWidget *parent = 0);
  22 + ~ProgrammedCookPanelButton();
  23 +
  24 + void setText(QString text);
  25 + void showInfo();
  26 + void hideInfo();
  27 +
  28 + void setLongPressEnabled(bool enabled);
  29 +
  30 + QPushButton *bar();
  31 + QPushButton *infoButton();
  32 + QPushButton *deleteButton();
  33 +
  34 + CookRecord record;
  35 +
  36 +public slots:
  37 + void setEnabled(bool enabled = true);
  38 +
  39 +protected:
  40 + void keyPressEvent(QKeyEvent *event);
  41 + void keyReleaseEvent(QKeyEvent *event);
  42 +
  43 +private:
  44 + Ui::ProgrammedCookPanelButton *ui;
  45 +
  46 + QTimer longPressedTimer;
  47 + bool rendered;
  48 + QLabel *label;
  49 + bool emitted;
  50 + bool longPressEnabled;
  51 +
  52 + QWidget *pushed = NULL;
  53 +
  54 + void onEncoderLeft();
  55 + void onEncoderRight();
  56 + void onEncoderClicked(QWidget *clicked);
  57 +
  58 +private slots:
  59 + void emitLongPressed();
  60 +
  61 + void on_pushButton_pressed();
  62 + void on_pushButton_released();
  63 + void on_pushButton_clicked();
  64 + void on_showInfoButton_clicked();
  65 + void on_deleteButton_clicked();
  66 +
  67 +signals:
  68 + void clicked(ProgrammedCookPanelButton *);
  69 + void infoClicked(ProgrammedCookPanelButton *);
  70 + void deleteClicked(ProgrammedCookPanelButton *);
  71 + void longPressed(ProgrammedCookPanelButton *);
  72 +};
  73 +
  74 +#endif // PROGRAMMEDCOOKPANELBUTTON_H
... ...
app/gui/oven_control/programmedcookpanelbutton.ui
... ... @@ -0,0 +1,118 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<ui version="4.0">
  3 + <class>ProgrammedCookPanelButton</class>
  4 + <widget class="QWidget" name="ProgrammedCookPanelButton">
  5 + <property name="geometry">
  6 + <rect>
  7 + <x>0</x>
  8 + <y>0</y>
  9 + <width>821</width>
  10 + <height>65</height>
  11 + </rect>
  12 + </property>
  13 + <property name="windowTitle">
  14 + <string>Form</string>
  15 + </property>
  16 + <property name="styleSheet">
  17 + <string notr="true">QPushButton {
  18 +background-position: center;
  19 +background-repeat: no-repeat;
  20 +border: none;
  21 +}</string>
  22 + </property>
  23 + <widget class="QPushButton" name="showInfoButton">
  24 + <property name="geometry">
  25 + <rect>
  26 + <x>670</x>
  27 + <y>0</y>
  28 + <width>70</width>
  29 + <height>65</height>
  30 + </rect>
  31 + </property>
  32 + <property name="styleSheet">
  33 + <string notr="true">QPushButton { background-image: url(:/images/etc/bar_icon_01.png); }
  34 +QPushButton:pressed { background-image: url(:/images/etc/bar_icon_01_ov.png); }
  35 +QPushButton:focus { background-image: url(:/images/etc/bar_icon_01_ov.png); }</string>
  36 + </property>
  37 + <property name="text">
  38 + <string/>
  39 + </property>
  40 + <property name="checkable">
  41 + <bool>true</bool>
  42 + </property>
  43 + <property name="autoExclusive">
  44 + <bool>true</bool>
  45 + </property>
  46 + </widget>
  47 + <widget class="QPushButton" name="deleteButton">
  48 + <property name="geometry">
  49 + <rect>
  50 + <x>750</x>
  51 + <y>0</y>
  52 + <width>60</width>
  53 + <height>65</height>
  54 + </rect>
  55 + </property>
  56 + <property name="styleSheet">
  57 + <string notr="true">QPushButton { background-image: url(:/images/etc/bar_icon_02.png); }
  58 +QPushButton:pressed { background-image: url(:/images/etc/bar_icon_02_ov.png); }
  59 +QPushButton:focus { background-image: url(:/images/etc/bar_icon_02_ov.png); }</string>
  60 + </property>
  61 + <property name="text">
  62 + <string/>
  63 + </property>
  64 + </widget>
  65 + <widget class="QPushButton" name="pushButton">
  66 + <property name="geometry">
  67 + <rect>
  68 + <x>0</x>
  69 + <y>0</y>
  70 + <width>821</width>
  71 + <height>65</height>
  72 + </rect>
  73 + </property>
  74 + <property name="sizePolicy">
  75 + <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
  76 + <horstretch>0</horstretch>
  77 + <verstretch>0</verstretch>
  78 + </sizepolicy>
  79 + </property>
  80 + <property name="minimumSize">
  81 + <size>
  82 + <width>821</width>
  83 + <height>65</height>
  84 + </size>
  85 + </property>
  86 + <property name="maximumSize">
  87 + <size>
  88 + <width>821</width>
  89 + <height>65</height>
  90 + </size>
  91 + </property>
  92 + <property name="font">
  93 + <font>
  94 + <family>Roboto</family>
  95 + <pointsize>11</pointsize>
  96 + </font>
  97 + </property>
  98 + <property name="styleSheet">
  99 + <string notr="true">QPushButton {
  100 +background-image: url(:/images/etc/bar_03.png);
  101 +color: white;
  102 +text-align: left;
  103 +padding: 0px 40px;
  104 +}
  105 +QPushButton:pressed { background-image: url(:/images/etc/bar_02.png); }
  106 +QPushButton:focus { background-image: url(:/images/etc/bar_02.png); }</string>
  107 + </property>
  108 + <property name="text">
  109 + <string/>
  110 + </property>
  111 + </widget>
  112 + <zorder>pushButton</zorder>
  113 + <zorder>showInfoButton</zorder>
  114 + <zorder>deleteButton</zorder>
  115 + </widget>
  116 + <resources/>
  117 + <connections/>
  118 +</ui>
... ...
app/gui/oven_control/programmingwindow.cpp
... ... @@ -147,6 +147,7 @@ void ProgrammingWindow::listButtons(QList&lt;CookRecord&gt; record)
147 147 setTabOrder(ui->manualButton, ui->addButton);
148 148  
149 149 QWidget *last = ui->addButton;
  150 + CookPanelButton *prev = NULL;
150 151 foreach (CookRecord r, record)
151 152 {
152 153 CookPanelButton *b = newButton(r);
... ... @@ -154,6 +155,12 @@ void ProgrammingWindow::listButtons(QList&lt;CookRecord&gt; record)
154 155 setTabOrder(b->bar(), b->infoButton());
155 156 setTabOrder(b->infoButton(), b->deleteButton());
156 157 last = b->deleteButton();
  158 +
  159 + CookPanelButton *p = qobject_cast<CookPanelButton *>(prev);
  160 + if (p)
  161 + p->next = b;
  162 +
  163 + prev = b;
157 164 }
158 165  
159 166 setTabOrder(last, ui->backButton);
... ...