Blame view

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