Blame view

app/gui/oven_control/washwindow.cpp 6.75 KB
00a512484   김태훈   세척 모드 화면 추가
1
2
  #include "washwindow.h"
  #include "ui_washwindow.h"
05f2a7552   김태훈   image 관리 구조 변경
3
  #include <QSignalMapper>
538041ab9   김태훈   소스 코드 구조 개선
4
  WashWindow::WashWindow(QWidget *parent) :
00a512484   김태훈   세척 모드 화면 추가
5
      QMainWindow(parent),
05f2a7552   김태훈   image 관리 구조 변경
6
      ui(new Ui::WashWindow),
61ba89b34   김태훈   GUI V0.1.6
7
8
9
10
      selected(false),
      opened(false),
      started(false),
      run(false),
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
11
      canceled(false),
61ba89b34   김태훈   GUI V0.1.6
12
      type(0)
00a512484   김태훈   세척 모드 화면 추가
13
14
15
16
17
18
  {
      ui->setupUi(this);
  
      ui->clockContainer->setParent(ui->upperStack);
      ui->progressContainer->setParent(ui->upperStack);
      setAttribute(Qt::WA_DeleteOnClose);
05f2a7552   김태훈   image 관리 구조 변경
19
538041ab9   김태훈   소스 코드 구조 개선
20
      udp = UdpHandler::getInstance();
05f2a7552   김태훈   image 관리 구조 변경
21
      connect(udp, SIGNAL(changed()), SLOT(onChanged()));
05f2a7552   김태훈   image 관리 구조 변경
22
      ui->animation->load(":/images/animation/wash_04.png");
61ba89b34   김태훈   GUI V0.1.6
23
      ui->closeDoorArrow->hide();
05f2a7552   김태훈   image 관리 구조 변경
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  
      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
39
40
41
      returnToClockTimer.setSingleShot(true);
      returnToClockTimer.setInterval(10 * 1000);
      connect(&returnToClockTimer, SIGNAL(timeout()), SLOT(returnToClock()));
00a512484   김태훈   세척 모드 화면 추가
42
43
44
45
46
47
  }
  
  WashWindow::~WashWindow()
  {
      delete ui;
  }
05f2a7552   김태훈   image 관리 구조 변경
48
49
50
  
  void WashWindow::start(int type)
  {
61ba89b34   김태훈   GUI V0.1.6
51
      if (selected)
05f2a7552   김태훈   image 관리 구조 변경
52
53
54
55
          return;
  
      if (type < 1 || type > 5)
          return;
61ba89b34   김태훈   GUI V0.1.6
56
      selected = true;
05f2a7552   김태훈   image 관리 구조 변경
57
61ba89b34   김태훈   GUI V0.1.6
58
59
60
      this->type = type;
  
      returnToClockTimer.stop();
05f2a7552   김태훈   image 관리 구조 변경
61
61ba89b34   김태훈   GUI V0.1.6
62
63
64
65
66
67
      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 관리 구조 변경
68
      ui->animation->start(300);
61ba89b34   김태훈   GUI V0.1.6
69
70
  
      udp->set(TG_OVEN_MODE, 2);
05f2a7552   김태훈   image 관리 구조 변경
71
72
73
74
  }
  
  void WashWindow::stop()
  {
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
75
76
77
78
79
80
81
      if (!started)
          return;
  
      if (canceled)
          return;
  
      canceled = true;
05f2a7552   김태훈   image 관리 구조 변경
82
83
      udp->turnOff(TG_CLEANING);
  }
61ba89b34   김태훈   GUI V0.1.6
84
85
86
87
  void WashWindow::returnToClock()
  {
      ui->upperStack->setCurrentIndex(0);
  }
05f2a7552   김태훈   image 관리 구조 변경
88
89
  void WashWindow::onChanged()
  {
61ba89b34   김태훈   GUI V0.1.6
90
      if (!selected)
05f2a7552   김태훈   image 관리 구조 변경
91
          return;
61ba89b34   김태훈   GUI V0.1.6
92
93
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
122
123
124
125
126
127
128
      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;
  
              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   김태훈   세척 모드 중 뒤로 가기 버튼을...
129
130
131
              ui->titleLabel->setText("기기의 내부를 세척 중입니다");
              ui->descLabel->setText("완료될 때까지 문을 열지 마세요.
  기기의 내부의 자동 세척 기능을 실행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
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
157
              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   김태훈   세척 모드 중 뒤로 가기 버튼을...
158
                  ui->washStepTypeLabel->setText("내부 헹굼 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
159
160
                  break;
              case 2:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
161
                  ui->washStepTypeLabel->setText("스팀 급수 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
162
163
                  break;
              case 3:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
164
                  ui->washStepTypeLabel->setText("내부 팬 세척 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
165
166
                  break;
              case 4:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
167
                  ui->washStepTypeLabel->setText("내부 스팀 불림 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
168
169
                  break;
              case 5:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
170
                  ui->washStepTypeLabel->setText("내부 강 세척 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
171
172
                  break;
              case 6:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
173
                  ui->washStepTypeLabel->setText("내부 상부 세척 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
174
175
                  break;
              case 7:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
176
                  ui->washStepTypeLabel->setText("내부 스팀 세척 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
177
178
                  break;
              case 8:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
179
                  ui->washStepTypeLabel->setText("세척 종료 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
180
181
                  break;
              case 9:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
182
                  ui->washStepTypeLabel->setText("세제 세척수 만들기 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
183
184
                  break;
              case 10:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
185
                  ui->washStepTypeLabel->setText("세제 세척수 헹굼 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
186
187
                  break;
              case 11:
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
188
                  ui->washStepTypeLabel->setText("하부 탱크 세척수 만들기 진행 중입니다.");
61ba89b34   김태훈   GUI V0.1.6
189
190
191
192
                  break;
              }
          }
      }
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
193
194
195
196
      else if (canceled)
      {
          close();
      }
61ba89b34   김태훈   GUI V0.1.6
197
198
      else if (run)
      {
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
199
200
201
          ui->titleLabel->setText("세척이 종료되었습니다");
          ui->descLabel->setText("");
          ui->washStepTypeLabel->setText("");
61ba89b34   김태훈   GUI V0.1.6
202
203
204
205
206
207
208
209
210
211
212
213
214
          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 관리 구조 변경
215
216
217
218
  }
  
  void WashWindow::on_backButton_clicked()
  {
aa40dc807   김태훈   세척 모드 중 뒤로 가기 버튼을...
219
220
221
222
      if (started)
          stop();
      else
          close();
05f2a7552   김태훈   image 관리 구조 변경
223
  }