Blame view

app/gui/oven_control/soundplayer.cpp 4.75 KB
2097d305c   김태훈   소리 재생 기능 추가
1
  #include "soundplayer.h"
2c27c52f8   김태훈   볼륨 조절 추가
2
  #include "system.h"
2097d305c   김태훈   소리 재생 기능 추가
3
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
4
  #include "config.h"
d75742e49   김태훈   음향 효과 개선
5
  #include "unistd.h"
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
6
14b44676e   김태훈   음원 재생 루틴 개선
7
8
9
  namespace {
  QThread playThread;
  }
2097d305c   김태훈   소리 재생 기능 추가
10
14b44676e   김태훈   음원 재생 루틴 개선
11
12
  SoundPlayWorker::SoundPlayWorker()
  {
d75742e49   김태훈   음향 효과 개선
13
14
15
16
      repeat_ = false;
      proc = new QProcess(this);
  
      connect(proc, SIGNAL(finished(int)), SLOT(onFinished()));
14b44676e   김태훈   음원 재생 루틴 개선
17
18
19
  }
  
  void SoundPlayWorker::play(const QString &filename)
2097d305c   김태훈   소리 재생 기능 추가
20
  {
d75742e49   김태훈   음향 효과 개선
21
      if (proc->state() != QProcess::NotRunning)
2097d305c   김태훈   소리 재생 기능 추가
22
      {
d75742e49   김태훈   음향 효과 개선
23
24
          proc->terminate();
          proc->waitForFinished();
2097d305c   김태훈   소리 재생 기능 추가
25
      }
d75742e49   김태훈   음향 효과 개선
26
27
      proc->start(QString("aplay"), QStringList(filename));
      proc->waitForStarted();
2097d305c   김태훈   소리 재생 기능 추가
28
  }
14b44676e   김태훈   음원 재생 루틴 개선
29
30
  void SoundPlayWorker::playClick()
  {
d75742e49   김태훈   음향 효과 개선
31
32
      play("/falinux/sounds/button.wav");
  }
2c27c52f8   김태훈   볼륨 조절 추가
33
d75742e49   김태훈   음향 효과 개선
34
35
36
37
38
39
40
41
42
43
  void SoundPlayWorker::setVolume(int volume)
  {
      System::setVolume(volume);
  }
  
  void SoundPlayWorker::repeat(const QString &filename)
  {
      repeat_ = true;
      play(filename);
  }
2c27c52f8   김태훈   볼륨 조절 추가
44
d75742e49   김태훈   음향 효과 개선
45
46
47
48
  void SoundPlayWorker::stop()
  {
      repeat_ = false;
      if (proc->state() != QProcess::NotRunning)
14b44676e   김태훈   음원 재생 루틴 개선
49
      {
d75742e49   김태훈   음향 효과 개선
50
51
          proc->terminate();
          proc->waitForFinished();
14b44676e   김태훈   음원 재생 루틴 개선
52
      }
14b44676e   김태훈   음원 재생 루틴 개선
53
  }
d75742e49   김태훈   음향 효과 개선
54
  void SoundPlayWorker::onFinished()
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
55
  {
d75742e49   김태훈   음향 효과 개선
56
57
      if (repeat_)
          proc->start();
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
58
  }
14b44676e   김태훈   음원 재생 루틴 개선
59
60
61
62
63
64
65
  SoundPlayer *SoundPlayer::instance = 0;
  SoundPlayer::SoundPlayer()
  {
      instance = this;
  
      SoundPlayWorker *w = new SoundPlayWorker;
      w->moveToThread(&playThread);
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
66
      connect(this, SIGNAL(setVolume(int)), w, SLOT(setVolume(int)));
14b44676e   김태훈   음원 재생 루틴 개선
67
68
      connect(this, SIGNAL(operate(QString)), w, SLOT(play(QString)));
      connect(this, SIGNAL(click()), w, SLOT(playClick()));
d75742e49   김태훈   음향 효과 개선
69
70
      connect(this, SIGNAL(operateRepeat(QString)), w, SLOT(repeat(QString)));
      connect(this, SIGNAL(operateStop()), w, SLOT(stop()));
14b44676e   김태훈   음원 재생 루틴 개선
71
72
  
      playThread.start();
098a9d5bf   김태훈   컴파일 오류 수정
73
  }
14b44676e   김태훈   음원 재생 루틴 개선
74
75
76
  
  void SoundPlayer::play(const QString &filename)
  {
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
77
78
79
80
81
82
83
      Define::config_item item = Config::getInstance()->getConfigValue(Define::config_marster_vol);
      switch (item.d32)
      {
      case 0:
          emit setVolume(0);
          break;
      case 1:
d75742e49   김태훈   음향 효과 개선
84
          emit setVolume(60);
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
85
86
          break;
      case 2:
d75742e49   김태훈   음향 효과 개선
87
          emit setVolume(70);
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
88
89
          break;
      case 3:
d75742e49   김태훈   음향 효과 개선
90
          emit setVolume(80);
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
91
92
          break;
      case 4:
d75742e49   김태훈   음향 효과 개선
93
          emit setVolume(85);
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
94
95
          break;
      case 5:
d75742e49   김태훈   음향 효과 개선
96
          emit setVolume(90);
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
97
98
          break;
      case 6:
d75742e49   김태훈   음향 효과 개선
99
          emit setVolume(95);
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
100
101
102
103
104
105
106
107
          break;
      case 7:
          emit setVolume(100);
          break;
      default:
          emit setVolume(0);
          break;
      }
14b44676e   김태훈   음원 재생 루틴 개선
108
109
110
111
112
      emit operate(filename);
  }
  
  void SoundPlayer::emitClick()
  {
5295adeb0   김태훈   키패드 볼륨 설정 적용
113
      Define::config_item item = Config::getInstance()->getConfigValue(Define::config_keypad_sound2);
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
114
115
116
117
118
119
      switch (item.d32)
      {
      case 0:
          emit setVolume(0);
          break;
      case 1:
d75742e49   김태훈   음향 효과 개선
120
          emit setVolume(75);
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
121
122
          break;
      case 2:
d75742e49   김태훈   음향 효과 개선
123
          emit setVolume(80);
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
124
125
          break;
      case 3:
d75742e49   김태훈   음향 효과 개선
126
          emit setVolume(85);
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
127
128
          break;
      case 4:
d75742e49   김태훈   음향 효과 개선
129
130
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
157
158
159
160
161
162
          emit setVolume(90);
          break;
      case 5:
          emit setVolume(95);
          break;
      case 6:
          emit setVolume(98);
          break;
      case 7:
          emit setVolume(100);
          break;
      default:
          emit setVolume(0);
          break;
      }
  
      emit click();
  }
  
  void SoundPlayer::repeat(const QString &filename)
  {
      Define::config_item item = Config::getInstance()->getConfigValue(Define::config_marster_vol);
      switch (item.d32)
      {
      case 0:
          emit setVolume(0);
          break;
      case 1:
          emit setVolume(60);
          break;
      case 2:
          emit setVolume(70);
          break;
      case 3:
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
163
164
          emit setVolume(80);
          break;
d75742e49   김태훈   음향 효과 개선
165
166
167
      case 4:
          emit setVolume(85);
          break;
a34ceb32b   김태훈   볼륨 설정에 따라 음향 볼륨 설정
168
169
170
171
172
173
174
175
176
177
178
179
180
      case 5:
          emit setVolume(90);
          break;
      case 6:
          emit setVolume(95);
          break;
      case 7:
          emit setVolume(100);
          break;
      default:
          emit setVolume(0);
          break;
      }
d75742e49   김태훈   음향 효과 개선
181
182
183
184
185
186
      emit operateRepeat(filename);
  }
  
  void SoundPlayer::stopPlay()
  {
      emit operateStop();
14b44676e   김태훈   음원 재생 루틴 개선
187
  }
337d4f1a3   김태훈   음원 추가
188
189
  void SoundPlayer::playClick()
  {
14b44676e   김태훈   음원 재생 루틴 개선
190
191
192
193
      if (instance == 0)
          instance = new SoundPlayer;
  
      instance->emitClick();
337d4f1a3   김태훈   음원 추가
194
195
196
197
  }
  
  void SoundPlayer::playStart()
  {
14b44676e   김태훈   음원 재생 루틴 개선
198
199
      if (instance == 0)
          instance = new SoundPlayer;
d75742e49   김태훈   음향 효과 개선
200
      instance->play("/falinux/sounds/start.wav");
337d4f1a3   김태훈   음원 추가
201
202
203
204
  }
  
  void SoundPlayer::playStop()
  {
14b44676e   김태훈   음원 재생 루틴 개선
205
206
      if (instance == 0)
          instance = new SoundPlayer;
d75742e49   김태훈   음향 효과 개선
207
      instance->play("/falinux/sounds/stop.wav");
337d4f1a3   김태훈   음원 추가
208
209
210
211
  }
  
  void SoundPlayer::playError1()
  {
14b44676e   김태훈   음원 재생 루틴 개선
212
213
      if (instance == 0)
          instance = new SoundPlayer;
d75742e49   김태훈   음향 효과 개선
214
      instance->play("/falinux/sounds/error1.wav");
337d4f1a3   김태훈   음원 추가
215
216
217
218
  }
  
  void SoundPlayer::playError2()
  {
14b44676e   김태훈   음원 재생 루틴 개선
219
220
      if (instance == 0)
          instance = new SoundPlayer;
d75742e49   김태훈   음향 효과 개선
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
      instance->play("/falinux/sounds/error2.wav");
  }
  
  void SoundPlayer::repeatError1()
  {
      if (instance == 0)
          instance = new SoundPlayer;
  
      instance->repeat("/falinux/sounds/error1.wav");
  }
  
  void SoundPlayer::repeatError2()
  {
      if (instance == 0)
          instance = new SoundPlayer;
  
      instance->repeat("/falinux/sounds/error2.wav");
  }
  
  void SoundPlayer::stop()
  {
      if (instance == 0)
          instance = new SoundPlayer;
  
      instance->stopPlay();
337d4f1a3   김태훈   음원 추가
246
  }