omads/omadsappui/AspSyncUtil/src/AspPreSyncPluginInterface.cpp
branchRCL_3
changeset 18 a564f66a2339
parent 0 dab8a81a92de
child 24 661c849b1858
equal deleted inserted replaced
17:4d5e9526124e 18:a564f66a2339
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 // INCLUDE FILES
    19 // INCLUDE FILES
       
    20 #include <nsmlconstants.h>
    20 #include "AspPreSyncPluginInterface.h"
    21 #include "AspPreSyncPluginInterface.h"
    21 #include "CPreSyncPlugin.h"
    22 #include "CPreSyncPlugin.h"
    22 
    23 
    23 _LIT(kDefault,"DEFAULT");
    24 _LIT(kDefault,"DEFAULT");
    24 
    25 
    94     RImplInfoPtrArray infoArray;
    95     RImplInfoPtrArray infoArray;
    95     TBool bHandleSync = EFalse;
    96     TBool bHandleSync = EFalse;
    96     CPreSyncPlugin* syncPlugin = NULL;
    97     CPreSyncPlugin* syncPlugin = NULL;
    97     CPreSyncPlugin* defaultSyncPlugin = NULL;
    98     CPreSyncPlugin* defaultSyncPlugin = NULL;
    98 
    99 
       
   100 	CleanupRImplInfoPtrArrayPushL( &infoArray );
       
   101 
    99     // Get list of all implementations
   102     // Get list of all implementations
   100     TRAPD(error, ListAllImplementationsL( infoArray ));
   103     TRAPD(error, ListAllImplementationsL( infoArray ));
   101     
   104     
   102     if (error != KErrNone)
   105     if (error != KErrNone)
   103         {
   106         {
       
   107 		CleanupStack::PopAndDestroy( &infoArray );
   104         return NULL;
   108         return NULL;
   105         }
   109         }
   106     // Instantiate plugins for all impUIds by calling 
   110     // Instantiate plugins for all impUIds by calling 
   107     // InstantiatePlugInFromImpUidLC
   111     // InstantiatePlugInFromImpUidL
   108     for ( TInt i=0; i<infoArray.Count(); i++ )
   112     for ( TInt i=0; i<infoArray.Count(); i++ )
   109         {
   113         {
   110         // Get imp info
   114         // Get imp info
   111         CImplementationInformation& info( *infoArray[i] );
   115         CImplementationInformation& info( *infoArray[i] );
   112 
   116 
   114 	    
   118 	    
   115 
   119 
   116         if ( info.DisplayName().Compare(kDefault) == 0 )
   120         if ( info.DisplayName().Compare(kDefault) == 0 )
   117             {			
   121             {			
   118 	        //instantiate plugin for impUid
   122 	        //instantiate plugin for impUid
   119 	        defaultSyncPlugin = InstantiatePlugInFromImpUidLC( impUid );
   123 	        defaultSyncPlugin = InstantiatePlugInFromImpUidL( impUid );
   120 	        defaultSyncPlugin->SetProfile(aProfileId);
   124 			defaultSyncPlugin->SetProfile(aProfileId);
   121             }
   125             }
   122 		else
   126 		else
   123 		    {
   127 		    {
   124 			syncPlugin = InstantiatePlugInFromImpUidLC( impUid );
   128 			syncPlugin = InstantiatePlugInFromImpUidL( impUid );
   125 			syncPlugin->SetProfile(aProfileId);
   129 			syncPlugin->SetProfile(aProfileId);
   126 			if(syncPlugin->IsSupported())
   130 			if(syncPlugin->IsSupported())
   127 			    {
   131 			    {
   128 				bHandleSync = ETrue;
   132 				bHandleSync = ETrue;
   129 				break;
   133 				break;
   130 			    }
   134 			    }
   131 			else
   135 			else
   132 			    {
   136 			    {
   133 			    CleanupStack::PopAndDestroy(syncPlugin);
   137                 delete syncPlugin;
   134 			    }
   138 			    }
   135 		    }
   139 		    }
   136         }
   140         }
   137 
   141 
   138     infoArray.ResetAndDestroy();
   142     CleanupStack::PopAndDestroy( &infoArray );
   139 	if(bHandleSync)
   143 	if(bHandleSync)
   140 	{		
   144 	{		
   141 		//delete defaultSyncPlugin;
   145 		//delete defaultSyncPlugin;
   142 	    if(defaultSyncPlugin != NULL)
   146 	    if(defaultSyncPlugin != NULL)
   143 	    {
   147 	    {
   144 	    CleanupStack::PopAndDestroy(defaultSyncPlugin);
   148 	    delete defaultSyncPlugin;
   145 	    }
   149 	    }
       
   150 	    CleanupStack::PushL(syncPlugin);
   146 		return syncPlugin;
   151 		return syncPlugin;
   147 	}
   152 	}
   148 	else
   153 	else
   149 	{
   154 	{      
       
   155         CleanupStack::PushL(defaultSyncPlugin);
   150 		return defaultSyncPlugin;
   156 		return defaultSyncPlugin;
   151 	}    
   157 	}    
   152  }
   158  }
   153 
   159 
   154 // -----------------------------------------------------------------------------
   160 // -----------------------------------------------------------------------------
   159 {    
   165 {    
   160     REComSession::FinalClose();
   166     REComSession::FinalClose();
   161 }
   167 }
   162 
   168 
   163 // ----------------------------------------------------------------------------
   169 // ----------------------------------------------------------------------------
   164 // CPreSyncPluginInterface::InstantiatePlugInFromImpUidLC
   170 // CPreSyncPluginInterface::InstantiatePlugInFromImpUidL
   165 // Instantiates plugin
   171 // Instantiates plugin
   166 // ---------------------------------------------------------------------------- 
   172 // ---------------------------------------------------------------------------- 
   167 CPreSyncPlugin* CPreSyncPluginInterface::InstantiatePlugInFromImpUidLC( const TUid& aImpUid )
   173 CPreSyncPlugin* CPreSyncPluginInterface::InstantiatePlugInFromImpUidL( const TUid& aImpUid )
   168 {    
   174 {    
   169    // REComSession
   175    // REComSession
   170     CPreSyncPlugin *preSyncPlugin = CPreSyncPlugin::NewL(aImpUid);    
   176     CPreSyncPlugin *preSyncPlugin = CPreSyncPlugin::NewL(aImpUid);    
   171     CleanupStack::PushL(preSyncPlugin);
       
   172     return preSyncPlugin;
   177     return preSyncPlugin;
   173 }
   178 }
   174     
   179     
   175     
   180