diff -r b13cd05eeb2f -r 57b735022c18 srsf/nssvasapi/nssvascore/src/vascvpbkhandler.cpp --- a/srsf/nssvasapi/nssvascore/src/vascvpbkhandler.cpp Mon Jan 18 20:20:30 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1326 +0,0 @@ -/* -* Copyright (c) 2004-2007 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: -* -*/ - - -// INCLUDE FILES -#include -#include -#include - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "vascvpbkhandler.h" -#include "vasmcontactobserver.h" - -#include "srsfprivatecrkeys.h" - -#include "rubydebug.h" - -// CONSTANTS - -// Priority list of virtual phonebook fields -const TInt KFieldPriority[] = - { - R_VPBK_FIELD_TYPE_LANDPHONEGEN, - R_VPBK_FIELD_TYPE_LANDPHONEHOME, - R_VPBK_FIELD_TYPE_LANDPHONEWORK, - R_VPBK_FIELD_TYPE_MOBILEPHONEGEN, - R_VPBK_FIELD_TYPE_MOBILEPHONEHOME, - R_VPBK_FIELD_TYPE_MOBILEPHONEWORK, - R_VPBK_FIELD_TYPE_VIDEONUMBERGEN, - R_VPBK_FIELD_TYPE_VIDEONUMBERHOME, - R_VPBK_FIELD_TYPE_VIDEONUMBERWORK, - R_VPBK_FIELD_TYPE_FAXNUMBERGEN, - R_VPBK_FIELD_TYPE_FAXNUMBERHOME, - R_VPBK_FIELD_TYPE_FAXNUMBERWORK, - R_VPBK_FIELD_TYPE_VOIPGEN, - R_VPBK_FIELD_TYPE_VOIPHOME, - R_VPBK_FIELD_TYPE_VOIPWORK, - R_VPBK_FIELD_TYPE_IMPP, - R_VPBK_FIELD_TYPE_EMAILGEN, - R_VPBK_FIELD_TYPE_EMAILHOME, - R_VPBK_FIELD_TYPE_EMAILWORK, - R_VPBK_FIELD_TYPE_FIRSTNAMEREADING, - R_VPBK_FIELD_TYPE_FIRSTNAME, - R_VPBK_FIELD_TYPE_LASTNAMEREADING, - R_VPBK_FIELD_TYPE_LASTNAME, - R_VPBK_FIELD_TYPE_COMPANYNAME, - R_VPBK_FIELD_TYPE_SECONDNAME - }; -const TInt KFieldPriorityCount = sizeof( KFieldPriority ) / sizeof ( TInt ); - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------- -// CVasVPbkHandler* CVasVPbkHandler::NewL -// Two-phased constructor. -// --------------------------------------------------------- -// -EXPORT_C CVasVPbkHandler* CVasVPbkHandler::NewL() - { - CVasVPbkHandler* self = new (ELeave) CVasVPbkHandler; - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// Destructor -EXPORT_C CVasVPbkHandler::~CVasVPbkHandler() - { - RUBY_DEBUG0( "CVasVPbkHandler::~CVasVPbkHandler START" ); - - iObserver = NULL; - - delete iField; - - delete iContact; - - delete iOperation; - - delete iConverter; - - if ( iContactManager ) - { - TRAP_IGNORE( iContactManager->ContactStoresL().CloseAll( *this ) ); - } - delete iContactManager; - - RUBY_DEBUG0( "CVasVPbkHandler::~CVasVPbkHandler EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::InitializeL -// Initializes phonebook handles -// ----------------------------------------------------------------------------- -// -EXPORT_C void CVasVPbkHandler::InitializeL() - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::InitializeL" ); - - __ASSERT_ALWAYS( !iContactManager, User::Leave( KErrAlreadyExists ) ); - __ASSERT_ALWAYS( !iConverter, User::Leave( KErrAlreadyExists ) ); - - FeatureManager::InitializeLibL(); - - iMMSSupported = FeatureManager::FeatureSupported( KFeatureIdMMS ); - - FeatureManager::UnInitializeLib(); - - CVPbkContactStoreUriArray* uriArray = CVPbkContactStoreUriArray::NewLC(); - uriArray->AppendL( TVPbkContactStoreUriPtr( VPbkContactStoreUris::DefaultCntDbUri() ) ); - - iContactManager = CVPbkContactManager::NewL( *uriArray, NULL ); - CleanupStack::PopAndDestroy( uriArray ); - - MVPbkContactStoreList& storeList = iContactManager->ContactStoresL(); - storeList.OpenAllL( *this ); - - // Synchronize the OpenAllL call - iWait.Start(); - - User::LeaveIfError( iError ); - - iConverter = CVPbkContactIdConverter::NewL( iContactManager->ContactStoresL().At( 0 ) ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::CreateContactObserverL -// Creates the contact change notifier and sets observer as a listener -// ----------------------------------------------------------------------------- -// -EXPORT_C void CVasVPbkHandler::CreateContactObserverL( MVasContactObserver* aObserver ) - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::CreateContactObserverL" ); - iObserver = aObserver; - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::CompressL -// Compresses database -// ----------------------------------------------------------------------------- -// -EXPORT_C void CVasVPbkHandler::CompressL() - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::CompressL" ); - - __ASSERT_ALWAYS( iContactManager, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( !iOperation, User::Leave( KErrArgument ) ); - - iOperation = iContactManager->CompressStoresL( *this ); - - iWait.Start(); - - User::LeaveIfError( iError ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::CompressL -// Returns all contact ids from database -// ----------------------------------------------------------------------------- -// -EXPORT_C CContactIdArray* CVasVPbkHandler::ContactIdArrayLC() - { - RUBY_DEBUG0( "CVasVPbkHandler::ContactIdArrayLC START" ); - - __ASSERT_ALWAYS( iContactManager, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( !iOperation, User::Leave( KErrArgument ) ); - - CContactIdArray* array = CContactIdArray::NewLC(); - - CVPbkContactViewDefinition* definition = CVPbkContactViewDefinition::NewL(); - CleanupStack::PushL( definition ); - - definition->SetType( EVPbkContactsView ); - definition->SetUriL( VPbkContactStoreUris::DefaultCntDbUri() ); - - MVPbkContactViewBase* view = - iContactManager->CreateContactViewLC( *this, *definition, iContactManager->FieldTypes() ); - - iWait.Start(); - - User::LeaveIfError( iError ); - - for( int i = 0; i < view->ContactCountL(); ++i ) - { - MVPbkContactLink* link = view->CreateLinkLC( i ); - - if ( link ) - { - array->AddL( iConverter->LinkToIdentifier( *link ) ); - - CleanupStack::PopAndDestroy(); // Destroy link - } - } - - CleanupStack::PopAndDestroy(); // Destroy view - CleanupStack::PopAndDestroy( definition ); - - RUBY_DEBUG0( "CVasVPbkHandler::ContactIdArrayLC EXIT" ); - - return array; - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::FindContactL -// Finds a contact from the phonebook that matches given tag -// ----------------------------------------------------------------------------- -// -EXPORT_C void CVasVPbkHandler::FindContactL( MNssTag* aTag ) - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::FindContactL" ); - - __ASSERT_ALWAYS( iContactManager, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( !iOperation, User::Leave( KErrArgument ) ); - - delete iField; - iField = NULL; - - delete iContact; - iContact = NULL; - - MVPbkContactLink* link = - iConverter->IdentifierToLinkLC( aTag->RRD()->IntArray()->At( KVasContactIdRrdLocation ) ); - - iOperation = iContactManager->RetrieveContactL( *link, *this ); - - iWait.Start(); - - // If contact was not found, then request for immediate contact db resync - if ( iError == KErrNotFound ) - { - CRepository* repository = CRepository::NewLC( KCRUidSRSFSettings ); - - repository->Set( KSRSFFullResyncNeeded, KImmediateResync ); - - CleanupStack::PopAndDestroy( repository ); - } - - User::LeaveIfError( iError ); - - CleanupStack::PopAndDestroy(); // Destroys the link - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::FindContactL -// Finds a contact from the phonebook that matches given contact id -// ----------------------------------------------------------------------------- -// -EXPORT_C void CVasVPbkHandler::FindContactL( TInt32 aContactId, TBool aReadOnly ) - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::FindContactL" ); - - __ASSERT_ALWAYS( iContactManager, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( !iOperation, User::Leave( KErrArgument ) ); - - delete iField; - iField = NULL; - - delete iContact; - iContact = NULL; - - MVPbkContactLink* link = iConverter->IdentifierToLinkLC( aContactId ); - - iOperation = iContactManager->RetrieveContactL( *link, *this ); - - iWait.Start(); - - User::LeaveIfError( iError ); - - if ( !aReadOnly ) - { - iContact->LockL( *this ); - - iWait.Start(); - - User::LeaveIfError( iError ); - } - - CleanupStack::PopAndDestroy(); // Destroys the link - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::CloseContactL -// Closes contact with or without saving changes -// ----------------------------------------------------------------------------- -// -EXPORT_C void CVasVPbkHandler::CloseContactL( TBool aSaveChanges ) - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::CloseContactL" ); - - __ASSERT_ALWAYS( iContactManager, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( iContact, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( !iOperation, User::Leave( KErrArgument ) ); - - if ( aSaveChanges ) - { - iContact->CommitL( *this ); - - iWait.Start(); - - User::LeaveIfError( iError ); - } - - delete iContact; - iContact = NULL; - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::FindFieldL -// Finds a contact field that matches given tag -// ----------------------------------------------------------------------------- -// -EXPORT_C void CVasVPbkHandler::FindFieldL( MNssTag* aTag ) - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::FindFieldL" ); - - __ASSERT_ALWAYS( iContactManager, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( iContact, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( !iOperation, User::Leave( KErrArgument ) ); - - delete iField; - iField = NULL; - - TRAPD( error, - FindDefaultContactFieldL( aTag->RRD()->IntArray()->At( KVasExtensionCommandRrdLocation ) ) ); - if ( error == KErrNotFound ) - { - FindFieldL( aTag->RRD()->IntArray()->At( KVasFieldIdRrdLocation ) ); - } - - if ( !iField ) - { - User::Leave( KErrNotFound ); - } - - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::FindFieldL -// Finds a contact field that matches given field id -// ----------------------------------------------------------------------------- -// -EXPORT_C void CVasVPbkHandler::FindFieldL( TInt aFieldId ) - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::FindFieldL" ); - - __ASSERT_ALWAYS( iContactManager, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( iContact, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( !iOperation, User::Leave( KErrArgument ) ); - - delete iField; - iField = NULL; - - MVPbkStoreContactFieldCollection& fields = iContact->Fields(); - - TInt priority = KFieldPriorityCount; - for ( TInt index = 0; index < fields.FieldCount(); ++index ) - { - if ( ConvertFieldId( fields.FieldAt( index ) ) == aFieldId && - FieldPriority( fields.FieldAt( index ) ) < priority ) - { - priority = FieldPriority( fields.FieldAt( index ) ); - - delete iField; - iField = NULL; - - iField = fields.FieldAtLC( index ); - CleanupStack::Pop(); // Pops iField - } - } - - if ( !iField ) - { - User::Leave( KErrNotFound ); - } - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::FindContactFieldL -// Finds a contact and a field that mathes given tag -// ----------------------------------------------------------------------------- -// -EXPORT_C void CVasVPbkHandler::FindContactFieldL( MNssTag* aTag ) - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::FindContactFieldL" ); - - FindContactL( aTag ); - FindFieldL( aTag ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::FindDefaultContactFieldL -// Tries to find a default field of given type from found contact -// ----------------------------------------------------------------------------- -// -EXPORT_C void CVasVPbkHandler::FindDefaultContactFieldL( TInt aCommandType ) - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::FindDefaultContactFieldL" ); - - __ASSERT_ALWAYS( iContactManager, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( iContact, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( !iOperation, User::Leave( KErrArgument ) ); - - TInt found = KErrNotFound; - - TVPbkDefaultType type = SelectDefaultType( aCommandType ); - - if ( type != EVPbkDefaultTypeUndefined ) - { - MVPbkContactAttributeManager& attributeManager = iContactManager->ContactAttributeManagerL(); - - CVPbkDefaultAttribute* attribute = CVPbkDefaultAttribute::NewL( type ); - CleanupStack::PushL( attribute ); - - MVPbkStoreContactField* field = - attributeManager.FindFieldWithAttributeL( *attribute, *iContact ); - - if ( field && AcceptDefaultField( *field, aCommandType ) ) - { - iField = field->CloneLC(); - CleanupStack::Pop(); // Pops iField - found = KErrNone; - } - - CleanupStack::PopAndDestroy( attribute ); - } - - User::LeaveIfError( found ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::ChangeVoiceTagFieldL -// Changes current field's voice tag field status -// ----------------------------------------------------------------------------- -// -EXPORT_C void CVasVPbkHandler::ChangeVoiceTagFieldL( TBool /*aSet*/ ) - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::ChangeVoiceTagFieldL" ); - - User::Leave( KErrNotSupported ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::LabelL -// Returns the field label -// ----------------------------------------------------------------------------- -// -EXPORT_C TPtrC CVasVPbkHandler::LabelL() - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::LabelL" ); - - __ASSERT_ALWAYS( iField, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( !iOperation, User::Leave( KErrArgument ) ); - - return iField->FieldLabel(); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::TextL -// Returns the field text -// ----------------------------------------------------------------------------- -// -EXPORT_C TPtrC CVasVPbkHandler::TextL() - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::TextL" ); - - __ASSERT_ALWAYS( iField, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( !iOperation, User::Leave( KErrArgument ) ); - - if ( iField->FieldData().DataType() == EVPbkFieldStorageTypeText ) - { - return MVPbkContactFieldTextData::Cast( iField->FieldData() ).Text(); - } - else if ( iField->FieldData().DataType() == EVPbkFieldStorageTypeUri ) - { - return MVPbkContactFieldUriData::Cast( iField->FieldData() ).Text(); - } - else - { - return KNullDesC(); - } - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::FieldTypeL -// Returns field type as an UID -// ----------------------------------------------------------------------------- -// -EXPORT_C TFieldType CVasVPbkHandler::FieldTypeL() - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::FieldTypeL" ); - - __ASSERT_ALWAYS( iField, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( !iOperation, User::Leave( KErrArgument ) ); - - TFieldType uid = KNullUid; - - switch( iField->BestMatchingFieldType()->FieldTypeResId() ) - { - case R_VPBK_FIELD_TYPE_LANDPHONEHOME: - case R_VPBK_FIELD_TYPE_LANDPHONEWORK: - case R_VPBK_FIELD_TYPE_LANDPHONEGEN: - { - uid = KUidContactFieldVCardMapVOICE; - break; - } - - case R_VPBK_FIELD_TYPE_MOBILEPHONEHOME: - case R_VPBK_FIELD_TYPE_MOBILEPHONEWORK: - case R_VPBK_FIELD_TYPE_MOBILEPHONEGEN: - { - uid = KUidContactFieldVCardMapCELL; - break; - } - - case R_VPBK_FIELD_TYPE_VIDEONUMBERHOME: - case R_VPBK_FIELD_TYPE_VIDEONUMBERWORK: - case R_VPBK_FIELD_TYPE_VIDEONUMBERGEN: - { - uid = KUidContactFieldVCardMapVIDEO; - break; - } - - case R_VPBK_FIELD_TYPE_FAXNUMBERHOME: - case R_VPBK_FIELD_TYPE_FAXNUMBERWORK: - case R_VPBK_FIELD_TYPE_FAXNUMBERGEN: - { - uid = KUidContactFieldVCardMapFAX; - break; - } - - case R_VPBK_FIELD_TYPE_VOIPHOME: - case R_VPBK_FIELD_TYPE_VOIPWORK: - case R_VPBK_FIELD_TYPE_VOIPGEN: - case R_VPBK_FIELD_TYPE_IMPP: - { - uid = KUidContactFieldVCardMapVOIP; - break; - } - - case R_VPBK_FIELD_TYPE_EMAILHOME: - case R_VPBK_FIELD_TYPE_EMAILWORK: - case R_VPBK_FIELD_TYPE_EMAILGEN: - { - uid = KUidContactFieldVCardMapEMAILINTERNET; - break; - } - - case R_VPBK_FIELD_TYPE_FIRSTNAME: - { - uid = KUidContactFieldGivenName; - break; - } - - case R_VPBK_FIELD_TYPE_FIRSTNAMEREADING: - { - uid = KUidContactFieldGivenNamePronunciation; - break; - } - - case R_VPBK_FIELD_TYPE_LASTNAME: - { - uid = KUidContactFieldFamilyName; - break; - } - - case R_VPBK_FIELD_TYPE_LASTNAMEREADING: - { - uid = KUidContactFieldFamilyNamePronunciation; - break; - } - - case R_VPBK_FIELD_TYPE_COMPANYNAME: - { - uid = KUidContactFieldCompanyName; - break; - } - - case R_VPBK_FIELD_TYPE_SECONDNAME: - { - uid = KUidContactFieldSecondName; - break; - } - } - - return uid; - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::FieldIdL -// Returns field id as a phonebook id -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt CVasVPbkHandler::FieldIdL() - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::FieldIdL" ); - - __ASSERT_ALWAYS( iField, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( !iOperation, User::Leave( KErrArgument ) ); - - return ConvertFieldId( *iField ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::IsFieldEmptyL -// Returns information if current field is empty -// ----------------------------------------------------------------------------- -// -EXPORT_C TBool CVasVPbkHandler::IsFieldEmptyL() - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::IsFieldEmptyL" ); - - __ASSERT_ALWAYS( iField, User::Leave( KErrArgument ) ); - __ASSERT_ALWAYS( !iOperation, User::Leave( KErrArgument ) ); - - return iField->FieldData().IsEmpty(); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::StoreReady -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::StoreReady( MVPbkContactStore& /*aContactStore*/ ) - { - RUBY_DEBUG0( "CVasVPbkHandler::StoreReady START" ); - - iError = KErrNone; - - RUBY_DEBUG0( "CVasVPbkHandler::StoreReady EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::StoreUnavailable -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::StoreUnavailable( MVPbkContactStore& /*aContactStore*/, TInt aReason ) - { - RUBY_DEBUG0( "CVasVPbkHandler::StoreUnavailable START" ); - - iError = aReason; - - RUBY_DEBUG0( "CVasVPbkHandler::StoreUnavailable EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::HandleStoreEventL -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::HandleStoreEventL( MVPbkContactStore& /*aContactStore*/, - TVPbkContactStoreEvent aStoreEvent ) - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::HandleStoreEventL" ); - - if ( iObserver ) - { - TPhonebookEvent event; - event.iType = ConvertEvent( aStoreEvent ); - - if ( aStoreEvent.iContactLink ) - { - event.iContactId = iConverter->LinkToIdentifier( *aStoreEvent.iContactLink ); - } - - iObserver->HandleEventL( event ); - } - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::OpenComplete -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::OpenComplete() - { - RUBY_DEBUG0( "CVasVPbkHandler::OpenComplete START" ); - - if ( iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - - RUBY_DEBUG0( "CVasVPbkHandler::OpenComplete EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::VPbkSingleContactOperationComplete -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::VPbkSingleContactOperationComplete( MVPbkContactOperationBase& /*aOperation*/, - MVPbkStoreContact* aContact ) - { - RUBY_DEBUG0( "CVasVPbkHandler::VPbkSingleContactOperationComplete START" ); - - iError = KErrNone; - - delete iOperation; - iOperation = NULL; - - iContact = aContact; - - if ( iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - - RUBY_DEBUG0( "CVasVPbkHandler::VPbkSingleContactOperationComplete EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::VPbkSingleContactOperationFailed -// ----------------------------------------------------------------------------- -// - void CVasVPbkHandler::VPbkSingleContactOperationFailed( MVPbkContactOperationBase& /*aOperation*/, - TInt aError ) - { - RUBY_DEBUG0( "CVasVPbkHandler::VPbkSingleContactOperationFailed START" ); - - iError = aError; - - delete iOperation; - iOperation = NULL; - - if ( iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - - RUBY_DEBUG0( "CVasVPbkHandler::VPbkSingleContactOperationFailed EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::ContactOperationCompleted -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::ContactOperationCompleted( TContactOpResult /*aResult*/ ) - { - RUBY_DEBUG0( "CVasVPbkHandler::ContactOperationCompleted START" ); - - iError = KErrNone; - - if ( iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - - RUBY_DEBUG0( "CVasVPbkHandler::ContactOperationCompleted EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::ContactOperationFailed -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::ContactOperationFailed( TContactOp /*aOpCode*/, TInt aErrorCode, - TBool /*aErrorNotified*/ ) - { - RUBY_DEBUG0( "CVasVPbkHandler::ContactOperationFailed START" ); - - iError = aErrorCode; - - if ( iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - - RUBY_DEBUG0( "CVasVPbkHandler::ContactOperationFailed EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::AttributeOperationComplete -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::AttributeOperationComplete( MVPbkContactOperationBase& /*aOperation*/ ) - { - RUBY_DEBUG0( "CVasVPbkHandler::AttributeOperationComplete START" ); - - iError = KErrNone; - - delete iOperation; - iOperation = NULL; - - if ( iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - - RUBY_DEBUG0( "CVasVPbkHandler::AttributeOperationComplete EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::AttributeOperationFailed -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::AttributeOperationFailed( MVPbkContactOperationBase& /*aOperation*/, - TInt aError ) - { - RUBY_DEBUG0( "CVasVPbkHandler::AttributeOperationFailed START" ); - - iError = aError; - - delete iOperation; - iOperation = NULL; - - if ( iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - - RUBY_DEBUG0( "CVasVPbkHandler::AttributeOperationFailed EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::StepComplete -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::StepComplete( MVPbkContactOperationBase& /*aOperation*/, TInt /*aStepSize*/ ) - { - RUBY_DEBUG0( "CVasVPbkHandler::StepComplete START" ); - - // Do nothing - - RUBY_DEBUG0( "CVasVPbkHandler::StepComplete EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::StepFailed -// ----------------------------------------------------------------------------- -// -TBool CVasVPbkHandler::StepFailed( MVPbkContactOperationBase& /*aOperation*/, TInt /*aStepSize*/, - TInt /*aError*/ ) - { - RUBY_DEBUG0( "CVasVPbkHandler::StepFailed START" ); - RUBY_DEBUG0( "CVasVPbkHandler::StepFailed EXIT" ); - - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::OperationComplete -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::OperationComplete( MVPbkContactOperationBase& /*aOperation*/ ) - { - RUBY_DEBUG0( "CVasVPbkHandler::OperationComplete START" ); - - iError = KErrNone; - - delete iOperation; - iOperation = NULL; - - if ( iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - - RUBY_DEBUG0( "CVasVPbkHandler::OperationComplete EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::ContactViewReady -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::ContactViewReady( MVPbkContactViewBase& /*aView*/ ) - { - RUBY_DEBUG0( "CVasVPbkHandler::ContactViewReady START" ); - - iError = KErrNone; - - if ( iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - - RUBY_DEBUG0( "CVasVPbkHandler::ContactViewReady EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::ContactViewUnavailable -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::ContactViewUnavailable( MVPbkContactViewBase& /*aView*/ ) - { - RUBY_DEBUG0( "CVasVPbkHandler::ContactViewUnavailable" ); - // Do nothing - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::ContactAddedToView -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::ContactAddedToView( MVPbkContactViewBase& /*aView*/, TInt /*aIndex*/, - const MVPbkContactLink& /*aContactLink*/ ) - { - RUBY_DEBUG0( "CVasVPbkHandler::ContactViewUnavailable" ); - // Do nothing - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::ContactRemovedFromView -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::ContactRemovedFromView( MVPbkContactViewBase& /*aView*/, TInt /*aIndex*/, - const MVPbkContactLink& /*aContactLink*/ ) - { - RUBY_DEBUG0( "CVasVPbkHandler::ContactViewUnavailable" ); - // Do nothing - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::ContactViewError -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::ContactViewError( MVPbkContactViewBase& /*aView*/, TInt aError, - TBool /*aErrorNotified*/ ) - { - RUBY_DEBUG0( "CVasVPbkHandler::ContactViewReady START" ); - - iError = aError; - - if ( iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - - RUBY_DEBUG0( "CVasVPbkHandler::ContactViewReady EXIT" ); - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::CVasVPbkHandler -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CVasVPbkHandler::CVasVPbkHandler() - : iError( KErrNone ) - { - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CVasVPbkHandler::ConstructL() - { - RUBY_DEBUG_BLOCK( "CVasVPbkHandler::ConstructL" ); - - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::SelectDefaultType -// Returns default field type for given tag -// ----------------------------------------------------------------------------- -// -TVPbkDefaultType CVasVPbkHandler::SelectDefaultType( TInt aCommandType ) - { - RUBY_DEBUG0( "CVasVPbkHandler::SelectDefaultType START" ); - - TVPbkDefaultType type = EVPbkDefaultTypeUndefined; - - switch( aCommandType ) - { - case EDefaultCommand: - case EMobileCommand: - case EGeneralCommand: - case EWorkCommand: - case EHomeCommand: - { - type = EVPbkDefaultTypePhoneNumber; - break; - } - - case EEmailCommand: - { - type = EVPbkDefaultTypeEmail; - break; - } - - case EVideoCommand: - { - type = EVPbkDefaultTypeVideoNumber; - break; - } - - case EVoipCommand: - { - type = EVPbkDefaultTypeVoIP; - break; - } - - case EMessageCommand: - { - if ( iMMSSupported ) - { - type = EVPbkDefaultTypeMms; - } - else - { - type = EVPbkDefaultTypeSms; - } - break; - } - - } - - RUBY_DEBUG0( "CVasVPbkHandler::SelectDefaultType EXIT" ); - - return type; - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::AcceptDefaultField -// Accepts or rejects given field based on the given tag -// ----------------------------------------------------------------------------- -// -TBool CVasVPbkHandler::AcceptDefaultField( MVPbkStoreContactField& aField, TInt aCommandType ) - { - RUBY_DEBUG0( "CVasVPbkHandler::AcceptDefaultField START" ); - - TBool accept = ETrue; - - if ( aCommandType == EMobileCommand && - aField.BestMatchingFieldType()->FieldTypeResId() != R_VPBK_FIELD_TYPE_MOBILEPHONEHOME && - aField.BestMatchingFieldType()->FieldTypeResId() != R_VPBK_FIELD_TYPE_MOBILEPHONEWORK && - aField.BestMatchingFieldType()->FieldTypeResId() != R_VPBK_FIELD_TYPE_MOBILEPHONEGEN ) - { - accept = EFalse; - } - else if ( aCommandType == EGeneralCommand && - aField.BestMatchingFieldType()->FieldTypeResId() != R_VPBK_FIELD_TYPE_LANDPHONEHOME && - aField.BestMatchingFieldType()->FieldTypeResId() != R_VPBK_FIELD_TYPE_LANDPHONEWORK && - aField.BestMatchingFieldType()->FieldTypeResId() != R_VPBK_FIELD_TYPE_LANDPHONEGEN ) - { - accept = EFalse; - } - else if ( aCommandType == EWorkCommand && - aField.BestMatchingFieldType()->FieldTypeResId() != R_VPBK_FIELD_TYPE_LANDPHONEWORK ) - { - accept = EFalse; - } - else if ( aCommandType == EHomeCommand && - aField.BestMatchingFieldType()->FieldTypeResId() != R_VPBK_FIELD_TYPE_LANDPHONEHOME ) - { - accept = EFalse; - } - - RUBY_DEBUG0( "CVasVPbkHandler::AcceptDefaultField EXIT" ); - - return accept; - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::ConvertFieldId -// Converts field id to old phonebook id -// ----------------------------------------------------------------------------- -// -TInt CVasVPbkHandler::ConvertFieldId( MVPbkStoreContactField& aField ) - { - RUBY_DEBUG0( "CVasVPbkHandler::ConvertFieldId START" ); - - TInt id = KErrNone; - - if ( aField.BestMatchingFieldType() ) - { - switch( aField.BestMatchingFieldType()->FieldTypeResId() ) - { - case R_VPBK_FIELD_TYPE_LANDPHONEGEN: - { - id = EPbkFieldIdPhoneNumberGeneral; - break; - } - - case R_VPBK_FIELD_TYPE_LANDPHONEHOME: - { - id = EPbkFieldIdPhoneNumberHome; - break; - } - - case R_VPBK_FIELD_TYPE_LANDPHONEWORK: - { - id = EPbkFieldIdPhoneNumberWork; - break; - } - - case R_VPBK_FIELD_TYPE_MOBILEPHONEHOME: - case R_VPBK_FIELD_TYPE_MOBILEPHONEWORK: - case R_VPBK_FIELD_TYPE_MOBILEPHONEGEN: - { - id = EPbkFieldIdPhoneNumberMobile; - break; - } - - case R_VPBK_FIELD_TYPE_VIDEONUMBERHOME: - case R_VPBK_FIELD_TYPE_VIDEONUMBERWORK: - case R_VPBK_FIELD_TYPE_VIDEONUMBERGEN: - { - id = EPbkFieldIdPhoneNumberVideo; - break; - } - - case R_VPBK_FIELD_TYPE_FAXNUMBERHOME: - case R_VPBK_FIELD_TYPE_FAXNUMBERWORK: - case R_VPBK_FIELD_TYPE_FAXNUMBERGEN: - { - id = EPbkFieldIdFaxNumber; - break; - } - - case R_VPBK_FIELD_TYPE_VOIPHOME: - case R_VPBK_FIELD_TYPE_VOIPWORK: - case R_VPBK_FIELD_TYPE_VOIPGEN: - { - id = EPbkFieldIdVOIP; - break; - } - - case R_VPBK_FIELD_TYPE_IMPP: - { - id = EPbkFieldIdXsp; - break; - } - - case R_VPBK_FIELD_TYPE_EMAILHOME: - case R_VPBK_FIELD_TYPE_EMAILWORK: - case R_VPBK_FIELD_TYPE_EMAILGEN: - { - id = EPbkFieldIdEmailAddress; - break; - } - - case R_VPBK_FIELD_TYPE_FIRSTNAMEREADING: - { - id = EPbkFieldIdFirstNameReading; - break; - } - - case R_VPBK_FIELD_TYPE_FIRSTNAME: - { - id = EPbkFieldIdFirstName; - break; - } - - case R_VPBK_FIELD_TYPE_LASTNAMEREADING: - { - id = EPbkFieldIdLastNameReading; - break; - } - - case R_VPBK_FIELD_TYPE_LASTNAME: - { - id = EPbkFieldIdLastName; - break; - } - - case R_VPBK_FIELD_TYPE_COMPANYNAME: - { - id = EPbkFieldIdCompanyName; - break; - } - - case R_VPBK_FIELD_TYPE_SECONDNAME: - { - id = EPbkFieldIdSecondName; - break; - } - } - } - else - { - RUBY_DEBUG0( "aField.BestMatchingFieldType() returned NULL" ); - } - - RUBY_DEBUG0( "CVasVPbkHandler::ConvertFieldId EXIT" ); - - return id; - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::ConvertEvent -// Converts contact event type -// ----------------------------------------------------------------------------- -// -TVasContactEvent CVasVPbkHandler::ConvertEvent( const TVPbkContactStoreEvent& aEvent ) - { - RUBY_DEBUG0( "CVasVPbkHandler::ConvertEvent START" ); - - TVasContactEvent event; - - switch( aEvent.iEventType ) - { - case ENullEvent: - { - event = ENullEvent; - break; - } - - case EContactChanged: - { - event = EContactChanged; - break; - } - - case EContactDeleted: - { - event = EContactDeleted; - break; - } - - case EContactAdded: - { - event = EContactAdded; - break; - } - - case EUnknownChanges: - { - event = EUnknownChanges; - break; - } - - case EGroupAdded: - { - event = EGroupAdded; - break; - } - - case EGroupChanged: - { - event = EGroupChanged; - break; - } - - case EGroupDeleted: - { - event = EGroupDeleted; - break; - } - - case EStoreBackupBeginning: - { - event = EStoreBackupBeginning; - break; - } - - case EStoreRestoreBeginning: - { - event = EStoreRestoreBeginning; - break; - } - - case EStoreBackupRestoreCompleted: - { - event = EStoreBackupRestoreCompleted; - break; - } - - default: - { - event = ENotSupported; - break; - } - } - RUBY_DEBUG0( "CVasVPbkHandler::ConvertEvent EXIT" ); - - return event; - } - -// ----------------------------------------------------------------------------- -// CVasVPbkHandler::FieldPriority -// Gets the priority of the given field -// ----------------------------------------------------------------------------- -// -TInt CVasVPbkHandler::FieldPriority( MVPbkStoreContactField& aField ) - { - RUBY_DEBUG0( "CVasVPbkHandler::FieldPriority START" ); - - TInt priority = KFieldPriorityCount; - - for ( int i = 0; i < KFieldPriorityCount; ++i ) - { - if ( aField.BestMatchingFieldType()->FieldTypeResId() == KFieldPriority[ i ] ) - { - priority = i; - break; - } - } - RUBY_DEBUG0( "CVasVPbkHandler::FieldPriority EXIT" ); - - return priority; - } - -// End of File -