|
1 /* |
|
2 * Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: Document model class for MUSSettingsPlugin. |
|
15 * Version : %version: 15 % << Don't touch! Updated by Synergy at check-out. |
|
16 * |
|
17 */ |
|
18 |
|
19 |
|
20 |
|
21 #include "mmussipprofilehandler.h" |
|
22 #include "mussettingsmodel.h" |
|
23 #include "mussipprofilemodel.h" |
|
24 #include "muslogger.h" |
|
25 #include <centralrepository.h> |
|
26 #include <escapeutils.h> |
|
27 |
|
28 #include <CAknMemorySelectionDialogMultiDrive.h> |
|
29 #include <AknCommonDialogsDynMem.h> |
|
30 #include <mussettingsuirsc.rsg> // GUI Resource |
|
31 |
|
32 |
|
33 |
|
34 const TInt CMusSettingsModel::KVsSipProfileDefault = 0; |
|
35 const TInt CMusSettingsModel::KVsSipProfileSelect = 1; |
|
36 const TInt CMusSettingsModel::KVsSipProfileSelectNone = 2; |
|
37 const TInt KSIPGranularity = 5; |
|
38 |
|
39 |
|
40 // ======== MEMBER FUNCTIONS ======== |
|
41 |
|
42 |
|
43 // ----------------------------------------------------------------------------- |
|
44 // |
|
45 // ----------------------------------------------------------------------------- |
|
46 // |
|
47 CMusSettingsModel* CMusSettingsModel::NewL( MMusSIPProfileHandler& aHandler ) |
|
48 { |
|
49 MUS_LOG( "[MUSSET] -> CMusSettingsModel::NewL()" ) |
|
50 CMusSettingsModel* self = new( ELeave ) CMusSettingsModel( aHandler ); |
|
51 CleanupStack::PushL( self ); |
|
52 self->ConstructL(); |
|
53 |
|
54 CleanupStack::Pop( self ); |
|
55 MUS_LOG( "[MUSSET] <- CMusSettingsModel::NewL()" ) |
|
56 return self; |
|
57 } |
|
58 |
|
59 |
|
60 // ----------------------------------------------------------------------------- |
|
61 // |
|
62 // ----------------------------------------------------------------------------- |
|
63 // |
|
64 CMusSettingsModel::CMusSettingsModel( MMusSIPProfileHandler& aHandler ) |
|
65 : iHandler( aHandler ) |
|
66 { |
|
67 MUS_LOG( "[MUSSET] <- CMusSettingsModel::CMusSettingsModel()" ) |
|
68 } |
|
69 |
|
70 |
|
71 // ----------------------------------------------------------------------------- |
|
72 // |
|
73 // ----------------------------------------------------------------------------- |
|
74 // |
|
75 void CMusSettingsModel::ConstructL() |
|
76 { |
|
77 MUS_LOG( "[MUSSET] -> CMusSettingsModel::ConstructL()" ) |
|
78 iMSSettingsKeys = new (ELeave) MultimediaSharingSettings; |
|
79 InitializeProfileEnablerL(); |
|
80 MUS_LOG( "[MUSSET] <- CMusSettingsModel::ConstructL()" ) |
|
81 } |
|
82 |
|
83 |
|
84 // ----------------------------------------------------------------------------- |
|
85 // |
|
86 // ----------------------------------------------------------------------------- |
|
87 // |
|
88 CMusSettingsModel::~CMusSettingsModel() |
|
89 { |
|
90 MUS_LOG( "[MUSSET] -> CMusSettingsModel::~CMusSettingsModel()" ) |
|
91 delete iMSSettingsKeys; |
|
92 iMSSettingsKeys = NULL; |
|
93 MUS_LOG( "[MUSSET] <- CMusSettingsModel::~CMusSettingsModel()" ) |
|
94 } |
|
95 |
|
96 |
|
97 // ----------------------------------------------------------------------------- |
|
98 // Returns operator variant mode (normal or operator specific. This is used for |
|
99 // runtime variation of Settings UI. |
|
100 // ----------------------------------------------------------------------------- |
|
101 // |
|
102 MusSettingsKeys::TOperatorVariant CMusSettingsModel::VSSettingsOperatorVariantL() |
|
103 { |
|
104 MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsOperatorVariantL()" ) |
|
105 |
|
106 MusSettingsKeys::TOperatorVariant operatorVariant = |
|
107 iMSSettingsKeys->OperatorVariantSettingL(); |
|
108 |
|
109 MUS_LOG1( |
|
110 "[MUSSET] <- CMusSettingsContainer::VSSettingsOperatorVariantL()( %d )", |
|
111 operatorVariant ) |
|
112 return operatorVariant; |
|
113 } |
|
114 |
|
115 |
|
116 // ----------------------------------------------------------------------------- |
|
117 // Returns VS activation mode. |
|
118 // ----------------------------------------------------------------------------- |
|
119 // |
|
120 MusSettingsKeys::TActivation CMusSettingsModel::VSSettingsActivationL() |
|
121 { |
|
122 MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsActivationL()" ) |
|
123 MusSettingsKeys::TActivation activationMode = |
|
124 iMSSettingsKeys->ActivationSettingL(); |
|
125 MUS_LOG1( |
|
126 "[MUSSET] <- CMusSettingsContainer::VSSettingsActivationL()( %d )", |
|
127 activationMode ) |
|
128 return activationMode; |
|
129 } |
|
130 |
|
131 |
|
132 // ----------------------------------------------------------------------------- |
|
133 // Returns SIP profile mode. |
|
134 // ----------------------------------------------------------------------------- |
|
135 // |
|
136 TInt CMusSettingsModel::VSSettingsProfileL() |
|
137 { |
|
138 MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsProfileL()" ) |
|
139 TInt vsProfileMode = iMSSettingsKeys->SipProfileSettingL(); |
|
140 MUS_LOG1( |
|
141 "[MUSSET] <- CMusSettingsContainer::VSSettingsProfileL()( %d )", |
|
142 vsProfileMode ) |
|
143 return vsProfileMode; |
|
144 } |
|
145 |
|
146 |
|
147 // ----------------------------------------------------------------------------- |
|
148 // Returns video autorecord mode. |
|
149 // ----------------------------------------------------------------------------- |
|
150 // |
|
151 MusSettingsKeys::TAutoRecord CMusSettingsModel::VSSettingsAutoRecordL() |
|
152 { |
|
153 MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsAutoRecordL()" ) |
|
154 MusSettingsKeys::TAutoRecord vsAutoRecordMode = |
|
155 iMSSettingsKeys->AutoRecordSettingL(); |
|
156 MUS_LOG1( |
|
157 "[MUSSET] <- CMusSettingsContainer::VSSettingsAutoRecordL()( %d )", |
|
158 vsAutoRecordMode ) |
|
159 return vsAutoRecordMode; |
|
160 } |
|
161 |
|
162 |
|
163 // ----------------------------------------------------------------------------- |
|
164 // Returns recorded video saving mode. |
|
165 // ----------------------------------------------------------------------------- |
|
166 // |
|
167 TInt CMusSettingsModel::VSSettingsRecordedVideoSavingL() |
|
168 { |
|
169 MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsRecordedVideoSavingL()" ) |
|
170 TInt vsVideoLocationMode = iMSSettingsKeys->VideoLocationSettingL(); |
|
171 MUS_LOG1( |
|
172 "[MUSSET] <- CMusSettingsContainer::VSSettingsRecordedVideoSavingL()( %d )", |
|
173 vsVideoLocationMode ) |
|
174 return vsVideoLocationMode; |
|
175 } |
|
176 |
|
177 |
|
178 // ----------------------------------------------------------------------------- |
|
179 // Returns mode of audible note. |
|
180 // ----------------------------------------------------------------------------- |
|
181 // |
|
182 MusSettingsKeys::TAuditoryNotification CMusSettingsModel::VSSettingsNoteL() |
|
183 { |
|
184 MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsNoteL()" ) |
|
185 MusSettingsKeys::TAuditoryNotification vsNoteMode = |
|
186 iMSSettingsKeys->AuditoryNotificationSettingL(); |
|
187 MUS_LOG1( |
|
188 "[MUSSET] <- CMusSettingsContainer::VSSettingsNoteL()( %d )", |
|
189 vsNoteMode ) |
|
190 return vsNoteMode; |
|
191 } |
|
192 |
|
193 |
|
194 // ----------------------------------------------------------------------------- |
|
195 // Sets VS activation mode. |
|
196 // ----------------------------------------------------------------------------- |
|
197 // |
|
198 void CMusSettingsModel::SetVSSettingsActivationL( |
|
199 const MusSettingsKeys::TActivation aActivation) |
|
200 { |
|
201 MUS_LOG1( |
|
202 "[MUSSET] -> CMusSettingsContainer::SetVSSettingsActivationL()( %d )", |
|
203 aActivation ) |
|
204 iMSSettingsKeys->SetActivationSettingL( aActivation ); |
|
205 MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsActivationL()" ) |
|
206 } |
|
207 |
|
208 |
|
209 // ----------------------------------------------------------------------------- |
|
210 // Sets SIP Profile mode. |
|
211 // ----------------------------------------------------------------------------- |
|
212 // |
|
213 void CMusSettingsModel::SetVSSettingsProfileL( const TInt aProfile ) |
|
214 { |
|
215 MUS_LOG1( |
|
216 "[MUSSET] -> CMusSettingsContainer::SetVSSettingsProfileL()( %d )", |
|
217 aProfile ) |
|
218 iMSSettingsKeys->SetSipProfileSettingL( aProfile ); |
|
219 MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsProfileL()" ) |
|
220 } |
|
221 |
|
222 |
|
223 // ----------------------------------------------------------------------------- |
|
224 // Sets video autorecord mode. |
|
225 // ----------------------------------------------------------------------------- |
|
226 // |
|
227 void CMusSettingsModel::SetVSSettingsAutoRecordL( |
|
228 const MusSettingsKeys::TAutoRecord aAutoRecord ) |
|
229 { |
|
230 MUS_LOG1( |
|
231 "[MUSSET] -> CMusSettingsContainer::SetVSSettingsAutoRecordL()( %d )", |
|
232 aAutoRecord ) |
|
233 iMSSettingsKeys->SetAutoRecordSettingL( aAutoRecord ); |
|
234 MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsAutoRecordL()" ) |
|
235 } |
|
236 |
|
237 |
|
238 // ----------------------------------------------------------------------------- |
|
239 // Sets video location. |
|
240 // ----------------------------------------------------------------------------- |
|
241 // |
|
242 void CMusSettingsModel::SetVSSettingsRecordedVideoSavingL( |
|
243 const TInt aVideoLocation ) |
|
244 { |
|
245 MUS_LOG1( |
|
246 "[MUSSET] -> CMusSettingsContainer::SetVSSettingsRecordedVideoSavingL()( %d )", |
|
247 aVideoLocation ) |
|
248 iMSSettingsKeys->SetVideoLocationSettingL( aVideoLocation ); |
|
249 MUS_LOG( |
|
250 "[MUSSET] <- CMusSettingsModel::SetVSSettingsRecordedVideoSavingL()" ) |
|
251 } |
|
252 |
|
253 |
|
254 // ----------------------------------------------------------------------------- |
|
255 // Sets mode of auditory note. |
|
256 // ----------------------------------------------------------------------------- |
|
257 // |
|
258 void CMusSettingsModel::SetVSSettingsNoteL( |
|
259 const MusSettingsKeys::TAuditoryNotification aValue ) |
|
260 { |
|
261 MUS_LOG1( "[MUSSET] -> CMusSettingsContainer::SetVSSettingsNoteL()( %d )", |
|
262 aValue ) |
|
263 iMSSettingsKeys->SetAuditoryNotificationSettingL( aValue ); |
|
264 MUS_LOG( "[MUSSET] <- CMusSettingsContainer::SetActivationItem()" ) |
|
265 } |
|
266 |
|
267 // ---------------------------------------------------------------------------- |
|
268 // Change Activation. |
|
269 // ---------------------------------------------------------------------------- |
|
270 // |
|
271 void CMusSettingsModel::SetActivationItem( TBool aActive ) |
|
272 { |
|
273 MUS_LOG( "[MUSSET] -> CMusSettingsContainer::SetActivationItem()" ) |
|
274 MUS_LOG1( "Profile disabled? ( %d )", |
|
275 aActive ) |
|
276 iProfileDisabled = aActive; |
|
277 MUS_LOG( "[MUSSET] <- CMusSettingsContainer::SetActivationItem()" ) |
|
278 } |
|
279 |
|
280 // ---------------------------------------------------------------------------- |
|
281 // Get Activation item. |
|
282 // ---------------------------------------------------------------------------- |
|
283 // |
|
284 TBool CMusSettingsModel::ActivationItem() |
|
285 { |
|
286 MUS_LOG( "[MUSSET] -> CMusSettingsContainer::SetActivationItem()" ) |
|
287 MUS_LOG( "[MUSSET] <- CMusSettingsContainer::SetActivationItem()" ) |
|
288 return iProfileDisabled; |
|
289 } |
|
290 |
|
291 // ----------------------------------------------------------------------------- |
|
292 // Returns the list of profile names |
|
293 // ----------------------------------------------------------------------------- |
|
294 CDesCArray* CMusSettingsModel::ListOfProfileNamesL() |
|
295 { |
|
296 MUS_LOG( "[MUSSET] -> CMusSettingsModel::ListOfProfileNamesL()" ) |
|
297 CArrayPtr<CSIPManagedProfile>* list = iHandler.ProfileArrayL(); |
|
298 |
|
299 CDesCArray* array = new ( ELeave ) CDesCArrayFlat( KSIPGranularity ); |
|
300 CleanupStack::PushL( array ); |
|
301 |
|
302 for ( TInt i = 0; i < list->Count(); i++ ) |
|
303 { |
|
304 const TDesC8* providerName = 0; |
|
305 User::LeaveIfError( |
|
306 list->At(i)->GetParameter( KSIPProviderName, providerName ) ); |
|
307 |
|
308 HBufC8* decodedProvider = |
|
309 EscapeUtils::EscapeDecodeL( *providerName ); |
|
310 CleanupStack::PushL( decodedProvider ); |
|
311 |
|
312 HBufC* providerName16 = |
|
313 EscapeUtils::ConvertToUnicodeFromUtf8L( decodedProvider->Des() ); |
|
314 CleanupStack::PushL( providerName16 ); |
|
315 |
|
316 array->AppendL( providerName16->Des() ); |
|
317 |
|
318 CleanupStack::PopAndDestroy( providerName16 ); |
|
319 CleanupStack::PopAndDestroy( decodedProvider ); |
|
320 } |
|
321 |
|
322 CleanupStack::Pop( array ); |
|
323 MUS_LOG( "[MUSSET] <- CMusSettingsModel::ListOfProfileNamesL()" ) |
|
324 return array; |
|
325 } |
|
326 |
|
327 |
|
328 // ----------------------------------------------------------------------------- |
|
329 // Returns the SIP profile name. Returns NULL buffer if no profile is found. |
|
330 // ----------------------------------------------------------------------------- |
|
331 HBufC* CMusSettingsModel::ProfileNameL( TInt aId ) |
|
332 { |
|
333 MUS_LOG1( |
|
334 "[MUSSET] -> CMusSettingsContainer::ProfileNameL()( %d )", |
|
335 aId ) |
|
336 const TDesC8* providerName = 0; |
|
337 TInt index = ProfileIndexByIdL( aId ); |
|
338 HBufC* buf = NULL; |
|
339 |
|
340 if ( index >= 0 ) |
|
341 { |
|
342 if ( KErrNone == iHandler.ProfileArrayL()->At( index )-> |
|
343 GetParameter( KSIPProviderName, providerName ) ) |
|
344 { |
|
345 HBufC8* decodedProvider = |
|
346 EscapeUtils::EscapeDecodeL( *providerName ); |
|
347 CleanupStack::PushL( decodedProvider ); |
|
348 buf = EscapeUtils::ConvertToUnicodeFromUtf8L( *providerName ); |
|
349 CleanupStack::PopAndDestroy( decodedProvider ); |
|
350 } |
|
351 } |
|
352 |
|
353 if ( buf ) |
|
354 { |
|
355 MUS_LOG_TDESC( "[MUSSET] <- CMusSettingsModel::ProfileNameL(): Profile name: ", buf->Des() ) |
|
356 } |
|
357 else |
|
358 { |
|
359 MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileNameL(): No profile found! " ) |
|
360 } |
|
361 return buf; |
|
362 } |
|
363 |
|
364 |
|
365 // ----------------------------------------------------------------------------- |
|
366 // Returns default SIP profile index. |
|
367 // ----------------------------------------------------------------------------- |
|
368 TInt CMusSettingsModel::DefaultProfileIndex() |
|
369 { |
|
370 MUS_LOG( "[MUSSET] <- CMusSettingsModel::DefaultProfileIndex()" ) |
|
371 return iHandler.DefaultProfileIndex(); |
|
372 } |
|
373 |
|
374 |
|
375 // ----------------------------------------------------------------------------- |
|
376 // Returns id of default SIP profile. |
|
377 // ----------------------------------------------------------------------------- |
|
378 TUint32 CMusSettingsModel::DefaultProfileId() |
|
379 { |
|
380 MUS_LOG( "[MUSSET] <- CMusSettingsModel::DefaultProfileId()" ) |
|
381 return iHandler.DefaultProfileId(); |
|
382 } |
|
383 |
|
384 |
|
385 // ----------------------------------------------------------------------------- |
|
386 // Returns SIP profile index based on the Id of SIP profile. |
|
387 // ----------------------------------------------------------------------------- |
|
388 TInt CMusSettingsModel::ProfileIndexByIdL( TUint32 aId ) |
|
389 { |
|
390 MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileIndexByIdL()" ) |
|
391 return iHandler.ProfileIndexByIdL( aId ); |
|
392 } |
|
393 |
|
394 |
|
395 // ----------------------------------------------------------------------------- |
|
396 // Returns SIP profile Id based on the index of SIP profile. |
|
397 // ----------------------------------------------------------------------------- |
|
398 TUint32 CMusSettingsModel::ProfileIdByIndex( TUint aIndex ) |
|
399 { |
|
400 MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileIdByIndex()" ) |
|
401 return iHandler.ProfileIdByIndex( aIndex ); |
|
402 } |
|
403 |
|
404 // ----------------------------------------------------------------------------- |
|
405 // Initialize SIP profile enabler data. |
|
406 // ----------------------------------------------------------------------------- |
|
407 void CMusSettingsModel::InitializeProfileEnablerL() |
|
408 { |
|
409 MUS_LOG( "[MUSSET] -> CMusSettingsModel::InitializeProfileEnabler()" ) |
|
410 if ( VSSettingsOperatorVariantL() == |
|
411 MusSettingsKeys::EOperatorSpecific ) |
|
412 { |
|
413 TBool enabled(EFalse); |
|
414 |
|
415 CMusSIPProfileModel& handler = |
|
416 static_cast<CMusSIPProfileModel&>( iHandler ); |
|
417 TRAPD( error, enabled = handler.ProfileEnabledL()); |
|
418 if ( error != KErrNone ) |
|
419 { |
|
420 MUS_LOG( "Error returned" ) |
|
421 // Problems with re-reading profiles; use existing array |
|
422 SetActivationItem( EFalse ); |
|
423 } |
|
424 else |
|
425 { |
|
426 MUS_LOG1("SIP registration service( %d )", |
|
427 enabled ) |
|
428 if( enabled ) |
|
429 { |
|
430 SetActivationItem( enabled ); |
|
431 } |
|
432 else |
|
433 { |
|
434 SetActivationItem( enabled); |
|
435 } |
|
436 } |
|
437 } |
|
438 MUS_LOG( "[MUSSET] <- CMusSettingsModel::InitializeProfileEnabler()" ) |
|
439 } |
|
440 |
|
441 // ----------------------------------------------------------------------------- |
|
442 // Returns memory selction dialog pointer. |
|
443 // ----------------------------------------------------------------------------- |
|
444 CAknMemorySelectionDialogMultiDrive* CMusSettingsModel::MemorySelectionDialogLC() |
|
445 { |
|
446 MUS_LOG( "[MUSSET] -> CMusSettingsModel::MemorySelectionDialogLC()" ) |
|
447 TInt supportedMemTypes( AknCommonDialogsDynMem::EMemoryTypePhone| |
|
448 AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage| |
|
449 AknCommonDialogsDynMem::EMemoryTypeMMCExternal| |
|
450 AknCommonDialogsDynMem::EMemoryTypeRemote ); |
|
451 CAknMemorySelectionDialogMultiDrive* dlg = |
|
452 CAknMemorySelectionDialogMultiDrive::NewL( |
|
453 ECFDDialogTypeNormal, |
|
454 R_VS_RECORDED_VIDEO_SAVING_SETTING_PAGE, |
|
455 ETrue, |
|
456 supportedMemTypes ); |
|
457 CleanupStack::PushL( dlg ); |
|
458 MUS_LOG( "[MUSSET] <- CMusSettingsModel::MemorySelectionDialogLC()" ) |
|
459 return dlg; |
|
460 } |
|
461 |