Blame view

app/gui/oven_control/autocookconfigwindow.cpp 12.8 KB
6f96c947a   김태훈   GUI 0.1.4
1
2
  #include "autocookconfigwindow.h"
  #include "ui_autocookconfigwindow.h"
184bdebb4   김태훈   엔코더 구현
3
  #include <QKeyEvent>
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
4
  #include "autocookwindow.h"
f588aa273   김태훈   부가 기능 로직 추가
5
  #include "confirmpopup.h"
2bfd3a050   김태훈   환경 설정 대응
6
  #include "stringer.h"
f588aa273   김태훈   부가 기능 로직 추가
7
  #include "favoritenamepopup.h"
bbd7d8f29   김태훈   버튼 음향 추가
8
  #include "soundplayer.h"
e00c6a2a9   김태훈   기능 추가 구현
9
10
11
  #include "configwindow.h"
  #include "washwindow.h"
  #include "mainwindow.h"
11c611782   김태훈   자동 요리 세부 사항 구현
12
  #include "autocookselectionpopup.h"
68c06e96f   김태훈   자동 요리 세부 사항 구현
13
  #include "autocookcheckwindow.h"
1342af7b3   김태훈   도움말 버튼 연결
14
  #include "manualviewerdlg.h"
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
15
3f52600cc   김태훈   소스 코드 구조 개선
16
  AutoCookConfigWindow::AutoCookConfigWindow(QWidget *parent, Cook cook) :
6f96c947a   김태훈   GUI 0.1.4
17
18
      QMainWindow(parent),
      ui(new Ui::AutoCookConfigWindow),
6f96c947a   김태훈   GUI 0.1.4
19
20
21
22
23
24
      cook(cook)
  {
      ui->setupUi(this);
  
      ui->clockContainer->setParent(ui->upperStack);
      setAttribute(Qt::WA_DeleteOnClose);
6f96c947a   김태훈   GUI 0.1.4
25
26
27
      configWidgets.append(
                  ConfigWidget {
                      ui->configButton_1,
6f96c947a   김태훈   GUI 0.1.4
28
29
30
31
32
33
34
35
                      ui->configMinLabel_1,
                      ui->configMaxLabel_1,
                      ui->configCurrentLabel_1,
                      ui->configSlider_1
                  });
      configWidgets.append(
                  ConfigWidget {
                      ui->configButton_2,
6f96c947a   김태훈   GUI 0.1.4
36
37
38
39
40
41
42
43
                      ui->configMinLabel_2,
                      ui->configMaxLabel_2,
                      ui->configCurrentLabel_2,
                      ui->configSlider_2
                  });
      configWidgets.append(
                  ConfigWidget {
                      ui->configButton_3,
6f96c947a   김태훈   GUI 0.1.4
44
45
46
47
48
49
50
51
                      ui->configMinLabel_3,
                      ui->configMaxLabel_3,
                      ui->configCurrentLabel_3,
                      ui->configSlider_3
                  });
      configWidgets.append(
                  ConfigWidget {
                      ui->configButton_4,
6f96c947a   김태훈   GUI 0.1.4
52
53
54
55
56
57
58
59
                      ui->configMinLabel_4,
                      ui->configMaxLabel_4,
                      ui->configCurrentLabel_4,
                      ui->configSlider_4
                  });
      configWidgets.append(
                  ConfigWidget {
                      ui->configButton_5,
6f96c947a   김태훈   GUI 0.1.4
60
61
62
63
64
                      ui->configMinLabel_5,
                      ui->configMaxLabel_5,
                      ui->configCurrentLabel_5,
                      ui->configSlider_5
                  });
11c611782   김태훈   자동 요리 세부 사항 구현
65
      foreach (Slider *s, findChildren<Slider *>())
07441dbd3   김태훈   엔코더 관련 디자인 변경 대비
66
67
      {
          connect(s, SIGNAL(sliderPressed()), SLOT(updateView()));
11c611782   김태훈   자동 요리 세부 사항 구현
68
          connect(s, SIGNAL(sliderMoved(int)), SLOT(updateConfig()));
07441dbd3   김태훈   엔코더 관련 디자인 변경 대비
69
      }
11c611782   김태훈   자동 요리 세부 사항 구현
70
184bdebb4   김태훈   엔코더 구현
71
72
73
74
75
76
77
78
79
80
81
      setupUi();
  
      afterThreeSecsTimer.setSingleShot(true);
      afterThreeSecsTimer.setInterval(3000);
      connect(&afterThreeSecsTimer, SIGNAL(timeout()), SLOT(afterThreeSecs()));
  
      foreach (QPushButton *button, findChildren<QPushButton *>())
          connect(button, &QPushButton::pressed, SoundPlayer::playClick);
  
      foreach (QWidget *w, findChildren<QWidget *>())
          w->installEventFilter(this);
184bdebb4   김태훈   엔코더 구현
82
      setFocus();
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
83
184bdebb4   김태훈   엔코더 구현
84
85
86
87
88
89
90
91
92
93
94
      afterThreeSecsTimer.start();
  }
  
  AutoCookConfigWindow::~AutoCookConfigWindow()
  {
      delete ui;
  }
  
  bool AutoCookConfigWindow::eventFilter(QObject */*watched*/, QEvent *event)
  {
      switch (event->type())
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
95
      {
184bdebb4   김태훈   엔코더 구현
96
97
98
99
100
101
102
103
104
      case QEvent::KeyPress:
      case QEvent::KeyRelease:
      case QEvent::MouseButtonPress:
      case QEvent::MouseButtonRelease:
      case QEvent::MouseMove:
          afterThreeSecsTimer.start();
          break;
      default:
          break;
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
105
      }
184bdebb4   김태훈   엔코더 구현
106
107
      return false;
  }
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
108
184bdebb4   김태훈   엔코더 구현
109
110
111
  void AutoCookConfigWindow::keyPressEvent(QKeyEvent *event)
  {
      switch (event->key())
bbd7d8f29   김태훈   버튼 음향 추가
112
      {
01249f413   김태훈   엔코더 방향 반전. 하드웨어가 변경됨
113
      case 0x01000032:    // Turn left
184bdebb4   김태훈   엔코더 구현
114
115
116
117
118
          onEncoderLeft();
          break;
      case 0x01000031:    // Push
          pushed = focusWidget();
          break;
01249f413   김태훈   엔코더 방향 반전. 하드웨어가 변경됨
119
      case 0x01000030:    // Turn right
184bdebb4   김태훈   엔코더 구현
120
121
          onEncoderRight();
          break;
bbd7d8f29   김태훈   버튼 음향 추가
122
      }
184bdebb4   김태훈   엔코더 구현
123
  }
bbd7d8f29   김태훈   버튼 음향 추가
124
184bdebb4   김태훈   엔코더 구현
125
126
127
128
  void AutoCookConfigWindow::keyReleaseEvent(QKeyEvent *event)
  {
      switch (event->key())
      {
01249f413   김태훈   엔코더 방향 반전. 하드웨어가 변경됨
129
      case 0x01000032:    // Turn left
184bdebb4   김태훈   엔코더 구현
130
131
132
133
134
135
136
137
          onEncoderLeft();
          break;
      case 0x01000031:    // Push
          if (focusWidget() == pushed)
              onEncoderClicked(pushed);
  
          pushed = NULL;
          break;
01249f413   김태훈   엔코더 방향 반전. 하드웨어가 변경됨
138
      case 0x01000030:    // Turn right
184bdebb4   김태훈   엔코더 구현
139
140
141
          onEncoderRight();
          break;
      }
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
142
  }
184bdebb4   김태훈   엔코더 구현
143
  void AutoCookConfigWindow::afterThreeSecs()
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
144
  {
184bdebb4   김태훈   엔코더 구현
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
      Slider *slider = qobject_cast<Slider *>(focusWidget());
      if (slider)
      {
          if (slider == ui->configSlider_1)
              ui->configButton_1->setFocus();
          else if (slider == ui->configSlider_2)
              ui->configButton_2->setFocus();
          else if (slider == ui->configSlider_3)
              ui->configButton_3->setFocus();
          else if (slider == ui->configSlider_4)
              ui->configButton_4->setFocus();
          else if (slider == ui->configSlider_5)
              ui->configButton_5->setFocus();
  
          afterThreeSecsTimer.start();
      }
      else
          start();
cd74cf6ed   김태훈   엔코더 관련 디자인 변경 적용
163
164
  
      updateView();
184bdebb4   김태훈   엔코더 구현
165
  }
11c611782   김태훈   자동 요리 세부 사항 구현
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
  void AutoCookConfigWindow::changeCook(Cook cook)
  {
      if (this->cook.root == cook.root)
          return;
  
      this->cook = cook;
  
      setupUi();
  }
  
  void AutoCookConfigWindow::connectNewWindow(AutoCookWindow *w)
  {
      connect(w, SIGNAL(back()), &afterThreeSecsTimer, SLOT(start()));
      connect(w, SIGNAL(newWindow(AutoCookWindow*)), SLOT(connectNewWindow(AutoCookWindow*)));
  }
184bdebb4   김태훈   엔코더 구현
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
  void AutoCookConfigWindow::onEncoderLeft()
  {
      focusPreviousChild();
  }
  
  void AutoCookConfigWindow::onEncoderRight()
  {
      focusNextChild();
  }
  
  void AutoCookConfigWindow::onEncoderClicked(QWidget *clicked)
  {
      if (clicked == NULL)
          return;
  
      if (clicked->inherits("QPushButton"))
      {
          QPushButton *pb = qobject_cast<QPushButton *>(clicked);
          if (pb)
              pb->click();
      }
      else if (clicked->inherits("Slider"))
      {
          Slider *slider = qobject_cast<Slider *>(clicked);
          if (slider)
          {
              if (slider == ui->configSlider_1)
                  ui->configButton_1->setFocus();
              else if (slider == ui->configSlider_2)
                  ui->configButton_2->setFocus();
              else if (slider == ui->configSlider_3)
                  ui->configButton_3->setFocus();
              else if (slider == ui->configSlider_4)
                  ui->configButton_4->setFocus();
              else if (slider == ui->configSlider_5)
                  ui->configButton_5->setFocus();
          }
cd74cf6ed   김태훈   엔코더 관련 디자인 변경 적용
218
219
  
          updateView();
184bdebb4   김태훈   엔코더 구현
220
      }
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
221
222
223
224
225
226
  }
  
  void AutoCookConfigWindow::setupUi()
  {
      ui->cookTypeIcon->setPixmap(Define::icon(cook.type));
      ui->selectCookButton->setText(cook.name);
07441dbd3   김태훈   엔코더 관련 디자인 변경 대비
227
228
229
230
231
      QString styleSheet("\
  QPushButton { image: url(%1); }\
  QPushButton:pressed,\
  QPushButton:focus { image: url(%2); }\
  QPushButton:checked { image: url(%3); }");
6f96c947a   김태훈   GUI 0.1.4
232
233
      for (int idx = 0; idx < 5; idx++)
      {
07441dbd3   김태훈   엔코더 관련 디자인 변경 대비
234
          ConfigWidget cw = configWidgets.at(idx);
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
235
236
          CookConfig config = cook.configs[idx];
          if (config.type == Define::ConfigNotUsed)
6f96c947a   김태훈   GUI 0.1.4
237
          {
6f96c947a   김태훈   GUI 0.1.4
238
              cw.button->hide();
6f96c947a   김태훈   GUI 0.1.4
239
240
241
242
243
244
245
              cw.minimum->hide();
              cw.maximum->hide();
              cw.current->hide();
              cw.slider->hide();
          }
          else
          {
11c611782   김태훈   자동 요리 세부 사항 구현
246
247
248
249
250
              cw.button->show();
              cw.minimum->show();
              cw.maximum->show();
              cw.current->show();
              cw.slider->show();
07441dbd3   김태훈   엔코더 관련 디자인 변경 대비
251
252
253
254
              cw.button->setStyleSheet(styleSheet
                                       .arg(Define::icon(config.type))
                                       .arg(Define::iconOverlay(config.type))
                                       .arg(Define::iconActiveted(config.type)));
6f96c947a   김태훈   GUI 0.1.4
255
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
256
257
              cw.minimum->setText(Define::minimum(config.type));
              cw.maximum->setText(Define::maximum(config.type));
6f96c947a   김태훈   GUI 0.1.4
258
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
259
              switch (config.type)
6f96c947a   김태훈   GUI 0.1.4
260
              {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
261
              case Define::Time:
935b853a4   김태훈   새 슬라이더 적용
262
                  cw.slider->setSubPixmap(":/images/slider/sub_white.png");
6f96c947a   김태훈   GUI 0.1.4
263
                  break;
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
264
              case Define::BurnDegree:
935b853a4   김태훈   새 슬라이더 적용
265
                  cw.slider->setSubPixmap(":/images/slider/sub_yellow.png");
6f96c947a   김태훈   GUI 0.1.4
266
                  break;
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
267
              case Define::Brightness:
935b853a4   김태훈   새 슬라이더 적용
268
                  cw.slider->setSubPixmap(":/images/slider/sub_red.png");
6f96c947a   김태훈   GUI 0.1.4
269
270
                  break;
              default:
935b853a4   김태훈   새 슬라이더 적용
271
                  cw.slider->setSubPixmap(":/images/slider/sub_blue.png");
6f96c947a   김태훈   GUI 0.1.4
272
273
                  break;
              }
935b853a4   김태훈   새 슬라이더 적용
274
275
276
277
278
279
              cw.slider->blockSignals(true);
              cw.slider->setMinimum(1);
              cw.slider->setMaximum(config.maximum);
              cw.slider->setValue(config.current);
              cw.slider->blockSignals(false);
              cw.slider->bigTickInterval = 1;
6f96c947a   김태훈   GUI 0.1.4
280
281
          }
      }
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
282
      updateView();
6f96c947a   김태훈   GUI 0.1.4
283
284
285
286
287
288
  }
  
  void AutoCookConfigWindow::updateView()
  {
      for (int idx = 0; idx < 5; idx++)
      {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
289
290
          CookConfig config = cook.configs[idx];
          if (config.type == Define::ConfigNotUsed)
6f96c947a   김태훈   GUI 0.1.4
291
292
293
              continue;
  
          ConfigWidget cw = configWidgets.at(idx);
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
294
          switch (config.type)
6f96c947a   김태훈   GUI 0.1.4
295
          {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
296
          case Define::Time:
2bfd3a050   김태훈   환경 설정 대응
297
              cw.current->setText(Stringer::remainingTime(cook.time() * 1000, Stringer::fontSize14));
6f96c947a   김태훈   GUI 0.1.4
298
              break;
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
299
          case Define::BurnDegree:
2bfd3a050   김태훈   환경 설정 대응
300
              cw.current->setText(Stringer::temperature(cook.coreTemp(), Stringer::fontSize14));
6f96c947a   김태훈   GUI 0.1.4
301
302
              break;
          default:
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
303
304
305
306
              cw.current->setText(QString().sprintf(
                      "%d"
                      "<span style=\"font-size:11pt;\">/%d</span>",
                      config.current, config.maximum));
6f96c947a   김태훈   GUI 0.1.4
307
308
309
              break;
          }
      }
07441dbd3   김태훈   엔코더 관련 디자인 변경 대비
310
311
312
313
314
315
316
  
      QWidget *focused = focusWidget();
      ui->configButton_1->setChecked(focused == ui->configSlider_1);
      ui->configButton_2->setChecked(focused == ui->configSlider_2);
      ui->configButton_3->setChecked(focused == ui->configSlider_3);
      ui->configButton_4->setChecked(focused == ui->configSlider_4);
      ui->configButton_5->setChecked(focused == ui->configSlider_5);
6f96c947a   김태훈   GUI 0.1.4
317
318
319
320
  }
  
  void AutoCookConfigWindow::updateConfig()
  {
935b853a4   김태훈   새 슬라이더 적용
321
322
323
324
325
      cook.setConfig(ui->configSlider_1->sliderPosition(),
                     ui->configSlider_2->sliderPosition(),
                     ui->configSlider_3->sliderPosition(),
                     ui->configSlider_4->sliderPosition(),
                     ui->configSlider_5->sliderPosition());
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
326
327
328
  
      updateView();
  }
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
329
330
  void AutoCookConfigWindow::start()
  {
68c06e96f   김태훈   자동 요리 세부 사항 구현
331
      setFocus();
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
332
333
334
335
      AutoCookWindow *w = new AutoCookWindow(parentWidget(), cook);
      w->setWindowModality(Qt::WindowModal);
      w->showFullScreen();
      w->raise();
7d0288172   김태훈   기능 추가 구현
336
184bdebb4   김태훈   엔코더 구현
337
      connect(w, SIGNAL(back()), &afterThreeSecsTimer, SLOT(start()));
11c611782   김태훈   자동 요리 세부 사항 구현
338
      connect(w, SIGNAL(newWindow(AutoCookWindow*)), SLOT(connectNewWindow(AutoCookWindow*)));
6f96c947a   김태훈   GUI 0.1.4
339
  }
f588aa273   김태훈   부가 기능 로직 추가
340
341
342
343
344
345
346
347
348
349
350
  void AutoCookConfigWindow::addFavorite()
  {
      AutoCookSetting s;
      s.type = cook.type;
      s.root = cook.root;
      for (int i = 0; i < 5; i++)
          s.configs[i] = cook.configs[i].current;
  
      FavoriteNamePopup *p = new FavoriteNamePopup(this, s);
      p->showFullScreen();
  }
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
351
  void AutoCookConfigWindow::on_backButton_clicked()
6f96c947a   김태훈   GUI 0.1.4
352
  {
6a81d38e4   김태훈   자동 요리 관련 로직 전면 재작성
353
      close();
6f96c947a   김태훈   GUI 0.1.4
354
  }
f588aa273   김태훈   부가 기능 로직 추가
355
e00c6a2a9   김태훈   기능 추가 구현
356
357
358
359
360
361
362
363
364
  void AutoCookConfigWindow::on_configButton_clicked()
  {
      ConfigWindow *w = new ConfigWindow(MainWindow::getInstance());
      w->setWindowModality(Qt::WindowModal);
      w->showFullScreen();
      w->raise();
  
      MainWindow::jump(w);
  }
f588aa273   김태훈   부가 기능 로직 추가
365
366
  void AutoCookConfigWindow::on_favoritesButton_clicked()
  {
599b9c350   고영탁   부가기능 복구
367
368
      ConfirmPopup *p = new ConfirmPopup(this, tr("즐겨찾기 항목에 추가하시겠습니까?"));
      p->showFullScreen();
f588aa273   김태훈   부가 기능 로직 추가
369
599b9c350   고영탁   부가기능 복구
370
      connect(p, SIGNAL(accepted()), SLOT(addFavorite()));
f588aa273   김태훈   부가 기능 로직 추가
371
599b9c350   고영탁   부가기능 복구
372
373
374
375
376
      if (afterThreeSecsTimer.isActive())
      {
          afterThreeSecsTimer.stop();
          connect(p, SIGNAL(rejected()), &afterThreeSecsTimer, SLOT(start()));
      }
f588aa273   김태훈   부가 기능 로직 추가
377
  }
e00c6a2a9   김태훈   기능 추가 구현
378
379
380
381
382
383
384
385
386
387
  
  void AutoCookConfigWindow::on_washButton_clicked()
  {
      WashWindow *w = new WashWindow(MainWindow::getInstance());
      w->setWindowModality(Qt::WindowModal);
      w->showFullScreen();
      w->raise();
  
      MainWindow::jump(w);
  }
184bdebb4   김태훈   엔코더 구현
388
389
390
391
  
  void AutoCookConfigWindow::on_configButton_1_clicked()
  {
      ui->configSlider_1->setFocus();
07441dbd3   김태훈   엔코더 관련 디자인 변경 대비
392
      updateView();
184bdebb4   김태훈   엔코더 구현
393
394
395
396
397
  }
  
  void AutoCookConfigWindow::on_configButton_2_clicked()
  {
      ui->configSlider_2->setFocus();
07441dbd3   김태훈   엔코더 관련 디자인 변경 대비
398
      updateView();
184bdebb4   김태훈   엔코더 구현
399
400
401
402
403
  }
  
  void AutoCookConfigWindow::on_configButton_3_clicked()
  {
      ui->configSlider_3->setFocus();
07441dbd3   김태훈   엔코더 관련 디자인 변경 대비
404
      updateView();
184bdebb4   김태훈   엔코더 구현
405
406
407
408
409
  }
  
  void AutoCookConfigWindow::on_configButton_4_clicked()
  {
      ui->configSlider_4->setFocus();
07441dbd3   김태훈   엔코더 관련 디자인 변경 대비
410
      updateView();
184bdebb4   김태훈   엔코더 구현
411
412
413
414
415
  }
  
  void AutoCookConfigWindow::on_configButton_5_clicked()
  {
      ui->configSlider_5->setFocus();
07441dbd3   김태훈   엔코더 관련 디자인 변경 대비
416
      updateView();
184bdebb4   김태훈   엔코더 구현
417
  }
11c611782   김태훈   자동 요리 세부 사항 구현
418
419
420
  
  void AutoCookConfigWindow::on_selectCookButton_clicked()
  {
68c06e96f   김태훈   자동 요리 세부 사항 구현
421
      setFocus();
11c611782   김태훈   자동 요리 세부 사항 구현
422
423
424
425
426
      AutoCookSelectionPopup *p = new AutoCookSelectionPopup(this, cook.type);
      p->showFullScreen();
      p->raise();
  
      connect(p, SIGNAL(selected(Cook)), SLOT(changeCook(Cook)));
68c06e96f   김태훈   자동 요리 세부 사항 구현
427
428
      connect(p, SIGNAL(selected(Cook)), SLOT(setFocus()));
      connect(p, SIGNAL(canceled()), SLOT(setFocus()));
11c611782   김태훈   자동 요리 세부 사항 구현
429
430
431
432
433
434
435
436
  
      if (afterThreeSecsTimer.isActive())
      {
          afterThreeSecsTimer.stop();
          connect(p, SIGNAL(selected(Cook)), &afterThreeSecsTimer, SLOT(start()));
          connect(p, SIGNAL(canceled()), &afterThreeSecsTimer, SLOT(start()));
      }
  }
68c06e96f   김태훈   자동 요리 세부 사항 구현
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
  
  void AutoCookConfigWindow::on_checkCookButton_clicked()
  {
      setFocus();
  
      AutoCookCheckWindow *w = new AutoCookCheckWindow(this, cook);
      w->setWindowModality(Qt::WindowModal);
      w->showFullScreen();
      w->raise();
  
      if (afterThreeSecsTimer.isActive())
      {
          afterThreeSecsTimer.stop();
          connect(w, SIGNAL(back()), &afterThreeSecsTimer, SLOT(start()));
      }
  }
1342af7b3   김태훈   도움말 버튼 연결
453
454
455
456
457
458
459
  
  void AutoCookConfigWindow::on_helpButton_clicked()
  {
      ManualViewerDlg* dlg = new ManualViewerDlg(this, AUTO_COOK_PAGE);
      dlg->showFullScreen();
      dlg->raise();
  }