156 } |
160 } |
157 // --------------------------------------------------------------------------- |
161 // --------------------------------------------------------------------------- |
158 // |
162 // |
159 // --------------------------------------------------------------------------- |
163 // --------------------------------------------------------------------------- |
160 // |
164 // |
161 TInt CCPDataManager::GetActionL( const CCPLiwMap& aMap, |
165 TInt CCPDataManager::GetActionsL( const CCPLiwMap& aMap, TBool aEnableCache, |
162 CLiwGenericParamList& aOutParamList, CLiwDefaultList* aNotificationList ) |
166 CLiwGenericParamList& aOutParamList, CLiwDefaultList* aNotificationList ) |
163 { |
167 { |
164 CP_DEBUG( _L8("CCPDataManager::GetActionL()") ); |
168 CP_DEBUG( _L8("CCPDataManager::GetActionL()") ); |
165 __ASSERT_DEBUG( iStorage , User::Panic( _L("cpserver"), 0 ) ); |
169 __ASSERT_DEBUG( iStorage , User::Panic( _L("cpserver"), 0 ) ); |
166 |
170 |
167 CLiwGenericParamList* paramList = CLiwGenericParamList::NewLC( ); |
171 CLiwGenericParamList* paramList = CLiwGenericParamList::NewLC( ); |
168 TInt result( KErrNone ); |
172 TInt result( KErrNone ); |
169 TRAP( result, iStorage->GetListL( &aMap, *paramList ) ); |
|
170 RBuf8 actionTrigger; |
|
171 actionTrigger.CleanupClosePushL(); |
|
172 |
173 |
173 if ( aMap.GetPropertyL( KActionTrigger, actionTrigger ) ) |
174 CLiwDefaultList* actionTriggers = aMap.GetActionTriggersLC(); |
174 { |
175 |
|
176 if ( actionTriggers ) |
|
177 { |
|
178 TBool cacheable = iActionDataCache->IsCacheableL( &aMap ); |
|
179 if (aEnableCache && cacheable && iActionDataCache->ExistL( &aMap )) |
|
180 { |
|
181 iActionDataCache->GetL( &aMap, paramList ); |
|
182 } |
|
183 else |
|
184 { |
|
185 TRAP( result, iStorage->GetListL( &aMap, *paramList ) ); |
|
186 if ( aEnableCache && cacheable && result == KErrNone ) |
|
187 { |
|
188 iActionDataCache->AppendL(paramList); |
|
189 } |
|
190 } |
|
191 |
175 const TLiwGenericParam* param; |
192 const TLiwGenericParam* param; |
176 TInt pos( 0); |
193 TInt pos( 0); |
177 |
194 |
178 param = paramList->FindFirst( pos, KListMap ); |
195 param = paramList->FindFirst( pos, KListMap ); |
179 //at least one param should be valid to preceed |
196 //at least one param should be valid to preceed |
180 if ( !param || pos == KErrNotFound ) |
197 if ( !param || pos == KErrNotFound ) |
181 { |
198 { |
182 BuildDefaultChangeInfoL(&aMap, aNotificationList); |
199 BuildDefaultChangeInfoL(&aMap, actionTriggers, aNotificationList); |
183 } |
200 } |
184 |
201 |
185 //iteration through paramList items |
202 //iteration through paramList items |
186 while ( param && pos != KErrNotFound ) |
203 while ( param && pos != KErrNotFound ) |
187 { |
204 { |
188 BuildChangeInfoL( &aMap, param, aNotificationList ); |
205 BuildChangeInfoL( &aMap, actionTriggers, param, |
189 FillActionParamListL( aOutParamList, param, actionTrigger ); |
206 aNotificationList ); |
|
207 FillActionParamListL( aOutParamList, param, actionTriggers ); |
190 param = paramList->FindNext( pos, KListMap ); |
208 param = paramList->FindNext( pos, KListMap ); |
191 } |
209 } |
192 } |
210 } |
193 else |
211 else |
194 { |
212 { |
195 User::Leave( KErrNotFound ); |
213 User::Leave( KErrNotFound ); |
196 } |
214 } |
197 CleanupStack::PopAndDestroy( &actionTrigger ); |
215 |
|
216 CleanupStack::PopAndDestroy( actionTriggers ); |
198 CleanupStack::PopAndDestroy( paramList ); |
217 CleanupStack::PopAndDestroy( paramList ); |
199 return result; |
218 return result; |
200 } |
219 } |
201 |
220 |
202 |
221 |
454 // ----------------------------------------------------------------------------- |
484 // ----------------------------------------------------------------------------- |
455 // |
485 // |
456 // ----------------------------------------------------------------------------- |
486 // ----------------------------------------------------------------------------- |
457 // |
487 // |
458 void CCPDataManager::BuildChangeInfoL( const CCPLiwMap* aMap, |
488 void CCPDataManager::BuildChangeInfoL( const CCPLiwMap* aMap, |
|
489 const CLiwDefaultList* aActionTriggers, |
459 const TLiwGenericParam* aParam, |
490 const TLiwGenericParam* aParam, |
460 CLiwDefaultList* aChangeInfoList ) |
491 CLiwDefaultList* aChangeInfoList ) |
461 { |
492 { |
462 TLiwVariant resultVar = aParam->Value(); |
493 TLiwVariant resultVar = aParam->Value(); |
463 if ( resultVar.TypeId() == EVariantTypeMap ) |
494 if ( resultVar.TypeId() == EVariantTypeMap ) |
464 { |
495 { |
465 resultVar.PushL(); |
496 for ( TInt i = 0; i<aActionTriggers->Count(); i++ ) |
466 CLiwDefaultMap* changeInfoMap = CLiwDefaultMap::NewLC(); |
497 { |
|
498 resultVar.PushL(); |
|
499 CLiwDefaultMap* changeInfoMap = CLiwDefaultMap::NewLC(); |
|
500 |
|
501 CopyVariantL(KId, resultVar.AsMap(), changeInfoMap ); |
|
502 CopyVariantL(KPublisherId, resultVar.AsMap(), changeInfoMap ); |
|
503 CopyVariantL(KContentType, resultVar.AsMap(), changeInfoMap ); |
|
504 CopyVariantL(KContentId, resultVar.AsMap(), changeInfoMap ); |
|
505 CopyVariantL(KFlag, resultVar.AsMap(), changeInfoMap ); |
|
506 CopyVariantL(KType, aMap, changeInfoMap ); |
|
507 |
|
508 TLiwVariant trigger; |
|
509 trigger.PushL(); |
|
510 aActionTriggers->AtL(i,trigger); |
|
511 changeInfoMap->InsertL(KActionTrigger, trigger); |
|
512 CopyActionTrigger16L(trigger,changeInfoMap); |
|
513 CleanupStack::PopAndDestroy(&trigger); |
|
514 |
|
515 changeInfoMap->InsertL( KOperation, TLiwVariant( KOperationExecute ) ); |
|
516 |
|
517 aChangeInfoList->AppendL( TLiwVariant( changeInfoMap ) ); |
|
518 CleanupStack::PopAndDestroy( changeInfoMap ); |
|
519 CleanupStack::PopAndDestroy( &resultVar ); |
|
520 } |
|
521 } |
|
522 } |
|
523 |
|
524 |
|
525 // ----------------------------------------------------------------------------- |
|
526 // |
|
527 // ----------------------------------------------------------------------------- |
|
528 // |
|
529 void CCPDataManager::BuildDefaultChangeInfoL( const CCPLiwMap* aMap, |
|
530 const CLiwDefaultList* aActionTriggers, |
|
531 CLiwDefaultList* aChangeInfoList ) |
|
532 { |
|
533 for ( TInt i = 0; i<aActionTriggers->Count(); i++ ) |
|
534 { |
|
535 CLiwDefaultMap* changeInfoMap = CLiwDefaultMap::NewLC(); |
467 |
536 |
468 CopyVariantL(KId, resultVar.AsMap(), changeInfoMap ); |
537 CopyVariantL(KId, aMap, changeInfoMap ); |
469 CopyVariantL(KPublisherId, resultVar.AsMap(), changeInfoMap ); |
538 CopyVariantL(KPublisherId, aMap, changeInfoMap ); |
470 CopyVariantL(KContentType, resultVar.AsMap(), changeInfoMap ); |
539 CopyVariantL(KContentType, aMap, changeInfoMap ); |
471 CopyVariantL(KContentId, resultVar.AsMap(), changeInfoMap ); |
540 CopyVariantL(KContentId, aMap, changeInfoMap ); |
472 CopyVariantL(KFlag, resultVar.AsMap(), changeInfoMap ); |
541 CopyVariantL(KFlag, aMap, changeInfoMap ); |
473 CopyVariantL(KType, aMap, changeInfoMap ); |
542 CopyVariantL(KType, aMap, changeInfoMap ); |
474 CopyVariantL(KActionTrigger, aMap, changeInfoMap ); |
543 |
475 CopyActionTrigger16L( aMap, changeInfoMap ); |
544 TLiwVariant trigger; |
476 |
545 trigger.PushL(); |
|
546 aActionTriggers->AtL(i,trigger); |
|
547 changeInfoMap->InsertL(KActionTrigger, trigger); |
|
548 CopyActionTrigger16L(trigger,changeInfoMap); |
|
549 CleanupStack::PopAndDestroy(&trigger); |
|
550 |
477 changeInfoMap->InsertL( KOperation, TLiwVariant( KOperationExecute ) ); |
551 changeInfoMap->InsertL( KOperation, TLiwVariant( KOperationExecute ) ); |
478 |
552 |
479 aChangeInfoList->AppendL( TLiwVariant( changeInfoMap ) ); |
553 aChangeInfoList->AppendL( TLiwVariant( changeInfoMap ) ); |
480 CleanupStack::PopAndDestroy( changeInfoMap ); |
554 CleanupStack::PopAndDestroy( changeInfoMap ); |
481 CleanupStack::PopAndDestroy( &resultVar ); |
555 } |
482 } |
|
483 } |
|
484 |
|
485 |
|
486 // ----------------------------------------------------------------------------- |
|
487 // |
|
488 // ----------------------------------------------------------------------------- |
|
489 // |
|
490 void CCPDataManager::BuildDefaultChangeInfoL( const CCPLiwMap* aMap, |
|
491 CLiwDefaultList* aChangeInfoList ) |
|
492 { |
|
493 CLiwDefaultMap* changeInfoMap = CLiwDefaultMap::NewLC(); |
|
494 |
|
495 CopyVariantL(KId, aMap, changeInfoMap ); |
|
496 CopyVariantL(KPublisherId, aMap, changeInfoMap ); |
|
497 CopyVariantL(KContentType, aMap, changeInfoMap ); |
|
498 CopyVariantL(KContentId, aMap, changeInfoMap ); |
|
499 CopyVariantL(KFlag, aMap, changeInfoMap ); |
|
500 CopyVariantL(KType, aMap, changeInfoMap ); |
|
501 CopyVariantL(KActionTrigger, aMap, changeInfoMap ); |
|
502 CopyActionTrigger16L( aMap, changeInfoMap ); |
|
503 |
|
504 changeInfoMap->InsertL( KOperation, TLiwVariant( KOperationExecute ) ); |
|
505 |
|
506 aChangeInfoList->AppendL( TLiwVariant( changeInfoMap ) ); |
|
507 CleanupStack::PopAndDestroy( changeInfoMap ); |
|
508 } |
556 } |
509 |
557 |
510 // ----------------------------------------------------------------------------- |
558 // ----------------------------------------------------------------------------- |
511 // |
559 // |
512 // ----------------------------------------------------------------------------- |
560 // ----------------------------------------------------------------------------- |
557 { |
605 { |
558 TLiwVariant variant; |
606 TLiwVariant variant; |
559 variant.PushL(); |
607 variant.PushL(); |
560 if ( aInMap->FindL( KActionTrigger(), variant ) ) |
608 if ( aInMap->FindL( KActionTrigger(), variant ) ) |
561 { |
609 { |
562 |
610 CopyActionTrigger16L(variant,aOutMap); |
563 TPtrC8 result8( KNullDesC8 ); |
|
564 if( variant.Get( result8 ) ) |
|
565 { |
|
566 RBuf actionTrigger; |
|
567 actionTrigger.CleanupClosePushL(); |
|
568 actionTrigger.Assign( |
|
569 EscapeUtils::ConvertToUnicodeFromUtf8L( result8 ) ); |
|
570 |
|
571 variant.Reset(); |
|
572 variant.Set( actionTrigger ); |
|
573 CleanupStack::PopAndDestroy( &actionTrigger ); |
|
574 } |
|
575 |
|
576 aOutMap->InsertL( KActionTrigger16(), variant ); |
|
577 } |
611 } |
578 CleanupStack::PopAndDestroy( &variant ); |
612 CleanupStack::PopAndDestroy( &variant ); |
579 } |
613 } |
580 |
614 |
|
615 // ----------------------------------------------------------------------------- |
|
616 // |
|
617 // ----------------------------------------------------------------------------- |
|
618 // |
|
619 void CCPDataManager::CopyActionTrigger16L( const TLiwVariant& aVariant, |
|
620 CLiwDefaultMap* aOutMap ) |
|
621 { |
|
622 if( aVariant.TypeId() == EVariantTypeDesC8 ) |
|
623 { |
|
624 TLiwVariant variant; |
|
625 variant.PushL(); |
|
626 RBuf desc16; |
|
627 desc16.CleanupClosePushL(); |
|
628 desc16.Assign( |
|
629 EscapeUtils::ConvertToUnicodeFromUtf8L( aVariant.AsData()) ); |
|
630 variant.Set( desc16 ); |
|
631 aOutMap->InsertL(KActionTrigger16(),variant); |
|
632 CleanupStack::PopAndDestroy( &desc16 ); |
|
633 CleanupStack::PopAndDestroy( &variant ); |
|
634 } |
|
635 } |
|
636 |