Blame view

app/gui/oven_control/washwindow.cpp 7.09 KB
00a512484   김태훈   세척 모드 화면 추가
1
2
  #include "washwindow.h"
  #include "ui_washwindow.h"
05f2a7552   김태훈   image 관리 구조 변경
3
  #include <QSignalMapper>
ac60b5cec   김태훈   음향 효과 일부 적용 및 소스 ...
4
  #include "soundplayer.h"
538041ab9   김태훈   소스 코드 구조 개선
5
  WashWindow::WashWindow(QWidget *parent) :
00a512484   김태훈   세척 모드 화면 추가
6
      QMainWindow(parent),
05f2a7552   김태훈   image 관리 구조 변경
7
      ui(new Ui::WashWindow),
61ba89b34   김태훈   GUI V0.1.6
8
9
10
11
      selected(false),
      opened(false),
      started(false),
      run(false),
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
12
      canceled(false),
61ba89b34   김태훈   GUI V0.1.6
13
      type(0)
00a512484   김태훈   세척 모드 화면 추가
14
15
16
17
18
19
  {
      ui->setupUi(this);
  
      ui->clockContainer->setParent(ui->upperStack);
      ui->progressContainer->setParent(ui->upperStack);
      setAttribute(Qt::WA_DeleteOnClose);
05f2a7552   김태훈   image 관리 구조 변경
20
538041ab9   김태훈   소스 코드 구조 개선
21
      udp = UdpHandler::getInstance();
05f2a7552   김태훈   image 관리 구조 변경
22
      connect(udp, SIGNAL(changed()), SLOT(onChanged()));
05f2a7552   김태훈   image 관리 구조 변경
23
      ui->animation->load(":/images/animation/wash_04.png");
61ba89b34   김태훈   GUI V0.1.6
24
      ui->closeDoorArrow->hide();
05f2a7552   김태훈   image 관리 구조 변경
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  
      QSignalMapper *sm = new QSignalMapper(this);
      connect(sm, SIGNAL(mapped(int)), SLOT(start(int)));
  
      sm->setMapping(ui->washButton_1, 1);
      sm->setMapping(ui->washButton_2, 2);
      sm->setMapping(ui->washButton_3, 3);
      sm->setMapping(ui->washButton_4, 4);
      sm->setMapping(ui->washButton_5, 5);
  
      connect(ui->washButton_1, SIGNAL(clicked()), sm, SLOT(map()));
      connect(ui->washButton_2, SIGNAL(clicked()), sm, SLOT(map()));
      connect(ui->washButton_3, SIGNAL(clicked()), sm, SLOT(map()));
      connect(ui->washButton_4, SIGNAL(clicked()), sm, SLOT(map()));
      connect(ui->washButton_5, SIGNAL(clicked()), sm, SLOT(map()));
61ba89b34   김태훈   GUI V0.1.6
40
41
42
      returnToClockTimer.setSingleShot(true);
      returnToClockTimer.setInterval(10 * 1000);
      connect(&returnToClockTimer, SIGNAL(timeout()), SLOT(returnToClock()));
00a512484   김태훈   세척 모드 화면 추가
43
44
45
46
47
48
  }
  
  WashWindow::~WashWindow()
  {
      delete ui;
  }
05f2a7552   김태훈   image 관리 구조 변경
49
50
51
  
  void WashWindow::start(int type)
  {
ac60b5cec   김태훈   음향 효과 일부 적용 및 소스 ...
52
      SoundPlayer::playClick();
61ba89b34   김태훈   GUI V0.1.6
53
      if (selected)
05f2a7552   김태훈   image 관리 구조 변경
54
55
56
57
          return;
  
      if (type < 1 || type > 5)
          return;
61ba89b34   김태훈   GUI V0.1.6
58
      selected = true;
05f2a7552   김태훈   image 관리 구조 변경
59
61ba89b34   김태훈   GUI V0.1.6
60
61
62
      this->type = type;
  
      returnToClockTimer.stop();
05f2a7552   김태훈   image 관리 구조 변경
63
61ba89b34   김태훈   GUI V0.1.6
64
65
66
67
68
69
      ui->animation->clear();
      ui->animation->load(":/images/animation/pull_01.png");
      ui->animation->load(":/images/animation/pull_02.png");
      ui->animation->load(":/images/animation/pull_03.png");
      ui->animation->load(":/images/animation/pull_04.png");
      ui->animation->show();
05f2a7552   김태훈   image 관리 구조 변경
70
      ui->animation->start(300);
61ba89b34   김태훈   GUI V0.1.6
71
72
  
      udp->set(TG_OVEN_MODE, 2);
05f2a7552   김태훈   image 관리 구조 변경
73
74
75
76
  }
  
  void WashWindow::stop()
  {
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
77
78
79
80
81
82
83
      if (!started)
          return;
  
      if (canceled)
          return;
  
      canceled = true;
05f2a7552   김태훈   image 관리 구조 변경
84
85
      udp->turnOff(TG_CLEANING);
  }
61ba89b34   김태훈   GUI V0.1.6
86
87
88
89
  void WashWindow::returnToClock()
  {
      ui->upperStack->setCurrentIndex(0);
  }
05f2a7552   김태훈   image 관리 구조 변경
90
91
  void WashWindow::onChanged()
  {
61ba89b34   김태훈   GUI V0.1.6
92
      if (!selected)
05f2a7552   김태훈   image 관리 구조 변경
93
          return;
61ba89b34   김태훈   GUI V0.1.6
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
      oven_state_t state;
      udp->fillData(state);
  
      if (!opened)
      {
          if (state.door_state)
          {
              opened = true;
  
              ui->animation->clear();
  
              ui->animation->load(":/images/animation/door_big_09.png");
              ui->animation->load(":/images/animation/door_big_08.png");
              ui->animation->load(":/images/animation/door_big_07.png");
              ui->animation->load(":/images/animation/door_big_06.png");
              ui->animation->load(":/images/animation/door_big_05.png");
              ui->animation->load(":/images/animation/door_big_04.png");
              ui->animation->load(":/images/animation/door_big_03.png");
              ui->animation->load(":/images/animation/door_big_02.png");
              ui->animation->load(":/images/animation/door_big_01.png");
              ui->closeDoorArrow->show();
          }
      }
      else if (!started)
      {
          if (!state.door_state)
          {
              started = true;
ac60b5cec   김태훈   음향 효과 일부 적용 및 소스 ...
122
              SoundPlayer::playStart();
61ba89b34   김태훈   GUI V0.1.6
123
124
125
126
127
128
129
130
              ui->closeDoorArrow->hide();
              ui->animation->clear();
  
              ui->animation->load(":/images/animation/wash_01.png");
              ui->animation->load(":/images/animation/wash_02.png");
              ui->animation->load(":/images/animation/wash_03.png");
              ui->animation->load(":/images/animation/wash_04.png");
              ui->washStepGauge->setValue(0);
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
131
132
133
              ui->titleLabel->setText("기기의 내부를 세척 중입니다");
              ui->descLabel->setText("완료될 때까지 문을 열지 마세요.
  기기의 내부의 자동 세척 기능을 실행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
              ui->washStepTypeLabel->setText("");
              ui->washStepCountLabel->setText("");
  
              ui->upperStack->setCurrentIndex(1);
  
              udp->set(TG_CLEAN_TYPE, type);
              udp->turnOn(TG_CLEANING);
          }
      }
      else if (state.cleaning_sate)
      {
          if (!run)
              run = true;
  
          oven_control_t control;
          udp->fillControl(control);
  
          if (control.clean_total != 0 && control.clean_step != 0 && control.clean_step_type != 0)
          {
              ui->washStepGauge->setMaximum(control.clean_total);
              ui->washStepGauge->setValue(control.clean_step);
              ui->washStepCountLabel->setText(QString().sprintf("%d/%d", control.clean_step, control.clean_total));
  
              switch (control.clean_step_type)
              {
              case 1:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
160
                  ui->washStepTypeLabel->setText("내부 헹굼 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
161
162
                  break;
              case 2:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
163
                  ui->washStepTypeLabel->setText("스팀 급수 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
164
165
                  break;
              case 3:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
166
                  ui->washStepTypeLabel->setText("내부 팬 세척 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
167
168
                  break;
              case 4:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
169
                  ui->washStepTypeLabel->setText("내부 스팀 불림 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
170
171
                  break;
              case 5:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
172
                  ui->washStepTypeLabel->setText("내부 강 세척 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
173
174
                  break;
              case 6:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
175
                  ui->washStepTypeLabel->setText("내부 상부 세척 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
176
177
                  break;
              case 7:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
178
                  ui->washStepTypeLabel->setText("내부 스팀 세척 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
179
180
                  break;
              case 8:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
181
                  ui->washStepTypeLabel->setText("세척 종료 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
182
183
                  break;
              case 9:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
184
                  ui->washStepTypeLabel->setText("세제 세척수 만들기 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
185
186
                  break;
              case 10:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
187
                  ui->washStepTypeLabel->setText("세제 세척수 헹굼 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
188
189
                  break;
              case 11:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
190
                  ui->washStepTypeLabel->setText("하부 탱크 세척수 만들기 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
191
192
193
194
                  break;
              }
          }
      }
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
195
196
      else if (canceled)
      {
ac60b5cec   김태훈   음향 효과 일부 적용 및 소스 ...
197
          SoundPlayer::playStop();
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
198
199
          close();
      }
61ba89b34   김태훈   GUI V0.1.6
200
201
      else if (run)
      {
ac60b5cec   김태훈   음향 효과 일부 적용 및 소스 ...
202
          SoundPlayer::playStop();
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
203
204
205
          ui->titleLabel->setText("세척이 종료되었습니다");
          ui->descLabel->setText("");
          ui->washStepTypeLabel->setText("");
61ba89b34   김태훈   GUI V0.1.6
206
207
208
209
210
211
212
213
214
215
216
217
218
          ui->washStepCountLabel->setText("");
  
          ui->animation->stop();
          ui->animation->clear();
          ui->animation->load(":/images/animation/wash_04.png");
  
          returnToClockTimer.start();
  
          selected = false;
          opened = false;
          started = false;
          run = false;
      }
05f2a7552   김태훈   image 관리 구조 변경
219
220
221
222
  }
  
  void WashWindow::on_backButton_clicked()
  {
ac60b5cec   김태훈   음향 효과 일부 적용 및 소스 ...
223
      SoundPlayer::playClick();
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
224
225
226
227
      if (started)
          stop();
      else
          close();
05f2a7552   김태훈   image 관리 구조 변경
228
  }
ac60b5cec   김태훈   음향 효과 일부 적용 및 소스 ...
229
230
231
232
233
234
235
236
237
238
239
240
241
242
  
  void WashWindow::on_configButton_clicked()
  {
      SoundPlayer::playClick();
  
  
  }
  
  void WashWindow::on_helpButton_clicked()
  {
      SoundPlayer::playClick();
  
  
  }