Blame view

app/gui/oven_control/preheatpopup.cpp 3.47 KB
05f2a7552   김태훈   image 관리 구조 변경
1
2
  #include "preheatpopup.h"
  #include "ui_preheatpopup.h"
271dda4ae   김태훈   엔코더 구현
3
  #include <QKeyEvent>
2bfd3a050   김태훈   환경 설정 대응
4
  #include "stringer.h"
d56284d94   김태훈   예열 종료 시 조리 종료 음향 재생
5
  #include "soundplayer.h"
2bfd3a050   김태훈   환경 설정 대응
6
05f2a7552   김태훈   image 관리 구조 변경
7
8
9
  PreheatPopup::PreheatPopup(QWidget *parent, Oven *oven) :
      QWidget(parent),
      ui(new Ui::PreheatPopup),
61ba89b34   김태훈   GUI V0.1.6
10
11
12
      oven(oven),
      showingCurrentHumidity(false),
      showingCurrentTemp(false)
05f2a7552   김태훈   image 관리 구조 변경
13
14
15
16
  {
      ui->setupUi(this);
  
      setAttribute(Qt::WA_DeleteOnClose);
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
17
      connect(oven, SIGNAL(changed(Oven*)), SLOT(onOvenChanged()));
05f2a7552   김태훈   image 관리 구조 변경
18
61ba89b34   김태훈   GUI V0.1.6
19
      showCurrentHumidityTimer.setSingleShot(true);
5228da630   김태훈   딜레이 변경
20
      showCurrentHumidityTimer.setInterval(1000);
61ba89b34   김태훈   GUI V0.1.6
21
22
23
      connect(&showCurrentHumidityTimer, SIGNAL(timeout()), SLOT(showCurrentHumidity()));
  
      showCurrentTempTimer.setSingleShot(true);
5228da630   김태훈   딜레이 변경
24
      showCurrentTempTimer.setInterval(1000);
61ba89b34   김태훈   GUI V0.1.6
25
      connect(&showCurrentTempTimer, SIGNAL(timeout()), SLOT(showCurrentTemp()));
3606eb85f   김태훈   게이지 범위 설정 누락
26
27
      ui->humidityGauge->setMaximum(100);
      ui->heatGauge->setMaximum(oven->maxTemp());
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
28
29
30
      ui->preheatGauge->setMaximum(oven->temp());
      ui->preheatGauge->setMinimum(oven->currentTemp());
      ui->preheatGauge->setValue(oven->currentTemp());
271dda4ae   김태훈   엔코더 구현
31
      ui->infoButton->hide();
8765fbc77   김태훈   수동 요리의 예열 모드 동작 개선
32
      updateView();
61ba89b34   김태훈   GUI V0.1.6
33
      start();
271dda4ae   김태훈   엔코더 구현
34
35
  
      ui->background->setFocus();
05f2a7552   김태훈   image 관리 구조 변경
36
37
38
39
40
41
  }
  
  PreheatPopup::~PreheatPopup()
  {
      delete ui;
  }
271dda4ae   김태훈   엔코더 구현
42
43
44
45
  void PreheatPopup::keyReleaseEvent(QKeyEvent *event)
  {
      switch (event->key())
      {
01249f413   김태훈   엔코더 방향 반전. 하드웨어가 변경됨
46
      case 0x01000032:    // Turn left
271dda4ae   김태훈   엔코더 구현
47
48
49
50
51
          break;
      case 0x01000031:    // Push
          stop();
          close();
          break;
01249f413   김태훈   엔코더 방향 반전. 하드웨어가 변경됨
52
      case 0x01000030:    // Turn right
271dda4ae   김태훈   엔코더 구현
53
54
55
          break;
      }
  }
05f2a7552   김태훈   image 관리 구조 변경
56
57
  void PreheatPopup::updateView()
  {
8765fbc77   김태훈   수동 요리의 예열 모드 동작 개선
58
      ui->timeLabel->setText(Stringer::remainingTime(oven->msecs(), Stringer::fontSize14));
05f2a7552   김태훈   image 관리 구조 변경
59
61ba89b34   김태훈   GUI V0.1.6
60
      int curInterTemp = oven->currentInterTemp();
05f2a7552   김태훈   image 관리 구조 변경
61
      if (oven->interTempEnabled())
2bfd3a050   김태훈   환경 설정 대응
62
          ui->interTempLabel->setText(Stringer::temperature(curInterTemp, oven->interTemp(), Stringer::fontSize14));
05f2a7552   김태훈   image 관리 구조 변경
63
      else
2bfd3a050   김태훈   환경 설정 대응
64
          ui->interTempLabel->setText(Stringer::temperature(curInterTemp, Stringer::fontSize14));
61ba89b34   김태훈   GUI V0.1.6
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  
      int humidity;
      if (showingCurrentHumidity)
          humidity = oven->currentHumidity();
      else
          humidity = oven->humidity();
  
      int temp;
      if (showingCurrentTemp)
          temp = oven->currentTemp();
      else
          temp = oven->temp();
  
      ui->humidityLabel->setText(QString().sprintf("%d%%", humidity));
ecfb5801a   김태훈   디버깅 요청 사항 반영
79
      ui->humidityGauge->setValue(humidity);
2bfd3a050   김태훈   환경 설정 대응
80
      ui->heatLabel->setText(Stringer::temperature(temp));
ecfb5801a   김태훈   디버깅 요청 사항 반영
81
      ui->heatGauge->setValue(temp);
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
82
83
  
      ui->preheatGauge->setValue(oven->currentTemp());
61ba89b34   김태훈   GUI V0.1.6
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
  }
  
  void PreheatPopup::start()
  {
      oven->startPreheating();
  }
  
  void PreheatPopup::stop()
  {
      oven->stopPreheating();
  }
  
  void PreheatPopup::showCurrentHumidity()
  {
      showingCurrentHumidity = true;
05f2a7552   김태훈   image 관리 구조 변경
99
61ba89b34   김태훈   GUI V0.1.6
100
101
102
103
104
105
106
107
      updateView();
  }
  
  void PreheatPopup::showCurrentTemp()
  {
      showingCurrentTemp = true;
  
      updateView();
05f2a7552   김태훈   image 관리 구조 변경
108
  }
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
109
110
  void PreheatPopup::onOvenChanged()
  {
1a93d524e   김태훈   예열 완료 조건 변경
111
      if (oven->currentTemp() >= oven->temp())
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
112
      {
d56284d94   김태훈   예열 종료 시 조리 종료 음향 재생
113
          SoundPlayer::playStop();
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
114
115
116
117
118
119
          stop();
          close();
      }
      else
          updateView();
  }
05f2a7552   김태훈   image 관리 구조 변경
120
121
  void PreheatPopup::on_closeButton_clicked()
  {
61ba89b34   김태훈   GUI V0.1.6
122
      stop();
05f2a7552   김태훈   image 관리 구조 변경
123
124
125
126
127
      close();
  }
  
  void PreheatPopup::on_closeButton_2_clicked()
  {
61ba89b34   김태훈   GUI V0.1.6
128
      stop();
05f2a7552   김태훈   image 관리 구조 변경
129
130
      close();
  }
61ba89b34   김태훈   GUI V0.1.6
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
  
  void PreheatPopup::on_humidityGaugeButton_pressed()
  {
      showCurrentHumidityTimer.start();
  }
  
  void PreheatPopup::on_humidityGaugeButton_released()
  {
      showCurrentHumidityTimer.stop();
      showingCurrentHumidity = false;
  
      updateView();
  }
  
  void PreheatPopup::on_heatGaugeButton_pressed()
  {
      showCurrentTempTimer.start();
  }
  
  void PreheatPopup::on_heatGaugeButton_released()
  {
      showCurrentTempTimer.stop();
      showingCurrentTemp = false;
  
      updateView();
  }