39 #include "cmsdebug.h" |
39 #include "cmsdebug.h" |
40 #include "cmssetvoicecalldefault.h" |
40 #include "cmssetvoicecalldefault.h" |
41 |
41 |
42 #include "cmsfindlinkedcontact.h" |
42 #include "cmsfindlinkedcontact.h" |
43 #include <MVPbkContactLink.h> |
43 #include <MVPbkContactLink.h> |
|
44 #include <MVPbkStoreContact.h> |
44 |
45 |
45 // CONSTANTS |
46 // CONSTANTS |
46 const TInt KArrayGranularity = 2; |
47 const TInt KArrayGranularity = 2; |
47 |
48 |
48 // ---------------------------------------------------------- |
49 // ---------------------------------------------------------- |
109 iStoreConfiguration->RemoveObserver( *this ); |
110 iStoreConfiguration->RemoveObserver( *this ); |
110 delete iStoreConfiguration; |
111 delete iStoreConfiguration; |
111 iStoreConfiguration = NULL; |
112 iStoreConfiguration = NULL; |
112 } |
113 } |
113 iObserverArray.Close(); |
114 iObserverArray.Close(); |
114 ixSPStoresArray.Reset(); |
115 ixSPStoresArray.Reset(); |
|
116 iReadyStores.ResetAndDestroy(); |
115 delete iSetDefault; |
117 delete iSetDefault; |
116 } |
118 } |
117 |
119 |
118 // ---------------------------------------------------------- |
120 // ---------------------------------------------------------- |
119 // CCmsPhonebookProxy::StoreOpenStatus |
121 // CCmsPhonebookProxy::StoreOpenStatus |
120 // |
122 // |
121 // ---------------------------------------------------------- |
123 // ---------------------------------------------------------- |
122 // |
124 // |
123 TBool CCmsPhonebookProxy::StoreOpenStatus() |
125 TBool CCmsPhonebookProxy::StoreOpenStatus() |
124 { |
126 { |
125 if(iAtLeastOneStoreReady && iOpenComplete) |
127 if( iAtLeastOneStoreReady && iOpenComplete && iCurrentContactStoreReady ) |
126 { |
128 { |
127 return ETrue; |
129 return ETrue; |
128 } |
130 } |
129 |
131 |
130 return EFalse; |
132 return EFalse; |
136 // ---------------------------------------------------------- |
138 // ---------------------------------------------------------- |
137 // |
139 // |
138 void CCmsPhonebookProxy::InitStoresL() |
140 void CCmsPhonebookProxy::InitStoresL() |
139 { |
141 { |
140 PRINT ( _L("Start CCmsPhonebookProxy::InitStoresL()") ); |
142 PRINT ( _L("Start CCmsPhonebookProxy::InitStoresL()") ); |
|
143 |
141 if( !iOpenComplete ) |
144 if( !iOpenComplete ) |
142 { |
145 { |
|
146 iCurrentContactStoreReady = EFalse; |
|
147 iReadyStores.ResetAndDestroy(); |
143 iStoreList->OpenAllL( *this ); |
148 iStoreList->OpenAllL( *this ); |
144 } |
149 } |
145 PRINT ( _L("End CCmsPhonebookProxy::InitStoresL()") ); |
150 PRINT ( _L("End CCmsPhonebookProxy::InitStoresL()") ); |
146 } |
151 } |
147 |
152 |
412 { |
417 { |
413 iSetDefault->SetVoiceCallDefaultL( aContact, iContactManager ); |
418 iSetDefault->SetVoiceCallDefaultL( aContact, iContactManager ); |
414 } |
419 } |
415 |
420 |
416 // ---------------------------------------------------------- |
421 // ---------------------------------------------------------- |
|
422 // CCmsPhonebookProxy::SetContact |
|
423 // |
|
424 // ---------------------------------------------------------- |
|
425 // |
|
426 void CCmsPhonebookProxy::SetContact( MVPbkStoreContact* aContact ) |
|
427 { |
|
428 iContact = aContact; |
|
429 |
|
430 if( !iCurrentContactStoreReady && iContact ) |
|
431 { |
|
432 for( TInt x=0; x<iReadyStores.Count(); x++ ) |
|
433 { |
|
434 if( iReadyStores[x]->Des().CompareC( |
|
435 iContact->ContactStore().StoreProperties().Uri().UriDes() ) == 0 ) |
|
436 { |
|
437 |
|
438 iCurrentContactStoreReady = ETrue; |
|
439 iCmsPhonebookOperationsObserver.StoreOpenComplete(); |
|
440 break; |
|
441 } |
|
442 } |
|
443 } |
|
444 // Check in case the contact has changed |
|
445 else if( iCurrentContactStoreReady && iContact ) |
|
446 { |
|
447 iCurrentContactStoreReady = EFalse; |
|
448 |
|
449 for( TInt x=0; x<iReadyStores.Count(); x++ ) |
|
450 { |
|
451 if( iReadyStores[x]->Des().Compare( |
|
452 iContact->ContactStore().StoreProperties().Uri().UriDes() ) == 0 ) |
|
453 { |
|
454 // Contact found from ready stores |
|
455 iCurrentContactStoreReady = ETrue; |
|
456 break; |
|
457 } |
|
458 } |
|
459 } |
|
460 } |
|
461 |
|
462 // ---------------------------------------------------------- |
417 // CCmsPhonebookProxy::ExternalStoresIntalled |
463 // CCmsPhonebookProxy::ExternalStoresIntalled |
418 // |
464 // |
419 // ---------------------------------------------------------- |
465 // ---------------------------------------------------------- |
420 // |
466 // |
421 TBool CCmsPhonebookProxy::ExternalStoresIntalled() const |
467 TBool CCmsPhonebookProxy::ExternalStoresIntalled() const |
440 // |
486 // |
441 void CCmsPhonebookProxy::OpenComplete() |
487 void CCmsPhonebookProxy::OpenComplete() |
442 { |
488 { |
443 PRINT( _L("Start CCmsPhonebookProxy::OpenComplete()" ) ); |
489 PRINT( _L("Start CCmsPhonebookProxy::OpenComplete()" ) ); |
444 iOpenComplete = ETrue; |
490 iOpenComplete = ETrue; |
445 if ( iAtLeastOneStoreReady ) |
491 if ( iAtLeastOneStoreReady && !iCurrentContactStoreReady ) |
446 { |
492 { |
447 iCmsPhonebookOperationsObserver.StoreOpenComplete(); |
493 iCmsPhonebookOperationsObserver.StoreOpenComplete(); |
|
494 iCurrentContactStoreReady = ETrue; |
448 } |
495 } |
449 PRINT( _L("End CCmsPhonebookProxy::OpenComplete()" ) ); |
496 PRINT( _L("End CCmsPhonebookProxy::OpenComplete()" ) ); |
450 } |
497 } |
451 |
498 |
452 // ---------------------------------------------------------- |
499 // ---------------------------------------------------------- |
516 // |
563 // |
517 // ---------------------------------------------------------- |
564 // ---------------------------------------------------------- |
518 // |
565 // |
519 void CCmsPhonebookProxy::StoreReady( MVPbkContactStore& aContactStore ) |
566 void CCmsPhonebookProxy::StoreReady( MVPbkContactStore& aContactStore ) |
520 { |
567 { |
|
568 |
521 PRINT1( _L( "CCmsPhonebookProxy::StoreReady(): Store: %S" ), (&aContactStore.StoreProperties().Uri().UriDes()) ); |
569 PRINT1( _L( "CCmsPhonebookProxy::StoreReady(): Store: %S" ), (&aContactStore.StoreProperties().Uri().UriDes()) ); |
522 //Set iAtLeastOneStoreReady to ETrue to indicate that |
570 //Set iAtLeastOneStoreReady to ETrue to indicate that |
523 //at least one store is available |
571 //at least one store is available |
524 iAtLeastOneStoreReady = ETrue; |
572 iAtLeastOneStoreReady = ETrue; |
525 using namespace VPbkContactStoreUris; |
573 using namespace VPbkContactStoreUris; |
526 if( aContactStore.StoreProperties().Uri().UriDes().Compare( DefaultCntDbUri() ) == 0 ) |
574 if( aContactStore.StoreProperties().Uri().UriDes().Compare( DefaultCntDbUri() ) == 0 ) |
527 { |
575 { |
528 iContactStore = &aContactStore; |
576 iContactStore = &aContactStore; |
529 } |
577 } |
|
578 |
|
579 TRAP_IGNORE( |
|
580 { |
|
581 HBufC* buf = aContactStore.StoreProperties().Uri().UriDes().AllocLC(); |
|
582 iReadyStores.AppendL( buf ); |
|
583 CleanupStack::Pop( buf ); |
|
584 } ); |
|
585 |
|
586 if( iContact && iContact->ContactStore().StoreProperties().Uri().UriDes().Compare( |
|
587 aContactStore.StoreProperties().Uri().UriDes() ) == 0 && !iCurrentContactStoreReady ) |
|
588 { |
|
589 iCurrentContactStoreReady = ETrue; |
|
590 iCmsPhonebookOperationsObserver.StoreOpenComplete(); |
|
591 } |
530 } |
592 } |
531 |
593 |
532 // ---------------------------------------------------------- |
594 // ---------------------------------------------------------- |
533 // CCmsPhonebookProxy::StoreUnavailable |
595 // CCmsPhonebookProxy::StoreUnavailable |
534 // |
596 // |
602 iUriList = NULL; |
664 iUriList = NULL; |
603 iContactStore = NULL; |
665 iContactStore = NULL; |
604 |
666 |
605 // Support all contact stores, not only those defined by phonebook2 setting |
667 // Support all contact stores, not only those defined by phonebook2 setting |
606 iUriList = iStoreConfiguration->SupportedStoreConfigurationL(); |
668 iUriList = iStoreConfiguration->SupportedStoreConfigurationL(); |
607 |
669 |
608 ixSPStoresArray.Reset(); |
670 ixSPStoresArray.Reset(); |
609 FindXSPStoresL( ixSPStoresArray ); |
671 FindXSPStoresL( ixSPStoresArray ); |
610 |
672 |
611 #ifdef _DEBUG |
673 #ifdef _DEBUG |
612 PRINT( _L( " CCmsPhonebookProxy::CreateConfigurationL(): Current store configuration:" ) ); |
674 PRINT( _L( " CCmsPhonebookProxy::CreateConfigurationL(): Current store configuration:" ) ); |
744 { |
806 { |
745 PRINT1( _L( "CCmsPhonebookProxy::VPbkSingleContactOperationFailed(): Error: %d" ), aError ); |
807 PRINT1( _L( "CCmsPhonebookProxy::VPbkSingleContactOperationFailed(): Error: %d" ), aError ); |
746 |
808 |
747 ResetData(); |
809 ResetData(); |
748 CompleteContactRequestL( aError, NULL ); |
810 CompleteContactRequestL( aError, NULL ); |
749 iCmsPhonebookOperationsObserver.CmsSingleContactOperationComplete( aError ); |
811 iCmsPhonebookOperationsObserver.CmsSingleContactOperationComplete( aError ); |
750 } |
812 } |
751 |
813 |
752 |
814 |
753 // ---------------------------------------------------------- |
815 // ---------------------------------------------------------- |
754 // CCmsPhonebookProxy::IsXspContact |
816 // CCmsPhonebookProxy::IsXspContact |