diff -r 2b7283837edb -r 3104fc151679 uiservicetab/vimpststorage/src/cvimpststoragevpbkserverstore.cpp --- a/uiservicetab/vimpststorage/src/cvimpststoragevpbkserverstore.cpp Thu Aug 19 09:41:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,537 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Class that provides handling of vpbk server store -* -*/ - - - -// INCLUDE FILES -#include "cvimpststoragevpbkserverstore.h" - -#include "cvimpststoragevpbkstorehandler.h" - -#include -#include -#include "uiservicetabtracer.h" -#include "tvimpstconsts.h" -#include "mvimpststorageserviceview.h" -#include -#include -#include "cvimpststoragecontact.h" - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore:: -// CVIMPSTStorageVPbkServerStore -// --------------------------------------------------------------------------- -// -CVIMPSTStorageVPbkServerStore:: CVIMPSTStorageVPbkServerStore( MVIMPSTStorageServiceCacheWriter& aServiceCacheWriter ): - CActive( CActive::EPriorityIdle ), - iServiceCacheWriter( aServiceCacheWriter ), - iFetchStep( EFetchingUnknown ) - { - TRACER_AUTO; - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::ConstructL -// --------------------------------------------------------------------------- -// -void CVIMPSTStorageVPbkServerStore::ConstructL( const TDesC& aContactDb, const TDesC& aServiceName) - { - TRACER_AUTO; - iVPbkStoreHandler = CVIMPSTStorageVPbkStoreHandler::NewL( aContactDb,aServiceName, *this, EFalse ); - - } - -// --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::NewL -// --------------------------------------------------------------------------- -// -CVIMPSTStorageVPbkServerStore* - CVIMPSTStorageVPbkServerStore::NewL( const TDesC& aContactDb, - const TDesC& aServiceName, - MVIMPSTStorageServiceCacheWriter& aServiceCacheWriter ) - { - TRACER_AUTO; - CVIMPSTStorageVPbkServerStore* self = NewLC( aContactDb, - aServiceName, - aServiceCacheWriter ); - CleanupStack::Pop( self ); - - return self; - - } - -// --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::NewLC -// --------------------------------------------------------------------------- -// -CVIMPSTStorageVPbkServerStore* - CVIMPSTStorageVPbkServerStore::NewLC(const TDesC& aContactDb, - const TDesC& aServiceName, - MVIMPSTStorageServiceCacheWriter& aServiceCacheWriter ) - { - TRACER_AUTO; - CVIMPSTStorageVPbkServerStore* self = - new (ELeave) CVIMPSTStorageVPbkServerStore(aServiceCacheWriter); - CleanupStack::PushL( self ); - self->ConstructL( aContactDb,aServiceName ); - - return self; - } - -// --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore:: -// ~CVIMPSTStorageVPbkServerStore -// --------------------------------------------------------------------------- -// -CVIMPSTStorageVPbkServerStore::~CVIMPSTStorageVPbkServerStore() - { - TRACER_AUTO; - iRetrivedXSPIdArray.ResetAndDestroy(); - TRAP_IGNORE( ResetAndDestroyLocalArrayL() ); - delete iVPbkStoreHandler; - - } - - // --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::ResetAndDestroyLocalArrayL -// --------------------------------------------------------------------------- -// -void CVIMPSTStorageVPbkServerStore::ResetAndDestroyLocalArrayL() - { - TRACER_AUTO; - TInt count = iFetchContactsToBeAdded.Count(); - while( count ) - { - TVIMPSTContactInfo contactInf = iFetchContactsToBeAdded[ count-1 ]; - iFetchContactsToBeAdded.Remove( count-1 ); - delete contactInf.iUserId; - contactInf.iUserId = NULL; - delete contactInf.iDisplayName; - contactInf.iDisplayName = NULL; - // not exist need to add - iFetchContactsToBeAdded.Compress(); - count = iFetchContactsToBeAdded.Count(); - } - iFetchContactsToBeAdded.Reset(); - - } -// ---------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::LocalStore -// ---------------------------------------------------------- -// -TBool CVIMPSTStorageVPbkServerStore::LocalStore() const - { - TRACER_AUTO; - return EFalse; - } - -// --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL -// --------------------------------------------------------------------------- -// -void CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL(TVIMPSTVPbkStoreEvent aVPbkStoreEvent) - { - TRACER_AUTO; - switch( aVPbkStoreEvent.iEventType ) - { - case EVPbkContactReadCompleted: - { - TRACE( "EVPbkContactReadCompleted started" ); - iServiceCacheWriter.NotifyServiceViewL(TVIMPSTEnums::EStorageContactReadComplete); - if( iFetchStep == EFetchingCalled ) - { - TRACE( "EVPbkContactReadCompleted fetcing in progress " ); - IssueRequest(); - } - TRACE( "iFetchStep set to state EContactReadComplete" ); - iFetchStep = EContactReadComplete; - TRACE( " completed" ); - break; - } - case EVPbkContactReading: - { - TRACE(" EVPbkContactReading started"); - // a contact entry has been created in virtual database store - // create the cache contact - // fetched one by one contact from cdb file - // Add to storage cache - - iServiceCacheWriter.AddContactToCacheL(*aVPbkStoreEvent.iContactLink , - aVPbkStoreEvent.iUserId , - aVPbkStoreEvent.iDisplayName , - aVPbkStoreEvent.iAvatarContent, - TVIMPSTEnums::EStorageContactReading ); - TRACE( "EVPbkContactReading completed" ); - break; - } - case EVPbkContactFetching: - case EVPbkContactAdded: - { - TRACE( "EVPbkContactAdded or EVPbkContactFetching" ); - TVIMPSTEnums::TVIMPSTStorgaeEventType event = TVIMPSTEnums::EStorageEventContactAddition; - // a contact entry has been created in virtual database store - // create the cache contact - // fetched one by one contact from cdb file - // Add to storage cache - if( iFetchStep == EFetchingOn ) - { - event = TVIMPSTEnums::EStorageContactFetching; - } - iServiceCacheWriter.AddContactToCacheL(*aVPbkStoreEvent.iContactLink , - aVPbkStoreEvent.iUserId , - aVPbkStoreEvent.iDisplayName , - aVPbkStoreEvent.iAvatarContent, - event ); - if(iFetchStep == EFetchingOn) - { - TRACE( "EVPbkContactAdded or EVPbkContactFetching fetchin on" ); - IssueRequest(); - } - TRACE( " EVPbkContactAdded or EVPbkContactFetching completed" ); - break; - } - case EVPbkContactSynchronizing: - { - TRACE( "EVPbkContactSynchronizing " ); - // a contact entry has been created in virtual database store - // create the cache contact - // fetched one by one contact from cdb file - // Add to storage cache - iServiceCacheWriter.AddContactToCacheL(*aVPbkStoreEvent.iContactLink , - aVPbkStoreEvent.iUserId , - aVPbkStoreEvent.iDisplayName , - aVPbkStoreEvent.iAvatarContent, - TVIMPSTEnums::EStorageContactSynchronizing ); - TRACE( "EVPbkContactSynchronizing(iFetchStep): %d " , iFetchStep ); - if(iFetchStep == EFetchingOn) - { - TRACE( " EVPbkContactSynchronizing fetchin on" ); - IssueRequest(); - } - TRACE( " EVPbkContactSynchronizing completed" ); - break; - } - case EVPbkContactDeleted: - { - TRACE( "EVPbkContactDeleted Event" ); - // a contact entry has been deleted from virtual database store - // delete from cache contact - // not Needed in case of server contact - iServiceCacheWriter.RemoveContactFromCacheL(*aVPbkStoreEvent.iContactLink, - TVIMPSTEnums::EStorageEventContactDelete ); - TRACE( " EVPbkContactDeleted Event done" ); - break; - } - case EVPbkContactChanged: - { - TRACE( " EVPbkContactChanged started" ); - // a contact entry has been updated to virtual database store - // update to cache contact - // not Needed in case of server contact - iServiceCacheWriter.UpdateCacheContactL(*aVPbkStoreEvent.iContactLink , - aVPbkStoreEvent.iUserId , - aVPbkStoreEvent.iDisplayName, - aVPbkStoreEvent.iAvatarContent); - if(iFetchStep == EFetchingOn) - { - TRACE(" EVPbkContactAdded or EVPbkContactFetching fetchin on" ); - IssueRequest(); - } - TRACE( " EVPbkContactChanged started" ); - break; - } - case EVPbkContactRetriving: - { - TRACE( " EVPbkContactRetriving started " ); - // ONLY VALID USER ID ALLOWED - if( aVPbkStoreEvent.iUserId.Length() ) - { - TRACE( "EVPbkContactRetriving valid id " ); - HBufC* sxpId = aVPbkStoreEvent.iUserId.AllocL(); - iRetrivedXSPIdArray.Append( sxpId ); // takes the ownership of retrivedContact - // keep the backup of retrieved contacts - // user can add later once it sent to server - } - TRACE( " EVPbkContactRetriving done" ); - break; - } - case EVPbkUnknownChanges: - { - TRACE( " EVPbkUnknownChanges Event in" ); - // unknow mean all contact deleted from store - // Not supported in case of server contact - iServiceCacheWriter.RemoveAllCacheContactsL(); - if(iFetchStep == EFetchingCalled ) - { - TRACE( " EVPbkUnknownChanges fetching on" ); - IssueRequest(); - } - TRACE( "EVPbkUnknownChanges Event done" ); - break; - } - default: - { - TRACE( "default" ); - break; - } - } - - } - - -// -------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::IssueRequest -// -------------------------------------------------------------------------- -// -void CVIMPSTStorageVPbkServerStore::IssueRequest() - { - TRACER_AUTO; - if( !IsActive() ) - { - TRequestStatus* status = &iStatus; - TRACE( "RequestComplete"); - User::RequestComplete( status, KErrNone ); - SetActive(); - } - - } - -// -------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::RunL -// -------------------------------------------------------------------------- -// -void CVIMPSTStorageVPbkServerStore::RunL() - { - TRACER_AUTO; - TInt count = iFetchContactsToBeAdded.Count(); - TRACE( " count = %d",count ); - if( !count ) - { - TRACE(" set to state EContactReadComplete" ); - iFetchStep = EContactReadComplete; - iServiceCacheWriter.NotifyServiceViewL( TVIMPSTEnums::EStorageContactFetchComplete ); - TRACE( "calling NotifyFetchCompleteL" ); - } - else - { - TRACE( " set to state EFetchingOn" ); - iFetchStep = EFetchingOn; - TVIMPSTContactInfo contactInfoToAdd = iFetchContactsToBeAdded[0]; - // pass the display NAme in place of NULL - TRACE( "calling CreateVPbkContactL" ); - iVPbkStoreHandler->CreateVPbkContactL( *contactInfoToAdd.iUserId, *contactInfoToAdd.iDisplayName ); // process always 0th item - - iFetchContactsToBeAdded.Remove( 0 ); - delete contactInfoToAdd.iUserId; - contactInfoToAdd.iUserId = NULL; - delete contactInfoToAdd.iDisplayName; - contactInfoToAdd.iDisplayName = NULL ; - - iFetchContactsToBeAdded.Compress(); - } - - } - -// -------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::DoCancel -// -------------------------------------------------------------------------- -// -void CVIMPSTStorageVPbkServerStore::DoCancel() - { - TRACER_AUTO; - } - -// -------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::RunError -// -------------------------------------------------------------------------- -// -TInt CVIMPSTStorageVPbkServerStore::RunError( TInt aError ) - { - TRACER_AUTO; - TRACE( "error code = %d", aError ); - - return aError; - } - -////////////////////////////////////////////////////////// -// --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::CreateVPbkContactL -// --------------------------------------------------------------------------- -// -TInt CVIMPSTStorageVPbkServerStore::CreateVPbkContactL( const TDesC& aUserId, - const TDesC& aDisplayName, - TBool /*aInvitationAutoAccept = EFalse */ ) - { - TRACER_AUTO; - return iVPbkStoreHandler->CreateVPbkContactL( aUserId ,aDisplayName ); - } - -// ----------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::AddVPbkFetchContactsL -// ----------------------------------------------------------------------------- -// - void CVIMPSTStorageVPbkServerStore::AddVPbkFetchContactsL( RArray & aFirstNameList, - RArray &aServiceField ) - { - // in case of server case we delete all contacts and then add fetch contacts - // in case of server contacts delete all contacts - TRACER_AUTO; - TInt oldContactCount = RemoveAllVPbkContactsL(); - TRACE( " oldContactCount = %d", oldContactCount ); - ResetAndDestroyLocalArrayL(); - TInt fetchContactCount = aServiceField.Count(); - for( TInt i = 0; iAppendL( link ); // takes ownership - CleanupStack::Pop(); // link - TInt error = iVPbkStoreHandler->RemoveVPbkContactL( *contactsToDelete ); - CleanupStack::PopAndDestroy(); // contactsToDelete - TRACE( " error code = %d", error ); - - return error; - } - -// --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::RemoveAllVPbkContactsL -// --------------------------------------------------------------------------- -// -TInt CVIMPSTStorageVPbkServerStore::RemoveAllVPbkContactsL() - { - TRACER_AUTO; - iRetrivedXSPIdArray.ResetAndDestroy(); - return iVPbkStoreHandler->RemoveAllVPbkContactsL(); - } -// --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::RetrieveVPbkXSPIdL -// --------------------------------------------------------------------------- -// -TInt CVIMPSTStorageVPbkServerStore::RetrieveVPbkXSPIdL(const TDesC8& aPackedLinks ) - { - TRACER_AUTO; - iRetrivedXSPIdArray.ResetAndDestroy(); - TRACE( " iRetrivedXSPIdArray Reset" ); - iVPbkStoreHandler->RetrieveVPbkContactL( aPackedLinks ); - - return iRetrivedXSPIdArray.Count(); - } - - // --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::GetRetrieveVPbkXSPIdL -// --------------------------------------------------------------------------- -// -const TDesC& CVIMPSTStorageVPbkServerStore::GetRetrieveVPbkXSPIdL(TInt aIndex ) - { - TRACER_AUTO; - HBufC* contactId = NULL; - if( aIndex >= 0 && aIndex < iRetrivedXSPIdArray.Count() ) - { - contactId = iRetrivedXSPIdArray[ aIndex ]; - } - if( contactId ) - { - TRACE( "RetrieveVPbkXSPIdL() end"); - return *contactId; - } - - return KNullDesC ; - } - // --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::CreateRetriveVPbkContactL -// --------------------------------------------------------------------------- -// -TInt CVIMPSTStorageVPbkServerStore::CreateRetriveVPbkContactL( TInt /*aIndexToUse*/ ) - { - TRACER_AUTO; - // Not applicable for server store - return KErrNotSupported; - } -// --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::deleteRetriveVPbkContactL -// --------------------------------------------------------------------------- -// -TInt CVIMPSTStorageVPbkServerStore::deleteRetriveVPbkContactL( TInt /*aIndexToUse*/ ) - { - TRACER_AUTO; - // Not applicable for server store - return KErrNotSupported; - } -// CVIMPSTStorageVPbkServerStore::UpdateAvatarFieldDataL() -// --------------------------------------------------------------------------- -// -TInt CVIMPSTStorageVPbkServerStore::UpdateAvatarFieldDataL(const MVPbkContactLink& aContactLink, - const TDesC8& aAvatartData ) - { - TRACER_AUTO; - return iVPbkStoreHandler->UpdateAvatarFieldDataL( aContactLink, aAvatartData ); - } - -// --------------------------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::RemoveAvatarFieldL() -// --------------------------------------------------------------------------- -// -TInt CVIMPSTStorageVPbkServerStore::RemoveAvatarFieldL(MVPbkStoreContact& aStoreContact) - { - TRACER_AUTO; - return iVPbkStoreHandler->RemoveAvatarFieldL( aStoreContact ); - } - -// ---------------------------------------------------------- -// CVIMPSTStorageVPbkServerStore::DeleteDatabaseL -// ---------------------------------------------------------- -void CVIMPSTStorageVPbkServerStore::DeleteDatabaseL() - { - TRACER_AUTO; - // TODO : Not supported yet - - } -// End of file - -