13 * |
13 * |
14 * Description: |
14 * Description: |
15 * This file provides the implementation for creating and deleting a |
15 * This file provides the implementation for creating and deleting a |
16 * an MMF based player for playing and stopping a tone playback. |
16 * an MMF based player for playing and stopping a tone playback. |
17 */ |
17 */ |
18 |
|
19 #include "stsplayer.h" |
18 #include "stsplayer.h" |
|
19 #include <AudioPreference.h> |
|
20 #include <MProEngEngine.h> |
|
21 #include <MProEngProfile.h> |
|
22 #include <MProEngTones.h> |
|
23 #include <MProEngToneSettings.h> |
|
24 #include <ProEngFactory.h> |
|
25 #include <systemtoneservice.h> |
|
26 |
20 |
27 |
21 _LIT(KDefaultFile,"z:\\data\\sounds\\digital\\clock.aac"); |
28 _LIT(KDefaultFile,"z:\\data\\sounds\\digital\\clock.aac"); |
|
29 |
|
30 |
|
31 |
|
32 |
22 |
33 |
23 /*static*/CStsPlayer* CStsPlayer::CreateTonePlayer( |
34 /*static*/CStsPlayer* CStsPlayer::CreateTonePlayer( |
24 MStsPlayerObserver& aObserver, CSystemToneService::TToneType aTone, |
35 MStsPlayerObserver& aObserver, CSystemToneService::TToneType aTone, |
25 unsigned int aContext) |
36 unsigned int aContext) |
26 { |
37 { |
27 CStsPlayer* self = 0; |
38 CStsPlayer* self = 0; |
28 switch (aTone) |
39 |
29 { |
40 self = new CStsPlayer(aObserver, KDefaultFile, 0, aContext); |
30 default: |
41 |
31 self = new CStsPlayer(aObserver, KDefaultFile, 0, aContext); |
42 if( self != 0) |
32 break; |
43 { |
33 } |
44 TRAPD(err,self->LoadActiveProfileSettingsL()); |
34 if (self != 0) |
45 |
35 { |
46 if( err == KErrNone ) |
36 bool successful = self->Init(); |
47 self->SetToneSettings(aTone); |
37 if (!successful) |
48 else |
|
49 { |
|
50 delete self; |
|
51 self = 0; |
|
52 } |
|
53 |
|
54 if (self != 0) |
|
55 { |
|
56 bool successful = self->Init(); |
|
57 if (!successful) |
38 { |
58 { |
39 delete self; |
59 delete self; |
40 self = 0; |
60 self = 0; |
41 } |
61 } |
|
62 } |
42 } |
63 } |
43 return self; |
64 return self; |
44 } |
65 } |
45 |
66 |
46 /*static*/CStsPlayer* CStsPlayer::CreateAlarmPlayer( |
67 /*static*/CStsPlayer* CStsPlayer::CreateAlarmPlayer( |
47 MStsPlayerObserver& aObserver, CSystemToneService::TAlarmType aAlarm, |
68 MStsPlayerObserver& aObserver, CSystemToneService::TAlarmType aAlarm, |
48 unsigned int aContext) |
69 unsigned int aContext) |
49 { |
70 { |
50 CStsPlayer* self = 0; |
71 CStsPlayer* self = 0; |
51 switch (aAlarm) |
72 |
52 { |
73 self = new CStsPlayer(aObserver, KDefaultFile, 10, aContext); |
53 case CSystemToneService::EClockAlarm: |
74 |
54 self = new CStsPlayer(aObserver, KDefaultFile, 10, aContext); |
75 if( self != 0) |
55 break; |
76 { |
56 default: |
77 TRAPD(err,self->LoadActiveProfileSettingsL()); |
57 self = new CStsPlayer(aObserver, KDefaultFile, 10, aContext); |
78 |
58 break; |
79 if( err == KErrNone ) |
59 } |
80 self->SetAlarmSettings(aAlarm); |
60 if (self != 0) |
81 else |
61 { |
82 { |
62 bool successful = self->Init(); |
83 delete self; |
63 if (!successful) |
84 self = 0; |
|
85 } |
|
86 |
|
87 if (self != 0) |
|
88 { |
|
89 bool successful = self->Init(); |
|
90 if (!successful) |
64 { |
91 { |
65 delete self; |
92 delete self; |
66 self = 0; |
93 self = 0; |
67 } |
94 } |
|
95 } |
68 } |
96 } |
69 return self; |
97 return self; |
70 } |
98 } |
|
99 |
|
100 void CStsPlayer::LoadActiveProfileSettingsL() |
|
101 { |
|
102 if(!iEngine) |
|
103 { |
|
104 iEngine = ProEngFactory::NewEngineL(); |
|
105 } |
|
106 |
|
107 if (iEngine) |
|
108 iProfile = iEngine->ActiveProfileL(); |
|
109 |
|
110 if (iProfile) |
|
111 { |
|
112 MProEngToneSettings& settings = iProfile->ToneSettings(); |
|
113 iWarningToneEnabled = settings.WarningAndGameTones(); |
|
114 } |
|
115 |
|
116 |
|
117 |
|
118 |
|
119 } |
|
120 |
|
121 void CStsPlayer::SetToneSettings(CSystemToneService::TToneType aTone) |
|
122 { |
|
123 |
|
124 if(iProfile) |
|
125 |
|
126 { |
|
127 MProEngTones& tones = iProfile->ProfileTones(); |
|
128 |
|
129 switch (aTone) |
|
130 { |
|
131 case CSystemToneService::EEmailAlert: |
|
132 iFileName.Set(tones.EmailAlertTone()); |
|
133 iAudioPreference = KAudioPrefNewSMS; |
|
134 iAudioPriority = KAudioPriorityRecvMsg ; |
|
135 break; |
|
136 case CSystemToneService::ESmsAlert: |
|
137 iFileName.Set(tones.MessageAlertTone()); |
|
138 iAudioPreference = KAudioPrefNewSMS; |
|
139 iAudioPriority = KAudioPriorityRecvMsg; |
|
140 break; |
|
141 case CSystemToneService::EMmsAlert: |
|
142 iFileName.Set(tones.MessageAlertTone()); |
|
143 iAudioPreference = KAudioPrefNewSMS; |
|
144 iAudioPriority = KAudioPriorityRecvMsg; |
|
145 break; |
|
146 case CSystemToneService::EChatAlert: |
|
147 iFileName.Set(tones.MessageAlertTone()); |
|
148 iAudioPreference = KAudioPrefNewSMS ; |
|
149 iAudioPriority = KAudioPriorityRecvMsg; |
|
150 break; |
|
151 case CSystemToneService::EWarningBeep: |
|
152 iAudioPreference = KAudioPrefWarning; |
|
153 iAudioPriority = KAudioPriorityWarningTone ; |
|
154 if (iWarningToneEnabled) |
|
155 iFileName.Set(KDefaultFile); |
|
156 else |
|
157 iVolume = 0; |
|
158 |
|
159 break; |
|
160 default: |
|
161 iAudioPreference = KAudioPrefDefaultTone; |
|
162 iAudioPriority = KAudioPriorityWarningTone ; |
|
163 break; |
|
164 } |
|
165 } |
|
166 |
|
167 else |
|
168 { |
|
169 iAudioPreference = KAudioPrefDefaultTone; |
|
170 iAudioPriority = KAudioPriorityWarningTone ; |
|
171 } |
|
172 |
|
173 } |
|
174 |
|
175 |
|
176 void CStsPlayer::SetAlarmSettings(CSystemToneService::TAlarmType aAlarm) |
|
177 { |
|
178 if(iProfile) |
|
179 |
|
180 { |
|
181 MProEngTones& tones = iProfile->ProfileTones(); |
|
182 |
|
183 switch (aAlarm) |
|
184 { |
|
185 case CSystemToneService::EIncomingCall: |
|
186 iFileName.Set(tones.RingingTone1()); |
|
187 iAudioPreference = KAudioPrefIncomingCall ; |
|
188 iAudioPriority = KAudioPriorityRingingTone ; |
|
189 break; |
|
190 case CSystemToneService::EIncomingCallLine2: |
|
191 iFileName.Set(tones.RingingTone2()); |
|
192 iAudioPreference = KAudioPrefIncomingCall; |
|
193 iAudioPriority = KAudioPriorityRingingTone ; |
|
194 break; |
|
195 case CSystemToneService::EIncomingDataCall: |
|
196 iFileName.Set(tones.VideoCallRingingTone()); |
|
197 iAudioPreference = KAudioPrefIncomingDataCall; |
|
198 iAudioPriority = KAudioPriorityRealOnePlayer; |
|
199 break; |
|
200 default: |
|
201 iAudioPreference = KAudioPrefAlarmClock ; |
|
202 iAudioPriority = KAudioPriorityAlarm; |
|
203 break; |
|
204 } |
|
205 } |
|
206 else |
|
207 { |
|
208 iAudioPreference = KAudioPrefDefaultTone; |
|
209 iAudioPriority = KAudioPriorityWarningTone ; |
|
210 } |
|
211 } |
|
212 |
|
213 |
|
214 |
71 |
215 |
72 CStsPlayer::CStsPlayer(MStsPlayerObserver& aObserver, const TDesC& aFileName, |
216 CStsPlayer::CStsPlayer(MStsPlayerObserver& aObserver, const TDesC& aFileName, |
73 int aRepeatNumberOfTimes, unsigned int aContext) : |
217 int aRepeatNumberOfTimes, unsigned int aContext) : |
74 iObserver(aObserver), iPlayer(0), iFileName(aFileName), |
218 iObserver(aObserver), iPlayer(0), iFileName(aFileName), |
75 iRepeatNumberOfTimes(aRepeatNumberOfTimes), iContext(aContext) |
219 iRepeatNumberOfTimes(aRepeatNumberOfTimes), iContext(aContext) |
76 { |
220 { |
|
221 iEngine = ProEngFactory::NewEngineL(); |
77 } |
222 } |
78 |
223 |
79 bool CStsPlayer::Init() |
224 bool CStsPlayer::Init() |
80 { |
225 { |
81 TRAPD(result, iPlayer = CMdaAudioPlayerUtility::NewL(*this)); |
226 |
82 return result == KErrNone; |
227 |
83 } |
228 TRAPD(result, iPlayer = CMdaAudioPlayerUtility::NewL(*this)); |
|
229 return result == KErrNone; |
|
230 |
|
231 } |
|
232 |
84 |
233 |
85 CStsPlayer::~CStsPlayer() |
234 CStsPlayer::~CStsPlayer() |
86 { |
235 { |
87 delete iPlayer; |
236 if (iProfile) |
|
237 { |
|
238 iProfile->Release(); |
|
239 } |
|
240 if (iEngine) |
|
241 { |
|
242 iEngine->Release(); |
|
243 } |
|
244 |
|
245 delete iPlayer; |
|
246 |
88 } |
247 } |
89 |
248 |
90 void CStsPlayer::Play() |
249 void CStsPlayer::Play() |
91 { |
250 { |
92 // Play the tone |
251 // Play the tone |