2097d305c
김태훈
소리 재생 기능 추가
|
1
|
#include "soundplayer.h"
|
2c27c52f8
김태훈
볼륨 조절 추가
|
2
|
#include "system.h"
|
2097d305c
김태훈
소리 재생 기능 추가
|
3
|
|
a34ceb32b
김태훈
볼륨 설정에 따라 음향 볼륨 설정
|
4
|
#include "config.h"
|
14b44676e
김태훈
음원 재생 루틴 개선
|
5
6
7
|
namespace {
QThread playThread;
}
|
2097d305c
김태훈
소리 재생 기능 추가
|
8
|
|
14b44676e
김태훈
음원 재생 루틴 개선
|
9
10
11
12
13
14
15
|
SoundPlayWorker::SoundPlayWorker()
{
current = 0;
click = 0;
}
void SoundPlayWorker::play(const QString &filename)
|
2097d305c
김태훈
소리 재생 기능 추가
|
16
17
18
|
{
if (current && !current->isFinished())
current->stop();
|
2c27c52f8
김태훈
볼륨 조절 추가
|
19
20
|
if (click && click->isPlaying())
click->stop();
|
2097d305c
김태훈
소리 재생 기능 추가
|
21
22
23
24
25
26
27
28
29
30
|
if (map.contains(filename))
current = map.value(filename);
else
{
current = new QSound(filename);
map[filename] = current;
}
current->play();
}
|
14b44676e
김태훈
음원 재생 루틴 개선
|
31
32
|
void SoundPlayWorker::playClick()
{
|
2c27c52f8
김태훈
볼륨 조절 추가
|
33
34
35
36
37
|
if (current && !current->isFinished())
current->stop();
if (click && click->isPlaying())
click->stop();
|
14b44676e
김태훈
음원 재생 루틴 개선
|
38
39
40
41
42
43
44
45
46
|
if (click == 0)
{
click = new QSoundEffect;
click->setSource(QUrl::fromLocalFile(":/sounds/button.wav"));
click->setVolume(1.0);
}
click->play();
}
|
a34ceb32b
김태훈
볼륨 설정에 따라 음향 볼륨 설정
|
47
48
49
50
|
void SoundPlayWorker::setVolume(int volume)
{
System::setVolume(volume);
}
|
14b44676e
김태훈
음원 재생 루틴 개선
|
51
52
53
54
55
56
57
|
SoundPlayer *SoundPlayer::instance = 0;
SoundPlayer::SoundPlayer()
{
instance = this;
SoundPlayWorker *w = new SoundPlayWorker;
w->moveToThread(&playThread);
|
a34ceb32b
김태훈
볼륨 설정에 따라 음향 볼륨 설정
|
58
|
connect(this, SIGNAL(setVolume(int)), w, SLOT(setVolume(int)));
|
14b44676e
김태훈
음원 재생 루틴 개선
|
59
60
61
62
|
connect(this, SIGNAL(operate(QString)), w, SLOT(play(QString)));
connect(this, SIGNAL(click()), w, SLOT(playClick()));
playThread.start();
|
098a9d5bf
김태훈
컴파일 오류 수정
|
63
|
}
|
14b44676e
김태훈
음원 재생 루틴 개선
|
64
65
66
|
void SoundPlayer::play(const QString &filename)
{
|
a34ceb32b
김태훈
볼륨 설정에 따라 음향 볼륨 설정
|
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
Define::config_item item = Config::getInstance()->getConfigValue(Define::config_marster_vol);
switch (item.d32)
{
case 0:
emit setVolume(0);
break;
case 1:
emit setVolume(40);
break;
case 2:
emit setVolume(50);
break;
case 3:
emit setVolume(60);
break;
case 4:
emit setVolume(70);
break;
case 5:
emit setVolume(80);
break;
case 6:
emit setVolume(90);
break;
case 7:
emit setVolume(100);
break;
default:
emit setVolume(0);
break;
}
|
14b44676e
김태훈
음원 재생 루틴 개선
|
98
99
100
101
102
|
emit operate(filename);
}
void SoundPlayer::emitClick()
{
|
5295adeb0
김태훈
키패드 볼륨 설정 적용
|
103
|
Define::config_item item = Config::getInstance()->getConfigValue(Define::config_keypad_sound2);
|
a34ceb32b
김태훈
볼륨 설정에 따라 음향 볼륨 설정
|
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
129
130
131
132
133
|
switch (item.d32)
{
case 0:
emit setVolume(0);
break;
case 1:
emit setVolume(50);
break;
case 2:
emit setVolume(60);
break;
case 3:
emit setVolume(70);
break;
case 4:
emit setVolume(80);
break;
case 5:
emit setVolume(90);
break;
case 6:
emit setVolume(95);
break;
case 7:
emit setVolume(100);
break;
default:
emit setVolume(0);
break;
}
|
14b44676e
김태훈
음원 재생 루틴 개선
|
134
135
|
emit click();
}
|
337d4f1a3
김태훈
음원 추가
|
136
137
|
void SoundPlayer::playClick()
{
|
14b44676e
김태훈
음원 재생 루틴 개선
|
138
139
140
141
|
if (instance == 0)
instance = new SoundPlayer;
instance->emitClick();
|
337d4f1a3
김태훈
음원 추가
|
142
143
144
145
|
}
void SoundPlayer::playStart()
{
|
14b44676e
김태훈
음원 재생 루틴 개선
|
146
147
148
149
|
if (instance == 0)
instance = new SoundPlayer;
instance->play(":/sounds/start.wav");
|
337d4f1a3
김태훈
음원 추가
|
150
151
152
153
|
}
void SoundPlayer::playStop()
{
|
14b44676e
김태훈
음원 재생 루틴 개선
|
154
155
156
157
|
if (instance == 0)
instance = new SoundPlayer;
instance->play(":/sounds/stop.wav");
|
337d4f1a3
김태훈
음원 추가
|
158
159
160
161
|
}
void SoundPlayer::playError1()
{
|
14b44676e
김태훈
음원 재생 루틴 개선
|
162
163
164
165
|
if (instance == 0)
instance = new SoundPlayer;
instance->play(":/sounds/error1.wav");
|
337d4f1a3
김태훈
음원 추가
|
166
167
168
169
|
}
void SoundPlayer::playError2()
{
|
14b44676e
김태훈
음원 재생 루틴 개선
|
170
171
172
173
|
if (instance == 0)
instance = new SoundPlayer;
instance->play(":/sounds/error2.wav");
|
337d4f1a3
김태훈
음원 추가
|
174
|
}
|