ccservices/cmsservices/cmsengine/Server/src/cmsphonebookproxy.cpp
branchRCL_3
changeset 32 2828b4d142c0
parent 15 e8e3147d53eb
child 35 4ae315f230bc
equal deleted inserted replaced
26:0d28c1c5b6dd 32:2828b4d142c0
    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