convergedcallengine/cce/src/cccepluginmanager.cpp
branchRCL_3
changeset 20 987c9837762f
parent 19 7d48bed6ce0c
equal deleted inserted replaced
19:7d48bed6ce0c 20:987c9837762f
    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 );  // return value ignored..
   474         iAlternativeEmergencyPlugins.Append( aUid );  
   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     // performance note: a loop is nothing but keeping count in a register, decrementing it's
   612     for( TInt i=0; i<iPluginArray.Count(); i++ )
   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++ )
       
   617         {
   613         {
   618         if( iPluginArray[i]->Type().iUid == aImplementationUid.iUid )
   614         if( iPluginArray[i]->Type().iUid == aImplementationUid.iUid )
   619             {
   615             {
   620             plugin =  iPluginArray[i];
   616             plugin =  iPluginArray[i];
   621             i = count;
   617             i = iPluginArray.Count();
   622             }
   618             }
   623         }
   619         }
   624   
   620   
   625     if ( !plugin )
   621     if ( !plugin )
   626         {
   622         {
   658     TInt pluginCount = iPluginArray.Count();
   654     TInt pluginCount = iPluginArray.Count();
   659     for (TInt a = 0; a < pluginCount; a++)
   655     for (TInt a = 0; a < pluginCount; a++)
   660         {
   656         {
   661         if ( iPluginArray[a]->Type() == aPluginId )
   657         if ( iPluginArray[a]->Type() == aPluginId )
   662             {
   658             {
   663             if( KErrNone == iPluginsToClose.Append(iPluginArray[a]))
   659             iPluginsToClose.Append(iPluginArray[a]);
   664                 {          
   660             if (!iIdle->IsActive())
   665                 if (!iIdle->IsActive())
   661                 {
   666                     {
   662                 iIdle->Start( TCallBack(RemovePlugins,this) );
   667                     iIdle->Start( TCallBack(RemovePlugins,this) );
       
   668                     }
       
   669                 iPluginArray.Remove(a);
       
   670                 iPluginArray.Compress();
       
   671                 return;
       
   672                 }
   663                 }
       
   664             iPluginArray.Remove(a);
       
   665             iPluginArray.Compress();
       
   666             return;
   673             }
   667             }
   674         }
   668         }
   675     }
   669     }
   676 // -----------------------------------------------------------------------------
   670 // -----------------------------------------------------------------------------
   677 // From class MPluginObserver.
   671 // From class MPluginObserver.
   692     TInt pluginCount = iPluginArray.Count();
   686     TInt pluginCount = iPluginArray.Count();
   693     for (TInt a = 0; a < pluginCount; a++)
   687     for (TInt a = 0; a < pluginCount; a++)
   694         {
   688         {
   695         if ( iPluginArray[a]->Type() == aPluginUid )
   689         if ( iPluginArray[a]->Type() == aPluginUid )
   696             {
   690             {
   697             if( KErrNone == iPluginsToClose.Append(iPluginArray[a]))
   691             iPluginsToClose.Append(iPluginArray[a]);
   698                 {          
   692             if (!iIdle->IsActive())
   699                 if (!iIdle->IsActive())
   693                 {
   700                     {
   694                 iIdle->Start( TCallBack(RemovePlugins,this) );
   701                     iIdle->Start( TCallBack(RemovePlugins,this) );
       
   702                     }
       
   703                 iPluginArray.Remove(a);
       
   704                 iPluginArray.Compress();
       
   705                 return;
       
   706                 }
   695                 }
       
   696             iPluginArray.Remove(a);
       
   697             iPluginArray.Compress();
       
   698             return;
   707             }
   699             }
   708         }
   700         }
   709     }
   701     }
   710     
   702     
   711 // end of file
   703 // end of file