Blame view

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