diff -r 000000000000 -r e686773b3f54 ccservices/cmsservices/cmsengine/tsrc/contactcreator/Server/src/creatorserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ccservices/cmsservices/cmsengine/tsrc/contactcreator/Server/src/creatorserver.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,664 @@ +/* +* Copyright (c) 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 "contactdata.h" +#include "creatorserver.h" +#include "creatordefines.h" +#include "cmstestercontactcreator.h" +#include + +// ---------------------------------------------------------- +// CCreatorServer::CCreatorServer +// +// ---------------------------------------------------------- +// +CCreatorServer::CCreatorServer() + { + iContactCountXsp = 0; + iContactCountDefault = 0; + } + +// ---------------------------------------------------------- +// CCreatorServer::New +// +// ---------------------------------------------------------- +// +CCreatorServer* CCreatorServer::NewL( const TDesC& aStoreUri ) + { + CCreatorServer* self = new CCreatorServer(); + CleanupStack::PushL( self ); + self->ConstructL( aStoreUri ); + CleanupStack::Pop(); + return self; + } + +// ---------------------------------------------------------- +// CCreatorServer::New +// +// ---------------------------------------------------------- +// +void CCreatorServer::ConstructL( const TDesC& aStoreUri ) + { + User::LeaveIfError( iFileSession.Connect() ); + iContactCreator = CCmsTesterContactCreator::NewL( iFileSession, aStoreUri ); + using namespace VPbkContactStoreUris; + iDefaultStore = aStoreUri.Compare( DefaultCntDbUri() ) == 0 ? ETrue : EFalse; + } + +// ---------------------------------------------------------- +// CCreatorServer::CCreatorServer +// +// ---------------------------------------------------------- +// +CCreatorServer::~CCreatorServer() + { + if( iContactView ) + iContactView->RemoveObserver( *this ); + delete iContact; + delete iContactView; + delete iContactCreator; + iFileSession.Close(); + } + +// ---------------------------------------------------- +// CCreatorServer::FileSession +// +// ---------------------------------------------------- +// +RFs& CCreatorServer::FileSession() + { + return iFileSession; + } + +// ---------------------------------------------------------- +// CCmsTesterContactCreator::CreateContactsL +// +// ---------------------------------------------------------- +// +void CCreatorServer::CreateContactsL() + { + iContactCreator->InitStoresL( *this ); + } + +// ---------------------------------------------------------- +// CCmsTesterContactCreator::ContactViewReady +// +// ---------------------------------------------------------- +// +void CCreatorServer::ContactViewReady( MVPbkContactViewBase& aView ) + { + #ifdef _DEBUG + WriteToLog( _L8( "CCreatorServer::ContactViewReady() - Contact count: %d" ), aView.ContactCountL() ); + #endif + + iContactView = &aView; + if( iContactView->ContactCountL() <= 0 ) + { + iDefaultStore ? CreateDefaultContactL() : CreateXSPContactL(); + } + else CActiveScheduler::Stop(); + } + +// ---------------------------------------------------------- +// CCmsTesterContactCreator::CreateXSPContactL +// +// ---------------------------------------------------------- +// +void CCreatorServer::CreateXSPContactL() + { +#ifdef _DEBUG + WriteToLog( _L8( "CCreatorServer::CreateXSPContactL()" ) ); +#endif + + MVPbkContactStore& store = iContactCreator->ContactStore(); + CVPbkContactManager& manager = iContactCreator->ContactManager(); + iContact = store.CreateNewContactLC(); + CleanupStack::Pop(); //iContact + + const MVPbkFieldType* fieldType1 = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME ); + MVPbkStoreContactField* field1 = iContact->CreateFieldLC( *fieldType1 ); + MVPbkContactFieldTextData::Cast( field1->FieldData() ).SetTextL( TPtrC( KFirstNameArrayXSP[iContactCountXsp] ) ); + iContact->AddFieldL( field1 ); + CleanupStack::Pop(); //field1 + + const MVPbkFieldType* fieldType2 = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_LASTNAME ); + MVPbkStoreContactField* field2 = iContact->CreateFieldLC( *fieldType2 ); + MVPbkContactFieldTextData::Cast( field2->FieldData() ).SetTextL( TPtrC( KLastNameArrayXSP[iContactCountXsp] ) ); + iContact->AddFieldL( field2 ); + CleanupStack::Pop(); //field2 + + + const MVPbkFieldType* landPhoneType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_LANDPHONEGEN ); + MVPbkStoreContactField* landPhoneField = iContact->CreateFieldLC( *landPhoneType ); + MVPbkContactFieldTextData::Cast( landPhoneField->FieldData() ).SetTextL( TPtrC( KLandNumberArrayXSP[iContactCountXsp] ) ); + iContact->AddFieldL( landPhoneField ); + CleanupStack::Pop(); //landPhoneField + + for( TInt j = 0; j < KMobilePhoneCountXSP; j++ ) + { + const MVPbkFieldType* mobilePhoneType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_MOBILEPHONEGEN ); + MVPbkStoreContactField* mobilePhoneField = iContact->CreateFieldLC( *mobilePhoneType ); + MVPbkContactFieldTextData::Cast( mobilePhoneField->FieldData() ).SetTextL( TPtrC( KMobileNumberArrayXSP[iContactCountXsp*KMobilePhoneCountXSP + j] ) ); + iContact->AddFieldL( mobilePhoneField ); + CleanupStack::Pop(); //mobilePhoneField + } + + const MVPbkFieldType* emailGenType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_EMAILGEN ); + MVPbkStoreContactField* emailGenField = iContact->CreateFieldLC( *emailGenType ); + SetDefaultAttributeL( emailGenField, EVPbkDefaultTypeEmail ); + MVPbkContactFieldTextData::Cast( emailGenField->FieldData() ).SetTextL( TPtrC( KEmailAddressArrayXSP[iContactCountXsp] ) ); + iContact->AddFieldL( emailGenField ); + CleanupStack::Pop(); //emailGenField + + const MVPbkFieldType* imppType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_IMPP ); + MVPbkStoreContactField* imppField = iContact->CreateFieldLC( *imppType ); + MVPbkContactFieldUriData& uri = MVPbkContactFieldUriData::Cast( imppField->FieldData() ); + uri.SetUriL( TPtrC( KImppAddressArrayXSP[iContactCountXsp] )); + iContact->AddFieldL( imppField ); + CleanupStack::Pop(); // imppField + + iContact->CommitL( *this ); + } + +// ---------------------------------------------------------- +// CCmsTesterContactCreator::CreateDefaultContactL +// +// ---------------------------------------------------------- +// +void CCreatorServer::CreateDefaultContactL() + { +#ifdef _DEBUG + WriteToLog( _L8( "CCreatorServer::CreateDefaultContactL()" ) ); +#endif + + MVPbkContactStore& store = iContactCreator->ContactStore(); + CVPbkContactManager& manager = iContactCreator->ContactManager(); + iContact = store.CreateNewContactLC(); + CleanupStack::Pop(); //iContact + + const MVPbkFieldType* fieldType1 = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME ); + MVPbkStoreContactField* field1 = iContact->CreateFieldLC( *fieldType1 ); + MVPbkContactFieldTextData::Cast( field1->FieldData() ).SetTextL( TPtrC( KFirstNameArray[iContactCountDefault] ) ); + iContact->AddFieldL( field1 ); + CleanupStack::Pop(); //field1 + + const MVPbkFieldType* fieldType2 = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_LASTNAME ); + MVPbkStoreContactField* field2 = iContact->CreateFieldLC( *fieldType2 ); + MVPbkContactFieldTextData::Cast( field2->FieldData() ).SetTextL( TPtrC( KLastNameArray[iContactCountDefault] ) ); + iContact->AddFieldL( field2 ); + CleanupStack::Pop(); //field2 + + /* + EVPbkDefaultTypeUndefined, + EVPbkDefaultTypePhoneNumber, + EVPbkDefaultTypeVideoNumber, + EVPbkDefaultTypeSms, + EVPbkDefaultTypeMms, + EVPbkDefaultTypeEmail, + EVPbkDefaultTypeEmailOverSms, + EVPbkDefaultTypeVoIP, + EVPbkDefaultTypePOC, + */ + + const MVPbkFieldType* landPhoneType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_LANDPHONEGEN ); + MVPbkStoreContactField* landPhoneField = iContact->CreateFieldLC( *landPhoneType ); + SetDefaultAttributeL( landPhoneField, EVPbkDefaultTypePhoneNumber ); + MVPbkContactFieldTextData::Cast( landPhoneField->FieldData() ).SetTextL( TPtrC( KLandNumberArray[iContactCountDefault] ) ); + iContact->AddFieldL( landPhoneField ); + CleanupStack::Pop(); //landPhoneField + + for( TInt j = 0; j < KMobilePhoneCount; j++ ) + { + const MVPbkFieldType* mobilePhoneType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_MOBILEPHONEGEN ); + MVPbkStoreContactField* mobilePhoneField = iContact->CreateFieldLC( *mobilePhoneType ); + MVPbkContactFieldTextData::Cast( mobilePhoneField->FieldData() ).SetTextL( TPtrC( KMobileNumberArray[iContactCountDefault*KMobilePhoneCount + j] ) ); + switch( j ) + { + case 0: + SetDefaultAttributeL( mobilePhoneField, EVPbkDefaultTypeSms ); + break; + case 1: + SetDefaultAttributeL( mobilePhoneField, EVPbkDefaultTypeMms ); + break; + case 2: + SetDefaultAttributeL( mobilePhoneField, EVPbkDefaultTypeEmailOverSms ); + break; + case 3: + // Need to do the following ? + // SetDefaultAttributeL( mobilePhoneField, EVPbkDefaultType ); + break; + } + iContact->AddFieldL( mobilePhoneField ); + CleanupStack::Pop(); //mobilePhoneField + } + + const MVPbkFieldType* videoType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_VIDEONUMBERGEN ); + MVPbkStoreContactField* videoField = iContact->CreateFieldLC( *videoType ); + SetDefaultAttributeL( videoField, EVPbkDefaultTypeVideoNumber ); + MVPbkContactFieldTextData::Cast( videoField->FieldData() ).SetTextL( TPtrC( KVideoNumberArray[iContactCountDefault] ) ); + iContact->AddFieldL( videoField ); + CleanupStack::Pop(); //videoField + + const MVPbkFieldType* emailGenType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_EMAILGEN ); + MVPbkStoreContactField* emailGenField = iContact->CreateFieldLC( *emailGenType ); + SetDefaultAttributeL( emailGenField, EVPbkDefaultTypeEmail ); + MVPbkContactFieldTextData::Cast( emailGenField->FieldData() ).SetTextL( TPtrC( KEmailAddressArray[iContactCountDefault] ) ); + iContact->AddFieldL( emailGenField ); + CleanupStack::Pop(); //emailGenField + + const MVPbkFieldType* emailHomeType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_EMAILHOME ); + MVPbkStoreContactField* emailHomeField = iContact->CreateFieldLC( *emailHomeType ); + MVPbkContactFieldTextData::Cast( emailHomeField->FieldData() ).SetTextL( TPtrC( KEmailAddressArray[iContactCountDefault] ) ); + iContact->AddFieldL( emailHomeField ); + CleanupStack::Pop(); //emailHomeField + + const MVPbkFieldType* emailWorkType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_EMAILWORK ); + MVPbkStoreContactField* emailWorkField = iContact->CreateFieldLC( *emailWorkType ); + MVPbkContactFieldTextData::Cast( emailWorkField->FieldData() ).SetTextL( TPtrC( KEmailAddressArray[iContactCountDefault] ) ); + iContact->AddFieldL( emailWorkField ); + CleanupStack::Pop(); //emailWorkField + + const MVPbkFieldType* sipType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_SIP ); + MVPbkStoreContactField* sipField = iContact->CreateFieldLC( *sipType ); + MVPbkContactFieldTextData::Cast( sipField->FieldData() ).SetTextL( TPtrC( KSipAddressArray[iContactCountDefault] ) ); + iContact->AddFieldL( sipField ); + CleanupStack::Pop(); //sipField + + TPtrC bitMap = TPtrC( KThumbnailImageArray[iContactCountDefault]); + if ( bitMap.Length() > 0 ) + { + const MVPbkFieldType* thumbnailType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_THUMBNAILPIC ); + MVPbkStoreContactField* thumbnailField = iContact->CreateFieldLC( *thumbnailType ); + MVPbkContactFieldBinaryData::Cast( thumbnailField->FieldData() ).SetBinaryDataL( BinaryDataLC( TPtrC( KThumbnailImageArray[iContactCountDefault] ) )->Des() ); + iContact->AddFieldL( thumbnailField ); + CleanupStack::PopAndDestroy(); //BinaryDataLC() + CleanupStack::Pop(); //thumbnailField + } + + // Anniversary + TTime time; + time.HomeTime(); + const MVPbkFieldType* anniversaryType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_ANNIVERSARY ); + MVPbkStoreContactField* anniversaryField = iContact->CreateFieldLC( *anniversaryType ); + MVPbkContactFieldDateTimeData::Cast( anniversaryField->FieldData() ).SetDateTime( time ); + iContact->AddFieldL( anniversaryField ); + CleanupStack::Pop(); //anniversaryField + + const MVPbkFieldType* imppType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_IMPP ); + MVPbkStoreContactField* imppField = iContact->CreateFieldLC( *imppType ); + MVPbkContactFieldUriData& uri = MVPbkContactFieldUriData::Cast( imppField->FieldData() ); + uri.SetUriL( TPtrC( KImppAddressArray[iContactCountDefault] )); + iContact->AddFieldL( imppField ); + CleanupStack::Pop(); // imppField + + iContact->CommitL( *this ); + } + +// ---------------------------------------------------------- +// CCmsTesterContactCreator::DoCreateImppContactL +// +// ---------------------------------------------------------- +// +void CCreatorServer::DoCreateImppContactL() + { + #ifdef _DEBUG + WriteToLog( _L8( "CCreatorServer::DoCreateImppContactL()" ) ); + #endif + + MVPbkContactStore& store = iContactCreator->ContactStore(); + CVPbkContactManager& manager = iContactCreator->ContactManager(); + iContact = store.CreateNewContactLC(); + CleanupStack::Pop(); //iContact + + const MVPbkFieldType* fieldType1 = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME ); + MVPbkStoreContactField* field1 = iContact->CreateFieldLC( *fieldType1 ); + MVPbkContactFieldTextData::Cast( field1->FieldData() ).SetTextL( TPtrC( KFirstNameArray[iContactCountDefault] ) ); + iContact->AddFieldL( field1 ); + CleanupStack::Pop(); //field1 + + const MVPbkFieldType* fieldType2 = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_LASTNAME ); + MVPbkStoreContactField* field2 = iContact->CreateFieldLC( *fieldType2 ); + MVPbkContactFieldTextData::Cast( field2->FieldData() ).SetTextL( TPtrC( KLastNameArray[iContactCountDefault] ) ); + iContact->AddFieldL( field2 ); + CleanupStack::Pop(); //field2 + + + const MVPbkFieldType* landPhoneType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_LANDPHONEGEN ); + MVPbkStoreContactField* landPhoneField = iContact->CreateFieldLC( *landPhoneType ); + SetDefaultAttributeL( landPhoneField, EVPbkDefaultTypePhoneNumber ); + MVPbkContactFieldTextData::Cast( landPhoneField->FieldData() ).SetTextL( TPtrC( KLandNumberArray[iContactCountDefault] ) ); + iContact->AddFieldL( landPhoneField ); + CleanupStack::Pop(); //landPhoneField + + /* + if ( TPtrC(KVoIPAddressArray[iContactCountDefault]).Length() ) + { + const MVPbkFieldType* voipWorkType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_VOIPWORK ); + MVPbkStoreContactField* voipWorkField = iContact->CreateFieldLC( *voipWorkType ); + MVPbkContactFieldTextData::Cast( voipWorkField->FieldData() ).SetTextL( TPtrC( KVoIPAddressArray[iContactCountDefault] ) ); + iContact->AddFieldL( voipWorkField ); + CleanupStack::Pop(); //voipWorkField + } + */ + + if ( TPtrC(KImppAddressArray[iContactCountDefault]).Length() ) + { + // Wanna test with non existig field as well, the first test person. + const MVPbkFieldType* imppType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_IMPP ); + MVPbkStoreContactField* imppField = iContact->CreateFieldLC( *imppType ); + MVPbkContactFieldUriData& uri = MVPbkContactFieldUriData::Cast( imppField->FieldData() ); + uri.SetUriL( TPtrC( KImppAddressArray[iContactCountDefault] )); + iContact->AddFieldL( imppField ); + CleanupStack::Pop(); // imppField + } + + if ( TPtrC(KGoogleAddressArray[iContactCountDefault]).Length() ) + { + // Wanna test with non existig field as well, the first test person. + const MVPbkFieldType* imppType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_IMPP ); + MVPbkStoreContactField* imppField = iContact->CreateFieldLC( *imppType ); + MVPbkContactFieldUriData& uri = MVPbkContactFieldUriData::Cast( imppField->FieldData() ); + uri.SetUriL( TPtrC( KGoogleAddressArray[iContactCountDefault] )); + iContact->AddFieldL( imppField ); + CleanupStack::Pop(); // imppField + } + + if ( TPtrC(KOviAddressArray[iContactCountDefault]).Length() ) + { + // Wanna test with non existig field as well, the first test person. + const MVPbkFieldType* imppType = manager.FieldTypes().Find( R_VPBK_FIELD_TYPE_IMPP ); + MVPbkStoreContactField* imppField = iContact->CreateFieldLC( *imppType ); + MVPbkContactFieldUriData& uri = MVPbkContactFieldUriData::Cast( imppField->FieldData() ); + uri.SetUriL( TPtrC( KOviAddressArray[iContactCountDefault] )); + iContact->AddFieldL( imppField ); + CleanupStack::Pop(); // imppField + } + + iContact->CommitL( *this ); + } + + +// ---------------------------------------------------------- +// CCmsTesterContactCreator::BinaryDataL +// +// ---------------------------------------------------------- +// +HBufC8* CCreatorServer::BinaryDataLC( const TDesC& aFilePath ) + { + RFile file; + TInt size = 0; + RFs fileSession; + HBufC8* dataBuffer = NULL; + User::LeaveIfError( fileSession.Connect() ); + CleanupClosePushL( fileSession ); + User::LeaveIfError( file.Open( fileSession, aFilePath, EFileRead ) ); + CleanupClosePushL( file ); + TInt error = file.Size( size ); + if( error == KErrNone ) + { + dataBuffer = HBufC8::NewLC( size ); + TPtr8 dataDesc( dataBuffer->Des() ); + User::LeaveIfError( file.Read( dataDesc ) ); + CleanupStack::Pop(); //dataBuffer + } + CleanupStack::PopAndDestroy( 2 ); //file, fileSession + if( dataBuffer ) + { + CleanupStack::PushL( dataBuffer ); + } + return dataBuffer; + } + +// ---------------------------------------------------------- +// CCreatorServer::SetDefaultAttributesL +// +// ---------------------------------------------------------- +// +void CCreatorServer::SetDefaultAttributeL( MVPbkStoreContactField* aField, TInt aDefaultType ) + { + CVPbkContactManager& manager = iContactCreator->ContactManager(); + CVPbkDefaultAttribute* attr = CVPbkDefaultAttribute::NewL( static_cast( aDefaultType ) ); + CleanupStack::PushL( attr ); + manager.ContactAttributeManagerL().SetFieldAttributeL( *aField, *attr, *this ); + CleanupStack::PopAndDestroy(); //attr + CActiveScheduler::Start(); + } + +// ---------------------------------------------------------- +// CCmsTesterContactCreator::ContactOperationCompleted +// +// ---------------------------------------------------------- +// +void CCreatorServer::ContactOperationCompleted( TContactOpResult aResult ) + { + #ifdef _DEBUG + WriteToLog( _L8( "CCreatorServer::ContactOperationCompleted()" ) ); + #endif + TInt code( aResult.iOpCode ); + delete iContact; + iContact = NULL; + if( iDefaultStore ) + { + iContactCountDefault++; + if( iContactCountDefault < KNumberOfDefaultContacts ) + { + (iContactCountDefault < KNumberOfDefaultImppContacts) + ? CreateDefaultContactL() + : DoCreateImppContactL(); + } + else + { + CActiveScheduler::Stop(); + #ifdef _DEBUG + WriteToLog( _L8( "Scheduler stopped" ) ); + #endif + } + } + else + { + iContactCountXsp++; + if ( iContactCountXsp < KNumberOfXSPContacts ) + { + CreateXSPContactL(); + } + else + { + CActiveScheduler::Stop(); + #ifdef _DEBUG + WriteToLog( _L8( "Scheduler stopped" ) ); + #endif + } + } + } + +// ---------------------------------------------------------- +// CCmsTesterContactCreator::AttributeOperationComplete +// +// ---------------------------------------------------------- +// +void CCreatorServer::AttributeOperationComplete( MVPbkContactOperationBase& aOperation ) + { + delete &aOperation; + CActiveScheduler::Stop(); + } + +// ---------------------------------------------------------- +// CCreatorServer::AttributeOperationFailed +// +// ---------------------------------------------------------- +// +void CCreatorServer::AttributeOperationFailed( MVPbkContactOperationBase& aOperation, TInt /*aError*/ ) + { + delete &aOperation; + CActiveScheduler::Stop(); + } + +// ---------------------------------------------------------- +// CCreatorServer::ContactOperationFailed +// +// ---------------------------------------------------------- +// +void CCreatorServer::ContactOperationFailed( TContactOp /*aOpCode*/, TInt aErrorCode, TBool /*aErrorNotified*/ ) + { + #ifdef _DEBUG + WriteToLog( _L8( "CCreatorServer::ContactOperationFailed() - Error: %d" ), aErrorCode ); + #endif + CActiveScheduler::Stop(); + #ifdef _DEBUG + WriteToLog( _L8( " Scheduler stopped" ) ); + #endif + } + +// ---------------------------------------------------- +// CCreatorServer::WriteToLog +// +// ---------------------------------------------------- +// +void CCreatorServer::WriteToLog( TRefByValue aFmt,... ) + { + VA_LIST list; + VA_START( list, aFmt ); + TBuf8 buf; + buf.FormatList( aFmt, list ); + RFileLogger::Write( KCmsCreatorLogDir, KCmsCreatorLogFile, EFileLoggingModeAppend, buf ); + RDebug::RawPrint( buf ); + } + +// ---------------------------------------------------------- +// CCmsTesterContactCreator::ContactViewUnavailable +// +// ---------------------------------------------------------- +// +void CCreatorServer::ContactViewUnavailable( MVPbkContactViewBase& /*aView*/ ) + { + } + +// ---------------------------------------------------------- +// CCmsTesterContactCreator::~CCmsTesterContactCreator +// +// ---------------------------------------------------------- +// +void CCreatorServer::ContactAddedToView( MVPbkContactViewBase& /*aView*/, TInt /*aIndex*/, + const MVPbkContactLink& /*aContactLink*/ ) + { + } + +// ---------------------------------------------------------- +// CCmsTesterContactCreator::~CCmsTesterContactCreator +// +// ---------------------------------------------------------- +// +void CCreatorServer::ContactRemovedFromView( MVPbkContactViewBase& /*aView*/, TInt /*aIndex*/, + const MVPbkContactLink& /*aContactLink*/ ) + { + } + +// ---------------------------------------------------------- +// CCmsTesterContactCreator::ContactViewError +// +// ---------------------------------------------------------- +// +void CCreatorServer::ContactViewError( MVPbkContactViewBase& /*aView*/, TInt /*aError*/, TBool /*aErrorNotified*/ ) + { + } + +// ---------------------------------------------------- +// CCreatorServer::StartThread +// +// ---------------------------------------------------- +// +TInt CCreatorServer::StartThread() + { + User::LeaveIfError( User::RenameThread( KCreatorServerName ) ); + CActiveScheduler* scheduler = new ( ELeave ) CActiveScheduler; + CleanupStack::PushL( scheduler ); + if( !CActiveScheduler::Current() ) + { + CActiveScheduler::Install( scheduler ); + } + CCreatorServer* server = CCreatorServer::NewL( KCmsCreatorDbUri ); + CleanupStack::PushL( server ); + server->CreateContactsL(); + CActiveScheduler::Start(); + CleanupStack::PopAndDestroy(); //server + server = NULL; + TInt exists( CreateXSPStoreL() ); + //CContactDatabase::DeleteDatabaseL( KCmsXSPStore ); + if( KErrNone == exists ) + { + TRAPD( error, server = CCreatorServer::NewL( KCmsContactStore ) ); + CleanupStack::PushL( server ); + TRAP( error, server->CreateContactsL() ); + if( KErrNone == error ) + { + CActiveScheduler::Start(); + } + CleanupStack::PopAndDestroy(); //server + } + CleanupStack::PopAndDestroy(); //scheduler + RProcess::Rendezvous( KErrNone ); + return KErrNone; + } + +// ---------------------------------------------------- +// CCreatorServer::CreateXSPStoreL +// +// ---------------------------------------------------- +// +TInt CCreatorServer::CreateXSPStoreL() + { + TInt err = KErrNone; + CContactDatabase* database = NULL; + TBool exists( CContactDatabase::ContactDatabaseExistsL( KCmsXSPStore ) ); + if( !exists ) + { + TRAP( err, database = CContactDatabase::CreateL( KCmsXSPStore ) ); + delete database; + database = NULL; + } + return exists ? KErrAlreadyExists : KErrNone; + } + + + + + +