Blame view

app/gui/oven_control/autocookconfigwindow.cpp 6.83 KB
6f96c947a   김태훈   GUI 0.1.4
1
2
  #include "autocookconfigwindow.h"
  #include "ui_autocookconfigwindow.h"
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
3
4
5
  #include "autocookwindow.h"
  
  AutoCookConfigWindow::AutoCookConfigWindow(QWidget *parent, Oven *oven, Cook cook) :
6f96c947a   김태훈   GUI 0.1.4
6
7
8
9
10
11
12
13
14
      QMainWindow(parent),
      ui(new Ui::AutoCookConfigWindow),
      oven(oven),
      cook(cook)
  {
      ui->setupUi(this);
  
      ui->clockContainer->setParent(ui->upperStack);
      setAttribute(Qt::WA_DeleteOnClose);
6f96c947a   김태훈   GUI 0.1.4
15
16
17
      configWidgets.append(
                  ConfigWidget {
                      ui->configButton_1,
6f96c947a   김태훈   GUI 0.1.4
18
19
20
21
22
23
24
25
                      ui->configMinLabel_1,
                      ui->configMaxLabel_1,
                      ui->configCurrentLabel_1,
                      ui->configSlider_1
                  });
      configWidgets.append(
                  ConfigWidget {
                      ui->configButton_2,
6f96c947a   김태훈   GUI 0.1.4
26
27
28
29
30
31
32
33
                      ui->configMinLabel_2,
                      ui->configMaxLabel_2,
                      ui->configCurrentLabel_2,
                      ui->configSlider_2
                  });
      configWidgets.append(
                  ConfigWidget {
                      ui->configButton_3,
6f96c947a   김태훈   GUI 0.1.4
34
35
36
37
38
39
40
41
                      ui->configMinLabel_3,
                      ui->configMaxLabel_3,
                      ui->configCurrentLabel_3,
                      ui->configSlider_3
                  });
      configWidgets.append(
                  ConfigWidget {
                      ui->configButton_4,
6f96c947a   김태훈   GUI 0.1.4
42
43
44
45
46
47
48
49
                      ui->configMinLabel_4,
                      ui->configMaxLabel_4,
                      ui->configCurrentLabel_4,
                      ui->configSlider_4
                  });
      configWidgets.append(
                  ConfigWidget {
                      ui->configButton_5,
6f96c947a   김태훈   GUI 0.1.4
50
51
52
53
54
                      ui->configMinLabel_5,
                      ui->configMaxLabel_5,
                      ui->configCurrentLabel_5,
                      ui->configSlider_5
                  });
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
      cookStartTimer.setSingleShot(true);
      cookStartTimer.setInterval(3000);
      connect(&cookStartTimer, SIGNAL(timeout()), SLOT(start()));
  
      foreach (ConfigWidget w, configWidgets)
      {
          connect(w.button, SIGNAL(pressed()), SLOT(stopTimer()));
          connect(w.button, SIGNAL(released()), SLOT(startTimer()));
          connect(w.slider, SIGNAL(sliderPressed()), SLOT(stopTimer()));
          connect(w.slider, SIGNAL(sliderReleased()), SLOT(startTimer()));
      }
  
      setupUi();
  
      startTimer();
  }
  
  AutoCookConfigWindow::~AutoCookConfigWindow()
  {
      delete ui;
  }
  
  void AutoCookConfigWindow::setupUi()
  {
      ui->cookTypeIcon->setPixmap(Define::icon(cook.type));
      ui->selectCookButton->setText(cook.name);
6f96c947a   김태훈   GUI 0.1.4
81
82
      for (int idx = 0; idx < 5; idx++)
      {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
83
84
          CookConfig config = cook.configs[idx];
          if (config.type == Define::ConfigNotUsed)
6f96c947a   김태훈   GUI 0.1.4
85
86
87
          {
              ConfigWidget cw = configWidgets.at(idx);
              cw.button->hide();
6f96c947a   김태훈   GUI 0.1.4
88
89
90
91
92
93
94
95
96
              cw.minimum->hide();
              cw.maximum->hide();
              cw.current->hide();
              cw.slider->hide();
          }
          else
          {
              ConfigWidget cw = configWidgets.at(idx);
              cw.button->setStyleSheet(
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
97
98
99
100
                          "QPushButton { image: url("
                           + Define::icon(config.type)
                           + ") } QPushButton::pressed { image: url("
                           + Define::iconOverlay(config.type)
6f96c947a   김태훈   GUI 0.1.4
101
                           + ") }");
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
102
103
              cw.minimum->setText(Define::minimum(config.type));
              cw.maximum->setText(Define::maximum(config.type));
6f96c947a   김태훈   GUI 0.1.4
104
105
              cw.slider->blockSignals(true);
              cw.slider->setMinimum(1);
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
106
107
              cw.slider->setMaximum(config.maximum);
              cw.slider->setValue(config.current);
6f96c947a   김태훈   GUI 0.1.4
108
              cw.slider->blockSignals(false);
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
109
              switch (config.type)
6f96c947a   김태훈   GUI 0.1.4
110
              {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
111
              case Define::Time:
6f96c947a   김태훈   GUI 0.1.4
112
113
                  cw.slider->setProperty("sliderColor", "white");
                  break;
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
114
              case Define::BurnDegree:
6f96c947a   김태훈   GUI 0.1.4
115
116
                  cw.slider->setProperty("sliderColor", "yellow");
                  break;
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
117
              case Define::Brightness:
6f96c947a   김태훈   GUI 0.1.4
118
119
120
121
122
123
                  cw.slider->setProperty("sliderColor", "red");
                  break;
              default:
                  cw.slider->setProperty("sliderColor", "blue");
                  break;
              }
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
124
125
126
  //            cw.slider->style()->unpolish(cw.slider);
  //            cw.slider->style()->polish(cw.slider);
  //            cw.slider->update();
6f96c947a   김태훈   GUI 0.1.4
127
128
129
130
  
              connect(cw.slider, SIGNAL(valueChanged(int)), SLOT(updateConfig()));
          }
      }
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
131
      updateView();
6f96c947a   김태훈   GUI 0.1.4
132
133
134
135
136
137
  }
  
  void AutoCookConfigWindow::updateView()
  {
      for (int idx = 0; idx < 5; idx++)
      {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
138
139
          CookConfig config = cook.configs[idx];
          if (config.type == Define::ConfigNotUsed)
6f96c947a   김태훈   GUI 0.1.4
140
141
142
              continue;
  
          ConfigWidget cw = configWidgets.at(idx);
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
143
          switch (config.type)
6f96c947a   김태훈   GUI 0.1.4
144
          {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
145
          case Define::Time:
6f96c947a   김태훈   GUI 0.1.4
146
          {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
147
              int time = cook.time();
6f96c947a   김태훈   GUI 0.1.4
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
              if (time >= 3600)
                  cw.current->setText(QString().sprintf(
                          "%d"
                          "<span style=\"font-size:11pt;\">시간</span>"
                          " %02d"
                          "<span style=\"font-size:11pt;\">분</span>",
                          time / 3600,
                          (time % 3600) / 60));
              else if (time >= 60)
                  cw.current->setText(QString().sprintf(
                          "%d"
                          "<span style=\"font-size:11pt;\">분</span>"
                          " %02d"
                          "<span style=\"font-size:11pt;\">초</span>",
                          time / 60,
                          time % 60));
              else
                  cw.current->setText(QString().sprintf(
                          "%d"
                          "<span style=\"font-size:11pt;\">초</span>",
                          time));
              break;
          }
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
171
172
173
174
175
          case Define::BurnDegree:
              cw.current->setText(QString().sprintf(
                      "%d"
                      "<span style=\"font-size:11pt;\">℃</span>",
                      cook.coreTemp()));
6f96c947a   김태훈   GUI 0.1.4
176
177
              break;
          default:
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
178
179
180
181
              cw.current->setText(QString().sprintf(
                      "%d"
                      "<span style=\"font-size:11pt;\">/%d</span>",
                      config.current, config.maximum));
6f96c947a   김태훈   GUI 0.1.4
182
183
184
              break;
          }
      }
6f96c947a   김태훈   GUI 0.1.4
185
186
187
188
  }
  
  void AutoCookConfigWindow::updateConfig()
  {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
      cook.setConfig(ui->configSlider_1->value(),
                     ui->configSlider_2->value(),
                     ui->configSlider_3->value(),
                     ui->configSlider_4->value(),
                     ui->configSlider_5->value());
  
      updateView();
  }
  
  void AutoCookConfigWindow::startTimer()
  {
      cookStartTimer.start();
  }
  
  void AutoCookConfigWindow::stopTimer()
  {
      cookStartTimer.stop();
  }
  
  void AutoCookConfigWindow::start()
  {
      close();
6f96c947a   김태훈   GUI 0.1.4
211
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
212
213
214
215
      AutoCookWindow *w = new AutoCookWindow(parentWidget(), cook);
      w->setWindowModality(Qt::WindowModal);
      w->showFullScreen();
      w->raise();
6f96c947a   김태훈   GUI 0.1.4
216
  }
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
217
  void AutoCookConfigWindow::on_backButton_clicked()
6f96c947a   김태훈   GUI 0.1.4
218
  {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
219
      close();
6f96c947a   김태훈   GUI 0.1.4
220
  }