Commit 382b586e92d032264d335544486c7fb59695890f

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

프로그래밍 모드 임시 구현

- 자동 요리 만들기 추가
- 연속 요리 기능 미구현
app/gui/oven_control/cookpanelbutton.cpp
... ... @@ -8,7 +8,8 @@ CookPanelButton::CookPanelButton(CookRecord record, QWidget *parent) :
8 8 QWidget(parent),
9 9 record(record),
10 10 ui(new Ui::CookPanelButton),
11   - rendered(false)
  11 + rendered(false),
  12 + longPressEnabled(false)
12 13 {
13 14 ui->setupUi(this);
14 15  
... ... @@ -16,6 +17,10 @@ CookPanelButton::CookPanelButton(CookRecord record, QWidget *parent) :
16 17  
17 18 foreach (QPushButton *button, findChildren<QPushButton *>())
18 19 connect(button, &QPushButton::pressed, SoundPlayer::playClick);
  20 +
  21 + longPressedTimer.setSingleShot(true);
  22 + longPressedTimer.setInterval(2000);
  23 + connect(&longPressedTimer, SIGNAL(timeout()), SLOT(emitLongPressed()));
19 24 }
20 25  
21 26 CookPanelButton::~CookPanelButton()
... ... @@ -64,14 +69,28 @@ void CookPanelButton::focusDeleteButton()
64 69 ui->deleteButton->setFocus();
65 70 }
66 71  
  72 +void CookPanelButton::setLongPressEnabled(bool enabled)
  73 +{
  74 + longPressEnabled = enabled;
  75 +}
  76 +
  77 +void CookPanelButton::emitLongPressed()
  78 +{
  79 + emitted = true;
  80 + emit longPressed(this);
  81 +}
  82 +
67 83  
68   -void CookPanelButton::on_showInfoButton_toggled(bool checked)
  84 +void CookPanelButton::on_showInfoButton_clicked()
69 85 {
70 86 emit infoClicked(this);
71 87 }
72 88  
73 89 void CookPanelButton::on_pushButton_clicked()
74 90 {
  91 + if (longPressEnabled && emitted)
  92 + return;
  93 +
75 94 CookHistory::start(record, parentWidget());
76 95 }
77 96  
... ... @@ -79,3 +98,14 @@ void CookPanelButton::on_deleteButton_clicked()
79 98 {
80 99 emit deleteClicked(this);
81 100 }
  101 +
  102 +void CookPanelButton::on_pushButton_pressed()
  103 +{
  104 + longPressedTimer.start();
  105 + emitted = false;
  106 +}
  107 +
  108 +void CookPanelButton::on_pushButton_released()
  109 +{
  110 + longPressedTimer.stop();
  111 +}
... ...
app/gui/oven_control/cookpanelbutton.h
... ... @@ -4,6 +4,7 @@
4 4 #include <QWidget>
5 5 #include <QLabel>
6 6 #include <QButtonGroup>
  7 +#include <QTimer>
7 8  
8 9 #include "cookhistory.h"
9 10  
... ... @@ -20,6 +21,7 @@ signals:
20 21 void clicked(CookPanelButton *);
21 22 void infoClicked(CookPanelButton *);
22 23 void deleteClicked(CookPanelButton *);
  24 + void longPressed(CookPanelButton *);
23 25  
24 26 public:
25 27 explicit CookPanelButton(CookRecord record, QWidget *parent = 0);
... ... @@ -33,22 +35,27 @@ public:
33 35 void focusInfoButton();
34 36 void focusDeleteButton();
35 37  
  38 + void setLongPressEnabled(bool enabled);
  39 +
36 40 CookRecord record;
37 41  
38 42 private slots:
  43 + void emitLongPressed();
39 44  
40   -
41   - void on_showInfoButton_toggled(bool checked);
42   -
  45 + void on_pushButton_pressed();
  46 + void on_pushButton_released();
43 47 void on_pushButton_clicked();
44   -
  48 + void on_showInfoButton_clicked();
45 49 void on_deleteButton_clicked();
46 50  
47 51 private:
48 52 Ui::CookPanelButton *ui;
49 53  
  54 + QTimer longPressedTimer;
50 55 bool rendered;
51 56 QLabel *label;
  57 + bool emitted;
  58 + bool longPressEnabled;
52 59 };
53 60  
54 61 #endif // COOKPANELBUTTON_H
... ...
app/gui/oven_control/cookprogram.cpp
... ... @@ -709,6 +709,14 @@ void CookProgram::discard()
709 709 {
710 710 checkInitialized();
711 711  
712   - currentAutoList = savedAutoList;
713   - currentManualList = savedManualList;
  712 + if (isModified())
  713 + {
  714 + currentAutoList = savedAutoList;
  715 + currentManualList = savedManualList;
  716 + }
  717 +}
  718 +
  719 +bool CookProgram::isModified()
  720 +{
  721 + return currentAutoList != savedAutoList || currentManualList != savedManualList;
714 722 }
... ...
app/gui/oven_control/cookprogram.h
... ... @@ -12,6 +12,7 @@ void remove(CookRecord record);
12 12 void rename(CookRecord record, QString name);
13 13 void save();
14 14 void discard();
  15 +bool isModified();
15 16  
16 17 QList<CookRecord> listAuto();
17 18 QList<CookRecord> listManual();
... ...
app/gui/oven_control/oven_control.pro
... ... @@ -110,7 +110,10 @@ SOURCES += main.cpp\
110 110 programmingselectionwindow.cpp \
111 111 programmingmanualwindow.cpp \
112 112 programmingmanualcoretemppopup.cpp \
113   - cookprogram.cpp
  113 + cookprogram.cpp \
  114 + programmingautoselectionwindow.cpp \
  115 + programmingautoconfigwindow.cpp \
  116 + programmingnamepopup.cpp
114 117  
115 118 HEADERS += mainwindow.h \
116 119 cook.h \
... ... @@ -210,7 +213,10 @@ HEADERS += mainwindow.h \
210 213 programmingselectionwindow.h \
211 214 programmingmanualwindow.h \
212 215 programmingmanualcoretemppopup.h \
213   - cookprogram.h
  216 + cookprogram.h \
  217 + programmingautoselectionwindow.h \
  218 + programmingautoconfigwindow.h \
  219 + programmingnamepopup.h
214 220  
215 221 FORMS += mainwindow.ui \
216 222 manualcookwindow.ui \
... ... @@ -277,7 +283,10 @@ FORMS += mainwindow.ui \
277 283 fileprocessdlg.ui \
278 284 programmingselectionwindow.ui \
279 285 programmingmanualwindow.ui \
280   - programmingmanualcoretemppopup.ui
  286 + programmingmanualcoretemppopup.ui \
  287 + programmingautoselectionwindow.ui \
  288 + programmingautoconfigwindow.ui \
  289 + programmingnamepopup.ui
281 290  
282 291 RESOURCES += \
283 292 resources.qrc
... ...
app/gui/oven_control/primewindow.cpp
... ... @@ -71,10 +71,8 @@ void PrimeWindow::focusFavorite(int id)
71 71 {
72 72 foreach (CookPanelButton *b, list)
73 73 {
74   - qDebug() << "Favorite ID" << b->record.id;
75 74 if (b->record.id == id)
76 75 {
77   -// b->setFocus();
78 76 b->focusBar();
79 77 break;
80 78 }
... ...
app/gui/oven_control/programmingautoconfigwindow.cpp
... ... @@ -0,0 +1,198 @@
  1 +#include "programmingautoconfigwindow.h"
  2 +#include "ui_programmingautoconfigwindow.h"
  3 +
  4 +#include "soundplayer.h"
  5 +#include "stringer.h"
  6 +#include "cookprogram.h"
  7 +
  8 +ProgrammingAutoConfigWindow::ProgrammingAutoConfigWindow(QWidget *parent, Cook cook) :
  9 + QMainWindow(parent),
  10 + ui(new Ui::ProgrammingAutoConfigWindow),
  11 + cook(cook)
  12 +{
  13 + ui->setupUi(this);
  14 +
  15 + ui->clockContainer->setParent(ui->upperStack);
  16 + setAttribute(Qt::WA_DeleteOnClose);
  17 +
  18 + configWidgets.append(
  19 + ConfigWidget {
  20 + ui->configButton_1,
  21 + ui->configMinLabel_1,
  22 + ui->configMaxLabel_1,
  23 + ui->configCurrentLabel_1,
  24 + ui->configSlider_1
  25 + });
  26 + configWidgets.append(
  27 + ConfigWidget {
  28 + ui->configButton_2,
  29 + ui->configMinLabel_2,
  30 + ui->configMaxLabel_2,
  31 + ui->configCurrentLabel_2,
  32 + ui->configSlider_2
  33 + });
  34 + configWidgets.append(
  35 + ConfigWidget {
  36 + ui->configButton_3,
  37 + ui->configMinLabel_3,
  38 + ui->configMaxLabel_3,
  39 + ui->configCurrentLabel_3,
  40 + ui->configSlider_3
  41 + });
  42 + configWidgets.append(
  43 + ConfigWidget {
  44 + ui->configButton_4,
  45 + ui->configMinLabel_4,
  46 + ui->configMaxLabel_4,
  47 + ui->configCurrentLabel_4,
  48 + ui->configSlider_4
  49 + });
  50 + configWidgets.append(
  51 + ConfigWidget {
  52 + ui->configButton_5,
  53 + ui->configMinLabel_5,
  54 + ui->configMaxLabel_5,
  55 + ui->configCurrentLabel_5,
  56 + ui->configSlider_5
  57 + });
  58 +
  59 + setupUi();
  60 +
  61 + foreach (QPushButton *button, findChildren<QPushButton *>())
  62 + connect(button, &QPushButton::pressed, SoundPlayer::playClick);
  63 +}
  64 +
  65 +ProgrammingAutoConfigWindow::~ProgrammingAutoConfigWindow()
  66 +{
  67 + delete ui;
  68 +}
  69 +
  70 +void ProgrammingAutoConfigWindow::setupUi()
  71 +{
  72 + ui->cookTypeIcon->setPixmap(Define::icon(cook.type));
  73 + ui->selectCookButton->setText(cook.name);
  74 +
  75 + for (int idx = 0; idx < 5; idx++)
  76 + {
  77 + CookConfig config = cook.configs[idx];
  78 + if (config.type == Define::ConfigNotUsed)
  79 + {
  80 + ConfigWidget cw = configWidgets.at(idx);
  81 + cw.button->hide();
  82 + cw.minimum->hide();
  83 + cw.maximum->hide();
  84 + cw.current->hide();
  85 + cw.slider->hide();
  86 + }
  87 + else
  88 + {
  89 + ConfigWidget cw = configWidgets.at(idx);
  90 + cw.button->setStyleSheet(
  91 + "QPushButton { image: url("
  92 + + Define::icon(config.type)
  93 + + ") } QPushButton::pressed { image: url("
  94 + + Define::iconOverlay(config.type)
  95 + + ") }");
  96 +
  97 + cw.minimum->setText(Define::minimum(config.type));
  98 + cw.maximum->setText(Define::maximum(config.type));
  99 + cw.slider->blockSignals(true);
  100 + cw.slider->setMinimum(1);
  101 + cw.slider->setMaximum(config.maximum);
  102 + cw.slider->setValue(config.current);
  103 + cw.slider->blockSignals(false);
  104 +
  105 + switch (config.type)
  106 + {
  107 + case Define::Time:
  108 + cw.slider->setProperty("sliderColor", "white");
  109 + break;
  110 + case Define::BurnDegree:
  111 + cw.slider->setProperty("sliderColor", "yellow");
  112 + break;
  113 + case Define::Brightness:
  114 + cw.slider->setProperty("sliderColor", "red");
  115 + break;
  116 + default:
  117 + cw.slider->setProperty("sliderColor", "blue");
  118 + break;
  119 + }
  120 +
  121 + connect(cw.slider, SIGNAL(valueChanged(int)), SLOT(updateConfig()));
  122 + }
  123 + }
  124 +
  125 + updateView();
  126 +}
  127 +
  128 +void ProgrammingAutoConfigWindow::updateView()
  129 +{
  130 + for (int idx = 0; idx < 5; idx++)
  131 + {
  132 + CookConfig config = cook.configs[idx];
  133 + if (config.type == Define::ConfigNotUsed)
  134 + continue;
  135 +
  136 + ConfigWidget cw = configWidgets.at(idx);
  137 +
  138 + switch (config.type)
  139 + {
  140 + case Define::Time:
  141 + cw.current->setText(Stringer::remainingTime(cook.time() * 1000, Stringer::fontSize14));
  142 + break;
  143 + case Define::BurnDegree:
  144 + cw.current->setText(Stringer::temperature(cook.coreTemp(), Stringer::fontSize14));
  145 + break;
  146 + default:
  147 + cw.current->setText(QString().sprintf(
  148 + "%d"
  149 + "<span style=\"font-size:11pt;\">/%d</span>",
  150 + config.current, config.maximum));
  151 + break;
  152 + }
  153 + }
  154 +}
  155 +
  156 +void ProgrammingAutoConfigWindow::updateConfig()
  157 +{
  158 + cook.setConfig(ui->configSlider_1->value(),
  159 + ui->configSlider_2->value(),
  160 + ui->configSlider_3->value(),
  161 + ui->configSlider_4->value(),
  162 + ui->configSlider_5->value());
  163 +
  164 + updateView();
  165 +}
  166 +
  167 +void ProgrammingAutoConfigWindow::on_backButton_clicked()
  168 +{
  169 + close();
  170 +}
  171 +
  172 +void ProgrammingAutoConfigWindow::on_configButton_clicked()
  173 +{
  174 +
  175 +}
  176 +
  177 +void ProgrammingAutoConfigWindow::on_helpButton_clicked()
  178 +{
  179 +
  180 +}
  181 +
  182 +void ProgrammingAutoConfigWindow::on_okButton_clicked()
  183 +{
  184 + if (!cook.isLoaded())
  185 + cook.load();
  186 +
  187 + AutoCookSetting s;
  188 + s.type = cook.type;
  189 + s.name = cook.name;
  190 + s.root = cook.root;
  191 + for (int i = 0; i < 5; i++)
  192 + s.configs[i] = cook.configs[i].current;
  193 +
  194 + CookProgram::add(s);
  195 +
  196 + emit added();
  197 + close();
  198 +}
... ...
app/gui/oven_control/programmingautoconfigwindow.h
... ... @@ -0,0 +1,54 @@
  1 +#ifndef PROGRAMMINGAUTOCONFIGWINDOW_H
  2 +#define PROGRAMMINGAUTOCONFIGWINDOW_H
  3 +
  4 +#include <QMainWindow>
  5 +#include <QPushButton>
  6 +#include <QLabel>
  7 +#include <QSlider>
  8 +
  9 +#include "cookbook.h"
  10 +
  11 +namespace Ui {
  12 +class ProgrammingAutoConfigWindow;
  13 +}
  14 +
  15 +class ProgrammingAutoConfigWindow : public QMainWindow
  16 +{
  17 + Q_OBJECT
  18 +
  19 +public:
  20 + explicit ProgrammingAutoConfigWindow(QWidget *parent, Cook cook);
  21 + ~ProgrammingAutoConfigWindow();
  22 +
  23 +private:
  24 + Ui::ProgrammingAutoConfigWindow *ui;
  25 + Cook cook;
  26 +
  27 + struct ConfigWidget {
  28 + QPushButton *button;
  29 + QLabel *minimum;
  30 + QLabel *maximum;
  31 + QLabel *current;
  32 + QSlider *slider;
  33 + };
  34 +
  35 + QList<ConfigWidget> configWidgets;
  36 +
  37 +private slots:
  38 + void setupUi();
  39 + void updateView();
  40 + void updateConfig();
  41 +
  42 + void on_backButton_clicked();
  43 +
  44 + void on_configButton_clicked();
  45 +
  46 + void on_helpButton_clicked();
  47 +
  48 + void on_okButton_clicked();
  49 +
  50 +signals:
  51 + void added();
  52 +};
  53 +
  54 +#endif // PROGRAMMINGAUTOCONFIGWINDOW_H
... ...
app/gui/oven_control/programmingautoconfigwindow.ui
... ... @@ -0,0 +1,1455 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<ui version="4.0">
  3 + <class>ProgrammingAutoConfigWindow</class>
  4 + <widget class="QMainWindow" name="ProgrammingAutoConfigWindow">
  5 + <property name="geometry">
  6 + <rect>
  7 + <x>0</x>
  8 + <y>0</y>
  9 + <width>900</width>
  10 + <height>1600</height>
  11 + </rect>
  12 + </property>
  13 + <property name="windowTitle">
  14 + <string>MainWindow</string>
  15 + </property>
  16 + <property name="styleSheet">
  17 + <string notr="true">#centralwidget { background-image: url(:/images/background/auto.png); }
  18 +#bottomBar { background-image: url(:/images/bottom_bar/background.png); }
  19 +
  20 +QSlider::groove {
  21 +background-image: url(:/images/slider/groove.png);
  22 +background-repeat: no-repeat;
  23 +background-position: center;
  24 +}
  25 +
  26 +QSlider::sub-page {
  27 +background-repeat: no-repeat;
  28 +background-position: left center;
  29 +margin: 0px 5px;
  30 +}
  31 +
  32 +QSlider[sliderColor=&quot;red&quot;]::sub-page {
  33 +background-image: url(:/images/slider/sub_red.png);
  34 +}
  35 +
  36 +QSlider[sliderColor=&quot;yellow&quot;]::sub-page {
  37 +background-image: url(:/images/slider/sub_yellow.png);
  38 +}
  39 +
  40 +QSlider[sliderColor=&quot;white&quot;]::sub-page {
  41 +background-image: url(:/images/slider/sub_white.png);
  42 +}
  43 +
  44 +QSlider[sliderColor=&quot;blue&quot;]::sub-page {
  45 +background-image: url(:/images/slider/sub_blue.png);
  46 +}
  47 +
  48 +QSlider[sliderColor=&quot;green&quot;]::sub-page {
  49 +background-image: url(:/images/slider/sub_green.png);
  50 +}
  51 +
  52 +QSlider::handle {
  53 +background-image: url(:/images/slider/handle_big.png);
  54 +background-repeat: no-repeat;
  55 +background-position: center;
  56 +width: 23px;
  57 +height: 33px;
  58 +}
  59 +
  60 +QPushButton[style=&quot;icon&quot;] {
  61 +background-image: url(:/images/slider_icon/background.png);
  62 +background-repeat: no-repeat;
  63 +background-position: center;
  64 +border: none;
  65 +}</string>
  66 + </property>
  67 + <widget class="QWidget" name="centralwidget">
  68 + <widget class="QLabel" name="configMaxLabel_4">
  69 + <property name="enabled">
  70 + <bool>true</bool>
  71 + </property>
  72 + <property name="geometry">
  73 + <rect>
  74 + <x>700</x>
  75 + <y>1130</y>
  76 + <width>151</width>
  77 + <height>51</height>
  78 + </rect>
  79 + </property>
  80 + <property name="palette">
  81 + <palette>
  82 + <active>
  83 + <colorrole role="WindowText">
  84 + <brush brushstyle="SolidPattern">
  85 + <color alpha="255">
  86 + <red>255</red>
  87 + <green>255</green>
  88 + <blue>255</blue>
  89 + </color>
  90 + </brush>
  91 + </colorrole>
  92 + </active>
  93 + <inactive>
  94 + <colorrole role="WindowText">
  95 + <brush brushstyle="SolidPattern">
  96 + <color alpha="255">
  97 + <red>255</red>
  98 + <green>255</green>
  99 + <blue>255</blue>
  100 + </color>
  101 + </brush>
  102 + </colorrole>
  103 + </inactive>
  104 + <disabled>
  105 + <colorrole role="WindowText">
  106 + <brush brushstyle="SolidPattern">
  107 + <color alpha="255">
  108 + <red>123</red>
  109 + <green>123</green>
  110 + <blue>123</blue>
  111 + </color>
  112 + </brush>
  113 + </colorrole>
  114 + </disabled>
  115 + </palette>
  116 + </property>
  117 + <property name="font">
  118 + <font>
  119 + <family>Malgun Gothic</family>
  120 + <pointsize>9</pointsize>
  121 + </font>
  122 + </property>
  123 + <property name="text">
  124 + <string>증가</string>
  125 + </property>
  126 + <property name="alignment">
  127 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  128 + </property>
  129 + </widget>
  130 + <widget class="QPushButton" name="pushButton_4">
  131 + <property name="geometry">
  132 + <rect>
  133 + <x>720</x>
  134 + <y>480</y>
  135 + <width>152</width>
  136 + <height>70</height>
  137 + </rect>
  138 + </property>
  139 + <property name="styleSheet">
  140 + <string notr="true">QPushButton {
  141 +border-image: url(:/images/button/152.png);
  142 +}
  143 +QPushButton::pressed {
  144 +border-image: url(:/images/button/152_ov.png);
  145 +}</string>
  146 + </property>
  147 + <property name="text">
  148 + <string/>
  149 + </property>
  150 + <property name="icon">
  151 + <iconset resource="resources.qrc">
  152 + <normaloff>:/images/auto_button/btn_icon_01.png</normaloff>:/images/auto_button/btn_icon_01.png</iconset>
  153 + </property>
  154 + <property name="iconSize">
  155 + <size>
  156 + <width>40</width>
  157 + <height>51</height>
  158 + </size>
  159 + </property>
  160 + </widget>
  161 + <widget class="QLabel" name="configCurrentLabel_2">
  162 + <property name="enabled">
  163 + <bool>true</bool>
  164 + </property>
  165 + <property name="geometry">
  166 + <rect>
  167 + <x>199</x>
  168 + <y>850</y>
  169 + <width>641</width>
  170 + <height>51</height>
  171 + </rect>
  172 + </property>
  173 + <property name="palette">
  174 + <palette>
  175 + <active>
  176 + <colorrole role="WindowText">
  177 + <brush brushstyle="SolidPattern">
  178 + <color alpha="255">
  179 + <red>255</red>
  180 + <green>255</green>
  181 + <blue>255</blue>
  182 + </color>
  183 + </brush>
  184 + </colorrole>
  185 + </active>
  186 + <inactive>
  187 + <colorrole role="WindowText">
  188 + <brush brushstyle="SolidPattern">
  189 + <color alpha="255">
  190 + <red>255</red>
  191 + <green>255</green>
  192 + <blue>255</blue>
  193 + </color>
  194 + </brush>
  195 + </colorrole>
  196 + </inactive>
  197 + <disabled>
  198 + <colorrole role="WindowText">
  199 + <brush brushstyle="SolidPattern">
  200 + <color alpha="255">
  201 + <red>123</red>
  202 + <green>123</green>
  203 + <blue>123</blue>
  204 + </color>
  205 + </brush>
  206 + </colorrole>
  207 + </disabled>
  208 + </palette>
  209 + </property>
  210 + <property name="font">
  211 + <font>
  212 + <family>Roboto</family>
  213 + <pointsize>16</pointsize>
  214 + <weight>75</weight>
  215 + <bold>true</bold>
  216 + </font>
  217 + </property>
  218 + <property name="text">
  219 + <string>스팀</string>
  220 + </property>
  221 + <property name="alignment">
  222 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  223 + </property>
  224 + </widget>
  225 + <widget class="QLabel" name="configMinLabel_4">
  226 + <property name="enabled">
  227 + <bool>true</bool>
  228 + </property>
  229 + <property name="geometry">
  230 + <rect>
  231 + <x>185</x>
  232 + <y>1130</y>
  233 + <width>151</width>
  234 + <height>51</height>
  235 + </rect>
  236 + </property>
  237 + <property name="palette">
  238 + <palette>
  239 + <active>
  240 + <colorrole role="WindowText">
  241 + <brush brushstyle="SolidPattern">
  242 + <color alpha="255">
  243 + <red>255</red>
  244 + <green>255</green>
  245 + <blue>255</blue>
  246 + </color>
  247 + </brush>
  248 + </colorrole>
  249 + </active>
  250 + <inactive>
  251 + <colorrole role="WindowText">
  252 + <brush brushstyle="SolidPattern">
  253 + <color alpha="255">
  254 + <red>255</red>
  255 + <green>255</green>
  256 + <blue>255</blue>
  257 + </color>
  258 + </brush>
  259 + </colorrole>
  260 + </inactive>
  261 + <disabled>
  262 + <colorrole role="WindowText">
  263 + <brush brushstyle="SolidPattern">
  264 + <color alpha="255">
  265 + <red>123</red>
  266 + <green>123</green>
  267 + <blue>123</blue>
  268 + </color>
  269 + </brush>
  270 + </colorrole>
  271 + </disabled>
  272 + </palette>
  273 + </property>
  274 + <property name="font">
  275 + <font>
  276 + <family>Malgun Gothic</family>
  277 + <pointsize>9</pointsize>
  278 + </font>
  279 + </property>
  280 + <property name="text">
  281 + <string>감소</string>
  282 + </property>
  283 + <property name="alignment">
  284 + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
  285 + </property>
  286 + </widget>
  287 + <widget class="QLabel" name="configMaxLabel_1">
  288 + <property name="enabled">
  289 + <bool>true</bool>
  290 + </property>
  291 + <property name="geometry">
  292 + <rect>
  293 + <x>700</x>
  294 + <y>620</y>
  295 + <width>151</width>
  296 + <height>51</height>
  297 + </rect>
  298 + </property>
  299 + <property name="palette">
  300 + <palette>
  301 + <active>
  302 + <colorrole role="WindowText">
  303 + <brush brushstyle="SolidPattern">
  304 + <color alpha="255">
  305 + <red>255</red>
  306 + <green>255</green>
  307 + <blue>255</blue>
  308 + </color>
  309 + </brush>
  310 + </colorrole>
  311 + </active>
  312 + <inactive>
  313 + <colorrole role="WindowText">
  314 + <brush brushstyle="SolidPattern">
  315 + <color alpha="255">
  316 + <red>255</red>
  317 + <green>255</green>
  318 + <blue>255</blue>
  319 + </color>
  320 + </brush>
  321 + </colorrole>
  322 + </inactive>
  323 + <disabled>
  324 + <colorrole role="WindowText">
  325 + <brush brushstyle="SolidPattern">
  326 + <color alpha="255">
  327 + <red>123</red>
  328 + <green>123</green>
  329 + <blue>123</blue>
  330 + </color>
  331 + </brush>
  332 + </colorrole>
  333 + </disabled>
  334 + </palette>
  335 + </property>
  336 + <property name="font">
  337 + <font>
  338 + <family>Malgun Gothic</family>
  339 + <pointsize>9</pointsize>
  340 + </font>
  341 + </property>
  342 + <property name="text">
  343 + <string>증가</string>
  344 + </property>
  345 + <property name="alignment">
  346 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  347 + </property>
  348 + </widget>
  349 + <widget class="QLabel" name="configMaxLabel_5">
  350 + <property name="enabled">
  351 + <bool>true</bool>
  352 + </property>
  353 + <property name="geometry">
  354 + <rect>
  355 + <x>700</x>
  356 + <y>1300</y>
  357 + <width>151</width>
  358 + <height>51</height>
  359 + </rect>
  360 + </property>
  361 + <property name="palette">
  362 + <palette>
  363 + <active>
  364 + <colorrole role="WindowText">
  365 + <brush brushstyle="SolidPattern">
  366 + <color alpha="255">
  367 + <red>255</red>
  368 + <green>255</green>
  369 + <blue>255</blue>
  370 + </color>
  371 + </brush>
  372 + </colorrole>
  373 + </active>
  374 + <inactive>
  375 + <colorrole role="WindowText">
  376 + <brush brushstyle="SolidPattern">
  377 + <color alpha="255">
  378 + <red>255</red>
  379 + <green>255</green>
  380 + <blue>255</blue>
  381 + </color>
  382 + </brush>
  383 + </colorrole>
  384 + </inactive>
  385 + <disabled>
  386 + <colorrole role="WindowText">
  387 + <brush brushstyle="SolidPattern">
  388 + <color alpha="255">
  389 + <red>123</red>
  390 + <green>123</green>
  391 + <blue>123</blue>
  392 + </color>
  393 + </brush>
  394 + </colorrole>
  395 + </disabled>
  396 + </palette>
  397 + </property>
  398 + <property name="font">
  399 + <font>
  400 + <family>Malgun Gothic</family>
  401 + <pointsize>9</pointsize>
  402 + </font>
  403 + </property>
  404 + <property name="text">
  405 + <string>증가</string>
  406 + </property>
  407 + <property name="alignment">
  408 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  409 + </property>
  410 + </widget>
  411 + <widget class="QSlider" name="configSlider_1">
  412 + <property name="geometry">
  413 + <rect>
  414 + <x>185</x>
  415 + <y>663</y>
  416 + <width>666</width>
  417 + <height>33</height>
  418 + </rect>
  419 + </property>
  420 + <property name="maximum">
  421 + <number>100</number>
  422 + </property>
  423 + <property name="pageStep">
  424 + <number>1</number>
  425 + </property>
  426 + <property name="value">
  427 + <number>39</number>
  428 + </property>
  429 + <property name="tracking">
  430 + <bool>true</bool>
  431 + </property>
  432 + <property name="orientation">
  433 + <enum>Qt::Horizontal</enum>
  434 + </property>
  435 + <property name="tickPosition">
  436 + <enum>QSlider::TicksBelow</enum>
  437 + </property>
  438 + <property name="tickInterval">
  439 + <number>1</number>
  440 + </property>
  441 + </widget>
  442 + <widget class="QLabel" name="configMinLabel_5">
  443 + <property name="enabled">
  444 + <bool>true</bool>
  445 + </property>
  446 + <property name="geometry">
  447 + <rect>
  448 + <x>185</x>
  449 + <y>1300</y>
  450 + <width>151</width>
  451 + <height>51</height>
  452 + </rect>
  453 + </property>
  454 + <property name="palette">
  455 + <palette>
  456 + <active>
  457 + <colorrole role="WindowText">
  458 + <brush brushstyle="SolidPattern">
  459 + <color alpha="255">
  460 + <red>255</red>
  461 + <green>255</green>
  462 + <blue>255</blue>
  463 + </color>
  464 + </brush>
  465 + </colorrole>
  466 + </active>
  467 + <inactive>
  468 + <colorrole role="WindowText">
  469 + <brush brushstyle="SolidPattern">
  470 + <color alpha="255">
  471 + <red>255</red>
  472 + <green>255</green>
  473 + <blue>255</blue>
  474 + </color>
  475 + </brush>
  476 + </colorrole>
  477 + </inactive>
  478 + <disabled>
  479 + <colorrole role="WindowText">
  480 + <brush brushstyle="SolidPattern">
  481 + <color alpha="255">
  482 + <red>123</red>
  483 + <green>123</green>
  484 + <blue>123</blue>
  485 + </color>
  486 + </brush>
  487 + </colorrole>
  488 + </disabled>
  489 + </palette>
  490 + </property>
  491 + <property name="font">
  492 + <font>
  493 + <family>Malgun Gothic</family>
  494 + <pointsize>9</pointsize>
  495 + </font>
  496 + </property>
  497 + <property name="text">
  498 + <string>감소</string>
  499 + </property>
  500 + <property name="alignment">
  501 + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
  502 + </property>
  503 + </widget>
  504 + <widget class="QPushButton" name="selectCookButton">
  505 + <property name="geometry">
  506 + <rect>
  507 + <x>420</x>
  508 + <y>480</y>
  509 + <width>288</width>
  510 + <height>70</height>
  511 + </rect>
  512 + </property>
  513 + <property name="font">
  514 + <font>
  515 + <family>Roboto</family>
  516 + <pointsize>10</pointsize>
  517 + <weight>75</weight>
  518 + <bold>true</bold>
  519 + </font>
  520 + </property>
  521 + <property name="styleSheet">
  522 + <string notr="true">QPushButton {
  523 +border-image: url(:/images/button/288.png);
  524 +}
  525 +QPushButton::pressed {
  526 +border-image: url(:/images/button/288_ov.png);
  527 +}</string>
  528 + </property>
  529 + <property name="text">
  530 + <string/>
  531 + </property>
  532 + </widget>
  533 + <widget class="QStackedWidget" name="upperStack">
  534 + <property name="geometry">
  535 + <rect>
  536 + <x>0</x>
  537 + <y>0</y>
  538 + <width>900</width>
  539 + <height>426</height>
  540 + </rect>
  541 + </property>
  542 + <widget class="QWidget" name="clockContainer">
  543 + <property name="styleSheet">
  544 + <string notr="true">#clockContainer { background-image: url(:/images/clock/background.png); }</string>
  545 + </property>
  546 + <widget class="Clock" name="clock" native="true">
  547 + <property name="geometry">
  548 + <rect>
  549 + <x>272</x>
  550 + <y>36</y>
  551 + <width>356</width>
  552 + <height>355</height>
  553 + </rect>
  554 + </property>
  555 + </widget>
  556 + <widget class="WashWarnIcon" name="label">
  557 + <property name="geometry">
  558 + <rect>
  559 + <x>800</x>
  560 + <y>320</y>
  561 + <width>80</width>
  562 + <height>84</height>
  563 + </rect>
  564 + </property>
  565 + </widget>
  566 + </widget>
  567 + <widget class="QWidget" name="page_2"/>
  568 + </widget>
  569 + <widget class="QSlider" name="configSlider_2">
  570 + <property name="geometry">
  571 + <rect>
  572 + <x>185</x>
  573 + <y>823</y>
  574 + <width>666</width>
  575 + <height>33</height>
  576 + </rect>
  577 + </property>
  578 + <property name="maximum">
  579 + <number>100</number>
  580 + </property>
  581 + <property name="pageStep">
  582 + <number>1</number>
  583 + </property>
  584 + <property name="value">
  585 + <number>10</number>
  586 + </property>
  587 + <property name="tracking">
  588 + <bool>true</bool>
  589 + </property>
  590 + <property name="orientation">
  591 + <enum>Qt::Horizontal</enum>
  592 + </property>
  593 + </widget>
  594 + <widget class="QLabel" name="cookTypeIcon">
  595 + <property name="geometry">
  596 + <rect>
  597 + <x>0</x>
  598 + <y>430</y>
  599 + <width>250</width>
  600 + <height>150</height>
  601 + </rect>
  602 + </property>
  603 + <property name="text">
  604 + <string/>
  605 + </property>
  606 + <property name="pixmap">
  607 + <pixmap>:/images/images/auto/005_auto_icon_01_ov.png</pixmap>
  608 + </property>
  609 + <property name="alignment">
  610 + <set>Qt::AlignCenter</set>
  611 + </property>
  612 + </widget>
  613 + <widget class="QPushButton" name="configButton_3">
  614 + <property name="geometry">
  615 + <rect>
  616 + <x>27</x>
  617 + <y>935</y>
  618 + <width>140</width>
  619 + <height>140</height>
  620 + </rect>
  621 + </property>
  622 + <property name="text">
  623 + <string/>
  624 + </property>
  625 + <property name="style" stdset="0">
  626 + <string notr="true">icon</string>
  627 + </property>
  628 + </widget>
  629 + <widget class="QSlider" name="configSlider_4">
  630 + <property name="geometry">
  631 + <rect>
  632 + <x>185</x>
  633 + <y>1173</y>
  634 + <width>666</width>
  635 + <height>33</height>
  636 + </rect>
  637 + </property>
  638 + <property name="maximum">
  639 + <number>100</number>
  640 + </property>
  641 + <property name="pageStep">
  642 + <number>1</number>
  643 + </property>
  644 + <property name="value">
  645 + <number>0</number>
  646 + </property>
  647 + <property name="tracking">
  648 + <bool>true</bool>
  649 + </property>
  650 + <property name="orientation">
  651 + <enum>Qt::Horizontal</enum>
  652 + </property>
  653 + </widget>
  654 + <widget class="QLabel" name="configMinLabel_2">
  655 + <property name="enabled">
  656 + <bool>true</bool>
  657 + </property>
  658 + <property name="geometry">
  659 + <rect>
  660 + <x>185</x>
  661 + <y>780</y>
  662 + <width>151</width>
  663 + <height>51</height>
  664 + </rect>
  665 + </property>
  666 + <property name="palette">
  667 + <palette>
  668 + <active>
  669 + <colorrole role="WindowText">
  670 + <brush brushstyle="SolidPattern">
  671 + <color alpha="255">
  672 + <red>255</red>
  673 + <green>255</green>
  674 + <blue>255</blue>
  675 + </color>
  676 + </brush>
  677 + </colorrole>
  678 + </active>
  679 + <inactive>
  680 + <colorrole role="WindowText">
  681 + <brush brushstyle="SolidPattern">
  682 + <color alpha="255">
  683 + <red>255</red>
  684 + <green>255</green>
  685 + <blue>255</blue>
  686 + </color>
  687 + </brush>
  688 + </colorrole>
  689 + </inactive>
  690 + <disabled>
  691 + <colorrole role="WindowText">
  692 + <brush brushstyle="SolidPattern">
  693 + <color alpha="255">
  694 + <red>123</red>
  695 + <green>123</green>
  696 + <blue>123</blue>
  697 + </color>
  698 + </brush>
  699 + </colorrole>
  700 + </disabled>
  701 + </palette>
  702 + </property>
  703 + <property name="font">
  704 + <font>
  705 + <family>Malgun Gothic</family>
  706 + <pointsize>9</pointsize>
  707 + </font>
  708 + </property>
  709 + <property name="text">
  710 + <string>감소</string>
  711 + </property>
  712 + <property name="alignment">
  713 + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
  714 + </property>
  715 + </widget>
  716 + <widget class="QPushButton" name="configButton_2">
  717 + <property name="geometry">
  718 + <rect>
  719 + <x>27</x>
  720 + <y>765</y>
  721 + <width>140</width>
  722 + <height>140</height>
  723 + </rect>
  724 + </property>
  725 + <property name="text">
  726 + <string/>
  727 + </property>
  728 + <property name="style" stdset="0">
  729 + <string notr="true">icon</string>
  730 + </property>
  731 + </widget>
  732 + <widget class="QSlider" name="configSlider_3">
  733 + <property name="geometry">
  734 + <rect>
  735 + <x>185</x>
  736 + <y>993</y>
  737 + <width>666</width>
  738 + <height>33</height>
  739 + </rect>
  740 + </property>
  741 + <property name="maximum">
  742 + <number>100</number>
  743 + </property>
  744 + <property name="pageStep">
  745 + <number>1</number>
  746 + </property>
  747 + <property name="value">
  748 + <number>0</number>
  749 + </property>
  750 + <property name="tracking">
  751 + <bool>true</bool>
  752 + </property>
  753 + <property name="orientation">
  754 + <enum>Qt::Horizontal</enum>
  755 + </property>
  756 + </widget>
  757 + <widget class="QLabel" name="configCurrentLabel_4">
  758 + <property name="enabled">
  759 + <bool>true</bool>
  760 + </property>
  761 + <property name="geometry">
  762 + <rect>
  763 + <x>199</x>
  764 + <y>1200</y>
  765 + <width>641</width>
  766 + <height>51</height>
  767 + </rect>
  768 + </property>
  769 + <property name="palette">
  770 + <palette>
  771 + <active>
  772 + <colorrole role="WindowText">
  773 + <brush brushstyle="SolidPattern">
  774 + <color alpha="255">
  775 + <red>255</red>
  776 + <green>255</green>
  777 + <blue>255</blue>
  778 + </color>
  779 + </brush>
  780 + </colorrole>
  781 + </active>
  782 + <inactive>
  783 + <colorrole role="WindowText">
  784 + <brush brushstyle="SolidPattern">
  785 + <color alpha="255">
  786 + <red>255</red>
  787 + <green>255</green>
  788 + <blue>255</blue>
  789 + </color>
  790 + </brush>
  791 + </colorrole>
  792 + </inactive>
  793 + <disabled>
  794 + <colorrole role="WindowText">
  795 + <brush brushstyle="SolidPattern">
  796 + <color alpha="255">
  797 + <red>123</red>
  798 + <green>123</green>
  799 + <blue>123</blue>
  800 + </color>
  801 + </brush>
  802 + </colorrole>
  803 + </disabled>
  804 + </palette>
  805 + </property>
  806 + <property name="font">
  807 + <font>
  808 + <family>Roboto</family>
  809 + <pointsize>16</pointsize>
  810 + <weight>75</weight>
  811 + <bold>true</bold>
  812 + </font>
  813 + </property>
  814 + <property name="text">
  815 + <string>스팀</string>
  816 + </property>
  817 + <property name="alignment">
  818 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  819 + </property>
  820 + </widget>
  821 + <widget class="QWidget" name="bottomBar" native="true">
  822 + <property name="geometry">
  823 + <rect>
  824 + <x>0</x>
  825 + <y>1450</y>
  826 + <width>900</width>
  827 + <height>150</height>
  828 + </rect>
  829 + </property>
  830 + <widget class="QPushButton" name="backButton">
  831 + <property name="geometry">
  832 + <rect>
  833 + <x>232</x>
  834 + <y>26</y>
  835 + <width>97</width>
  836 + <height>97</height>
  837 + </rect>
  838 + </property>
  839 + <property name="styleSheet">
  840 + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/back.png); }
  841 +QPushButton:pressed { border-image: url(:/images/bottom_bar/back_ov.png); }</string>
  842 + </property>
  843 + <property name="text">
  844 + <string/>
  845 + </property>
  846 + </widget>
  847 + <widget class="QPushButton" name="helpButton">
  848 + <property name="geometry">
  849 + <rect>
  850 + <x>458</x>
  851 + <y>26</y>
  852 + <width>97</width>
  853 + <height>97</height>
  854 + </rect>
  855 + </property>
  856 + <property name="sizePolicy">
  857 + <sizepolicy hsizetype="Maximum" vsizetype="Maximum">
  858 + <horstretch>0</horstretch>
  859 + <verstretch>0</verstretch>
  860 + </sizepolicy>
  861 + </property>
  862 + <property name="minimumSize">
  863 + <size>
  864 + <width>62</width>
  865 + <height>71</height>
  866 + </size>
  867 + </property>
  868 + <property name="styleSheet">
  869 + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/help.png); }
  870 +QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/help_ov.png); }</string>
  871 + </property>
  872 + <property name="text">
  873 + <string/>
  874 + </property>
  875 + </widget>
  876 + <widget class="QPushButton" name="okButton">
  877 + <property name="geometry">
  878 + <rect>
  879 + <x>571</x>
  880 + <y>26</y>
  881 + <width>97</width>
  882 + <height>97</height>
  883 + </rect>
  884 + </property>
  885 + <property name="styleSheet">
  886 + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/006_sys_icon_16.png); }
  887 +QPushButton:pressed { border-image: url(:/images/bottom_bar/006_sys_icon_16_ov.png); }</string>
  888 + </property>
  889 + <property name="text">
  890 + <string/>
  891 + </property>
  892 + </widget>
  893 + <widget class="QPushButton" name="configButton">
  894 + <property name="geometry">
  895 + <rect>
  896 + <x>345</x>
  897 + <y>26</y>
  898 + <width>97</width>
  899 + <height>97</height>
  900 + </rect>
  901 + </property>
  902 + <property name="sizePolicy">
  903 + <sizepolicy hsizetype="Maximum" vsizetype="Maximum">
  904 + <horstretch>0</horstretch>
  905 + <verstretch>0</verstretch>
  906 + </sizepolicy>
  907 + </property>
  908 + <property name="minimumSize">
  909 + <size>
  910 + <width>62</width>
  911 + <height>71</height>
  912 + </size>
  913 + </property>
  914 + <property name="styleSheet">
  915 + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/config.png); }
  916 +QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/config_ov.png); }</string>
  917 + </property>
  918 + <property name="text">
  919 + <string/>
  920 + </property>
  921 + </widget>
  922 + </widget>
  923 + <widget class="QLabel" name="configCurrentLabel_5">
  924 + <property name="enabled">
  925 + <bool>true</bool>
  926 + </property>
  927 + <property name="geometry">
  928 + <rect>
  929 + <x>189</x>
  930 + <y>1370</y>
  931 + <width>651</width>
  932 + <height>51</height>
  933 + </rect>
  934 + </property>
  935 + <property name="palette">
  936 + <palette>
  937 + <active>
  938 + <colorrole role="WindowText">
  939 + <brush brushstyle="SolidPattern">
  940 + <color alpha="255">
  941 + <red>255</red>
  942 + <green>255</green>
  943 + <blue>255</blue>
  944 + </color>
  945 + </brush>
  946 + </colorrole>
  947 + </active>
  948 + <inactive>
  949 + <colorrole role="WindowText">
  950 + <brush brushstyle="SolidPattern">
  951 + <color alpha="255">
  952 + <red>255</red>
  953 + <green>255</green>
  954 + <blue>255</blue>
  955 + </color>
  956 + </brush>
  957 + </colorrole>
  958 + </inactive>
  959 + <disabled>
  960 + <colorrole role="WindowText">
  961 + <brush brushstyle="SolidPattern">
  962 + <color alpha="255">
  963 + <red>123</red>
  964 + <green>123</green>
  965 + <blue>123</blue>
  966 + </color>
  967 + </brush>
  968 + </colorrole>
  969 + </disabled>
  970 + </palette>
  971 + </property>
  972 + <property name="font">
  973 + <font>
  974 + <family>Roboto</family>
  975 + <pointsize>16</pointsize>
  976 + <weight>75</weight>
  977 + <bold>true</bold>
  978 + </font>
  979 + </property>
  980 + <property name="text">
  981 + <string>스팀</string>
  982 + </property>
  983 + <property name="alignment">
  984 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  985 + </property>
  986 + </widget>
  987 + <widget class="QLabel" name="configCurrentLabel_3">
  988 + <property name="enabled">
  989 + <bool>true</bool>
  990 + </property>
  991 + <property name="geometry">
  992 + <rect>
  993 + <x>199</x>
  994 + <y>1020</y>
  995 + <width>641</width>
  996 + <height>51</height>
  997 + </rect>
  998 + </property>
  999 + <property name="palette">
  1000 + <palette>
  1001 + <active>
  1002 + <colorrole role="WindowText">
  1003 + <brush brushstyle="SolidPattern">
  1004 + <color alpha="255">
  1005 + <red>255</red>
  1006 + <green>255</green>
  1007 + <blue>255</blue>
  1008 + </color>
  1009 + </brush>
  1010 + </colorrole>
  1011 + </active>
  1012 + <inactive>
  1013 + <colorrole role="WindowText">
  1014 + <brush brushstyle="SolidPattern">
  1015 + <color alpha="255">
  1016 + <red>255</red>
  1017 + <green>255</green>
  1018 + <blue>255</blue>
  1019 + </color>
  1020 + </brush>
  1021 + </colorrole>
  1022 + </inactive>
  1023 + <disabled>
  1024 + <colorrole role="WindowText">
  1025 + <brush brushstyle="SolidPattern">
  1026 + <color alpha="255">
  1027 + <red>123</red>
  1028 + <green>123</green>
  1029 + <blue>123</blue>
  1030 + </color>
  1031 + </brush>
  1032 + </colorrole>
  1033 + </disabled>
  1034 + </palette>
  1035 + </property>
  1036 + <property name="font">
  1037 + <font>
  1038 + <family>Roboto</family>
  1039 + <pointsize>16</pointsize>
  1040 + <weight>75</weight>
  1041 + <bold>true</bold>
  1042 + </font>
  1043 + </property>
  1044 + <property name="text">
  1045 + <string>스팀</string>
  1046 + </property>
  1047 + <property name="alignment">
  1048 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  1049 + </property>
  1050 + </widget>
  1051 + <widget class="QLabel" name="configMinLabel_3">
  1052 + <property name="enabled">
  1053 + <bool>true</bool>
  1054 + </property>
  1055 + <property name="geometry">
  1056 + <rect>
  1057 + <x>185</x>
  1058 + <y>950</y>
  1059 + <width>151</width>
  1060 + <height>51</height>
  1061 + </rect>
  1062 + </property>
  1063 + <property name="palette">
  1064 + <palette>
  1065 + <active>
  1066 + <colorrole role="WindowText">
  1067 + <brush brushstyle="SolidPattern">
  1068 + <color alpha="255">
  1069 + <red>255</red>
  1070 + <green>255</green>
  1071 + <blue>255</blue>
  1072 + </color>
  1073 + </brush>
  1074 + </colorrole>
  1075 + </active>
  1076 + <inactive>
  1077 + <colorrole role="WindowText">
  1078 + <brush brushstyle="SolidPattern">
  1079 + <color alpha="255">
  1080 + <red>255</red>
  1081 + <green>255</green>
  1082 + <blue>255</blue>
  1083 + </color>
  1084 + </brush>
  1085 + </colorrole>
  1086 + </inactive>
  1087 + <disabled>
  1088 + <colorrole role="WindowText">
  1089 + <brush brushstyle="SolidPattern">
  1090 + <color alpha="255">
  1091 + <red>123</red>
  1092 + <green>123</green>
  1093 + <blue>123</blue>
  1094 + </color>
  1095 + </brush>
  1096 + </colorrole>
  1097 + </disabled>
  1098 + </palette>
  1099 + </property>
  1100 + <property name="font">
  1101 + <font>
  1102 + <family>Malgun Gothic</family>
  1103 + <pointsize>9</pointsize>
  1104 + </font>
  1105 + </property>
  1106 + <property name="text">
  1107 + <string>감소</string>
  1108 + </property>
  1109 + <property name="alignment">
  1110 + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
  1111 + </property>
  1112 + </widget>
  1113 + <widget class="QPushButton" name="configButton_5">
  1114 + <property name="geometry">
  1115 + <rect>
  1116 + <x>27</x>
  1117 + <y>1285</y>
  1118 + <width>140</width>
  1119 + <height>140</height>
  1120 + </rect>
  1121 + </property>
  1122 + <property name="text">
  1123 + <string/>
  1124 + </property>
  1125 + <property name="style" stdset="0">
  1126 + <string notr="true">icon</string>
  1127 + </property>
  1128 + </widget>
  1129 + <widget class="QSlider" name="configSlider_5">
  1130 + <property name="geometry">
  1131 + <rect>
  1132 + <x>185</x>
  1133 + <y>1343</y>
  1134 + <width>666</width>
  1135 + <height>33</height>
  1136 + </rect>
  1137 + </property>
  1138 + <property name="maximum">
  1139 + <number>100</number>
  1140 + </property>
  1141 + <property name="pageStep">
  1142 + <number>1</number>
  1143 + </property>
  1144 + <property name="value">
  1145 + <number>0</number>
  1146 + </property>
  1147 + <property name="tracking">
  1148 + <bool>true</bool>
  1149 + </property>
  1150 + <property name="orientation">
  1151 + <enum>Qt::Horizontal</enum>
  1152 + </property>
  1153 + </widget>
  1154 + <widget class="QLabel" name="configMaxLabel_3">
  1155 + <property name="enabled">
  1156 + <bool>true</bool>
  1157 + </property>
  1158 + <property name="geometry">
  1159 + <rect>
  1160 + <x>700</x>
  1161 + <y>950</y>
  1162 + <width>151</width>
  1163 + <height>51</height>
  1164 + </rect>
  1165 + </property>
  1166 + <property name="palette">
  1167 + <palette>
  1168 + <active>
  1169 + <colorrole role="WindowText">
  1170 + <brush brushstyle="SolidPattern">
  1171 + <color alpha="255">
  1172 + <red>255</red>
  1173 + <green>255</green>
  1174 + <blue>255</blue>
  1175 + </color>
  1176 + </brush>
  1177 + </colorrole>
  1178 + </active>
  1179 + <inactive>
  1180 + <colorrole role="WindowText">
  1181 + <brush brushstyle="SolidPattern">
  1182 + <color alpha="255">
  1183 + <red>255</red>
  1184 + <green>255</green>
  1185 + <blue>255</blue>
  1186 + </color>
  1187 + </brush>
  1188 + </colorrole>
  1189 + </inactive>
  1190 + <disabled>
  1191 + <colorrole role="WindowText">
  1192 + <brush brushstyle="SolidPattern">
  1193 + <color alpha="255">
  1194 + <red>123</red>
  1195 + <green>123</green>
  1196 + <blue>123</blue>
  1197 + </color>
  1198 + </brush>
  1199 + </colorrole>
  1200 + </disabled>
  1201 + </palette>
  1202 + </property>
  1203 + <property name="font">
  1204 + <font>
  1205 + <family>Malgun Gothic</family>
  1206 + <pointsize>9</pointsize>
  1207 + </font>
  1208 + </property>
  1209 + <property name="text">
  1210 + <string>증가</string>
  1211 + </property>
  1212 + <property name="alignment">
  1213 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  1214 + </property>
  1215 + </widget>
  1216 + <widget class="QLabel" name="configMinLabel_1">
  1217 + <property name="enabled">
  1218 + <bool>true</bool>
  1219 + </property>
  1220 + <property name="geometry">
  1221 + <rect>
  1222 + <x>185</x>
  1223 + <y>620</y>
  1224 + <width>151</width>
  1225 + <height>51</height>
  1226 + </rect>
  1227 + </property>
  1228 + <property name="palette">
  1229 + <palette>
  1230 + <active>
  1231 + <colorrole role="WindowText">
  1232 + <brush brushstyle="SolidPattern">
  1233 + <color alpha="255">
  1234 + <red>255</red>
  1235 + <green>255</green>
  1236 + <blue>255</blue>
  1237 + </color>
  1238 + </brush>
  1239 + </colorrole>
  1240 + </active>
  1241 + <inactive>
  1242 + <colorrole role="WindowText">
  1243 + <brush brushstyle="SolidPattern">
  1244 + <color alpha="255">
  1245 + <red>255</red>
  1246 + <green>255</green>
  1247 + <blue>255</blue>
  1248 + </color>
  1249 + </brush>
  1250 + </colorrole>
  1251 + </inactive>
  1252 + <disabled>
  1253 + <colorrole role="WindowText">
  1254 + <brush brushstyle="SolidPattern">
  1255 + <color alpha="255">
  1256 + <red>123</red>
  1257 + <green>123</green>
  1258 + <blue>123</blue>
  1259 + </color>
  1260 + </brush>
  1261 + </colorrole>
  1262 + </disabled>
  1263 + </palette>
  1264 + </property>
  1265 + <property name="font">
  1266 + <font>
  1267 + <family>Malgun Gothic</family>
  1268 + <pointsize>9</pointsize>
  1269 + </font>
  1270 + </property>
  1271 + <property name="text">
  1272 + <string>감소</string>
  1273 + </property>
  1274 + <property name="alignment">
  1275 + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
  1276 + </property>
  1277 + </widget>
  1278 + <widget class="QPushButton" name="configButton_1">
  1279 + <property name="geometry">
  1280 + <rect>
  1281 + <x>27</x>
  1282 + <y>605</y>
  1283 + <width>140</width>
  1284 + <height>140</height>
  1285 + </rect>
  1286 + </property>
  1287 + <property name="text">
  1288 + <string/>
  1289 + </property>
  1290 + <property name="style" stdset="0">
  1291 + <string notr="true">icon</string>
  1292 + </property>
  1293 + </widget>
  1294 + <widget class="QPushButton" name="configButton_4">
  1295 + <property name="geometry">
  1296 + <rect>
  1297 + <x>27</x>
  1298 + <y>1115</y>
  1299 + <width>140</width>
  1300 + <height>140</height>
  1301 + </rect>
  1302 + </property>
  1303 + <property name="text">
  1304 + <string/>
  1305 + </property>
  1306 + <property name="style" stdset="0">
  1307 + <string notr="true">icon</string>
  1308 + </property>
  1309 + </widget>
  1310 + <widget class="QLabel" name="configMaxLabel_2">
  1311 + <property name="enabled">
  1312 + <bool>true</bool>
  1313 + </property>
  1314 + <property name="geometry">
  1315 + <rect>
  1316 + <x>700</x>
  1317 + <y>780</y>
  1318 + <width>151</width>
  1319 + <height>51</height>
  1320 + </rect>
  1321 + </property>
  1322 + <property name="palette">
  1323 + <palette>
  1324 + <active>
  1325 + <colorrole role="WindowText">
  1326 + <brush brushstyle="SolidPattern">
  1327 + <color alpha="255">
  1328 + <red>255</red>
  1329 + <green>255</green>
  1330 + <blue>255</blue>
  1331 + </color>
  1332 + </brush>
  1333 + </colorrole>
  1334 + </active>
  1335 + <inactive>
  1336 + <colorrole role="WindowText">
  1337 + <brush brushstyle="SolidPattern">
  1338 + <color alpha="255">
  1339 + <red>255</red>
  1340 + <green>255</green>
  1341 + <blue>255</blue>
  1342 + </color>
  1343 + </brush>
  1344 + </colorrole>
  1345 + </inactive>
  1346 + <disabled>
  1347 + <colorrole role="WindowText">
  1348 + <brush brushstyle="SolidPattern">
  1349 + <color alpha="255">
  1350 + <red>123</red>
  1351 + <green>123</green>
  1352 + <blue>123</blue>
  1353 + </color>
  1354 + </brush>
  1355 + </colorrole>
  1356 + </disabled>
  1357 + </palette>
  1358 + </property>
  1359 + <property name="font">
  1360 + <font>
  1361 + <family>Malgun Gothic</family>
  1362 + <pointsize>9</pointsize>
  1363 + </font>
  1364 + </property>
  1365 + <property name="text">
  1366 + <string>증가</string>
  1367 + </property>
  1368 + <property name="alignment">
  1369 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  1370 + </property>
  1371 + </widget>
  1372 + <widget class="QLabel" name="configCurrentLabel_1">
  1373 + <property name="enabled">
  1374 + <bool>true</bool>
  1375 + </property>
  1376 + <property name="geometry">
  1377 + <rect>
  1378 + <x>199</x>
  1379 + <y>690</y>
  1380 + <width>641</width>
  1381 + <height>51</height>
  1382 + </rect>
  1383 + </property>
  1384 + <property name="palette">
  1385 + <palette>
  1386 + <active>
  1387 + <colorrole role="WindowText">
  1388 + <brush brushstyle="SolidPattern">
  1389 + <color alpha="255">
  1390 + <red>255</red>
  1391 + <green>255</green>
  1392 + <blue>255</blue>
  1393 + </color>
  1394 + </brush>
  1395 + </colorrole>
  1396 + </active>
  1397 + <inactive>
  1398 + <colorrole role="WindowText">
  1399 + <brush brushstyle="SolidPattern">
  1400 + <color alpha="255">
  1401 + <red>255</red>
  1402 + <green>255</green>
  1403 + <blue>255</blue>
  1404 + </color>
  1405 + </brush>
  1406 + </colorrole>
  1407 + </inactive>
  1408 + <disabled>
  1409 + <colorrole role="WindowText">
  1410 + <brush brushstyle="SolidPattern">
  1411 + <color alpha="255">
  1412 + <red>123</red>
  1413 + <green>123</green>
  1414 + <blue>123</blue>
  1415 + </color>
  1416 + </brush>
  1417 + </colorrole>
  1418 + </disabled>
  1419 + </palette>
  1420 + </property>
  1421 + <property name="font">
  1422 + <font>
  1423 + <family>Roboto</family>
  1424 + <pointsize>16</pointsize>
  1425 + <weight>75</weight>
  1426 + <bold>true</bold>
  1427 + </font>
  1428 + </property>
  1429 + <property name="text">
  1430 + <string>스팀</string>
  1431 + </property>
  1432 + <property name="alignment">
  1433 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  1434 + </property>
  1435 + </widget>
  1436 + </widget>
  1437 + </widget>
  1438 + <customwidgets>
  1439 + <customwidget>
  1440 + <class>Clock</class>
  1441 + <extends>QWidget</extends>
  1442 + <header>clock.h</header>
  1443 + <container>1</container>
  1444 + </customwidget>
  1445 + <customwidget>
  1446 + <class>WashWarnIcon</class>
  1447 + <extends>QLabel</extends>
  1448 + <header>washwarnicon.h</header>
  1449 + </customwidget>
  1450 + </customwidgets>
  1451 + <resources>
  1452 + <include location="resources.qrc"/>
  1453 + </resources>
  1454 + <connections/>
  1455 +</ui>
... ...
app/gui/oven_control/programmingautoselectionwindow.cpp
... ... @@ -0,0 +1,94 @@
  1 +#include "programmingautoselectionwindow.h"
  2 +#include "ui_programmingautoselectionwindow.h"
  3 +
  4 +#include <QSignalMapper>
  5 +
  6 +#include "soundplayer.h"
  7 +#include "programmingautoconfigwindow.h"
  8 +
  9 +ProgrammingAutoSelectionWindow::ProgrammingAutoSelectionWindow(QWidget *parent, Define::CookType type) :
  10 + QMainWindow(parent),
  11 + ui(new Ui::ProgrammingAutoSelectionWindow),
  12 + type(type)
  13 +{
  14 + ui->setupUi(this);
  15 +
  16 + ui->clockContainer->setParent(ui->upperStack);
  17 + setAttribute(Qt::WA_DeleteOnClose);
  18 +
  19 + ui->cookTypeIcon->setPixmap(Define::icon(type));
  20 +
  21 + book = CookBook(type);
  22 +
  23 + QSignalMapper *sm = new QSignalMapper(this);
  24 + connect(sm, SIGNAL(mapped(int)), SLOT(onCookSelected(int)));
  25 +
  26 + QFont font;
  27 + font.setFamily(QStringLiteral("Roboto"));
  28 + font.setPointSize(10);;
  29 + font.setBold(true);
  30 + font.setWeight(75);
  31 +
  32 + QLatin1String stylesheet("\
  33 +QPushButton {\
  34 + border-image: url(:/images/button/288.png);\
  35 +}\
  36 +QPushButton:pressed {\
  37 + border-image: url(:/images/button/288_ov.png);\
  38 +}");
  39 +
  40 + for (int idx = 0; idx < book.list.size(); idx++)
  41 + {
  42 + int x = 12 + (idx % 3) * 294;
  43 + int y = 615 + (idx / 3) * 80;
  44 +
  45 + QPushButton *pb = new QPushButton(this);
  46 + pb->setGeometry(QRect(x, y, 288, 70));
  47 + pb->setFont(font);
  48 + pb->setStyleSheet(stylesheet);
  49 + pb->setText(book.list.at(idx));
  50 +
  51 + sm->setMapping(pb, idx);
  52 + connect(pb, SIGNAL(clicked()), sm, SLOT(map()));
  53 + }
  54 +
  55 + foreach (QPushButton *button, findChildren<QPushButton *>())
  56 + connect(button, &QPushButton::pressed, SoundPlayer::playClick);
  57 +}
  58 +
  59 +ProgrammingAutoSelectionWindow::~ProgrammingAutoSelectionWindow()
  60 +{
  61 + delete ui;
  62 +}
  63 +
  64 +void ProgrammingAutoSelectionWindow::onCookSelected(int idx)
  65 +{
  66 + ProgrammingAutoConfigWindow *w = new ProgrammingAutoConfigWindow(this, book.get(idx));
  67 + connect(w, SIGNAL(added()), SIGNAL(added()));
  68 + connect(w, SIGNAL(added()), SLOT(hide()));
  69 + connect(w, SIGNAL(added()), SLOT(close()));
  70 + w->setWindowModality(Qt::WindowModal);
  71 + w->showFullScreen();
  72 + w->raise();
  73 +}
  74 +
  75 +void ProgrammingAutoSelectionWindow::on_backButton_clicked()
  76 +{
  77 + close();
  78 +}
  79 +
  80 +void ProgrammingAutoSelectionWindow::on_configButton_clicked()
  81 +{
  82 +
  83 +}
  84 +
  85 +void ProgrammingAutoSelectionWindow::on_helpButton_clicked()
  86 +{
  87 +
  88 +}
  89 +
  90 +void ProgrammingAutoSelectionWindow::on_okButton_clicked()
  91 +{
  92 + emit added();
  93 + close();
  94 +}
... ...
app/gui/oven_control/programmingautoselectionwindow.h
... ... @@ -0,0 +1,40 @@
  1 +#ifndef PROGRAMMINGAUTOSELECTIONWINDOW_H
  2 +#define PROGRAMMINGAUTOSELECTIONWINDOW_H
  3 +
  4 +#include <QMainWindow>
  5 +
  6 +#include "cookbook.h"
  7 +
  8 +namespace Ui {
  9 +class ProgrammingAutoSelectionWindow;
  10 +}
  11 +
  12 +class ProgrammingAutoSelectionWindow : public QMainWindow
  13 +{
  14 + Q_OBJECT
  15 +
  16 +public:
  17 + explicit ProgrammingAutoSelectionWindow(QWidget *parent, Define::CookType type);
  18 + ~ProgrammingAutoSelectionWindow();
  19 +
  20 +private:
  21 + Ui::ProgrammingAutoSelectionWindow *ui;
  22 + Define::CookType type;
  23 + CookBook book;
  24 +
  25 +private slots:
  26 + void onCookSelected(int idx);
  27 +
  28 + void on_backButton_clicked();
  29 +
  30 + void on_configButton_clicked();
  31 +
  32 + void on_helpButton_clicked();
  33 +
  34 + void on_okButton_clicked();
  35 +
  36 +signals:
  37 + void added();
  38 +};
  39 +
  40 +#endif // PROGRAMMINGAUTOSELECTIONWINDOW_H
... ...
app/gui/oven_control/programmingautoselectionwindow.ui
... ... @@ -0,0 +1,177 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<ui version="4.0">
  3 + <class>ProgrammingAutoSelectionWindow</class>
  4 + <widget class="QMainWindow" name="ProgrammingAutoSelectionWindow">
  5 + <property name="geometry">
  6 + <rect>
  7 + <x>0</x>
  8 + <y>0</y>
  9 + <width>900</width>
  10 + <height>1600</height>
  11 + </rect>
  12 + </property>
  13 + <property name="windowTitle">
  14 + <string>MainWindow</string>
  15 + </property>
  16 + <property name="styleSheet">
  17 + <string notr="true">#centralwidget { background-image: url(:/images/background/auto.png); }
  18 +#bottomBar { background-image: url(:/images/bottom_bar/background.png); }</string>
  19 + </property>
  20 + <widget class="QWidget" name="centralwidget">
  21 + <widget class="QWidget" name="bottomBar" native="true">
  22 + <property name="geometry">
  23 + <rect>
  24 + <x>0</x>
  25 + <y>1450</y>
  26 + <width>900</width>
  27 + <height>150</height>
  28 + </rect>
  29 + </property>
  30 + <widget class="QPushButton" name="backButton">
  31 + <property name="geometry">
  32 + <rect>
  33 + <x>232</x>
  34 + <y>26</y>
  35 + <width>97</width>
  36 + <height>97</height>
  37 + </rect>
  38 + </property>
  39 + <property name="sizePolicy">
  40 + <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
  41 + <horstretch>0</horstretch>
  42 + <verstretch>0</verstretch>
  43 + </sizepolicy>
  44 + </property>
  45 + <property name="styleSheet">
  46 + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/back.png); }
  47 +QPushButton:pressed { border-image: url(:/images/bottom_bar/back_ov.png); }</string>
  48 + </property>
  49 + </widget>
  50 + <widget class="QPushButton" name="configButton">
  51 + <property name="geometry">
  52 + <rect>
  53 + <x>345</x>
  54 + <y>26</y>
  55 + <width>97</width>
  56 + <height>97</height>
  57 + </rect>
  58 + </property>
  59 + <property name="sizePolicy">
  60 + <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
  61 + <horstretch>0</horstretch>
  62 + <verstretch>0</verstretch>
  63 + </sizepolicy>
  64 + </property>
  65 + <property name="styleSheet">
  66 + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/config.png); }
  67 +QPushButton:pressed { border-image: url(:/images/bottom_bar/config_ov.png); }</string>
  68 + </property>
  69 + </widget>
  70 + <widget class="QPushButton" name="helpButton">
  71 + <property name="geometry">
  72 + <rect>
  73 + <x>458</x>
  74 + <y>26</y>
  75 + <width>97</width>
  76 + <height>97</height>
  77 + </rect>
  78 + </property>
  79 + <property name="sizePolicy">
  80 + <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
  81 + <horstretch>0</horstretch>
  82 + <verstretch>0</verstretch>
  83 + </sizepolicy>
  84 + </property>
  85 + <property name="styleSheet">
  86 + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/help.png); }
  87 +QPushButton:pressed { border-image: url(:/images/bottom_bar/help_ov.png); }</string>
  88 + </property>
  89 + </widget>
  90 + <widget class="QPushButton" name="okButton">
  91 + <property name="geometry">
  92 + <rect>
  93 + <x>571</x>
  94 + <y>26</y>
  95 + <width>97</width>
  96 + <height>97</height>
  97 + </rect>
  98 + </property>
  99 + <property name="styleSheet">
  100 + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/006_sys_icon_16.png); }
  101 +QPushButton:pressed { border-image: url(:/images/bottom_bar/006_sys_icon_16_ov.png); }</string>
  102 + </property>
  103 + </widget>
  104 + </widget>
  105 + <widget class="QStackedWidget" name="upperStack">
  106 + <property name="geometry">
  107 + <rect>
  108 + <x>0</x>
  109 + <y>0</y>
  110 + <width>900</width>
  111 + <height>426</height>
  112 + </rect>
  113 + </property>
  114 + <widget class="QWidget" name="clockContainer">
  115 + <property name="styleSheet">
  116 + <string notr="true">#clockContainer { background-image: url(:/images/clock/background.png); }</string>
  117 + </property>
  118 + <widget class="Clock" name="clock" native="true">
  119 + <property name="geometry">
  120 + <rect>
  121 + <x>272</x>
  122 + <y>36</y>
  123 + <width>356</width>
  124 + <height>355</height>
  125 + </rect>
  126 + </property>
  127 + </widget>
  128 + <widget class="WashWarnIcon" name="label">
  129 + <property name="geometry">
  130 + <rect>
  131 + <x>800</x>
  132 + <y>320</y>
  133 + <width>80</width>
  134 + <height>84</height>
  135 + </rect>
  136 + </property>
  137 + </widget>
  138 + </widget>
  139 + <widget class="QWidget" name="page_2"/>
  140 + </widget>
  141 + <widget class="QLabel" name="cookTypeIcon">
  142 + <property name="geometry">
  143 + <rect>
  144 + <x>0</x>
  145 + <y>430</y>
  146 + <width>900</width>
  147 + <height>150</height>
  148 + </rect>
  149 + </property>
  150 + <property name="text">
  151 + <string/>
  152 + </property>
  153 + <property name="pixmap">
  154 + <pixmap>:/images/images/auto/005_auto_icon_01_ov.png</pixmap>
  155 + </property>
  156 + <property name="alignment">
  157 + <set>Qt::AlignCenter</set>
  158 + </property>
  159 + </widget>
  160 + </widget>
  161 + </widget>
  162 + <customwidgets>
  163 + <customwidget>
  164 + <class>Clock</class>
  165 + <extends>QWidget</extends>
  166 + <header>clock.h</header>
  167 + <container>1</container>
  168 + </customwidget>
  169 + <customwidget>
  170 + <class>WashWarnIcon</class>
  171 + <extends>QLabel</extends>
  172 + <header>washwarnicon.h</header>
  173 + </customwidget>
  174 + </customwidgets>
  175 + <resources/>
  176 + <connections/>
  177 +</ui>
... ...
app/gui/oven_control/programmingmanualcoretemppopup.cpp
... ... @@ -2,6 +2,7 @@
2 2 #include "ui_programmingmanualcoretemppopup.h"
3 3  
4 4 #include "stringer.h"
  5 +#include "soundplayer.h"
5 6  
6 7 ProgrammingManualCoreTempPopup::ProgrammingManualCoreTempPopup(QWidget *parent) :
7 8 QWidget(parent),
... ... @@ -14,6 +15,9 @@ ProgrammingManualCoreTempPopup::ProgrammingManualCoreTempPopup(QWidget *parent)
14 15 connect(ui->coreTempSlider, SIGNAL(valueChanged(int)), SLOT(updateCoreTempLabel()));
15 16  
16 17 updateCoreTempLabel();
  18 +
  19 + foreach (QPushButton *button, findChildren<QPushButton *>())
  20 + connect(button, &QPushButton::pressed, SoundPlayer::playClick);
17 21 }
18 22  
19 23 ProgrammingManualCoreTempPopup::~ProgrammingManualCoreTempPopup()
... ...
app/gui/oven_control/programmingmanualwindow.cpp
... ... @@ -4,6 +4,7 @@
4 4 #include "stringer.h"
5 5 #include "programmingmanualcoretemppopup.h"
6 6 #include "cookprogram.h"
  7 +#include "soundplayer.h"
7 8  
8 9 ProgrammingManualWindow::ProgrammingManualWindow(QWidget *parent, Define::Mode mode) :
9 10 QMainWindow(parent),
... ... @@ -20,6 +21,9 @@ ProgrammingManualWindow::ProgrammingManualWindow(QWidget *parent, Define::Mode m
20 21 connect(ui->interTempSlider, SIGNAL(valueChanged(int)), SLOT(updateCoreTempLabel()));
21 22  
22 23 setDefault(mode);
  24 +
  25 + foreach (QPushButton *button, findChildren<QPushButton *>())
  26 + connect(button, &QPushButton::pressed, SoundPlayer::playClick);
23 27 }
24 28  
25 29 ProgrammingManualWindow::~ProgrammingManualWindow()
... ...
app/gui/oven_control/programmingnamepopup.cpp
... ... @@ -0,0 +1,14 @@
  1 +#include "programmingnamepopup.h"
  2 +#include "ui_programmingnamepopup.h"
  3 +
  4 +ProgrammingNamePopup::ProgrammingNamePopup(QWidget *parent) :
  5 + QWidget(parent),
  6 + ui(new Ui::ProgrammingNamePopup)
  7 +{
  8 + ui->setupUi(this);
  9 +}
  10 +
  11 +ProgrammingNamePopup::~ProgrammingNamePopup()
  12 +{
  13 + delete ui;
  14 +}
... ...
app/gui/oven_control/programmingnamepopup.h
... ... @@ -0,0 +1,22 @@
  1 +#ifndef PROGRAMMINGNAMEPOPUP_H
  2 +#define PROGRAMMINGNAMEPOPUP_H
  3 +
  4 +#include <QWidget>
  5 +
  6 +namespace Ui {
  7 +class ProgrammingNamePopup;
  8 +}
  9 +
  10 +class ProgrammingNamePopup : public QWidget
  11 +{
  12 + Q_OBJECT
  13 +
  14 +public:
  15 + explicit ProgrammingNamePopup(QWidget *parent = 0);
  16 + ~ProgrammingNamePopup();
  17 +
  18 +private:
  19 + Ui::ProgrammingNamePopup *ui;
  20 +};
  21 +
  22 +#endif // PROGRAMMINGNAMEPOPUP_H
... ...
app/gui/oven_control/programmingnamepopup.ui
... ... @@ -0,0 +1,21 @@
  1 +<ui version="4.0">
  2 + <author/>
  3 + <comment/>
  4 + <exportmacro/>
  5 + <class>ProgrammingNamePopup</class>
  6 + <widget name="ProgrammingNamePopup" class="QWidget">
  7 + <property name="geometry">
  8 + <rect>
  9 + <x>0</x>
  10 + <y>0</y>
  11 + <width>400</width>
  12 + <height>300</height>
  13 + </rect>
  14 + </property>
  15 + <property name="windowTitle">
  16 + <string>Form</string>
  17 + </property>
  18 + </widget>
  19 + <pixmapfunction/>
  20 + <connections/>
  21 +</ui>
... ...
app/gui/oven_control/programmingselectionwindow.cpp
... ... @@ -2,6 +2,8 @@
2 2 #include "ui_programmingselectionwindow.h"
3 3  
4 4 #include "programmingmanualwindow.h"
  5 +#include "programmingautoselectionwindow.h"
  6 +#include "soundplayer.h"
5 7  
6 8 ProgrammingSelectionWindow::ProgrammingSelectionWindow(QWidget *parent) :
7 9 QMainWindow(parent),
... ... @@ -13,6 +15,9 @@ ProgrammingSelectionWindow::ProgrammingSelectionWindow(QWidget *parent) :
13 15 setAttribute(Qt::WA_DeleteOnClose);
14 16  
15 17 setFocus();
  18 +
  19 + foreach (QPushButton *button, findChildren<QPushButton *>())
  20 + connect(button, &QPushButton::pressed, SoundPlayer::playClick);
16 21 }
17 22  
18 23 ProgrammingSelectionWindow::~ProgrammingSelectionWindow()
... ... @@ -42,18 +47,22 @@ void ProgrammingSelectionWindow::onModeClicked(Define::Mode mode)
42 47 {
43 48 ProgrammingManualWindow *w = new ProgrammingManualWindow(this, mode);
44 49 connect(w, SIGNAL(added()), SIGNAL(added()));
45   - connect(w, SIGNAL(destroyed(QObject*)), SLOT(deleteLater()));
  50 + connect(w, SIGNAL(added()), SLOT(hide()));
  51 + connect(w, SIGNAL(added()), SLOT(close()));
46 52 w->setWindowModality(Qt::WindowModal);
47 53 w->showFullScreen();
48 54 w->raise();
49   -
50   - hide();
51 55 }
52 56  
53 57 void ProgrammingSelectionWindow::onCookTypeClicked(Define::CookType type)
54 58 {
55   - emit cookTypeSelected(type);
56   - close();
  59 + ProgrammingAutoSelectionWindow *w = new ProgrammingAutoSelectionWindow(this, type);
  60 + connect(w, SIGNAL(added()), SIGNAL(added()));
  61 + connect(w, SIGNAL(added()), SLOT(hide()));
  62 + connect(w, SIGNAL(added()), SLOT(close()));
  63 + w->setWindowModality(Qt::WindowModal);
  64 + w->showFullScreen();
  65 + w->raise();
57 66 }
58 67  
59 68 void ProgrammingSelectionWindow::on_steamButton_clicked()
... ... @@ -105,3 +114,23 @@ void ProgrammingSelectionWindow::on_etcButton_clicked()
105 114 {
106 115 onCookTypeClicked(Define::Etc);
107 116 }
  117 +
  118 +void ProgrammingSelectionWindow::on_backButton_clicked()
  119 +{
  120 + close();
  121 +}
  122 +
  123 +void ProgrammingSelectionWindow::on_configButton_clicked()
  124 +{
  125 +
  126 +}
  127 +
  128 +void ProgrammingSelectionWindow::on_helpButton_clicked()
  129 +{
  130 +
  131 +}
  132 +
  133 +void ProgrammingSelectionWindow::on_okButton_clicked()
  134 +{
  135 + close();
  136 +}
... ...
app/gui/oven_control/programmingselectionwindow.h
... ... @@ -25,8 +25,6 @@ private:
25 25  
26 26 signals:
27 27 void added();
28   - void modeSelected(Define::Mode);
29   - void cookTypeSelected(Define::CookType);
30 28  
31 29 private slots:
32 30 void onModeClicked(Define::Mode mode);
... ... @@ -42,6 +40,10 @@ private slots:
42 40 void on_grainButton_clicked();
43 41 void on_breadButton_clicked();
44 42 void on_etcButton_clicked();
  43 + void on_backButton_clicked();
  44 + void on_configButton_clicked();
  45 + void on_helpButton_clicked();
  46 + void on_okButton_clicked();
45 47 };
46 48  
47 49 #endif // PROGRAMMINGSELECTIONWINDOW_H
... ...
app/gui/oven_control/programmingselectionwindow.ui
... ... @@ -315,6 +315,40 @@ QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/h
315 315 <string/>
316 316 </property>
317 317 </widget>
  318 + <widget class="QPushButton" name="backButton">
  319 + <property name="geometry">
  320 + <rect>
  321 + <x>232</x>
  322 + <y>26</y>
  323 + <width>97</width>
  324 + <height>97</height>
  325 + </rect>
  326 + </property>
  327 + <property name="styleSheet">
  328 + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/back.png); }
  329 +QPushButton:pressed { border-image: url(:/images/bottom_bar/back_ov.png); }</string>
  330 + </property>
  331 + <property name="text">
  332 + <string/>
  333 + </property>
  334 + </widget>
  335 + <widget class="QPushButton" name="okButton">
  336 + <property name="geometry">
  337 + <rect>
  338 + <x>571</x>
  339 + <y>26</y>
  340 + <width>97</width>
  341 + <height>97</height>
  342 + </rect>
  343 + </property>
  344 + <property name="styleSheet">
  345 + <string notr="true">QPushButton { border-image: url(:/images/bottom_bar/006_sys_icon_16.png); }
  346 +QPushButton:pressed { border-image: url(:/images/bottom_bar/006_sys_icon_16_ov.png); }</string>
  347 + </property>
  348 + <property name="text">
  349 + <string/>
  350 + </property>
  351 + </widget>
318 352 </widget>
319 353 <widget class="Line" name="line_3">
320 354 <property name="geometry">
... ...
app/gui/oven_control/programmingwindow.cpp
... ... @@ -7,6 +7,9 @@
7 7 #include "programmingmanualwindow.h"
8 8 #include "programmingselectionwindow.h"
9 9 #include "cookprogram.h"
  10 +#include "soundplayer.h"
  11 +#include "confirmpopup.h"
  12 +#include "programmingnamepopup.h"
10 13  
11 14 ProgrammingWindow::ProgrammingWindow(QWidget *parent) :
12 15 QMainWindow(parent),
... ... @@ -18,6 +21,9 @@ ProgrammingWindow::ProgrammingWindow(QWidget *parent) :
18 21 setAttribute(Qt::WA_DeleteOnClose);
19 22  
20 23 setupUi();
  24 +
  25 + foreach (QPushButton *button, findChildren<QPushButton *>())
  26 + connect(button, &QPushButton::pressed, SoundPlayer::playClick);
21 27 }
22 28  
23 29 ProgrammingWindow::~ProgrammingWindow()
... ... @@ -109,6 +115,9 @@ CookPanelButton *ProgrammingWindow::newButton(CookRecord record)
109 115 CookPanelButton *button = new CookPanelButton(record, this);
110 116 connect(button, SIGNAL(infoClicked(CookPanelButton*)), SLOT(onInfoButtonClicked(CookPanelButton*)));
111 117 connect(button, SIGNAL(deleteClicked(CookPanelButton*)), SLOT(onDeleteButtonClicked(CookPanelButton*)));
  118 + connect(button, SIGNAL(longPressed(CookPanelButton*)), SLOT(onLongPressed(CookPanelButton*)));
  119 +
  120 + button->setLongPressEnabled(true);
112 121  
113 122 ui->verticalScrollLayout->addWidget(button);
114 123 list.append(button);
... ... @@ -116,6 +125,17 @@ CookPanelButton *ProgrammingWindow::newButton(CookRecord record)
116 125 return button;
117 126 }
118 127  
  128 +void ProgrammingWindow::back()
  129 +{
  130 + CookProgram::discard();
  131 + close();
  132 +}
  133 +
  134 +void ProgrammingWindow::save()
  135 +{
  136 + CookProgram::save();
  137 +}
  138 +
119 139 void ProgrammingWindow::onInfoButtonClicked(CookPanelButton *panelButton)
120 140 {
121 141 if (lastInfoDisplayed)
... ... @@ -158,6 +178,13 @@ void ProgrammingWindow::onDeleteButtonClicked(CookPanelButton *panelButton)
158 178 panelButton->deleteLater();
159 179 }
160 180  
  181 +void ProgrammingWindow::onLongPressed(CookPanelButton *panelButton)
  182 +{
  183 + ProgrammingNamePopup *p = new ProgrammingNamePopup(this, panelButton->record);
  184 + connect(p, SIGNAL(changed()), SLOT(updateView()));
  185 + p->showFullScreen();
  186 +}
  187 +
161 188 void ProgrammingWindow::on_addButton_clicked()
162 189 {
163 190 ProgrammingSelectionWindow *w = new ProgrammingSelectionWindow(this);
... ... @@ -192,16 +219,21 @@ void ProgrammingWindow::on_manualButton_toggled(bool checked)
192 219  
193 220 void ProgrammingWindow::on_backButton_clicked()
194 221 {
195   - CookProgram::discard();
196   -
197   - close();
  222 + if (CookProgram::isModified())
  223 + {
  224 + ConfirmPopup *p = new ConfirmPopup(this, "저장하지 않고 돌아가시겠습니까?");
  225 + connect(p, SIGNAL(accepted()), SLOT(back()));
  226 + p->showFullScreen();
  227 + }
  228 + else
  229 + close();
198 230 }
199 231  
200 232 void ProgrammingWindow::on_saveButton_clicked()
201 233 {
202   - CookProgram::save();
203   -
204   - close();
  234 + ConfirmPopup *p = new ConfirmPopup(this, "저장하시겠습니까?");
  235 + connect(p, SIGNAL(accepted()), SLOT(save()));
  236 + p->showFullScreen();
205 237 }
206 238  
207 239 void ProgrammingWindow::on_helpButton_clicked()
... ...
app/gui/oven_control/programmingwindow.h
... ... @@ -28,8 +28,12 @@ private slots:
28 28 void clear();
29 29 CookPanelButton *newButton(CookRecord record);
30 30  
  31 + void back();
  32 + void save();
  33 +
31 34 void onInfoButtonClicked(CookPanelButton *panelButton);
32 35 void onDeleteButtonClicked(CookPanelButton *panelButton);
  36 + void onLongPressed(CookPanelButton *panelButton);
33 37  
34 38 void on_addButton_clicked();
35 39  
... ...
app/gui/oven_control/programmingwindow.ui
... ... @@ -23,7 +23,6 @@ QPushButton {
23 23 background-repeat: no-repeat;
24 24 background-position: center;
25 25 border: none;
26   -color: white;
27 26 }
28 27 QPushButton[style=&quot;mode&quot;] {
29 28 background-clip: border;
... ... @@ -34,6 +33,7 @@ border-top: 130px;
34 33 border-bottom: -50px;
35 34 border-style: hidden;
36 35 font-size: 30px;
  36 +color: white;
37 37 }
38 38  
39 39 QPushButton[style=&quot;mode&quot;]:checked {
... ...