equal
deleted
inserted
replaced
71 void CCCEPluginManager::ConstructL() |
71 void CCCEPluginManager::ConstructL() |
72 { |
72 { |
73 #if 0 |
73 #if 0 |
74 // capabilities still todo here |
74 // capabilities still todo here |
75 |
75 |
76 static _LIT_SECURITY_POLICY_PASS( KAllowAllPolicy ); |
76 static _LIT_SECURITY_POLICY_PASS( KAllowAllPolicy ); |
77 static _LIT_SECURITY_POLICY_C2( KICMPolicy, |
77 static _LIT_SECURITY_POLICY_C2( KICMPolicy, |
78 ECapabilityNetworkControl, |
78 ECapabilityNetworkControl, |
79 ECapabilityWriteDeviceData); |
79 ECapabilityWriteDeviceData); |
80 |
80 |
81 |
81 |
82 // define first property to be integer type |
82 // define first property to be integer type |
83 TInt err = RProperty::Define( KPSUidICMIncomingCall, |
83 TInt err = RProperty::Define( KPSUidICMIncomingCall, |
84 KPropertyKeyICMPluginUID, RProperty::EInt, KAllowAllPolicy, KICMPolicy ); |
84 KPropertyKeyICMPluginUID, RProperty::EInt, KAllowAllPolicy, KICMPolicy ); |
469 CCELOGSTRING("CCCEPluginManager::AddToAlternativeEmergencyArray: Is Primary emergency plugin "); |
469 CCELOGSTRING("CCCEPluginManager::AddToAlternativeEmergencyArray: Is Primary emergency plugin "); |
470 } |
470 } |
471 else if( iAlternativeEmergencyPlugins.Find( aUid ) == KErrNotFound ) |
471 else if( iAlternativeEmergencyPlugins.Find( aUid ) == KErrNotFound ) |
472 { |
472 { |
473 CCELOGSTRING("CCCEPluginManager::AddToAlternativeEmergencyArray: New plugin. Append to array "); |
473 CCELOGSTRING("CCCEPluginManager::AddToAlternativeEmergencyArray: New plugin. Append to array "); |
474 iAlternativeEmergencyPlugins.Append( aUid ); |
474 iAlternativeEmergencyPlugins.Append( aUid ); // return value ignored.. |
475 } |
475 } |
476 else |
476 else |
477 { |
477 { |
478 CCELOGSTRING("CCCEPluginManager::AddToAlternativeEmergencyArray: Is already in Alternative Plugins "); |
478 CCELOGSTRING("CCCEPluginManager::AddToAlternativeEmergencyArray: Is already in Alternative Plugins "); |
479 } |
479 } |
607 const MCCPDTMFObserver& aObserver, |
607 const MCCPDTMFObserver& aObserver, |
608 TUid aImplementationUid ) const |
608 TUid aImplementationUid ) const |
609 { |
609 { |
610 CCCEPlugin* plugin( NULL ); |
610 CCCEPlugin* plugin( NULL ); |
611 |
611 |
612 for( TInt i=0; i<iPluginArray.Count(); i++ ) |
612 // performance note: a loop is nothing but keeping count in a register, decrementing it's |
|
613 // value after each iteration and jumping back. |
|
614 // But, calling RPointerArray.Count() is expensive.. that's why const TInt count |
|
615 const TInt count = iPluginArray.Count(); |
|
616 for( TInt i=0; i < count; i++ ) |
613 { |
617 { |
614 if( iPluginArray[i]->Type().iUid == aImplementationUid.iUid ) |
618 if( iPluginArray[i]->Type().iUid == aImplementationUid.iUid ) |
615 { |
619 { |
616 plugin = iPluginArray[i]; |
620 plugin = iPluginArray[i]; |
617 i = iPluginArray.Count(); |
621 i = count; |
618 } |
622 } |
619 } |
623 } |
620 |
624 |
621 if ( !plugin ) |
625 if ( !plugin ) |
622 { |
626 { |
654 TInt pluginCount = iPluginArray.Count(); |
658 TInt pluginCount = iPluginArray.Count(); |
655 for (TInt a = 0; a < pluginCount; a++) |
659 for (TInt a = 0; a < pluginCount; a++) |
656 { |
660 { |
657 if ( iPluginArray[a]->Type() == aPluginId ) |
661 if ( iPluginArray[a]->Type() == aPluginId ) |
658 { |
662 { |
659 iPluginsToClose.Append(iPluginArray[a]); |
663 if( KErrNone == iPluginsToClose.Append(iPluginArray[a])) |
660 if (!iIdle->IsActive()) |
664 { |
661 { |
665 if (!iIdle->IsActive()) |
662 iIdle->Start( TCallBack(RemovePlugins,this) ); |
666 { |
|
667 iIdle->Start( TCallBack(RemovePlugins,this) ); |
|
668 } |
|
669 iPluginArray.Remove(a); |
|
670 iPluginArray.Compress(); |
|
671 return; |
663 } |
672 } |
664 iPluginArray.Remove(a); |
|
665 iPluginArray.Compress(); |
|
666 return; |
|
667 } |
673 } |
668 } |
674 } |
669 } |
675 } |
670 // ----------------------------------------------------------------------------- |
676 // ----------------------------------------------------------------------------- |
671 // From class MPluginObserver. |
677 // From class MPluginObserver. |
686 TInt pluginCount = iPluginArray.Count(); |
692 TInt pluginCount = iPluginArray.Count(); |
687 for (TInt a = 0; a < pluginCount; a++) |
693 for (TInt a = 0; a < pluginCount; a++) |
688 { |
694 { |
689 if ( iPluginArray[a]->Type() == aPluginUid ) |
695 if ( iPluginArray[a]->Type() == aPluginUid ) |
690 { |
696 { |
691 iPluginsToClose.Append(iPluginArray[a]); |
697 if( KErrNone == iPluginsToClose.Append(iPluginArray[a])) |
692 if (!iIdle->IsActive()) |
698 { |
693 { |
699 if (!iIdle->IsActive()) |
694 iIdle->Start( TCallBack(RemovePlugins,this) ); |
700 { |
|
701 iIdle->Start( TCallBack(RemovePlugins,this) ); |
|
702 } |
|
703 iPluginArray.Remove(a); |
|
704 iPluginArray.Compress(); |
|
705 return; |
695 } |
706 } |
696 iPluginArray.Remove(a); |
|
697 iPluginArray.Compress(); |
|
698 return; |
|
699 } |
707 } |
700 } |
708 } |
701 } |
709 } |
702 |
710 |
703 // end of file |
711 // end of file |