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 |