48 #include <CPbk2StoreSpecificFieldPropertyArray.h> |
50 #include <CPbk2StoreSpecificFieldPropertyArray.h> |
49 #include <CPbk2FieldPropertyArray.h> |
51 #include <CPbk2FieldPropertyArray.h> |
50 #include <CPbk2SortOrderManager.h> |
52 #include <CPbk2SortOrderManager.h> |
51 #include <Pbk2ContactNameFormatterFactory.h> |
53 #include <Pbk2ContactNameFormatterFactory.h> |
52 #include <MPbk2ContactNameFormatter.h> |
54 #include <MPbk2ContactNameFormatter.h> |
53 #include <CPbk2ApplicationServices.h> |
55 #include <CPbk2ApplicationServices.h> |
54 #include <CPbk2StoreManager.h> |
56 #include <CPbk2StoreManager.h> |
55 #include <CPbk2StoreConfiguration.h> |
57 #include <CPbk2StoreConfiguration.h> |
56 #include <CPbk2ContactEditorDlg.h> |
58 #include <CPbk2ContactEditorDlg.h> |
57 #include <MVPbkBaseContactField.h> |
59 #include <MVPbkBaseContactField.h> |
|
60 |
58 // internal |
61 // internal |
59 #include "ccappmycardplugin.h" |
62 #include "ccappmycardplugin.h" |
60 #include <ccappmycardpluginrsc.rsg> |
63 #include <ccappmycardpluginrsc.rsg> |
61 |
64 |
|
65 /** |
|
66 * Helper class for making delayed callbacks |
|
67 * @see public methods of CTimer for help |
|
68 */ |
|
69 class CTimerCallBack : public CTimer |
|
70 { |
|
71 public: |
|
72 /** |
|
73 * @param aCallBack called when CTimer is due to run |
|
74 * @param aPriority priority of CTimer |
|
75 */ |
|
76 static CTimerCallBack* NewL( |
|
77 const TCallBack& aCallBack, |
|
78 CActive::TPriority aPriority = CActive::EPriorityIdle ); |
|
79 |
|
80 protected: // From CActive |
|
81 void RunL(); |
|
82 TInt RunError( TInt /*aError*/ ); |
|
83 |
|
84 protected: |
|
85 CTimerCallBack( const TCallBack& aCallBack, CActive::TPriority aPriority ); |
|
86 |
|
87 private: // data |
|
88 TCallBack iCallBack; |
|
89 }; |
|
90 |
|
91 |
|
92 // --------------------------------------------------------------------------- |
|
93 // CTimerCallBack::NewL |
|
94 // --------------------------------------------------------------------------- |
|
95 // |
|
96 CTimerCallBack* CTimerCallBack::NewL( |
|
97 const TCallBack& aCallBack, |
|
98 CActive::TPriority aPriority ) |
|
99 { |
|
100 CTimerCallBack* self = new(ELeave) CTimerCallBack( aCallBack, aPriority ); |
|
101 CleanupStack::PushL( self ); |
|
102 self->ConstructL(); |
|
103 CleanupStack::Pop( self ); |
|
104 return self; |
|
105 } |
|
106 |
|
107 // --------------------------------------------------------------------------- |
|
108 // CTimerCallBack::RunL |
|
109 // --------------------------------------------------------------------------- |
|
110 // |
|
111 CTimerCallBack::CTimerCallBack( const TCallBack& aCallBack, CActive::TPriority aPriority ) : |
|
112 CTimer( aPriority ), iCallBack( aCallBack ) |
|
113 { |
|
114 CActiveScheduler::Add( this ); |
|
115 } |
|
116 |
|
117 // --------------------------------------------------------------------------- |
|
118 // CTimerCallBack::RunL |
|
119 // --------------------------------------------------------------------------- |
|
120 // |
|
121 void CTimerCallBack::RunL() |
|
122 { |
|
123 iCallBack.CallBack(); |
|
124 } |
|
125 |
|
126 // --------------------------------------------------------------------------- |
|
127 // CTimerCallBack::RunError |
|
128 // --------------------------------------------------------------------------- |
|
129 // |
|
130 TInt CTimerCallBack::RunError( TInt /*aError*/ ) |
|
131 { |
|
132 // Leaves in RunL are ignored |
|
133 return KErrNone; |
|
134 } |
|
135 |
62 |
136 |
63 // ======== MEMBER FUNCTIONS ======== |
137 // ======== MEMBER FUNCTIONS ======== |
64 |
138 |
65 // --------------------------------------------------------------------------- |
139 // --------------------------------------------------------------------------- |
66 // CCCAppMyCard::NewL |
140 // CCCAppMyCard::NewL |
67 // --------------------------------------------------------------------------- |
141 // --------------------------------------------------------------------------- |
68 // |
142 // |
69 CCCAppMyCard* CCCAppMyCard::NewL( CCCAppMyCardPlugin& aPlugin, RFs* aFs ) |
143 CCCAppMyCard* CCCAppMyCard::NewL( CCCAppMyCardPlugin& aPlugin, RFs* aFs ) |
70 { |
144 { |
71 CCA_DP(KMyCardLogFile, CCA_L("->CCCAppMyCard::NewL()")); |
145 CCA_DP(KMyCardLogFile, CCA_L("->CCCAppMyCard::NewL()")); |
72 |
146 |
73 CCCAppMyCard* self = new ( ELeave ) CCCAppMyCard( aPlugin ); |
147 CCCAppMyCard* self = new ( ELeave ) CCCAppMyCard( aPlugin ); |
74 CleanupStack::PushL( self ); |
148 CleanupStack::PushL( self ); |
75 self->ConstructL(aFs); |
149 self->ConstructL(aFs); |
76 CleanupStack::Pop( self ); |
150 CleanupStack::Pop( self ); |
77 |
151 |
78 CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCard::NewL()")); |
152 CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCard::NewL()")); |
79 return self; |
153 return self; |
80 } |
154 } |
81 |
155 |
82 // --------------------------------------------------------------------------- |
156 // --------------------------------------------------------------------------- |
92 delete iMyCard; |
166 delete iMyCard; |
93 delete iPresentationContact; |
167 delete iPresentationContact; |
94 delete iMyCardContact; |
168 delete iMyCardContact; |
95 delete iFieldProperties; |
169 delete iFieldProperties; |
96 delete iSpecificFieldProperties; |
170 delete iSpecificFieldProperties; |
97 |
171 |
98 iObservers.Reset(); |
172 iObservers.Reset(); |
99 |
173 |
100 if( iAppServices ) |
174 if( iAppServices ) |
101 { |
175 { |
102 iAppServices->StoreManager().DeregisterStoreEvents(*this); |
176 iAppServices->StoreManager().DeregisterStoreEvents(*this); |
103 } |
177 } |
104 Release(iAppServices); |
178 Release(iAppServices); |
105 |
179 |
106 delete iCloseCallBack; |
180 delete iCloseCallBack; |
107 delete iCreateCallBack; |
181 delete iCreateCallBack; |
108 delete iDlgCloseCallBack; |
182 delete iDlgCloseCallBack; |
|
183 delete iStoreCallBack; |
109 |
184 |
110 CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCard::~CCCAppMyCard()")); |
185 CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCard::~CCCAppMyCard()")); |
111 } |
186 } |
112 |
187 |
113 // --------------------------------------------------------------------------- |
188 // --------------------------------------------------------------------------- |
114 // CCCAppMyCard::CCCAppMyCard() |
189 // CCCAppMyCard::CCCAppMyCard() |
115 // --------------------------------------------------------------------------- |
190 // --------------------------------------------------------------------------- |
116 // |
191 // |
117 inline CCCAppMyCard::CCCAppMyCard( CCCAppMyCardPlugin& aPlugin ) |
192 inline CCCAppMyCard::CCCAppMyCard( CCCAppMyCardPlugin& aPlugin ) |
118 : iPlugin( aPlugin ) |
193 : iPlugin( aPlugin ), iEvent( MMyCardObserver::EEventContactLoaded ) |
|
194 |
119 { |
195 { |
120 } |
196 } |
121 |
197 |
122 // --------------------------------------------------------------------------- |
198 // --------------------------------------------------------------------------- |
123 // CCCAppMyCard::ConstructL |
199 // CCCAppMyCard::ConstructL |
125 // |
201 // |
126 inline void CCCAppMyCard::ConstructL( RFs* /*aFs*/ ) |
202 inline void CCCAppMyCard::ConstructL( RFs* /*aFs*/ ) |
127 { |
203 { |
128 // Get the AppServices instance |
204 // Get the AppServices instance |
129 iAppServices = CPbk2ApplicationServices::InstanceL(); |
205 iAppServices = CPbk2ApplicationServices::InstanceL(); |
130 |
206 |
131 CPbk2StoreManager& storeManager = iAppServices->StoreManager(); |
207 CPbk2StoreManager& storeManager = iAppServices->StoreManager(); |
132 iVPbkContactManager = &iAppServices->ContactManager(); |
208 iVPbkContactManager = &iAppServices->ContactManager(); |
133 storeManager.RegisterStoreEventsL( *this ); |
209 storeManager.RegisterStoreEventsL( *this ); |
134 storeManager.EnsureDefaultSavingStoreIncludedL(); |
210 storeManager.EnsureDefaultSavingStoreIncludedL(); |
135 // open stores |
211 |
136 storeManager.OpenStoresL(); |
212 iCloseCallBack = new(ELeave) CAsyncCallBack( |
137 |
213 TCallBack( CloseCcaL, this ), CActive::EPriorityIdle ); |
138 iCloseCallBack = new(ELeave) CAsyncCallBack( |
214 iCreateCallBack = new(ELeave) CAsyncCallBack( |
139 TCallBack( CloseCcaL, this ), CActive::EPriorityIdle ); |
215 TCallBack( CreateMyCardContact, this ), CActive::EPriorityHigh ); |
140 iCreateCallBack = new(ELeave) CAsyncCallBack( |
216 iDlgCloseCallBack = new(ELeave) CAsyncCallBack( |
141 TCallBack( CreateMyCardContact, this ), CActive::EPriorityHigh ); |
|
142 iDlgCloseCallBack = new(ELeave) CAsyncCallBack( |
|
143 TCallBack( ExitDlgL, this ), CActive::EPriorityHigh ); |
217 TCallBack( ExitDlgL, this ), CActive::EPriorityHigh ); |
144 } |
218 } |
145 |
219 |
146 // --------------------------------------------------------------------------- |
220 // --------------------------------------------------------------------------- |
147 // CCCAppMyCard::PresentationContactL |
221 // CCCAppMyCard::PresentationContactL |
154 if( !iMyCardContact ) |
228 if( !iMyCardContact ) |
155 { |
229 { |
156 // own contact not loaded |
230 // own contact not loaded |
157 User::Leave( KErrNotReady ); |
231 User::Leave( KErrNotReady ); |
158 } |
232 } |
159 |
233 |
160 const MVPbkContactStoreProperties& storeProperties = |
234 const MVPbkContactStoreProperties& storeProperties = |
161 iMyCardContact->ParentStore().StoreProperties(); |
235 iMyCardContact->ParentStore().StoreProperties(); |
162 const MVPbkFieldTypeList& supportedFieldTypes = |
236 const MVPbkFieldTypeList& supportedFieldTypes = |
163 storeProperties.SupportedFields(); |
237 storeProperties.SupportedFields(); |
164 |
238 |
165 if( !iFieldProperties ) |
239 if( !iFieldProperties ) |
166 { |
240 { |
167 iFieldProperties = CPbk2FieldPropertyArray::NewL( |
241 iFieldProperties = CPbk2FieldPropertyArray::NewL( |
168 supportedFieldTypes, iVPbkContactManager->FsSession() ); |
242 supportedFieldTypes, iVPbkContactManager->FsSession() ); |
169 } |
243 } |
170 |
244 |
171 // Create a field property list of the supported |
245 // Create a field property list of the supported |
172 // field types of the used store |
246 // field types of the used store |
173 CPbk2StorePropertyArray* pbk2StoreProperties = CPbk2StorePropertyArray::NewL(); |
247 CPbk2StorePropertyArray* pbk2StoreProperties = CPbk2StorePropertyArray::NewL(); |
174 CleanupStack::PushL( pbk2StoreProperties ); |
248 CleanupStack::PushL( pbk2StoreProperties ); |
175 |
249 |
176 if( !iSpecificFieldProperties ) |
250 if( !iSpecificFieldProperties ) |
177 { |
251 { |
178 iSpecificFieldProperties = CPbk2StoreSpecificFieldPropertyArray::NewL( |
252 iSpecificFieldProperties = CPbk2StoreSpecificFieldPropertyArray::NewL( |
179 *iFieldProperties, |
253 *iFieldProperties, |
180 *pbk2StoreProperties, |
254 *pbk2StoreProperties, |
181 supportedFieldTypes, |
255 supportedFieldTypes, |
182 iMyCardContact->ParentStore() ); |
256 iMyCardContact->ParentStore() ); |
183 } |
257 } |
184 |
258 |
185 iPresentationContact = CPbk2PresentationContact::NewL( |
259 iPresentationContact = CPbk2PresentationContact::NewL( |
186 *iMyCardContact, *iSpecificFieldProperties ); |
260 *iMyCardContact, *iSpecificFieldProperties ); |
187 |
261 |
188 CleanupStack::PopAndDestroy( pbk2StoreProperties ); |
262 CleanupStack::PopAndDestroy( pbk2StoreProperties ); |
189 } |
263 } |
190 |
264 |
191 return *iPresentationContact; |
265 return *iPresentationContact; |
192 } |
266 } |
193 |
267 |
194 // --------------------------------------------------------------------------- |
268 // --------------------------------------------------------------------------- |
195 // CCCAppMyCard::StoreContact |
269 // CCCAppMyCard::StoreContact |
258 TInt index = iObservers.Find( aObserver ); |
332 TInt index = iObservers.Find( aObserver ); |
259 if( index != KErrNotFound ) |
333 if( index != KErrNotFound ) |
260 { |
334 { |
261 iObservers.Remove( index ); |
335 iObservers.Remove( index ); |
262 } |
336 } |
|
337 } |
|
338 |
|
339 // --------------------------------------------------------------------------- |
|
340 // CCCAppMyCard::SetLinkL |
|
341 // --------------------------------------------------------------------------- |
|
342 // |
|
343 void CCCAppMyCard::SetLinkL( const MVPbkContactLink& aLink ) |
|
344 { |
|
345 MVPbkContactLink* link = aLink.CloneLC(); |
|
346 CleanupStack::Pop(); // link |
|
347 delete iMyCard; |
|
348 iMyCard = link; |
|
349 } |
|
350 |
|
351 // --------------------------------------------------------------------------- |
|
352 // CCCAppMyCard::FetchMyCardL |
|
353 // --------------------------------------------------------------------------- |
|
354 // |
|
355 void CCCAppMyCard::FetchMyCardL() |
|
356 { |
|
357 if( !iStoreCallBack ) |
|
358 { |
|
359 iStoreCallBack = CTimerCallBack::NewL( |
|
360 TCallBack( &CCCAppMyCard::OpenStoresL, this ) ); |
|
361 |
|
362 // 200 ms delay before open. Used to prevent system jamming before the |
|
363 // UI is drawn, so that launching of mycard feels a lot faster. |
|
364 iStoreCallBack->After( 200e3 ); |
|
365 } |
|
366 } |
|
367 |
|
368 // --------------------------------------------------------------------------- |
|
369 // CCCAppMyCard::ForceCreateMyCard |
|
370 // --------------------------------------------------------------------------- |
|
371 // |
|
372 void CCCAppMyCard::ForceCreateMyCard() |
|
373 { |
|
374 iForceCreateMyCard = ETrue; |
263 } |
375 } |
264 |
376 |
265 // --------------------------------------------------------------------------- |
377 // --------------------------------------------------------------------------- |
266 // CCCAppMyCard::NotifyObservers |
378 // CCCAppMyCard::NotifyObservers |
267 // --------------------------------------------------------------------------- |
379 // --------------------------------------------------------------------------- |
284 // CCCAppMyCard::LoadContact |
396 // CCCAppMyCard::LoadContact |
285 // --------------------------------------------------------------------------- |
397 // --------------------------------------------------------------------------- |
286 // |
398 // |
287 void CCCAppMyCard::LoadContact() |
399 void CCCAppMyCard::LoadContact() |
288 { |
400 { |
289 CCA_DP(KMyCardLogFile, CCA_L("->CCCAppMyCard::LoadContact()")); |
401 CCA_DP(KMyCardLogFile, CCA_L("->CCCAppMyCard::LoadContact()")); |
290 |
402 |
291 if( !iFetchOperation && iMyCard ) |
403 if( !iFetchOperation && iMyCard ) |
292 { |
404 { |
293 TRAPD( err, iFetchOperation = |
405 TRAPD( err, iFetchOperation = |
294 iVPbkContactManager->RetrieveContactL( *iMyCard, *this ) ); |
406 iVPbkContactManager->RetrieveContactL( *iMyCard, *this ) ); |
295 if( err ) |
407 if( err ) |
296 { |
408 { |
297 // Cannot load own contact from VPbk |
409 // Cannot load own contact from VPbk |
298 CCA_DP(KMyCardLogFile, |
410 CCA_DP(KMyCardLogFile, |
299 CCA_L(" CCCAppMyCard::LoadContact load error = %d"), err ); |
411 CCA_L(" CCCAppMyCard::LoadContact load error = %d"), err ); |
300 |
412 |
301 // TODO: How is this handled. show error on UI? |
413 iPlugin.HandleError( err ); |
302 } |
414 } |
303 } |
415 } |
304 |
416 |
305 CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCard::LoadContact()")); |
417 CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCard::LoadContact()")); |
306 } |
418 } |
307 |
419 |
308 // --------------------------------------------------------------------------- |
420 // --------------------------------------------------------------------------- |
309 // CCCAppMyCard::StoreReady |
421 // CCCAppMyCard::StoreReady |
310 // --------------------------------------------------------------------------- |
422 // --------------------------------------------------------------------------- |
311 // |
423 // |
312 void CCCAppMyCard::StoreReady( MVPbkContactStore& aContactStore ) |
424 void CCCAppMyCard::StoreReady( MVPbkContactStore& aContactStore ) |
313 { |
425 { |
314 CCA_DP(KMyCardLogFile, CCA_L("->CCCAppMyCard::StoreReady()")); |
426 CCA_DP(KMyCardLogFile, CCA_L("->CCCAppMyCard::StoreReady()")); |
315 |
427 |
316 // MyCard is always created to contact model. So we check that event was |
428 const MVPbkContactStoreProperties& storeProperties = |
317 // from the correct store. |
429 aContactStore.StoreProperties(); |
318 const MVPbkContactStoreProperties& storeProperties = |
430 TVPbkContactStoreUriPtr uri = storeProperties.Uri(); |
319 aContactStore.StoreProperties(); |
431 TInt isSame = uri.Compare( VPbkContactStoreUris::DefaultCntDbUri(), |
320 TVPbkContactStoreUriPtr uri = storeProperties.Uri(); |
432 TVPbkContactStoreUriPtr::EContactStoreUriAllComponents ); |
321 TInt isSame = uri.Compare( VPbkContactStoreUris::DefaultCntDbUri(), |
433 |
322 TVPbkContactStoreUriPtr::EContactStoreUriAllComponents ); |
434 if( isSame != 0 ) |
323 if( isSame == 0 ) |
435 { |
324 { |
436 return; |
|
437 } |
|
438 |
|
439 if( iMyCard ) |
|
440 { |
|
441 // if link is already available then use that |
|
442 LoadContact(); |
|
443 } |
|
444 else if( iForceCreateMyCard ) |
|
445 { |
|
446 // launch editor because we don't have mycard |
|
447 iCreateCallBack->Call(); |
|
448 } |
|
449 else |
|
450 { |
|
451 // MyCard is always created to contact model. So we check that event was |
|
452 // from the correct store. |
325 delete iOperation; |
453 delete iOperation; |
326 iOperation = NULL; |
454 iOperation = NULL; |
327 |
455 |
328 MVPbkContactStore2* phoneStoreExtension = |
456 MVPbkContactStore2* phoneStoreExtension = |
329 static_cast<MVPbkContactStore2*>(aContactStore.ContactStoreExtension(KMVPbkContactStoreExtension2Uid)); |
457 static_cast<MVPbkContactStore2*>(aContactStore.ContactStoreExtension(KMVPbkContactStoreExtension2Uid)); |
330 if ( phoneStoreExtension ) |
458 if ( phoneStoreExtension ) |
331 { |
459 { |
332 TRAPD( err, iOperation = phoneStoreExtension->OwnContactLinkL(*this) ); |
460 TRAPD( err, iOperation = phoneStoreExtension->OwnContactLinkL(*this) ); |
333 if( err ) |
461 if( err ) |
334 { |
462 { |
335 // TODO: how is this handled? |
463 iPlugin.HandleError( err ); |
336 } |
464 } |
337 } |
465 } |
338 } |
466 } |
339 CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCard::StoreReady()")); |
467 CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCard::StoreReady()")); |
340 } |
468 } |
341 |
469 |
342 // --------------------------------------------------------------------------- |
470 // --------------------------------------------------------------------------- |
343 // CCCAppMyCard::StoreUnavailable |
471 // CCCAppMyCard::StoreUnavailable |
344 // --------------------------------------------------------------------------- |
472 // --------------------------------------------------------------------------- |
345 // |
473 // |
346 void CCCAppMyCard::StoreUnavailable( |
474 void CCCAppMyCard::StoreUnavailable( |
347 MVPbkContactStore& /*aContactStore*/, |
475 MVPbkContactStore& /*aContactStore*/, |
348 TInt /*aReason*/) |
476 TInt /*aReason*/) |
349 { |
477 { |
350 CCA_DP(KMyCardLogFile, CCA_L(" CCCAppMyCard::StoreUnavailable()")); |
478 CCA_DP(KMyCardLogFile, CCA_L(" CCCAppMyCard::StoreUnavailable()")); |
351 } |
479 } |
352 |
480 |
353 // --------------------------------------------------------------------------- |
481 // --------------------------------------------------------------------------- |
354 // CCCAppMyCard::HandleStoreEventL |
482 // CCCAppMyCard::HandleStoreEventL |
355 // --------------------------------------------------------------------------- |
483 // --------------------------------------------------------------------------- |
356 // |
484 // |
357 void CCCAppMyCard::HandleStoreEventL( |
485 void CCCAppMyCard::HandleStoreEventL( |
358 MVPbkContactStore& /*aContactStore*/, |
486 MVPbkContactStore& /*aContactStore*/, |
359 TVPbkContactStoreEvent aStoreEvent ) |
487 TVPbkContactStoreEvent aStoreEvent ) |
360 { |
488 { |
361 CCA_DP(KMyCardLogFile, |
489 CCA_DP(KMyCardLogFile, |
362 CCA_L("->CCCAppMyCard::HandleStoreEventL Event = %d"), |
490 CCA_L("->CCCAppMyCard::HandleStoreEventL Event = %d"), |
363 aStoreEvent.iEventType ); |
491 aStoreEvent.iEventType ); |
364 |
492 |
365 if( aStoreEvent.iEventType == TVPbkContactStoreEvent::EContactChanged ) |
493 if( aStoreEvent.iEventType == TVPbkContactStoreEvent::EContactChanged ) |
366 { |
494 { |
367 if( iMyCard && aStoreEvent.iContactLink->IsSame( *iMyCard ) ) |
495 if( iMyCard && aStoreEvent.iContactLink->IsSame( *iMyCard ) ) |
368 { |
496 { |
369 // Own contact has changed. Reload contact to update content |
497 // Own contact has changed. Reload contact to update content |
|
498 iEvent = MMyCardObserver::EEventContactChanged; |
370 LoadContact(); |
499 LoadContact(); |
371 } |
500 } |
372 } |
501 } |
373 |
502 else if( aStoreEvent.iEventType == TVPbkContactStoreEvent::EContactDeleted ) |
374 CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCard::HandleStoreEventL()") ); |
503 { |
|
504 if( iMyCard && aStoreEvent.iContactLink->IsSame( *iMyCard ) ) |
|
505 { |
|
506 if( !iDialogIsRunning ) |
|
507 { |
|
508 CEikAppUi* aEikAppUi = CEikonEnv::Static()->EikAppUi(); |
|
509 CAknViewAppUi* appUi = static_cast<CAknViewAppUi*> ( aEikAppUi ); |
|
510 appUi->RunAppShutter(); |
|
511 } |
|
512 } |
|
513 } |
|
514 |
|
515 CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCard::HandleStoreEventL()") ); |
375 } |
516 } |
376 |
517 |
377 // --------------------------------------------------------------------------- |
518 // --------------------------------------------------------------------------- |
378 // CCCAppMyCard::VPbkSingleContactLinkOperationComplete |
519 // CCCAppMyCard::VPbkSingleContactLinkOperationComplete |
379 // --------------------------------------------------------------------------- |
520 // --------------------------------------------------------------------------- |
380 // |
521 // |
381 void CCCAppMyCard::VPbkSingleContactLinkOperationComplete( |
522 void CCCAppMyCard::VPbkSingleContactLinkOperationComplete( |
382 MVPbkContactOperationBase& /*aOperation*/, |
523 MVPbkContactOperationBase& /*aOperation*/, |
383 MVPbkContactLink* aLink ) |
524 MVPbkContactLink* aLink ) |
384 { |
525 { |
385 CCA_DP(KMyCardLogFile, |
526 CCA_DP(KMyCardLogFile, |
386 CCA_L("->CCCAppMyCard::VPbkSingleContactLinkOperationComplete()") ); |
527 CCA_L("->CCCAppMyCard::VPbkSingleContactLinkOperationComplete()") ); |
387 |
528 |
388 delete iMyCard; |
529 delete iMyCard; |
389 iMyCard = aLink; |
530 iMyCard = aLink; |
390 |
531 |
391 LoadContact(); |
532 LoadContact(); |
392 |
533 |
393 CCA_DP(KMyCardLogFile, |
534 CCA_DP(KMyCardLogFile, |
394 CCA_L("<-CCCAppMyCard::VPbkSingleContactLinkOperationComplete()") ); |
535 CCA_L("<-CCCAppMyCard::VPbkSingleContactLinkOperationComplete()") ); |
395 } |
536 } |
396 |
537 |
397 // --------------------------------------------------------------------------- |
538 // --------------------------------------------------------------------------- |
398 // CCCAppMyCard::VPbkSingleContactLinkOperationFailed |
539 // CCCAppMyCard::VPbkSingleContactLinkOperationFailed |
609 { |
772 { |
610 TRAPD( err, LaunchContactEditorL( TPbk2ContactEditorParams::EModified | |
773 TRAPD( err, LaunchContactEditorL( TPbk2ContactEditorParams::EModified | |
611 TPbk2ContactEditorParams::EOwnContact) ); |
774 TPbk2ContactEditorParams::EOwnContact) ); |
612 if( err != KErrNone ) |
775 if( err != KErrNone ) |
613 { |
776 { |
614 //TODO handle errors |
777 iPlugin.HandleError( err ); |
615 } |
778 } |
616 } |
779 } |
617 else if( aResult.iOpCode == MVPbkContactObserver::EContactDelete ) |
780 else if( aResult.iOpCode == MVPbkContactObserver::EContactDelete ) |
618 { |
781 { |
619 iCloseCallBack->Call(); |
782 iCloseCallBack->Call(); |
620 } |
783 } |
621 else |
|
622 { |
|
623 //TODO handle errors |
|
624 } |
|
625 |
784 |
626 CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCard::ContactOperationCompleted()")); |
785 CCA_DP(KMyCardLogFile, CCA_L("<-CCCAppMyCard::ContactOperationCompleted()")); |
627 } |
786 } |
628 |
787 |
629 // --------------------------------------------------------------------------- |
788 // --------------------------------------------------------------------------- |
630 // CCCAppMyCard::ContactOperationFailed |
789 // CCCAppMyCard::ContactOperationFailed |
631 // --------------------------------------------------------------------------- |
790 // --------------------------------------------------------------------------- |
632 // |
791 // |
633 void CCCAppMyCard::ContactOperationFailed( |
792 void CCCAppMyCard::ContactOperationFailed( |
634 TContactOp /*aOpCode*/, TInt /*aErrorCode*/, TBool /*aErrorNotified*/) |
793 TContactOp aOpCode, TInt aErrorCode, TBool /*aErrorNotified*/ ) |
635 { |
794 { |
636 // TODO handle error |
795 if ( aErrorCode != KErrNone ) |
|
796 { |
|
797 iPlugin.HandleError( aErrorCode ); |
|
798 } |
637 } |
799 } |
638 |
800 |
639 // --------------------------------------------------------------------------- |
801 // --------------------------------------------------------------------------- |
640 // CCCAppMyCard::VPbkSingleContactOperationComplete |
802 // CCCAppMyCard::VPbkSingleContactOperationComplete |
641 // --------------------------------------------------------------------------- |
803 // --------------------------------------------------------------------------- |