|
1 /* |
|
2 * Copyright (c) 2002-2005 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: |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 // INCLUDE FILES |
|
20 #include "cenrepeditormodel.h" |
|
21 #include "musresourceproperties.h" |
|
22 #include "mussettingskeys.h" |
|
23 #include <cenrepeditor.rsg> |
|
24 #include <e32property.h> |
|
25 #include <aknnotewrappers.h> |
|
26 #ifdef _KODIAK_PHONE_CALL |
|
27 #include <CTSYDomainPSKeys.h> |
|
28 #else |
|
29 const TUid KPSUidCtsyCallInformation = {0x102029AC}; |
|
30 const TUint32 KCTsyKodiakPtt = 0x00000003; |
|
31 enum TPSCTsyKodiakPtt |
|
32 { |
|
33 EPSCTsyKodiakPttNotActive, |
|
34 EPSCTsyKodiakPttActive |
|
35 }; |
|
36 #endif |
|
37 |
|
38 |
|
39 // ================= MEMBER FUNCTIONS ======================= |
|
40 |
|
41 CPhoneResources* CPhoneResources::NewLC() |
|
42 { |
|
43 // create a new expense object |
|
44 CPhoneResources* self = new (ELeave) CPhoneResources(); |
|
45 CleanupStack::PushL(self); |
|
46 self->ConstructL(); |
|
47 return self; |
|
48 } |
|
49 |
|
50 CPhoneResources* CPhoneResources::NewL() |
|
51 { |
|
52 CPhoneResources* self = CPhoneResources::NewLC(); |
|
53 CleanupStack::Pop(); |
|
54 return self; |
|
55 } |
|
56 |
|
57 void CPhoneResources::ConstructL() |
|
58 { |
|
59 iCameraAvailability = -1; |
|
60 iKeypadAvailability = -1 ; |
|
61 iVideoPlayerAvailability = -1; |
|
62 iCameraInformation = -1; |
|
63 iKodiakPhoneCall = -1; |
|
64 iDummy = 1; // just a postive value , dirty idea but just works at this time |
|
65 } |
|
66 |
|
67 void CPhoneResources::ReadL() |
|
68 { |
|
69 TInt err = KErrNone; |
|
70 // 1. camera property |
|
71 err = RProperty::Get( NMusResourceApi::KCategoryUid, |
|
72 NMusResourceApi::KCameraAvailability, |
|
73 iCameraAvailability); |
|
74 if(err)HandleError(ETrue,err,_L("CameraAvailability")); |
|
75 // 2. keypad property |
|
76 err = RProperty::Get( NMusResourceApi::KCategoryUid, |
|
77 NMusResourceApi::KKeypadAvailability, |
|
78 iKeypadAvailability ); |
|
79 if(err)HandleError(ETrue , err,_L("KeypadAvailability")); |
|
80 // 3. video player property |
|
81 err = RProperty::Get( NMusResourceApi::KCategoryUid, |
|
82 NMusResourceApi::KVideoPlayerAvailability, |
|
83 iVideoPlayerAvailability ); |
|
84 if(err)HandleError( ETrue, err ,_L("VideoPlayerAvailability")); |
|
85 // 3. video player property |
|
86 err = RProperty::Get( NMusResourceApi::KCategoryUid, |
|
87 NMusResourceApi::KCameraInformation, |
|
88 iCameraInformation ); |
|
89 if(err)HandleError( ETrue, err ,_L("CameraInformation")); |
|
90 err = RProperty::Get( KPSUidCtsyCallInformation, |
|
91 KCTsyKodiakPtt, |
|
92 iKodiakPhoneCall ); |
|
93 if(err) |
|
94 { |
|
95 iKodiakPhoneCall = EPSCTsyKodiakPttNotActive; |
|
96 RProperty::Define(KPSUidCtsyCallInformation,KCTsyKodiakPtt,EPSCTsyKodiakPttNotActive); |
|
97 } |
|
98 } |
|
99 |
|
100 |
|
101 CPhoneResources::~CPhoneResources() |
|
102 { |
|
103 } |
|
104 |
|
105 void CPhoneResources::SaveL() |
|
106 { |
|
107 //TInt err = KErrNone; |
|
108 |
|
109 User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid, |
|
110 NMusResourceApi::KCameraAvailability, |
|
111 iCameraAvailability)); |
|
112 //if(err)HandleError( EFalse, err ,_L("CameraAvailability")); |
|
113 // 2. keypad property |
|
114 User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid, |
|
115 NMusResourceApi::KKeypadAvailability, |
|
116 iKeypadAvailability )); |
|
117 //if(err)HandleError(EFalse, err,_L("KeypadAvailability")); |
|
118 // 3. video player property |
|
119 User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid, |
|
120 NMusResourceApi::KVideoPlayerAvailability, |
|
121 iVideoPlayerAvailability )); |
|
122 //if(err)HandleError(EFalse, err,_L("VideoPlayerAvailability")); |
|
123 // 3. video player property |
|
124 User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid, |
|
125 NMusResourceApi::KCameraInformation, |
|
126 iCameraInformation )); |
|
127 //if(err)HandleError(EFalse, err,_L("CameraInformation")); |
|
128 // 4. Kodiak PS Key |
|
129 User::LeaveIfError(SetValueL( KPSUidCtsyCallInformation, |
|
130 KCTsyKodiakPtt, |
|
131 iKodiakPhoneCall )); |
|
132 //if(err)HandleError( EFalse, err ,_L("KodiakPSKeyInformation")); |
|
133 } |
|
134 |
|
135 TInt CPhoneResources::SetValueL(TUid aCategory, TUint aKey, TInt aValue) |
|
136 { |
|
137 if(aValue<0)return KErrNone; // dont care if the key is not read intially |
|
138 return RProperty::Set( aCategory, aKey, aValue ); |
|
139 } |
|
140 |
|
141 |
|
142 void CPhoneResources::HandleError(TBool aType ,TInt aError , TPtrC aKeyName ) |
|
143 { |
|
144 CAknErrorNote *dlg = new CAknErrorNote(ETrue); |
|
145 TBuf<100> buf; |
|
146 if(aType) |
|
147 { |
|
148 buf.Append(_L("Unable to Read Key ")); |
|
149 } |
|
150 else |
|
151 { |
|
152 buf.Append(_L("Unable to Save ")); |
|
153 } |
|
154 buf.Append(aKeyName); |
|
155 buf.Append(_L(" Error ")); |
|
156 buf.AppendNum(aError); |
|
157 dlg->ExecuteLD(buf); |
|
158 } |
|
159 |
|
160 COtherResources* COtherResources::NewLC() |
|
161 { |
|
162 // create a new expense object |
|
163 COtherResources* self = new (ELeave) COtherResources(); |
|
164 CleanupStack::PushL(self); |
|
165 self->ConstructL(); |
|
166 return self; |
|
167 } |
|
168 |
|
169 COtherResources* COtherResources::NewL() |
|
170 { |
|
171 COtherResources* self = COtherResources::NewLC(); |
|
172 CleanupStack::Pop(); |
|
173 return self; |
|
174 } |
|
175 |
|
176 void COtherResources::ConstructL() |
|
177 { |
|
178 iActivation = -1 ; |
|
179 iOperatorVariant = -1 ; |
|
180 iAuditoryNotification = -1; |
|
181 iPopupNotification = -1 ; |
|
182 iPopupNotificationType = -1 ; |
|
183 iEdgeDtmSupport = -1 ; |
|
184 iSessionSetupMethod = -1 ; |
|
185 iAutoRecord = -1 ; |
|
186 iVideoLocation = -1 ; |
|
187 iSipProfileId = -1 ; |
|
188 iUiOrientation = -1 ; |
|
189 iCapabilityQuery = -1; |
|
190 iProductModeVariation=-1; |
|
191 iEncodingDevice = -1; |
|
192 iPrivacyVariation = -1; |
|
193 iDummy = 1; // just a postive value |
|
194 } |
|
195 |
|
196 void COtherResources::ReadL() |
|
197 { |
|
198 |
|
199 TRAPD(err,ReadCRKeyValuesL()); |
|
200 if(err) HandleError (ETrue,err,_L("Read Error")); |
|
201 |
|
202 } |
|
203 |
|
204 void COtherResources::ReadCRKeyValuesL() |
|
205 { |
|
206 |
|
207 TInt err=KErrNone; |
|
208 CRepository* cr = NULL ; |
|
209 TRAP(err,cr = CRepository::NewL( MusSettingsKeys::KRepositoryUid )); |
|
210 cr->CleanupCancelTransactionPushL(); |
|
211 if(err) |
|
212 { |
|
213 CAknErrorNote *dlg = new CAknErrorNote(ETrue); |
|
214 dlg->ExecuteLD(_L(\ |
|
215 "Unable to Construct CRepository for UID 0x1028238B")); |
|
216 return ; // dont leave |
|
217 } |
|
218 |
|
219 ReadKeyValueL( cr, MusSettingsKeys::KActivation,iActivation ); |
|
220 ReadKeyValueL( cr, MusSettingsKeys::KOperatorVariant,iOperatorVariant); |
|
221 ReadKeyValueL( cr, MusSettingsKeys::KAuditoryNotification, iAuditoryNotification); |
|
222 ReadKeyValueL( cr, MusSettingsKeys::KPopupNotification, iPopupNotification); |
|
223 ReadKeyValueL( cr, MusSettingsKeys::KPopupNotificationType, iPopupNotificationType); |
|
224 ReadKeyValueL( cr, MusSettingsKeys::KEdgeDtmSupport, iEdgeDtmSupport); |
|
225 ReadKeyValueL( cr, MusSettingsKeys::KForceInternetSignaling, iSessionSetupMethod); |
|
226 ReadKeyValueL( cr, MusSettingsKeys::KAutoRecord, iAutoRecord); |
|
227 ReadKeyValueL( cr, MusSettingsKeys::KVideoLocation, iVideoLocation); |
|
228 ReadKeyValueL( cr, MusSettingsKeys::KSipProfileId, iSipProfileId); |
|
229 ReadKeyValueL( cr, MusSettingsKeys::KUiOrientation, iUiOrientation); |
|
230 ReadKeyValueL( cr, MusSettingsKeys::KCapabilityQuery, iCapabilityQuery); |
|
231 ReadKeyValueL( cr, MusSettingsKeys::KProductModeVariation, iProductModeVariation); |
|
232 ReadKeyValueL( cr, MusSettingsKeys::KEncoderConfigurationInfo, iEncoderInfo ); |
|
233 ReadKeyValueL( cr, MusSettingsKeys::KEncodingDevice, iEncodingDevice ); |
|
234 ReadKeyValueL( cr, MusSettingsKeys::KPrivacyExchange, iPrivacyVariation ); |
|
235 |
|
236 iEncodingDeviceStr.Zero(); |
|
237 iEncodingDeviceStr.AppendNum(iEncodingDevice, EHex); |
|
238 |
|
239 CleanupStack::PopAndDestroy(cr); |
|
240 delete cr; |
|
241 |
|
242 } |
|
243 |
|
244 |
|
245 COtherResources::~COtherResources() |
|
246 { |
|
247 } |
|
248 |
|
249 void COtherResources::SaveL() |
|
250 { |
|
251 |
|
252 TRAPD(err,SaveCRKeyValuesL()); |
|
253 if(err) HandleError (ETrue,err,_L("Save Error")); |
|
254 |
|
255 } |
|
256 |
|
257 void COtherResources::SaveCRKeyValuesL() |
|
258 { |
|
259 CRepository* cr = NULL ; |
|
260 TRAPD(err,cr = CRepository::NewL( MusSettingsKeys::KRepositoryUid )); |
|
261 cr->CleanupCancelTransactionPushL(); |
|
262 if(err) |
|
263 { |
|
264 CAknErrorNote *dlg = new CAknErrorNote(ETrue); |
|
265 dlg->ExecuteLD(_L(\ |
|
266 "Unable to Construct CRepository for UID 0x1028238B")); |
|
267 User::Leave(err); |
|
268 } |
|
269 SetKeyValueL( cr,MusSettingsKeys::KActivation, iActivation); |
|
270 SetKeyValueL( cr,MusSettingsKeys::KOperatorVariant, iOperatorVariant); |
|
271 SetKeyValueL( cr,MusSettingsKeys::KAuditoryNotification, iAuditoryNotification); |
|
272 SetKeyValueL( cr,MusSettingsKeys::KPopupNotification, iPopupNotification); |
|
273 SetKeyValueL( cr,MusSettingsKeys::KPopupNotificationType, iPopupNotificationType); |
|
274 SetKeyValueL( cr,MusSettingsKeys::KEdgeDtmSupport, iEdgeDtmSupport); |
|
275 SetKeyValueL( cr,MusSettingsKeys::KForceInternetSignaling, iSessionSetupMethod); |
|
276 SetKeyValueL( cr,MusSettingsKeys::KAutoRecord, iAutoRecord); |
|
277 SetKeyValueL( cr,MusSettingsKeys::KVideoLocation, iVideoLocation); |
|
278 SetKeyValueL( cr,MusSettingsKeys::KSipProfileId, iSipProfileId); |
|
279 SetKeyValueL( cr,MusSettingsKeys::KUiOrientation, iUiOrientation); |
|
280 SetKeyValueL( cr,MusSettingsKeys::KCapabilityQuery, iCapabilityQuery); |
|
281 SetKeyValueL( cr,MusSettingsKeys::KProductModeVariation, iProductModeVariation); |
|
282 SetKeyValueL( cr,MusSettingsKeys::KEncoderConfigurationInfo, iEncoderInfo ); |
|
283 SetKeyValueL( cr,MusSettingsKeys::KPrivacyExchange, iPrivacyVariation ); |
|
284 |
|
285 TLex lex( iEncodingDeviceStr ); |
|
286 TUint uid; |
|
287 err = lex.Val(uid, EHex); |
|
288 if ( (err == KErrNone) && lex.Eos() ) |
|
289 { |
|
290 iEncodingDevice = uid; |
|
291 SetKeyValueL( cr, MusSettingsKeys::KEncodingDevice, iEncodingDevice ); |
|
292 } |
|
293 |
|
294 CleanupStack::PopAndDestroy(cr); |
|
295 delete cr; |
|
296 } |
|
297 |
|
298 void COtherResources::SetKeyValueL(CRepository* repository, const TInt & aKey , TInt & aVal) |
|
299 { |
|
300 if(aVal<0) return; // dont care if key is not intially read |
|
301 TUint32 key(aKey); |
|
302 User::LeaveIfError(repository->StartTransaction( |
|
303 CRepository::EConcurrentReadWriteTransaction)); |
|
304 User::LeaveIfError(repository->Set(key,aVal)); |
|
305 User::LeaveIfError(repository->CommitTransaction(key)); |
|
306 } |
|
307 |
|
308 void COtherResources::ReadKeyValueL(CRepository* repository, const TInt & aKey , TInt & aVal) |
|
309 { |
|
310 TUint32 key(aKey); |
|
311 User::LeaveIfError(repository->StartTransaction( |
|
312 CRepository::EConcurrentReadWriteTransaction)); |
|
313 User::LeaveIfError(repository->Get(key,aVal)); |
|
314 User::LeaveIfError(repository->CommitTransaction(key)); |
|
315 } |
|
316 |
|
317 void COtherResources::SetKeyValueL(CRepository* repository, TInt aKey, const TDesC& aVal) |
|
318 { |
|
319 TUint32 key(aKey); |
|
320 User::LeaveIfError(repository->StartTransaction( |
|
321 CRepository::EConcurrentReadWriteTransaction)); |
|
322 User::LeaveIfError(repository->Set(key,aVal)); |
|
323 User::LeaveIfError(repository->CommitTransaction(key)); |
|
324 } |
|
325 |
|
326 void COtherResources::ReadKeyValueL(CRepository* repository, TInt aKey, TDes& aVal) |
|
327 { |
|
328 TUint32 key(aKey); |
|
329 User::LeaveIfError(repository->StartTransaction( |
|
330 CRepository::EConcurrentReadWriteTransaction)); |
|
331 User::LeaveIfError(repository->Get(key,aVal)); |
|
332 User::LeaveIfError(repository->CommitTransaction(key)); |
|
333 } |
|
334 |
|
335 void COtherResources::HandleError(TBool aType , |
|
336 TInt aError , TPtrC aKeyName ) |
|
337 { |
|
338 CAknErrorNote *dlg = new CAknErrorNote(ETrue); |
|
339 TBuf<100> buf; |
|
340 if(aType) |
|
341 { |
|
342 buf.Append(_L("Unable to Read Key ")); |
|
343 } |
|
344 else |
|
345 { |
|
346 buf.Append(_L("Unable to Save Key ")); |
|
347 } |
|
348 buf.Append(aKeyName); |
|
349 buf.Append(_L(" Error ")); |
|
350 buf.AppendNum(aError); |
|
351 dlg->ExecuteLD(buf); |
|
352 } |
|
353 |
|
354 CMusApplication* CMusApplication::NewLC() |
|
355 { |
|
356 // create a new expense object |
|
357 CMusApplication* self = new (ELeave) CMusApplication(); |
|
358 CleanupStack::PushL(self); |
|
359 self->ConstructL(); |
|
360 return self; |
|
361 } |
|
362 |
|
363 CMusApplication* CMusApplication::NewL() |
|
364 { |
|
365 CMusApplication* self = CMusApplication::NewLC(); |
|
366 CleanupStack::Pop(); |
|
367 return self; |
|
368 } |
|
369 |
|
370 void CMusApplication::ConstructL() |
|
371 { |
|
372 iUseCase = MultimediaSharing::EMusLiveVideo; |
|
373 //iMultimediasharing=CMusManager::NewL(); |
|
374 //iMultimediasharing->ExamineAvailabilityL(); |
|
375 } |
|
376 |
|
377 CMusApplication::~CMusApplication() |
|
378 { |
|
379 delete iMultimediasharing; |
|
380 iMultimediasharing=NULL; |
|
381 } |
|
382 |
|
383 void CMusApplication::HandleError(TInt aError , TPtrC aVal ) |
|
384 { |
|
385 CAknErrorNote *dlg = new CAknErrorNote(ETrue); |
|
386 TBuf<100> buf; |
|
387 buf.Append(aVal); |
|
388 buf.Append(_L(" Error ")); |
|
389 buf.AppendNum(aError); |
|
390 dlg->ExecuteLD(buf); |
|
391 } |
|
392 |
|
393 TBool CMusApplication::Start(TInt aUseCase) |
|
394 { |
|
395 /*TRAPD(err,iMultimediasharing->StartApplicationL( |
|
396 MultimediaSharing::TMusUseCase(aUseCase))); |
|
397 if(err)HandleError(err,_L("MusStart ")); |
|
398 return (err)?EFalse :ETrue; */ |
|
399 } |
|
400 |
|
401 TBool CMusApplication::Stop() |
|
402 { |
|
403 TRAPD(err,iMultimediasharing->StopApplicationL()); |
|
404 if(err)HandleError(err,_L("MusStop ")); |
|
405 return (err)?EFalse :ETrue; |
|
406 } |
|
407 |
|
408 TInt CMusApplication::Availability() |
|
409 { |
|
410 TInt status=-1; |
|
411 TRAPD(err,status=iMultimediasharing->AvailabilityL()); |
|
412 if(err)HandleError(err,_L("MusAvailability ")); |
|
413 return status; |
|
414 } |
|
415 TInt CMusApplication::MonitorAvailability() |
|
416 { |
|
417 TInt status = KErrGeneral; |
|
418 /*TRequestStatus requestStatus; |
|
419 TRAPD(err,iMultimediasharing-> |
|
420 MonitorAvailabilityL( |
|
421 requestStatus, |
|
422 MultimediaSharing::TMusAvailabilityStatus(status)) |
|
423 ); |
|
424 if(err)HandleError(err,_L("MusAvailability ")); |
|
425 User::WaitForRequest(requestStatus); |
|
426 */ |
|
427 return status; |
|
428 } |
|
429 |
|
430 |
|
431 |
|
432 TBool CMusApplication::AvailabilityInfo() |
|
433 { |
|
434 TBuf<100> buf(_L("Availability Info: ")); |
|
435 TBool available = EFalse ; |
|
436 switch(Availability()) |
|
437 { |
|
438 case MultimediaSharing::ESipRegistrationPending: |
|
439 buf.Append(_L("SipRegistrationPending ")); |
|
440 break; |
|
441 |
|
442 case MultimediaSharing::ESipOptionsSent: |
|
443 buf.Append(_L("SipOptionsSent ")); |
|
444 available = ETrue ; |
|
445 break; |
|
446 |
|
447 case MultimediaSharing::ESipOptionsNotCapable: |
|
448 buf.Append(_L("SipOptionsNotCapable ")); |
|
449 available = ETrue ; |
|
450 break; |
|
451 |
|
452 case MultimediaSharing::ESipOptionsNotSent: |
|
453 buf.Append(_L("SipOptionsNotSent ")); |
|
454 available = ETrue ; |
|
455 break; |
|
456 |
|
457 case MultimediaSharing::EErrSipRegistration: |
|
458 buf.Append(_L("ErrSipRegistration ")); |
|
459 break; |
|
460 |
|
461 case MultimediaSharing::EErrNoActiveCall: |
|
462 buf.Append(_L("ErrNoActiveCall ")); |
|
463 break; |
|
464 |
|
465 case MultimediaSharing::EErrCallOnHold: |
|
466 buf.Append(_L("ErrCallOnHold ")); |
|
467 break; |
|
468 |
|
469 case MultimediaSharing::EErrConferenceCall: |
|
470 buf.Append(_L("ErrConferenceCall ")); |
|
471 break; |
|
472 |
|
473 case MultimediaSharing::EErrRoaming: |
|
474 buf.Append(_L("ErrRoaming ")); |
|
475 break; |
|
476 |
|
477 case MultimediaSharing::EErrNetwork: |
|
478 buf.Append(_L("ErrNetwork ")); |
|
479 break; |
|
480 |
|
481 default: |
|
482 buf.Append(_L("Error Occured ")); |
|
483 break; |
|
484 |
|
485 } |
|
486 CAknErrorNote *dlg = new CAknErrorNote(ETrue); |
|
487 dlg->ExecuteLD(buf); |
|
488 return available; |
|
489 } |
|
490 |
|
491 void CMusApplication::MusUseCaseInfo(TBool aStart) |
|
492 { |
|
493 CAknErrorNote *dlg = new CAknErrorNote(ETrue); |
|
494 TBuf<50> buf; |
|
495 switch (iUseCase) |
|
496 { |
|
497 case MultimediaSharing::EMusLiveVideo: |
|
498 buf.Append(_L("MusLiveVideo ")); |
|
499 break; |
|
500 case MultimediaSharing::EMusClipVideo: |
|
501 buf.Append(_L("MusClipVideo ")); |
|
502 break; |
|
503 case MultimediaSharing::EMusStillImage: |
|
504 buf.Append(_L("MusStillImage ")); |
|
505 break; |
|
506 case MultimediaSharing::EMusReceive: |
|
507 buf.Append(_L("MusReceive ")); |
|
508 break; |
|
509 case MultimediaSharing::EMusContinue: |
|
510 buf.Append(_L("MusContinue ")); |
|
511 break; |
|
512 default : |
|
513 buf.Append(_L("Unknown Usecase ")); |
|
514 break; |
|
515 } |
|
516 (aStart) ? buf.Append(_L("Started")) : buf.Append(_L("Stoped")); |
|
517 dlg->ExecuteLD(buf); |
|
518 } |
|
519 |
|
520 |
|
521 |
|
522 // End of File |
|
523 |