Blame view

app/gui/oven_control/soundplayer.cpp 2.02 KB
2097d305c   김태훈   소리 재생 기능 추가
1
  #include "soundplayer.h"
2c27c52f8   김태훈   볼륨 조절 추가
2
  #include "system.h"
2097d305c   김태훈   소리 재생 기능 추가
3
14b44676e   김태훈   음원 재생 루틴 개선
4
5
6
  namespace {
  QThread playThread;
  }
2097d305c   김태훈   소리 재생 기능 추가
7
14b44676e   김태훈   음원 재생 루틴 개선
8
9
10
11
12
13
14
  SoundPlayWorker::SoundPlayWorker()
  {
      current = 0;
      click = 0;
  }
  
  void SoundPlayWorker::play(const QString &filename)
2097d305c   김태훈   소리 재생 기능 추가
15
16
17
  {
      if (current && !current->isFinished())
          current->stop();
2c27c52f8   김태훈   볼륨 조절 추가
18
19
      if (click && click->isPlaying())
          click->stop();
2097d305c   김태훈   소리 재생 기능 추가
20
21
22
23
24
25
26
      if (map.contains(filename))
          current = map.value(filename);
      else
      {
          current = new QSound(filename);
          map[filename] = current;
      }
2c27c52f8   김태훈   볼륨 조절 추가
27
      System::setVolume(70);
2097d305c   김태훈   소리 재생 기능 추가
28
29
      current->play();
  }
14b44676e   김태훈   음원 재생 루틴 개선
30
31
  void SoundPlayWorker::playClick()
  {
2c27c52f8   김태훈   볼륨 조절 추가
32
33
34
35
36
      if (current && !current->isFinished())
          current->stop();
  
      if (click && click->isPlaying())
          click->stop();
14b44676e   김태훈   음원 재생 루틴 개선
37
38
39
40
41
42
      if (click == 0)
      {
          click = new QSoundEffect;
          click->setSource(QUrl::fromLocalFile(":/sounds/button.wav"));
          click->setVolume(1.0);
      }
2c27c52f8   김태훈   볼륨 조절 추가
43
      System::setVolume(80);
14b44676e   김태훈   음원 재생 루틴 개선
44
45
46
47
48
49
50
51
52
53
54
55
56
57
      click->play();
  }
  
  SoundPlayer *SoundPlayer::instance = 0;
  SoundPlayer::SoundPlayer()
  {
      instance = this;
  
      SoundPlayWorker *w = new SoundPlayWorker;
      w->moveToThread(&playThread);
      connect(this, SIGNAL(operate(QString)), w, SLOT(play(QString)));
      connect(this, SIGNAL(click()), w, SLOT(playClick()));
  
      playThread.start();
098a9d5bf   김태훈   컴파일 오류 수정
58
  }
14b44676e   김태훈   음원 재생 루틴 개선
59
60
61
62
63
64
65
66
67
68
  
  void SoundPlayer::play(const QString &filename)
  {
      emit operate(filename);
  }
  
  void SoundPlayer::emitClick()
  {
      emit click();
  }
337d4f1a3   김태훈   음원 추가
69
70
  void SoundPlayer::playClick()
  {
14b44676e   김태훈   음원 재생 루틴 개선
71
72
73
74
      if (instance == 0)
          instance = new SoundPlayer;
  
      instance->emitClick();
337d4f1a3   김태훈   음원 추가
75
76
77
78
  }
  
  void SoundPlayer::playStart()
  {
14b44676e   김태훈   음원 재생 루틴 개선
79
80
81
82
      if (instance == 0)
          instance = new SoundPlayer;
  
      instance->play(":/sounds/start.wav");
337d4f1a3   김태훈   음원 추가
83
84
85
86
  }
  
  void SoundPlayer::playStop()
  {
14b44676e   김태훈   음원 재생 루틴 개선
87
88
89
90
      if (instance == 0)
          instance = new SoundPlayer;
  
      instance->play(":/sounds/stop.wav");
337d4f1a3   김태훈   음원 추가
91
92
93
94
  }
  
  void SoundPlayer::playError1()
  {
14b44676e   김태훈   음원 재생 루틴 개선
95
96
97
98
      if (instance == 0)
          instance = new SoundPlayer;
  
      instance->play(":/sounds/error1.wav");
337d4f1a3   김태훈   음원 추가
99
100
101
102
  }
  
  void SoundPlayer::playError2()
  {
14b44676e   김태훈   음원 재생 루틴 개선
103
104
105
106
      if (instance == 0)
          instance = new SoundPlayer;
  
      instance->play(":/sounds/error2.wav");
337d4f1a3   김태훈   음원 추가
107
  }