--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceproviders/sapi_contacts_vpbk/tsrc/dev/tcontacts_async/src/tcontacts_async_blocks.cpp Fri Jul 03 15:51:24 2009 +0100
@@ -0,0 +1,4017 @@
+/*
+* Copyright (c) 2002 - 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: ?Description
+*
+*/
+
+
+
+
+// INCLUDE FILES
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include <VPbkEng.rsg>
+
+#include <MVPbkContactFieldTextData.h>
+#include <MVPbkContactStoreList.h>
+#include <MVPbkContactOperationBase.h>
+#include <MVPbkContactLink.h>
+#include <CVPbkContactLinkArray.h>
+#include <MVPbkContactGroup.h>
+#include <utf.h>
+#include <CVPbkPhoneNumberMatchStrategy.h>
+#include <CVPbkContactStoreUriArray.h>
+#include <TVPbkContactStoreUriPtr.h>
+#include "tcontacts_async.h"
+#include "singlecontact.h"
+
+// CONSTANTS
+_LIT(KError,"Error code is");
+_LIT(KSuccess,"Successful");
+_LIT(KNewLine,"\n");
+_LIT(KServiceOpen,"Service handle created");
+_LIT(KServiceClose,"Service handle deleted");
+_LIT(KPhoneNumber,"9886431364");
+ _LIT(KGroup1,"Test1");
+ TInt KInvalidKey = -1;
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CContactsUT::Delete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// -----------------------------------------------------------------------------
+//
+void CContactsUT::Delete()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CContactsUT::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::RunMethodL(
+ CStifItemParser& aItem )
+ {
+
+ static TStifFunctionInfo const KFunctions[] =
+ {
+ ENTRY( "Add_contact_sapi", CContactsUT::AddContactSAPIL ),
+ ENTRY( "Delete_contact_sapi", CContactsUT::DeleteContactSAPIL ),
+ ENTRY( "Modify_contact_sapi", CContactsUT::ModifyContactSAPIL ),
+ ENTRY( "Getlist_delete_contact", CContactsUT::GetListDeleteContactL ),
+ ENTRY( "Add_getlist_contact", CContactsUT::AddContactGetListL ),
+ ENTRY( "Get_group", CContactsUT::GetGroupsL ),
+ ENTRY( "Get_contact", CContactsUT::GetContactsL ),
+ ENTRY( "Get_database", CContactsUT::GetDatabaseL ),
+ ENTRY( "Add_contact", CContactsUT::AddL ),
+ ENTRY( "Add_group", CContactsUT::AddGroupL ),
+ ENTRY( "Modify_contact", CContactsUT::ModifyL ),
+ ENTRY( "Modify_group", CContactsUT::ModifyGroupL ),
+ ENTRY( "Delete_contact", CContactsUT::DeleteContactL ),
+ ENTRY( "Delete_group", CContactsUT::DeleteGroupL ),
+ ENTRY( "Organise_add", CContactsUT::OrganiseAddL ),
+ ENTRY( "Organise_delete", CContactsUT::OrganiseDeleteL ),
+ ENTRY( "Import", CContactsUT::ImportL ),
+ ENTRY( "Export", CContactsUT::ExportL ),
+ ENTRY( "Get_SearchContact", CContactsUT::GetSearchContactL ),
+ ENTRY( "Get_ContactAsc", CContactsUT::GetContactsAscOrderL ),
+ ENTRY( "Get_ContactDsc", CContactsUT::GetContactsDscOrderL ),
+ ENTRY( "Get_ContactbyId", CContactsUT::GetListConactIdL ),
+ ENTRY( "AddInvalidField", CContactsUT::AddInvalidFieldL ),
+ ENTRY( "AddMultiplePhoneNumbersContact", CContactsUT::AddMultiplePhoneNumbersContactL ),
+ ENTRY( "DeleteSingleContact", CContactsUT::DeleteSingleContactL ),
+ ENTRY( "GetListCancelTest", CContactsUT::GetListCancelL ),
+ ENTRY( "GetListSrchCancelTest", CContactsUT::GetListSrchCancelL ),
+ ENTRY( "ExportCancelTest", CContactsUT::ExportCancelL ),
+ ENTRY( "AddCancelTest", CContactsUT::AddCancelL ),
+ ENTRY( "ImportCancelTest", CContactsUT::ImportCancelL ),
+ ENTRY( "DeleteCancelTest", CContactsUT::DeleteCancelL ),
+ ENTRY( "OrganiseCancelTest", CContactsUT::OrganiseCancelL),
+ };
+
+ const TInt count = sizeof( KFunctions ) /
+ sizeof( TStifFunctionInfo );
+
+ return RunInternalL( KFunctions, count, aItem );
+
+ }
+
+
+void CContactsUT::HandleReturnValue(TOperationEvent /*aEvent*/, const TInt& aError, TInt /*aTransId*/ )
+ {
+ CActiveScheduler::Stop();
+ _LIT(KFunc,"In Handle Return Value\n");
+ iLog->Log(KFunc);
+ if(aError == KErrArgument)
+ iErr = KErrNone;
+ else
+ iErr = aError;
+ TBuf<5> buf;
+ buf.Num(aError);
+ iLog->Log(KError);
+ iLog->Log(buf);
+ iLog->Log(KNewLine);
+ }
+
+void CContactsUT::HandleReturnIter(const TInt& aError, CContactIter* aIter, TInt /*aTransId*/ )
+ {
+ CActiveScheduler::Stop();
+ _LIT(KFunc,"In Handle Return Iter\n");
+ iLog->Log(KFunc);
+ iErr = aError;
+ TBuf<5> buf;
+ buf.Num(aError);
+ iLog->Log(KError);
+ iLog->Log(buf);
+ iLog->Log(KNewLine);
+
+ if(EGetContactDelete == iOperation )
+ {
+ iOperation = ENone;
+ CSingleContact* singleContact = NULL;
+ HBufC8* buf = NULL;
+ TInt count = 0;
+ while(ETrue)
+ {
+ aIter->NextL(singleContact,buf);
+ if(!singleContact)
+ {
+ break;
+ }
+ iBuffer = buf;
+ // delete buf;
+ delete singleContact;
+ break;
+ }
+ }
+ if(iOperation == EContact)
+ {
+ iOperation = ENone;
+ iErr = KErrGeneral;
+ CSingleContact* singleContact = NULL;
+ HBufC8* buf = NULL;
+
+ _LIT(KPhone,"Birbal");
+ _LIT8(KField,"FirstName");
+
+ while(ETrue)
+ {
+ __UHEAP_MARK;
+ aIter->NextL(singleContact,buf);
+ if(!singleContact)
+ {
+ break;
+ }
+ CleanupStack::PushL(singleContact);
+ //CleanupStack::PushL(buf);
+ if(!buf->Compare(*iBuffer))
+ {
+ TInt count(singleContact->FieldCount());
+ CSingleContactField* field = NULL;
+ while(count)
+ {
+ TPtrC8 fieldKey;
+ TPtrC label;
+ TPtrC value;
+ field = singleContact->FieldAt(--count);
+ field->GetFieldDataL(fieldKey,label,value);
+ if(!fieldKey.Compare(KField))
+ {
+ field->SetFieldParamsL(KField,KNullDesC,KPhone);
+ iLog->Log(_L("Phone Contact Field modified \n"));
+ __UHEAP_MARK;
+ iServiceHandle->AddL(this,0,singleContact);
+ iLog->Log(_L("AddL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+ __UHEAP_MARKEND;
+ break;
+ }
+ }
+ }
+
+ //CleanupStack::PopAndDestroy(buf);
+ delete buf;
+ CleanupStack::PopAndDestroy(singleContact);
+ __UHEAP_MARKEND;
+ }
+ }
+ if(EGetContact == iOperation )
+ {
+ iOperation = ENone;
+ //iErr = KErrGeneral;
+ _LIT8(KFirstName,"FirstName");
+ _LIT(KName,"Kats");
+ CSingleContact* singleContact = NULL;
+ HBufC8* buf = NULL;
+ TInt count = 0;
+ while(ETrue)
+ {
+ aIter->NextL(singleContact,buf);
+ if(!singleContact)
+ {
+ break;
+ }
+ ++count;
+ TInt count(singleContact->FieldCount());
+ while(count)
+ {
+ CSingleContactField* field = singleContact->FieldAt(--count);
+ TPtrC8 fieldKey;
+ TPtrC label;
+ TPtrC value;
+ field->GetFieldDataL(fieldKey,label,value);
+ if (fieldKey == KFirstName && value == KName)
+ {
+ iErr = KErrNone;
+ }
+ // delete field;
+ }
+ delete buf;
+ delete singleContact;
+ }
+ delete buf;
+ }
+ if(EContactVerify == iOperation )
+ {
+ iOperation = ENone;
+ iErr = KErrGeneral;
+ _LIT8(KFirstName,"FirstName");
+ _LIT(KName,"Tenali");
+ CSingleContact* singleContact = NULL;
+ HBufC8* buf = NULL;
+ aIter->NextL(singleContact,buf);
+ if(buf->Compare(*iBuf)==0)
+ {
+ iErr = KErrNone;
+ }
+ }
+ if(EContactId == iOperation )
+ {
+ iOperation = ENone;
+ //iErr = KErrGeneral;
+ _LIT8(KFirstName,"FirstName");
+ _LIT(KName,"Tenali");
+ CSingleContact* singleContact = NULL;
+ HBufC8* buf = NULL;
+ TInt count = 0;
+
+ aIter->NextL(singleContact,buf);
+ iOperation = EContactVerify;
+ iBuf = buf;
+ iServiceHandle->GetListL(this,0,EContacts,*buf);
+ CActiveScheduler::Start();
+ delete singleContact;
+ }
+ if(ESearchContact == iOperation )
+ {
+ iOperation = ENone;
+ iErr = KErrGeneral;
+ _LIT8(KFirstName,"FirstName");
+ _LIT(KName,"Tenali");
+ CSingleContact* singleContact = NULL;
+ HBufC8* buf = NULL;
+ TInt count = 0;
+ while(ETrue)
+ {
+ aIter->NextL(singleContact,buf);
+ if(!singleContact)
+ {
+ break;
+ }
+ ++count;
+ TInt count(singleContact->FieldCount());
+ while(count)
+ {
+ CSingleContactField* field = singleContact->FieldAt(--count);
+ TPtrC8 fieldKey;
+ TPtrC label;
+ TPtrC value;
+ field->GetFieldDataL(fieldKey,label,value);
+ if (fieldKey == KFirstName && value == KName)
+ {
+ iErr = KErrNone;
+ }
+ else if (fieldKey == KFirstName)
+ {
+ break;
+ }
+ }
+ delete singleContact;
+ }
+ }
+ if(EAscContact == iOperation )
+ {
+ iOperation = ENone;
+ iErr = KErrGeneral;
+ _LIT8(KFirstName,"FirstName");
+ _LIT(KNameT,"Tenali");
+ _LIT(KNameB,"Birbal");
+ TInt count1 = 0;
+ TInt tCount = 0;
+ TInt bCount = 0;
+ CSingleContact* singleContact = NULL;
+ HBufC8* buf = NULL;
+ TInt count = 0;
+
+ while(ETrue)
+ {
+ aIter->NextL(singleContact,buf);
+ if(!singleContact)
+ {
+ break;
+ }
+ ++count;
+ TInt count(singleContact->FieldCount());
+ while(count)
+ {
+ CSingleContactField* field = singleContact->FieldAt(--count);
+ TPtrC8 fieldKey;
+ TPtrC label;
+ TPtrC value;
+ field->GetFieldDataL(fieldKey,label,value);
+ if (fieldKey == KFirstName && value == KNameT)
+ {
+ ++count1;
+ tCount = count1;
+ }
+ if (fieldKey == KFirstName && value == KNameB)
+ {
+ ++count1;
+ bCount = count1;
+ }
+
+ }
+ delete singleContact;
+ }
+
+ if(bCount>0 && tCount>0 && bCount<tCount)
+ {
+ iErr = KErrNone;
+ }
+ }
+
+ if(EDscContact == iOperation )
+ {
+ iOperation = ENone;
+ iErr = KErrGeneral;
+ _LIT8(KFirstName,"FirstName");
+ _LIT(KNameT,"Tenali");
+ _LIT(KNameB,"Birbal");
+ TInt count1 = 0;
+ TInt tCount = 0;
+ TInt bCount = 0;
+ CSingleContact* singleContact = NULL;
+ HBufC8* buf = NULL;
+ TInt count = 0;
+ while(ETrue)
+ {
+ aIter->NextL(singleContact,buf);
+ if(!singleContact)
+ {
+ break;
+ }
+ ++count;
+ TInt count(singleContact->FieldCount());
+ while(count)
+ {
+ CSingleContactField* field = singleContact->FieldAt(--count);
+ TPtrC8 fieldKey;
+ TPtrC label;
+ TPtrC value;
+ field->GetFieldDataL(fieldKey,label,value);
+ if (fieldKey == KFirstName && value == KNameT)
+ {
+ ++count1;
+ tCount = count1;
+ }
+ if (fieldKey == KFirstName && value == KNameB)
+ {
+ ++count1;
+ bCount = count1;
+ }
+ }
+ delete singleContact;
+ }
+ if(bCount>tCount)
+ {
+ iErr = KErrNone;
+ }
+ }
+ if(EGetGroup == iOperation )
+ {
+ iOperation = ENone;
+ iErr = KErrGeneral;
+ CSingleContact* singleContact = NULL;
+ HBufC8* buf = NULL;
+ TInt count = 0;
+ while(ETrue)
+ {
+ aIter->NextL(singleContact,buf);
+ iBuffer = buf;
+ if(!singleContact)
+ {
+ break;
+ }
+ ++count;
+ TInt fields(singleContact->FieldCount());
+ while(fields)
+ {
+ CSingleContactField* field = singleContact->FieldAt(--fields);
+ TPtrC groupId;
+ RPointerArray<TDesC8> array;
+ field->GetFieldDataL(groupId,array);
+
+
+ if(groupId.Compare(KGroup1)==0)
+ {
+ iErr = KErrNone;
+ break;
+ }
+
+ }
+
+ }
+ }
+ delete aIter;
+ }
+
+void CContactsUT::HandleRetrieveContact( MVPbkStoreContact* /*aStoreContact*/, TInt /*aTransId*/ )
+ {
+ CActiveScheduler::Stop();
+ _LIT(KFunc,"In Handle Retrieve Contact\n");
+ iLog->Log(KFunc);
+ }
+
+void CContactsUT::ContactOperationCompleted(TContactOpResult aResult)
+ {
+ CActiveScheduler::Stop();
+ _LIT(KFunc,"In ContactOperationCompleted \n");
+ iLog->Log(KFunc);
+ iErr = KErrNone;
+ TBuf<5> buf;
+ buf.Num(aResult.iOpCode);
+ iLog->Log(KSuccess);
+ iLog->Log(buf);
+ iLog->Log(KNewLine);
+ switch(iOperation)
+ {/*
+ case EContact: delete iStoreContact;
+ iStoreContact = NULL;
+ break;*/
+ case EGroup: delete iGroup;
+ iGroup = NULL;
+ break;
+ }
+ iOperation = ENone;
+ }
+void CContactsUT::ContactOperationFailed
+ (TContactOp /*aOpCode*/, TInt aErrorCode, TBool /*aErrorNotified*/)
+ {
+ CActiveScheduler::Stop();
+ _LIT(KFunc,"In ContactOperationFailed \n");
+ iLog->Log(KFunc);
+ iErr = aErrorCode;
+ TBuf<5> buf;
+ buf.Num(aErrorCode);
+ iLog->Log(KError);
+ iLog->Log(buf);
+ iLog->Log(KNewLine);
+ switch(iOperation)
+ {
+ case EContact:/* delete iStoreContact;
+ iStoreContact = NULL;
+ break;*/
+ case EGroup: delete iGroup;
+ iGroup = NULL;
+ break;
+ }
+ iOperation = ENone;
+ }
+
+void CContactsUT::FindCompleteL( MVPbkContactLinkArray* aResults )
+ {
+ CActiveScheduler::Stop();
+ _LIT(KFunc,"In FindCompleteL \n");
+ iLog->Log(KFunc);
+ iErr = KErrNone;
+ TInt count = aResults->Count();
+ iFindResults = aResults;
+ iLog->Log(KSuccess);
+ }
+void CContactsUT::FindFailed( TInt aError )
+ {
+ CActiveScheduler::Stop();
+ _LIT(KFunc,"In FindFailed \n");
+ iLog->Log(KFunc);
+ iErr = aError;
+ TBuf<5> buf;
+ buf.Num(aError);
+ iLog->Log(KError);
+ iLog->Log(buf);
+ iLog->Log(KNewLine);
+ }
+
+void CContactsUT::VPbkSingleContactOperationComplete(
+ MVPbkContactOperationBase& aOperation,
+ MVPbkStoreContact* aContact )
+ {
+ CActiveScheduler::Stop();
+ _LIT(KFunc,"In VPbkSingleContactOperationComplete \n");
+ iLog->Log(KFunc);
+ iErr = KErrNone;
+
+ if(iOperation == EVCard)
+ {
+ iDestStream.CommitL();
+ delete iOp;
+ iOp = NULL;
+ iDestStream.Close();
+ delete iResult;
+ iResult = NULL;
+ }
+ else if(iOperation == EVCardEx)
+ {
+ delete iOp;
+ iOp = NULL;
+ }
+ else
+ {
+ delete iStoreContact;
+ iStoreContact = NULL;
+ iStoreContact = aContact;
+ if( iOp == &aOperation )
+ {
+ delete iOp;
+ iOp = NULL;
+ }
+ }
+ iOperation = ENone;
+ iLog->Log(KSuccess);
+ }
+
+
+void CContactsUT::VPbkSingleContactOperationFailed(
+ MVPbkContactOperationBase& aOperation,
+ TInt aError )
+ {
+ CActiveScheduler::Stop();
+ _LIT(KFunc,"In VPbkSingleContactOperationFailed \n");
+ iLog->Log(KFunc);
+ iErr = aError;
+ ;
+ if(iOperation == EVCard)
+ {
+ iDestStream.CommitL();
+ delete iOp;
+ iOp = NULL;
+ iDestStream.Close();
+ delete iBuffer;
+ iBuffer = NULL;
+ delete iResult;
+ iResult = NULL;
+ }
+ else if(iOperation == EVCardEx)
+ {
+ delete iOp;
+ iOp = NULL;
+ }
+ else
+ {
+ delete iStoreContact;
+ iStoreContact = NULL;
+ if( iOp == &aOperation )
+ {
+ delete iOp;
+ iOp = NULL;
+ }
+ }
+ TBuf<5> buf;
+ buf.Num(aError);
+ iLog->Log(KError);
+ iLog->Log(buf);
+ iLog->Log(KNewLine);
+
+ iOperation = ENone;
+ }
+
+void CContactsUT::StepComplete(
+ MVPbkContactOperationBase& /*aOperation*/,
+ TInt /*aStepSize*/ )
+ {
+ _LIT(KFunc,"In StepComplete \n");
+ iLog->Log(KFunc);
+ iLog->Log(KSuccess);
+ iLog->Log(KNewLine);
+ }
+
+TBool CContactsUT::StepFailed(
+ MVPbkContactOperationBase& /*aOperation*/,
+ TInt /*aStepSize*/, TInt /*aError*/ )
+ {
+ _LIT(KFunc,"In StepFailed \n");
+ iLog->Log(KFunc);
+ return EFalse;
+ }
+
+void CContactsUT::OperationComplete(
+ MVPbkContactOperationBase& /*aOperation*/ )
+ {
+ CActiveScheduler::Stop();
+ _LIT(KFunc,"In OperationComplete \n");
+ iLog->Log(KFunc);
+ iErr = KErrNone;
+ iLog->Log(KSuccess);
+ iLog->Log(KNewLine);
+ }
+
+
+//Delete all contacts
+void CContactsUT::DeleteAllL()
+ {
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In DeleteAllL" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ iErr = KErrNone;
+
+ __UHEAP_MARK;
+ iOp = iContactManager->MatchPhoneNumberL(
+ KPhoneNumber, KPhoneNumber().Length(), *this );
+ CActiveScheduler::Start();
+ delete iOp;
+ iOp = NULL;
+
+ TInt count(iFindResults->Count());
+ iContactToDelete = CVPbkContactLinkArray::NewLC();
+ while(count)
+ {
+ MVPbkContactLink* link = iFindResults->At(--count).CloneLC();
+ iContactToDelete->AppendL(link);
+ CleanupStack::Pop();
+ }
+ delete iFindResults;
+ iFindResults = NULL;
+
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ delete iOp;
+ iOp = NULL;
+ CleanupStack::PopAndDestroy(iContactToDelete);
+ iContactToDelete = NULL;
+
+
+ __UHEAP_MARKEND;
+ }
+
+//Add 1 contact
+void CContactsUT::AddOneContactL(TDesC& aName)
+ {
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In AddOneContactL" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ iErr = KErrNone;
+
+ __UHEAP_MARK;
+ CVPbkFieldTypeRefsList* fieldTypeRefList = CVPbkFieldTypeRefsList::NewL();
+ CleanupStack::PushL(fieldTypeRefList);
+
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME ) );
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_MOBILEPHONEGEN ) );
+
+ // Create first contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ MVPbkStoreContactField* field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( aName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KPhoneNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::PopAndDestroy(); // iStoreContact
+ iStoreContact = NULL;
+ CleanupStack::PopAndDestroy(fieldTypeRefList);
+ __UHEAP_MARKEND;
+ }
+
+//Check for contact
+void CContactsUT::CheckContactsL(TInt& aCount,RPointerArray<TDesC8>& aIdArray)
+ {
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In CheckContactsL" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ iErr = KErrNone;
+
+ //__UHEAP_MARK;
+ iOp = iContactManager->MatchPhoneNumberL(
+ KPhoneNumber, KPhoneNumber().Length(), *this );
+ CActiveScheduler::Start();
+ delete iOp;
+ iOp = NULL;
+
+ aCount = iFindResults->Count();
+ TInt count(aCount);
+ while(count)
+ {
+ aIdArray.AppendL((const_cast<MVPbkContactLink&>(iFindResults->At(--count))).PackLC());
+ CleanupStack::Pop();
+ }
+ delete iFindResults;
+ iFindResults = NULL;
+ // __UHEAP_MARKENDC(aCount);
+ }
+
+// -----------------------------------------------------------------------------
+// CContactsUT::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::AddContactSAPIL( CStifItemParser& aItem )
+ {
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In AddContactSAPIL" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ DeleteAllL();
+
+ /**Add contact using SAPI Core class*/
+
+ _LIT8(KFirstName,"FirstName");
+ _LIT(KName,"Sikandar");
+ _LIT8(KNumber,"MobilePhoneGen");
+
+ __UHEAP_MARK;
+ //instantiate service class
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ CSingleContact* singleContact = CSingleContact::NewL();
+ CleanupStack::PushL(singleContact);
+ iLog->Log(_L("single Contact created\n"));
+
+ CSingleContactField* nameContactField = CSingleContactField::NewL();
+ CleanupStack::PushL(nameContactField);
+ iLog->Log(_L("Name Contact Field created \n"));
+
+ CSingleContactField* phoneContactField = CSingleContactField::NewL();
+ CleanupStack::PushL(phoneContactField);
+ iLog->Log(_L("Phone Contact Field created \n"));
+
+ nameContactField->SetFieldParamsL(KFirstName,KNullDesC,KName);
+ singleContact->AddFieldToContactL(nameContactField);
+ iLog->Log(_L("Name Contact Field added \n"));
+
+ phoneContactField->SetFieldParamsL(KNumber,KNullDesC,KPhoneNumber);
+ singleContact->AddFieldToContactL(phoneContactField);
+ iLog->Log(_L("Phone Contact Field added \n"));
+
+ serviceHandle->AddL(this,0,singleContact);
+ iLog->Log(_L("AddL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::Pop(phoneContactField);//singleContactField
+ CleanupStack::Pop(nameContactField);//singleContactField
+ CleanupStack::PopAndDestroy(singleContact);//singleContact
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ __UHEAP_MARKEND;
+ /**end */
+
+ TInt count;
+ RPointerArray<TDesC8> idArray;
+ CheckContactsL(count,idArray);
+ if(count != 1)
+ {
+ iErr = KErrGeneral;
+ }
+ idArray.ResetAndDestroy();
+
+ DeleteAllL();
+ return iErr;
+ }
+
+// -----------------------------------------------------------------------------
+// CContactsUT::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::DeleteContactSAPIL( CStifItemParser& aItem )
+ {
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In DeleteContactSAPIL" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ DeleteAllL();
+ _LIT(KName,"SpiderMan");
+ TPtrC name(KName);
+ AddOneContactL(name);
+
+ TInt count(0);
+ RPointerArray<TDesC8> idArray;
+ CleanupClosePushL(idArray);
+ CheckContactsL(count,idArray);
+ if(count != 1)
+ {
+ return KErrGeneral;
+ }
+
+ /**Delete using SAPI core class*/
+
+ __UHEAP_MARK;
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ serviceHandle->DeleteL(this,0,idArray);
+ iLog->Log(_L("DeleteL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ __UHEAP_MARKEND;
+ /**end*/
+ CleanupStack::Pop(&idArray);
+ idArray.ResetAndDestroy();
+
+ RPointerArray<TDesC8> idArray1;
+ CleanupClosePushL(idArray1);
+ CheckContactsL(count,idArray1);
+ if(count)
+ {
+ iErr = KErrGeneral;
+ }
+ CleanupStack::Pop(&idArray1);
+ idArray.ResetAndDestroy();
+ return iErr;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CContactsUT::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::ModifyContactSAPIL( CStifItemParser& aItem )
+ {
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In ModifyContactSAPIL" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ DeleteAllL();
+ _LIT(KName,"SuperMan");
+ TPtrC name(KName);
+ AddOneContactL(name);
+
+ TInt count(0);
+ RPointerArray<TDesC8> idArray;
+ CleanupClosePushL(idArray);
+ CheckContactsL(count,idArray);
+ if(count != 1)
+ {
+ return KErrGeneral;
+ }
+
+ /**Get using SAPI core class*/
+ __UHEAP_MARK;
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ serviceHandle->GetListL(this,0,EContacts,*idArray[0]);
+ iLog->Log(_L("GetListL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ if(!iSingleContact)
+ {
+ return KErrGeneral;
+ }
+
+ _LIT(KName1,"SpiderMan");
+ _LIT8(KFirstName,"FirstName");
+ CSingleContactField* field = NULL;
+ TInt fieldCount(iSingleContact->FieldCount());
+ while(fieldCount)
+ {
+ TPtrC8 fieldKey;
+ TPtrC label;
+ TPtrC value;
+ field = iSingleContact->FieldAt(--fieldCount);
+ field->GetFieldDataL(fieldKey,label,value);
+ if(!fieldKey.Compare(KFirstName) && !value.Compare(KName))
+ {
+ field->SetFieldParamsL(KFirstName,KNullDesC,KName1);
+ iLog->Log(_L("Phone Contact Field modified \n"));
+ break;
+ }
+ }
+
+ __UHEAP_MARK;
+ serviceHandle->AddL(this,0,iSingleContact);
+ iLog->Log(_L("AddL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+ __UHEAP_MARKEND;
+
+ delete iSingleContact;
+ iSingleContact = NULL;
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ __UHEAP_MARKEND;
+ /**end*/
+
+
+ CleanupStack::Pop(&idArray);
+ idArray.ResetAndDestroy();
+
+ RPointerArray<TDesC8> idArray1;
+ CleanupClosePushL(idArray1);
+ CheckContactsL(count,idArray1);
+ if(count != 1)
+ {
+ iErr = KErrGeneral;
+ }
+ CleanupStack::Pop();
+ idArray1.ResetAndDestroy();
+ //to implement ..checking name
+ return iErr;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CContactsUT::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::ImportContactSAPIL( CStifItemParser& aItem )
+ {
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In ImportContactSAPIL" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+ _LIT(KFileName,"c:\\vcardim.vcf");
+
+ /* DeleteAllL();
+
+ _LIT(KName,"SuperMan");
+ TPtrC name(KName);
+ AddOneContactL(name);
+
+ TInt count(0);
+ RPointerArray<TDesC8> idArray;
+ CleanupClosePushL(idArray);
+ CheckContactsL(count,idArray);
+ if(count != 1)
+ {
+ return KErrGeneral;
+ }
+
+ //__UHEAP_MARK;
+ MVPbkContactLinkArray* linkArray = iContactManager->CreateLinksLC(*idArray[0]);
+ iVCardEngine = CVPbkVCardEng::NewL( *iContactManager );
+ // Create the buffer to store the contact
+ iBuffer = HBufC8::NewL( 1024 );
+ TPtr8 bufferPtr( iBuffer->Des() );
+ iDestStream.Open( bufferPtr );
+ //export the contact from MVPbkContactLink
+ // __UHEAP_MARK;
+ iOp = iVCardEngine->ExportVCardL( iDestStream, linkArray->At(0), *this );
+ CActiveScheduler::Start();
+
+ // __UHEAP_MARKEND;
+ if( !iErr )
+ {
+ iDestStream.CommitL();
+ }
+
+ iDestStream.Close();
+ if(iBuffer)
+ {
+ RFile file;
+ CleanupClosePushL(file);
+ file.Replace(iRfs,KFileName,EFileWrite);
+ file.Write(0,*iBuffer);
+ CleanupStack::PopAndDestroy(&file);
+ }
+ delete iBuffer;
+ iBuffer = NULL;
+ delete iVCardEngine;
+ iVCardEngine = NULL;
+ CleanupStack::PopAndDestroy();//linkArray
+ //__UHEAP_MARKEND;
+
+ CleanupStack::Pop(&idArray);
+ idArray.ResetAndDestroy();
+ DeleteAllL();
+ */
+ DeleteAllL();
+ __UHEAP_MARK;
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ TFileName importFile(KFileName);
+
+ serviceHandle->ImportVCardToStoreL(this,0,importFile);
+ iLog->Log(_L("ImportVCardToStoreL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ __UHEAP_MARKEND;
+
+ TInt count = 0;
+ RPointerArray<TDesC8> idArray;
+ CleanupClosePushL(idArray);
+ CheckContactsL(count,idArray);
+ if(count != 1)
+ {
+ return KErrGeneral;
+ }
+ CleanupStack::Pop(&idArray);
+ idArray.ResetAndDestroy();
+ return iErr;
+ }
+
+// -----------------------------------------------------------------------------
+// CContactsUT::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::ExportContactSAPIL( CStifItemParser& aItem )
+ {
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In ExportContactSAPIL" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+ _LIT(KFileName,"c:\\vcardim.vcf");
+ _LIT(KFileName1,"c:\\vcardim1.vcf");
+
+ DeleteAllL();
+
+ _LIT(KName,"SuperMan");
+ TPtrC name(KName);
+ AddOneContactL(name);
+
+ _LIT(KName1,"SpiderMan");
+ TPtrC name1(KName1);
+ AddOneContactL(name1);
+
+ TInt count(0);
+ RPointerArray<TDesC8> idArray;
+ CleanupClosePushL(idArray);
+ CheckContactsL(count,idArray);
+ TInt ret = iRfs.Delete(KFileName);
+ // ret = iRfs.Delete(KFileName1);
+ /* if(count != 1)
+ {
+ return KErrGeneral;
+ }*/
+
+ /* __UHEAP_MARK;
+ RFile writeStream;
+ CleanupClosePushL(writeStream);
+ User::LeaveIfError(writeStream.Create(iRfs,KFileName,EFileWrite));
+ while(count)
+ {
+ writeStream.Write(*idArray[--count]);
+ }
+ CleanupStack::PopAndDestroy(&writeStream);
+ __UHEAP_MARKEND;
+ */
+ //iBuffer = HBufC8::NewL( 1024 );
+ //TPtr8 bfrPtr(iBuffer->Des());
+ // __UHEAP_MARK;
+ //RFileReadStream readStream;
+ // CleanupClosePushL(readStream);
+ // User::LeaveIfError(readStream.Open(iRfs,KFileName,EFileRead));
+
+ //TInt cells = User::CountAllocCells();
+ __UHEAP_MARK;
+ RFileWriteStream destStream;
+ CleanupClosePushL(destStream);
+ User::LeaveIfError(destStream.Create(iRfs,KFileName,EFileWrite));
+ iVCardEngine = CVPbkVCardEng::NewL( *iContactManager );
+ while(count)
+ {
+ MVPbkContactLinkArray* linkArray = iContactManager->CreateLinksLC(*idArray[--count]);
+ const MVPbkContactLink& link = linkArray->At(0);
+ iOp = iVCardEngine->ExportVCardL( destStream, link, *this );
+ CActiveScheduler::Start();
+ destStream.CommitL();
+ CleanupStack::PopAndDestroy();
+ }
+ delete iVCardEngine;
+ iVCardEngine = NULL;
+ CleanupStack::PopAndDestroy(&destStream);
+ __UHEAP_MARKEND;
+ CleanupStack::Pop(&idArray);
+ idArray.ResetAndDestroy();
+
+ /*
+ //CleanupStack::PushL(linkArray);
+ cells = User::CountAllocCells();
+ iVCardEngine = CVPbkVCardEng::NewL( *iContactManager );
+
+ cells = User::CountAllocCells();
+ RDesWriteStream destStream;
+ CleanupClosePushL(destStream);
+ //User::LeaveIfError(destStream.Create(iRfs,KFileName1,EFileWrite));
+ destStream.Open(bfrPtr);
+ TInt links = linkArray->Count();
+ while(links)
+ {
+ const MVPbkContactLink& link = linkArray->At(--links);
+ iOp = iVCardEngine->ExportVCardL( destStream, link, *this );
+ CActiveScheduler::Start();
+ }
+ destStream.CommitL();
+ CleanupStack::PopAndDestroy(&destStream);
+
+ cells = User::CountAllocCells();
+ delete iVCardEngine;
+ iVCardEngine = NULL;
+ cells = User::CountAllocCells();
+
+ CleanupStack::PopAndDestroy();
+ cells = User::CountAllocCells();
+ CleanupStack::PopAndDestroy(&readStream);
+
+ // __UHEAP_MARKEND;
+ if(iBuffer)
+ {
+ RFile file;
+ CleanupClosePushL(file);
+ file.Replace(iRfs,KFileName,EFileWrite);
+ file.Write(0,*iBuffer);
+ CleanupStack::PopAndDestroy(&file);
+ }
+ delete iBuffer;
+ iBuffer = NULL;
+ CleanupStack::Pop(&idArray);
+ idArray.ResetAndDestroy();
+ /*
+ // Create the buffer to store the contact
+ iBuffer = HBufC8::NewL( 1024 );
+ TPtr8 bufferPtr( iBuffer->Des() );
+ iDestStream.Open( bufferPtr );
+ //export the contact from MVPbkContactLink
+ // __UHEAP_MARK;
+
+ CActiveScheduler::Start();
+
+ // __UHEAP_MARKEND;
+ if( !iErr )
+ {
+ iDestStream.CommitL();
+ }
+
+ iDestStream.Close();
+ if(iBuffer)
+ {
+ RFile file;
+ CleanupClosePushL(file);
+ file.Replace(iRfs,KFileName,EFileWrite);
+ file.Write(0,*iBuffer);
+ CleanupStack::PopAndDestroy(&file);
+ }
+ delete iBuffer;
+ iBuffer = NULL;
+ delete iVCardEngine;
+ iVCardEngine = NULL;
+ CleanupStack::PopAndDestroy();//linkArray
+ //__UHEAP_MARKEND;
+
+ CleanupStack::Pop(&idArray);
+ idArray.ResetAndDestroy();
+ DeleteAllL();
+ */
+ /* __UHEAP_MARK;
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ TFileName exportFile(KFileName);
+
+ serviceHandle->ExportVCardL(this,0,exportFile,idArray);
+ iLog->Log(_L("ExportVCardL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ __UHEAP_MARKEND;
+ *//*
+ TInt count = 0;
+ RPointerArray<TDesC8> idArray;
+ CleanupClosePushL(idArray);
+ CheckContactsL(count,idArray);
+ if(count != 1)
+ {
+ return KErrGeneral;
+ }*/
+ /* CleanupStack::Pop(&idArray);
+ idArray.ResetAndDestroy();*/
+ return iErr;
+ }
+// -----------------------------------------------------------------------------
+// CContactsUT::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::GetListDeleteContactL( CStifItemParser& aItem )
+ {
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In Add" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+
+ /**Getlist using SAPI core class*/
+
+ //__UHEAP_MARK;
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ iOperation = EGetContactDelete;
+ serviceHandle->GetListL(this,0,EContacts);
+ iLog->Log(_L("GetListL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ //iOperation = EGetContact;
+ //iServiceHandle->GetListL(this,0,EContacts,*iBuffer);
+ //CActiveScheduler::Start();
+ /**Delete using SAPI core class*/
+
+ // __UHEAP_MARK;
+ RPointerArray<TDesC8> idArray;
+ CleanupClosePushL(idArray);
+ idArray.AppendL(iBuffer);
+
+
+ serviceHandle->DeleteL(this,0,idArray);
+ iLog->Log(_L("DeleteL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+
+ CleanupStack::PopAndDestroy(&idArray);//singleContactField
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ // __UHEAP_MARKEND;
+
+
+
+ return iErr;
+ }
+// -----------------------------------------------------------------------------
+// CContactsUT::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::AddContactGetListL( CStifItemParser& aItem )
+ {
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In Add" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ /**Add contact using SAPI Core class*/
+
+ _LIT8(KFirstName,"FirstName");
+ _LIT(KName,"Kats");
+ _LIT8(KNumber,"MobilePhoneHome");
+ _LIT(KPhone,"98789");
+
+ // __UHEAP_MARK;
+ //instantiate service class
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ CSingleContact* singleContact = CSingleContact::NewL();
+ CleanupStack::PushL(singleContact);
+ iLog->Log(_L("single Contact created\n"));
+
+ CSingleContactField* nameContactField = CSingleContactField::NewL();
+ CleanupStack::PushL(nameContactField);
+ iLog->Log(_L("Name Contact Field created \n"));
+
+ CSingleContactField* phoneContactField = CSingleContactField::NewL();
+ CleanupStack::PushL(phoneContactField);
+ iLog->Log(_L("Phone Contact Field created \n"));
+
+ nameContactField->SetFieldParamsL(KFirstName,KNullDesC,KName);
+ singleContact->AddFieldToContactL(nameContactField);
+ iLog->Log(_L("Name Contact Field added \n"));
+
+ phoneContactField->SetFieldParamsL(KNumber,KNullDesC,KPhone);
+ singleContact->AddFieldToContactL(phoneContactField);
+ iLog->Log(_L("Phone Contact Field added \n"));
+
+ serviceHandle->AddL(this,0,singleContact,KNullDesC8,KNullDesC);
+ iLog->Log(_L("AddL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::Pop(phoneContactField);//singleContactField
+ CleanupStack::Pop(nameContactField);//singleContactField
+ CleanupStack::PopAndDestroy(singleContact);//singleContact
+ // CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ // iLog->Log( KServiceClose );
+// __UHEAP_MARKENDC(1);
+ /**end */
+
+ if(iErr)
+ {
+ return iErr;
+ }
+
+ /**Getlist using SAPI core class*/
+
+ //__UHEAP_MARK;
+ //serviceHandle = CContactService::NewL();
+ // CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ iOperation = EGetContact;
+ serviceHandle->GetListL(this,0,EContacts);
+ iLog->Log(_L("GetListL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ //iOperation = EGetContact;
+ //iServiceHandle->GetListL(this,0,EContacts,*iBuffer);
+ //CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ // __UHEAP_MARKEND;
+
+ if(iErr)
+ {
+ return iErr;
+ }
+ /**Delete using virtual Phonebook */
+
+
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KPhone, KPhone().Length(), *this );
+ CActiveScheduler::Start();
+
+ iErr = KErrGeneral;
+ TInt count(iFindResults->Count());
+ while(count)
+ {
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(&(const_cast<MVPbkContactLink&>(iFindResults->At(--count))));
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ }
+ /**end */
+
+
+ return iErr;
+ }
+// -----------------------------------------------------------------------------
+// CContactsUT::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::GetGroupsL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In Add" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ /**Add 1 group using virtual phonebook */
+
+
+
+ iGroup = iStore->CreateNewContactGroupLC();
+ iGroup->SetGroupLabelL(KGroup1);
+ iOperation = EGroup;
+ iGroup->CommitL(*this);
+
+ CActiveScheduler::Start();
+ CleanupStack::Pop();
+
+
+ // __UHEAP_MARK;
+ iServiceHandle = CContactService::NewL();
+ iLog->Log( KServiceOpen );
+
+ iOperation = EGetGroup;
+ iServiceHandle->GetListL(this,0,EGroups);
+ iLog->Log(_L("GetListL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+ iOperation = EGetContactDelete;
+ iServiceHandle->GetListL(this, 0, EGroups, *iBuffer);
+ CActiveScheduler::Start();
+
+ delete iServiceHandle;//serviceHandle
+ iServiceHandle = NULL;
+ iLog->Log( KServiceClose );
+ // __UHEAP_MARKEND;
+
+
+
+
+ return iErr;
+
+ }
+
+TInt CContactsUT::GetDatabaseL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In Add" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+
+
+ // __UHEAP_MARK;
+ iServiceHandle = CContactService::NewL();
+ iLog->Log( KServiceOpen );
+
+ iOperation = EGetDatabase;
+
+ CContactIter* iter = CContactIter::NewL();
+ iServiceHandle->GetListL(*iter);
+ iLog->Log(_L("GetListL called\n"));
+ TPtrC DbName;
+ iter->NextL(DbName);
+
+ while(!DbName.Compare(KNullDesC))
+ {
+ iter->NextL(DbName);
+ }
+
+ delete iServiceHandle;//serviceHandle
+ iServiceHandle = NULL;
+ iLog->Log( KServiceClose );
+ // __UHEAP_MARKEND;
+
+
+
+
+ return iErr;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CContactsUT::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::GetContactsL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In Add" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ /**Delete using virtual Phonebook */
+
+ _LIT(KPhone,"13579");
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KPhone, KPhone().Length(), *this );
+ CActiveScheduler::Start();
+
+ iErr = KErrGeneral;
+ TInt count1(iFindResults->Count());
+ while(count1)
+ {
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(&(const_cast<MVPbkContactLink&>(iFindResults->At(--count1))));
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ }
+ /**end */
+
+ /**Add 2 contacts using virtual phonebook*/
+
+ CVPbkFieldTypeRefsList* fieldTypeRefList = CVPbkFieldTypeRefsList::NewL();
+ CleanupStack::PushL(fieldTypeRefList);
+
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME ) );
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_MOBILEPHONEGEN ) );
+
+ // Create first contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ MVPbkStoreContactField* field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KFirstName,"Tenali");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KFirstNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+
+ // Create second contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KSecondName,"Birbal");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KSecondNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+ CleanupStack::PopAndDestroy(fieldTypeRefList);
+ /**end*/
+ __UHEAP_MARK;
+ iServiceHandle = CContactService::NewL();
+ iLog->Log( KServiceOpen );
+
+ iOperation = EGetContact;
+ iServiceHandle->GetListL(this,0,EContacts);
+ iLog->Log(_L("GetListL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ delete iServiceHandle;//serviceHandle
+ iServiceHandle = NULL;
+ iLog->Log( KServiceClose );
+ __UHEAP_MARKEND;
+ return iErr;
+
+ }
+
+
+TInt CContactsUT::GetContactsAscOrderL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In Add" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+
+ _LIT(KPhone,"13579");
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KPhone, KPhone().Length(), *this );
+ CActiveScheduler::Start();
+
+ iErr = KErrGeneral;
+ TInt count1(iFindResults->Count());
+ while(count1)
+ {
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(&(const_cast<MVPbkContactLink&>(iFindResults->At(--count1))));
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ }
+ /*end */
+
+ /**Add 2 contact using virtual phonebook*/
+
+ CVPbkFieldTypeRefsList* fieldTypeRefList = CVPbkFieldTypeRefsList::NewL();
+ CleanupStack::PushL(fieldTypeRefList);
+
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME ) );
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_MOBILEPHONEGEN ) );
+
+ // Create first contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ MVPbkStoreContactField* field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KFirstName,"Tenali");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KFirstNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+
+ // Create second contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KSecondName,"Birbal");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KSecondNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+ CleanupStack::PopAndDestroy(fieldTypeRefList);
+ /**end*/
+
+
+
+
+
+ /**GetList using SAPI Core class */
+ // __UHEAP_MARK;
+ iServiceHandle = CContactService::NewL();
+ iLog->Log( KServiceOpen );
+
+ iOperation = EAscContact;
+ iServiceHandle->GetListL(this,0,EContacts,KNullDesC8,_L(""),NULL,EAsc);
+ iLog->Log(_L("GetListL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ delete iServiceHandle;//serviceHandle
+ iServiceHandle = NULL;
+ iLog->Log( KServiceClose );
+
+
+ return iErr;
+
+ }
+
+
+
+ TInt CContactsUT::GetContactsDscOrderL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In Add" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ /**Delete using virtual Phonebook */
+
+ _LIT(KPhone,"13579");
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KPhone, KPhone().Length(), *this );
+ CActiveScheduler::Start();
+
+ iErr = KErrGeneral;
+ TInt count1(iFindResults->Count());
+ while(count1)
+ {
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(&(const_cast<MVPbkContactLink&>(iFindResults->At(--count1))));
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ }
+ /**end */
+
+ /**Add 2 contact using virtual phonebook*/
+
+ CVPbkFieldTypeRefsList* fieldTypeRefList = CVPbkFieldTypeRefsList::NewL();
+ CleanupStack::PushL(fieldTypeRefList);
+
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME ) );
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_MOBILEPHONEGEN ) );
+
+ // Create first contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ MVPbkStoreContactField* field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KFirstName,"Tenali");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KFirstNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+
+ // Create second contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KSecondName,"Birbal");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KSecondNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+ CleanupStack::PopAndDestroy(fieldTypeRefList);
+ /**end*/
+
+
+
+
+
+ /**GetList using SAPI Core class */
+ // __UHEAP_MARK;
+ iServiceHandle = CContactService::NewL();
+ iLog->Log( KServiceOpen );
+
+ iOperation = EDscContact;
+ iServiceHandle->GetListL(this,0,EContacts,KNullDesC8,_L(""),NULL,EDesc);
+ iLog->Log(_L("GetListL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+
+
+ delete iServiceHandle;//serviceHandle
+ iServiceHandle = NULL;
+ iLog->Log( KServiceClose );
+
+
+ return iErr;
+
+ }
+
+ TInt CContactsUT::GetSearchContactL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In Add" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+
+ /**Delete using virtual Phonebook */
+
+ _LIT(KPhone,"13579");
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KPhone, KPhone().Length(), *this );
+ CActiveScheduler::Start();
+
+ iErr = KErrGeneral;
+ TInt count1(iFindResults->Count());
+ while(count1)
+ {
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(&(const_cast<MVPbkContactLink&>(iFindResults->At(--count1))));
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ }
+ /**end */
+
+ /**Add 2 contact using virtual phonebook*/
+
+ CVPbkFieldTypeRefsList* fieldTypeRefList = CVPbkFieldTypeRefsList::NewL();
+ CleanupStack::PushL(fieldTypeRefList);
+
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME ) );
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_MOBILEPHONEGEN ) );
+
+ // Create first contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ MVPbkStoreContactField* field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KFirstName,"Tenali");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KFirstNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+
+ // Create second contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KSecondName,"Birbal");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KSecondNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+ CleanupStack::PopAndDestroy(fieldTypeRefList);
+ /**end*/
+
+
+
+
+
+ /**GetList using SAPI Core class */
+ // __UHEAP_MARK;
+ iServiceHandle = CContactService::NewL();
+ iLog->Log( KServiceOpen );
+
+ iOperation = ESearchContact;
+ iServiceHandle->GetListL(this,0,EContacts,KNullDesC8,_L(""),NULL,EAsc);
+ iLog->Log(_L("GetListL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+
+ delete iServiceHandle;//serviceHandle
+ iServiceHandle = NULL;
+ iLog->Log( KServiceClose );
+
+
+ return iErr;
+
+ }
+ TInt CContactsUT::GetListConactIdL( CStifItemParser& aItem )
+ {
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In Add" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+
+ /**Delete using virtual Phonebook */
+
+ _LIT(KPhone,"13579");
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KPhone, KPhone().Length(), *this );
+ CActiveScheduler::Start();
+
+ iErr = KErrGeneral;
+ TInt count1(iFindResults->Count());
+ while(count1)
+ {
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(&(const_cast<MVPbkContactLink&>(iFindResults->At(--count1))));
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ }
+ /**end */
+
+ /**Add 2 contact using virtual phonebook*/
+
+ CVPbkFieldTypeRefsList* fieldTypeRefList = CVPbkFieldTypeRefsList::NewL();
+ CleanupStack::PushL(fieldTypeRefList);
+
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME ) );
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_MOBILEPHONEGEN ) );
+
+ // Create first contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ MVPbkStoreContactField* field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KFirstName,"Tenali");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KFirstNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+
+ // Create second contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KSecondName,"Birbal");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KSecondNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+ CleanupStack::PopAndDestroy(fieldTypeRefList);
+ /**end*/
+
+
+
+
+
+ /**GetList using SAPI Core class */
+ // __UHEAP_MARK;
+ iServiceHandle = CContactService::NewL();
+ iLog->Log( KServiceOpen );
+
+ iOperation = EContactId;
+ iServiceHandle->GetListL(this,0,EContacts);
+ iLog->Log(_L("GetListL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+
+ delete iServiceHandle;//serviceHandle
+ iServiceHandle = NULL;
+ iLog->Log( KServiceClose );
+
+
+ return iErr;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CContactsUT::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::AddL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In Add" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ /**Add contact using SAPI Core class*/
+
+ _LIT8(KFirstName,"FirstName");
+ _LIT(KName,"Sikandar");
+ _LIT8(KNumber,"MobilePhoneHome");
+ _LIT(KPhone,"123456");
+
+ // __UHEAP_MARK;
+ //instantiate service class
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ CSingleContact* singleContact = CSingleContact::NewL();
+ CleanupStack::PushL(singleContact);
+ iLog->Log(_L("single Contact created\n"));
+
+ CSingleContactField* nameContactField = CSingleContactField::NewL();
+ CleanupStack::PushL(nameContactField);
+ iLog->Log(_L("Name Contact Field created \n"));
+
+ CSingleContactField* phoneContactField = CSingleContactField::NewL();
+ CleanupStack::PushL(phoneContactField);
+ iLog->Log(_L("Phone Contact Field created \n"));
+
+ nameContactField->SetFieldParamsL(KFirstName,KNullDesC,KName);
+ singleContact->AddFieldToContactL(nameContactField);
+ iLog->Log(_L("Name Contact Field added \n"));
+
+ phoneContactField->SetFieldParamsL(KNumber,KNullDesC,KPhone);
+ singleContact->AddFieldToContactL(phoneContactField);
+ iLog->Log(_L("Phone Contact Field added \n"));
+
+ serviceHandle->AddL(this,0,singleContact,KNullDesC8,KNullDesC);
+ iLog->Log(_L("AddL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::Pop(phoneContactField);//singleContactField
+ CleanupStack::Pop(nameContactField);//singleContactField
+ CleanupStack::PopAndDestroy(singleContact);//singleContact
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ // __UHEAP_MARKEND;
+ /**end */
+
+ if(iErr)
+ {
+ return iErr;
+ }
+
+ /**Delete using virtual Phonebook */
+ /*
+
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KPhone, KPhone().Length(), *this );
+ CActiveScheduler::Start();
+
+ iErr = KErrGeneral;
+ TInt count(iFindResults->Count());
+ while(count)
+ {
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(&(const_cast<MVPbkContactLink&>(iFindResults->At(--count))));
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ }
+ /**end */
+
+
+ return iErr;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CContactsUT::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::AddInvalidFieldL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In Add" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ /**Add contact using SAPI Core class*/
+
+ _LIT8(KFirstName,"FistName"); //invalid field
+ _LIT(KName,"Sikandar");
+ _LIT8(KNumber,"MobilePhoneHome");
+ _LIT(KPhone,"123456");
+
+ // __UHEAP_MARK;
+ //instantiate service class
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ CSingleContact* singleContact = CSingleContact::NewL();
+ CleanupStack::PushL(singleContact);
+ iLog->Log(_L("single Contact created\n"));
+
+ CSingleContactField* nameContactField = CSingleContactField::NewL();
+ CleanupStack::PushL(nameContactField);
+ iLog->Log(_L("Name Contact Field created \n"));
+
+ CSingleContactField* phoneContactField = CSingleContactField::NewL();
+ CleanupStack::PushL(phoneContactField);
+ iLog->Log(_L("Phone Contact Field created \n"));
+
+ nameContactField->SetFieldParamsL(KFirstName,KNullDesC,KName);
+ singleContact->AddFieldToContactL(nameContactField);
+ iLog->Log(_L("Name Contact Field added \n"));
+
+ phoneContactField->SetFieldParamsL(KNumber,KNullDesC,KPhone);
+ singleContact->AddFieldToContactL(phoneContactField);
+ iLog->Log(_L("Phone Contact Field added \n"));
+
+ serviceHandle->AddL(this,0,singleContact,KNullDesC8,KNullDesC);
+ iLog->Log(_L("AddL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::Pop(phoneContactField);//singleContactField
+ CleanupStack::Pop(nameContactField);//singleContactField
+ CleanupStack::PopAndDestroy(singleContact);//singleContact
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ // __UHEAP_MARKEND;
+ /**end */
+
+ if( KInvalidKey == iErr )
+ {
+ return KErrNone;
+ }
+
+
+ return iErr;
+
+ }
+
+
+
+// -----------------------------------------------------------------------------
+// CContactsUT::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::AddMultiplePhoneNumbersContactL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsUT" );
+ _LIT( KExample, "In Add" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ /**Add contact using SAPI Core class*/
+
+ _LIT8(KFirstName,"FirstName");
+ _LIT(KName,"Sikandar");
+ _LIT8(KNumber,"MobilePhoneHome");
+ _LIT(KPhone,"123456");
+ _LIT8(KNumber2,"MobilePhoneWork");
+ _LIT(KPhone2,"654321");
+
+ // __UHEAP_MARK;
+ //instantiate service class
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ CSingleContact* singleContact = CSingleContact::NewL();
+ CleanupStack::PushL(singleContact);
+ iLog->Log(_L("single Contact created\n"));
+
+ CSingleContactField* nameContactField = CSingleContactField::NewL();
+ CleanupStack::PushL(nameContactField);
+ iLog->Log(_L("Name Contact Field created \n"));
+
+ CSingleContactField* phoneContactField = CSingleContactField::NewL();
+ CleanupStack::PushL(phoneContactField);
+ iLog->Log(_L("Phone Contact Field created \n"));
+
+ CSingleContactField* workPhoneContactField = CSingleContactField::NewL();
+ CleanupStack::PushL(workPhoneContactField);
+ iLog->Log(_L("Work Phone Contact Field created \n"));
+
+ nameContactField->SetFieldParamsL(KFirstName,KNullDesC,KName);
+ singleContact->AddFieldToContactL(nameContactField);
+ iLog->Log(_L("Name Contact Field added \n"));
+
+ phoneContactField->SetFieldParamsL(KNumber,KNullDesC,KPhone);
+ singleContact->AddFieldToContactL(phoneContactField);
+ iLog->Log(_L("Phone Contact Field added \n"));
+
+ workPhoneContactField->SetFieldParamsL(KNumber2,KNullDesC,KPhone2);
+ singleContact->AddFieldToContactL(workPhoneContactField);
+ iLog->Log(_L("Phone Contact Field added \n"));
+
+ serviceHandle->AddL(this,0,singleContact,KNullDesC8,KNullDesC);
+ iLog->Log(_L("AddL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::Pop(workPhoneContactField);//singleContactField
+ CleanupStack::Pop(phoneContactField);//singleContactField
+ CleanupStack::Pop(nameContactField);//singleContactField
+ CleanupStack::PopAndDestroy(singleContact);//singleContact
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ // __UHEAP_MARKEND;
+ /**end */
+
+ if(iErr)
+ {
+ return iErr;
+ }
+
+ /**Delete using virtual Phonebook */
+ /*
+
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KPhone, KPhone().Length(), *this );
+ CActiveScheduler::Start();
+
+ iErr = KErrGeneral;
+ TInt count(iFindResults->Count());
+ while(count)
+ {
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(&(const_cast<MVPbkContactLink&>(iFindResults->At(--count))));
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ }
+ /**end */
+
+
+ return iErr;
+
+ }
+
+
+
+
+// -----------------------------------------------------------------------------
+// CContactsUT::AddGroupL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::AddGroupL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsTest" );
+ _LIT( KExample, "In AddGroup" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ /**Add group using SAPI core class */
+ __UHEAP_MARK;
+ _LIT(KGroup,"Test");
+ //instantiate service class
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ serviceHandle->AddL(this,0,NULL,KNullDesC8,KGroup);
+ iLog->Log(_L("AddL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ /**end */
+ __UHEAP_MARKEND;
+ if(iErr)
+ {
+ return iErr;
+ }
+
+ /** Check for the added group using virtual phonebook classes */
+ iFindResults = iStore->ContactGroupsLC();
+ TInt count(iFindResults->Count());
+ while(count)
+ {
+ iResult = &(const_cast<MVPbkContactLink&>(iFindResults->At(--count)));
+ iOp = iContactManager->RetrieveContactL(*iResult,*this);
+ CActiveScheduler::Start();
+
+ if(iErr)
+ {
+ break;
+ }
+ iErr = KErrGeneral;
+ iGroup = iStoreContact->Group();
+ if(!iGroup->GroupLabel().Compare(KGroup))
+ {
+ iErr = KErrNone;
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(iResult);
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ break;
+ }
+ }
+ CleanupStack::Pop();
+ iFindResults = NULL;
+ /**end */
+
+ return iErr;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CContactsUT::DeleteL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::DeleteContactL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsTest" );
+ _LIT( KExample, "In Delete" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ /**Add 2 contacts using virtual phonebook*/
+
+ CVPbkFieldTypeRefsList* fieldTypeRefList = CVPbkFieldTypeRefsList::NewL();
+ CleanupStack::PushL(fieldTypeRefList);
+
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME ) );
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_MOBILEPHONEGEN ) );
+
+ // Create first contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ MVPbkStoreContactField* field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KFirstName,"Tenali");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KFirstNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+
+ // Create second contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KSecondName,"Birbal");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KSecondNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+ CleanupStack::PopAndDestroy(fieldTypeRefList);
+ /**end*/
+
+ /** Search for the added contacts*/
+
+ // Phone number to be searched for
+ _LIT( KMatchNo, "13579" );
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KMatchNo, KMatchNo().Length(), *this );
+
+ CActiveScheduler::Start();
+ TInt count(iFindResults->Count());
+ /**end*/
+
+ /**Delete using SAPI core class*/
+
+ if(count>1)
+ {
+ __UHEAP_MARK;
+ RPointerArray<TDesC8> idArray;
+ CleanupClosePushL(idArray);
+ TInt num(count);
+ while(count)
+ {
+ HBufC8* contactId = (const_cast<MVPbkContactLink&>(iFindResults->At(--count))).PackLC();
+ idArray.AppendL(contactId);
+ }
+
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ serviceHandle->DeleteL(this,0,idArray);
+ iLog->Log(_L("DeleteL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+
+ CleanupStack::PopAndDestroy(num);//destroy all contactIds
+ CleanupStack::PopAndDestroy(&idArray);//singleContactField
+
+ iLog->Log( KServiceClose );
+ __UHEAP_MARKEND;
+
+ }
+ /**end*/
+
+ return iErr;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CContactsUT::DeleteInvalidContactL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::DeleteSingleContactL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsTest" );
+ _LIT( KExample, "In Delete" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ /**Add 2 contacts using virtual phonebook*/
+
+ CVPbkFieldTypeRefsList* fieldTypeRefList = CVPbkFieldTypeRefsList::NewL();
+ CleanupStack::PushL(fieldTypeRefList);
+
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME ) );
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_MOBILEPHONEGEN ) );
+
+ // Create first contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ MVPbkStoreContactField* field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KFirstName,"Tenali");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KFirstNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+
+ // Create second contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KSecondName,"Birbal");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KSecondNumber,"13579");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+ CleanupStack::PopAndDestroy(fieldTypeRefList);
+ /**end*/
+
+ /** Search for the added contacts*/
+
+ // Phone number to be searched for
+ _LIT( KMatchNo, "13579" );
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KMatchNo, KMatchNo().Length(), *this );
+
+ CActiveScheduler::Start();
+ TInt count(iFindResults->Count());
+ /**end*/
+
+ /**Delete using SAPI core class*/
+
+ if(count>1)
+ {
+ __UHEAP_MARK;
+ RPointerArray<TDesC8> idArray;
+ CleanupClosePushL(idArray);
+ TInt num(1);
+ if(count)
+ {
+ HBufC8* contactId = (const_cast<MVPbkContactLink&>(iFindResults->At(--count))).PackLC();
+ idArray.AppendL(contactId);
+ }
+
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ serviceHandle->DeleteL(this,0,idArray);
+ iLog->Log(_L("DeleteL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+
+ CleanupStack::PopAndDestroy(num);//destroy all contactIds
+ CleanupStack::PopAndDestroy(&idArray);//singleContactField
+
+ iLog->Log( KServiceClose );
+ __UHEAP_MARKEND;
+
+ }
+ /**end*/
+
+ return iErr;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CContactsUT::DeleteListL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::DeleteGroupL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsTest" );
+ _LIT( KExample, "In DeleteList" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+ iErr = KErrNone;
+
+ /**Add 2 groups using virtual phonebook */
+
+ _LIT(KGroup1,"Test1");
+ _LIT(KGroup2,"Test2");
+ iGroup = iStore->CreateNewContactGroupLC();
+ iGroup->SetGroupLabelL(KGroup1);
+ iOperation = EGroup;
+ iGroup->CommitL(*this);
+
+ CActiveScheduler::Start();
+ CleanupStack::Pop();
+
+ iGroup = iStore->CreateNewContactGroupLC();
+ iGroup->SetGroupLabelL(KGroup2);
+ iOperation = EGroup;
+ iGroup->CommitL(*this);
+
+ CActiveScheduler::Start();
+ CleanupStack::Pop();
+ /**end */
+
+ if(iErr)
+ {
+ return iErr;
+ }
+
+ /**Delete the groups using SAPI core class */
+
+ /** Check for the added group using virtual phonebook classes */
+
+ iFindResults = iStore->ContactGroupsLC();
+ TInt count(iFindResults->Count());
+ if(count>1)
+ {
+ HBufC8* groupId;
+ RPointerArray<TDesC8> idArray;
+ CleanupClosePushL(idArray);
+ while(count)
+ {
+ iResult = &(const_cast<MVPbkContactLink&>(iFindResults->At(--count)));
+ iOp = iContactManager->RetrieveContactL(*iResult,*this);
+ CActiveScheduler::Start();
+
+ iGroup = iStoreContact->Group();
+ if(!iGroup->GroupLabel().Compare(KGroup1) || !iGroup->GroupLabel().Compare(KGroup2))
+ {
+ groupId = iResult->PackLC();
+ idArray.AppendL(groupId);
+ }
+ }
+ TInt num(idArray.Count());
+ if( num < 2)
+ {
+ return KErrGeneral;
+ }
+ __UHEAP_MARK;
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ serviceHandle->DeleteL(this,0,idArray);
+ iLog->Log(_L("DeleteL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ __UHEAP_MARKEND;
+ CleanupStack::PopAndDestroy(num);//destroy all contactIds
+ CleanupStack::PopAndDestroy(&idArray);//singleContactField
+
+ iLog->Log( KServiceClose );
+ }
+ CleanupStack::Pop();
+ iFindResults = NULL;
+ /**end */
+
+ return iErr;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CContactsUT::ModifyL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::ModifyL( CStifItemParser& aItem )
+ {
+
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsTest" );
+ _LIT( KExample, "In Modify" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+ iErr = KErrNone;
+
+ DeleteAllL();
+ _LIT(KFirstName,"Tenali");
+ TPtrC ptr(KFirstName);
+ AddOneContactL(ptr);
+
+ /** Retrieve contact ids and modify using SAPI core class */
+
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KPhoneNumber, KPhoneNumber().Length(), *this );
+
+ CActiveScheduler::Start();
+
+ TInt count(iFindResults->Count());
+ /**end*/
+
+ /**Modify using SAPI core class*/
+
+ if(count)
+ {
+ while(count)
+ {
+ //__UHEAP_MARK;
+ iBuffer = (const_cast<MVPbkContactLink&>(iFindResults->At(--count))).PackLC();
+ CleanupStack::Pop();//iBuffer
+ iServiceHandle = CContactService::NewL();
+ iLog->Log( KServiceOpen );
+
+ iOperation = EContact;
+ iServiceHandle->GetListL(this,0,EContacts,*iBuffer);
+ iLog->Log(_L("GetListL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ delete iServiceHandle;//serviceHandle
+ iServiceHandle = NULL;
+ iLog->Log( KServiceClose );
+ //__UHEAP_MARKEND;
+ }
+
+ }
+
+ /** ends */
+
+ return iErr;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CContactsUT::ModifyGroupL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::ModifyGroupL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsTest" );
+ _LIT( KExample, "In ModifyGroup" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+ iErr = KErrNone;
+ /**Add 1 group using virtual phonebook */
+
+ _LIT(KGroup1,"Modify1");
+ _LIT(KGroup2,"Modify2");
+ iGroup = iStore->CreateNewContactGroupLC();
+ iGroup->SetGroupLabelL(KGroup1);
+ iOperation = EGroup;
+ iGroup->CommitL(*this);
+
+ CActiveScheduler::Start();
+ CleanupStack::Pop();
+ /**end */
+
+ /** Check for the added group using virtual phonebook classes */
+ iFindResults = iStore->ContactGroupsLC();
+ TInt count(iFindResults->Count());
+ while(count)
+ {
+ iResult = &(const_cast<MVPbkContactLink&>(iFindResults->At(--count)));
+ iOp = iContactManager->RetrieveContactL(*iResult,*this);
+ CActiveScheduler::Start();
+
+ if(iErr)
+ {
+ break;
+ }
+ iErr = KErrGeneral;
+ iGroup = iStoreContact->Group();
+ if(!iGroup->GroupLabel().Compare(KGroup1))
+ {
+ __UHEAP_MARK;
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ serviceHandle->AddL(this,0,NULL,KNullDesC8,KGroup2);
+ iLog->Log(_L("ModifyGroupL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ __UHEAP_MARKEND;
+ }
+ }
+ CleanupStack::Pop();
+ iFindResults = NULL;
+ /**end */
+
+ /** Check for the added group using virtual phonebook classes */
+ iFindResults = iStore->ContactGroupsLC();
+ count = iFindResults->Count();
+ while(count)
+ {
+ iResult = &(const_cast<MVPbkContactLink&>(iFindResults->At(--count)));
+ iOp = iContactManager->RetrieveContactL(*iResult,*this);
+ CActiveScheduler::Start();
+
+ if(iErr)
+ {
+ break;
+ }
+ iErr = KErrGeneral;
+ iGroup = iStoreContact->Group();
+ if(!iGroup->GroupLabel().Compare(KGroup2))
+ {
+ iErr = KErrNone;
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(iResult);
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ break;
+ }
+ }
+ CleanupStack::Pop();
+ iFindResults = NULL;
+
+ /**end */
+ return iErr;
+
+ }
+
+// -----------------------------------------------------------------------------
+// CContactsUT::OrganiseAddL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::OrganiseAddL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsTest" );
+ _LIT( KExample, "In OrganiseAdd" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+
+ iErr = KErrNone;
+
+ /** Add 1 group */
+
+ _LIT(KGroup,"OrganiseTest1");
+ iGroup = iStore->CreateNewContactGroupLC();
+ iGroup->SetGroupLabelL(KGroup);
+ iOperation = EGroup;
+ iGroup->CommitL(*this);
+
+ CActiveScheduler::Start();
+ CleanupStack::Pop();
+ /** ends */
+
+
+ if(iErr)
+ {
+ return iErr;
+ }
+
+ /** Retrieve the group id */
+ HBufC8* groupId = NULL;
+ iFindResults = iStore->ContactGroupsLC();
+ TInt count(iFindResults->Count());
+ iErr = KErrGeneral;
+ while(count)
+ {
+ iResult = &(const_cast<MVPbkContactLink&>(iFindResults->At(--count)));
+ iOp = iContactManager->RetrieveContactL(*iResult,*this);
+ CActiveScheduler::Start();
+
+ iGroup = iStoreContact->Group();
+ if(!iGroup->GroupLabel().Compare(KGroup))
+ {
+ groupId =iResult->PackLC();
+ CleanupStack::Pop();//groupId
+ break;
+ }
+ }
+ CleanupStack::Pop();//iFindResults
+ CleanupStack::PushL(groupId);
+ iFindResults = NULL;
+ /** ends */
+
+
+ /** Add 2 contacts */
+
+ DeleteAllL();
+ _LIT(KFirstName,"Tenali");
+ _LIT(KSecondName,"Birbal");
+
+ TPtrC ptr1(KFirstName);
+ TPtrC ptr2(KSecondName);
+
+ AddOneContactL(ptr1);
+ AddOneContactL(ptr2);
+
+
+
+ /** Retrieve the 2 contacts */
+
+ // Phone number to be searched for
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KPhoneNumber, KPhoneNumber().Length(), *this );
+
+ CActiveScheduler::Start();
+ count = iFindResults->Count();
+ /**end*/
+
+ /**Organise using SAPI core class*/
+ if(count>1 && groupId)
+ {
+ RPointerArray<TDesC8> idArray;
+ CleanupClosePushL(idArray);
+ TInt num(count);
+ while(count)
+ {
+ HBufC8* contactId = (const_cast<MVPbkContactLink&>(iFindResults->At(--count))).PackLC();
+ idArray.AppendL(contactId);
+ }
+ __UHEAP_MARK;
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ serviceHandle->OrganiseGroupsL(this,0,*groupId,idArray,ETrue);
+ iLog->Log(_L("OrganiseGroupsL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ __UHEAP_MARKEND;
+ CleanupStack::PopAndDestroy(num);//destroy all contactIds
+ CleanupStack::PopAndDestroy(&idArray);//singleContactField
+
+ iLog->Log( KServiceClose );
+ }
+ /** ends */
+
+
+ /** Check for the group and delete*/
+ iFindResults = iStore->ContactGroupsLC();
+ count = iFindResults->Count();
+ iErr = KErrGeneral;
+ while(count)
+ {
+ iResult = &(const_cast<MVPbkContactLink&>(iFindResults->At(--count)));
+ if(!(iResult->PackLC())->Compare(*groupId))
+ {
+ iOp = iContactManager->RetrieveContactL(*iResult,*this);
+ CActiveScheduler::Start();
+
+ iGroup = iStoreContact->Group();
+ MVPbkContactLinkArray* linkArray = iGroup->ItemsContainedLC();
+ if(linkArray->Count() == 2 )
+ {
+ iErr = KErrNone;
+ }
+ CleanupStack::Pop();//linkArray
+
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(iResult);
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ }
+ CleanupStack::PopAndDestroy();
+ }
+ CleanupStack::Pop();
+ iFindResults = NULL;
+ /**end */
+ CleanupStack::PopAndDestroy(groupId);
+
+ return iErr;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CContactsUT::OrganiseDeleteL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::OrganiseDeleteL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsTest" );
+ _LIT( KExample, "In OrganiseDelete" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+ iErr = KErrNone;
+
+ /** Add 1 group */
+
+ _LIT(KGroup,"OrganiseTest1");
+ iGroup = iStore->CreateNewContactGroupLC();
+ iGroup->SetGroupLabelL(KGroup);
+ iOperation = EGroup;
+ iGroup->CommitL(*this);
+
+ CActiveScheduler::Start();
+ CleanupStack::Pop();
+ /** ends */
+
+
+ if(iErr)
+ {
+ return iErr;
+ }
+
+
+ /** Add 2 contacts */
+
+ CVPbkFieldTypeRefsList* fieldTypeRefList = CVPbkFieldTypeRefsList::NewL();
+ CleanupStack::PushL(fieldTypeRefList);
+
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME ) );
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_MOBILEPHONEGEN ) );
+
+ // Create first contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ MVPbkStoreContactField* field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KFirstName,"Tenali");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KFirstNumber,"97531");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+
+ // Create second contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KSecondName,"Birbal");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KSecondNumber,"97531");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KSecondNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+ CleanupStack::PopAndDestroy(fieldTypeRefList);
+ /** end */
+
+
+ if(iErr)
+ {
+ return iErr;
+ }
+
+ /** Retrieve the 2 contacts */
+ RPointerArray<TDesC8> idArray;
+ CleanupClosePushL(idArray);
+ // Phone number to be searched for
+ _LIT( KMatchNo, "97531" );
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KMatchNo, KMatchNo().Length(), *this );
+
+ CActiveScheduler::Start();
+ TInt count = iFindResults->Count();
+ TInt num(count);
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ while(count)
+ {
+ iResult = &(const_cast<MVPbkContactLink&>(iFindResults->At(--count)));
+ iContactToDelete->AppendL(iResult);
+ idArray.AppendL(iResult->PackLC());
+ }
+ /** ends */
+
+ /** Retrieve the group id */
+ HBufC8* groupId = NULL;
+ iFindResults = iStore->ContactGroupsLC();
+ count = iFindResults->Count();
+ iErr = KErrGeneral;
+ while(count)
+ {
+ iResult = &(const_cast<MVPbkContactLink&>(iFindResults->At(--count)));
+ iOp = iContactManager->RetrieveContactL(*iResult,*this);
+ CActiveScheduler::Start();
+
+ iGroup = iStoreContact->Group();
+ if(!iGroup->GroupLabel().Compare(KGroup))
+ {
+ groupId =iResult->PackLC();
+ TInt count(iContactToDelete->Count());
+ while(count)
+ {
+ iGroup->AddContactL(iContactToDelete->At(--count));
+ }
+ CleanupStack::Pop();
+ break;
+ }
+ }
+ CleanupStack::Pop();
+ CleanupStack::PushL(groupId);
+ iFindResults = NULL;
+ delete iContactToDelete;
+ iContactToDelete = NULL;
+ /** ends */
+
+ /**Organise using SAPI core class*/
+ if(groupId)
+ {
+ __UHEAP_MARK;
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ serviceHandle->OrganiseGroupsL(this,0,*groupId,idArray,EFalse);
+ iLog->Log(_L("OrganiseGroupsL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+
+ iLog->Log( KServiceClose );
+ __UHEAP_MARKEND;
+ }
+ /** ends */
+
+
+ /** Check for the group */
+ iFindResults = iStore->ContactGroupsLC();
+ count = iFindResults->Count();
+ iErr = KErrGeneral;
+ while(count)
+ {
+ iResult = &(const_cast<MVPbkContactLink&>(iFindResults->At(--count)));
+ if(!(iResult->PackLC())->Compare(*groupId))
+ {
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(iResult);
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ }
+ CleanupStack::PopAndDestroy();
+ }
+ CleanupStack::Pop(); //iFindResults
+ iFindResults = NULL;
+ /**end */
+ CleanupStack::PopAndDestroy(groupId);
+ CleanupStack::PopAndDestroy(num);//destroy all contactIds
+ CleanupStack::PopAndDestroy(&idArray);//singleContactField
+
+ return iErr;
+ }
+
+// -----------------------------------------------------------------------------
+// CContactsUT::OrganiseDeleteL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::ImportL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsTest" );
+ _LIT( KExample, "In Import" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+ iErr = KErrNone;
+ _LIT(KFileName,"c:\\vcardex.vcf");
+
+ /** Add 1 contact */
+ CVPbkFieldTypeRefsList* fieldTypeRefList = CVPbkFieldTypeRefsList::NewL();
+ CleanupStack::PushL(fieldTypeRefList);
+
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_FIRSTNAME ) );
+ fieldTypeRefList->AppendL(
+ *iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_MOBILEPHONEGEN ) );
+
+ // Create first contact
+ iStoreContact = iStore->CreateNewContactLC();
+
+ // Create contact field for contact
+ MVPbkStoreContactField* field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 0 ) );
+ // Set contact field data
+ _LIT(KFirstName,"Tenali");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstName );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Create contact field for contact
+ field = iStoreContact->CreateFieldLC( fieldTypeRefList->FieldTypeAt( 1 ) );
+ // Set contact field data
+ _LIT(KFirstNumber,"45678");
+ (MVPbkContactFieldTextData::Cast(field->FieldData())).SetTextL( KFirstNumber );
+ // Add the contact field to contact
+ iStoreContact->AddFieldL( field );
+ CleanupStack::Pop(); // field
+
+ // Commit the new created contact to contact store
+ iStoreContact->CommitL( *this );
+ CActiveScheduler::Start();
+ CleanupStack::Pop(); // iStoreContact
+
+ CleanupStack::PopAndDestroy(fieldTypeRefList);
+ /** end */
+
+ /** Retrieve the contact */
+
+ // Phone number to be searched for
+ _LIT( KMatchNo, "45678" );
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KMatchNo, KMatchNo().Length(), *this );
+
+ CActiveScheduler::Start();
+ TInt count = iFindResults->Count();
+ while(count)
+ {
+ iResult = &(const_cast<MVPbkContactLink&>(iFindResults->At(--count)));
+ iVCardEngine = CVPbkVCardEng::NewL( *iContactManager );
+
+ // Create the buffer to store the contact
+ iBuffer = HBufC8::NewL( 1024 );
+ TPtr8 bufferPtr( iBuffer->Des() );
+ iDestStream.Open( bufferPtr );
+
+ iOperation = EVCard;
+
+ //export the contact from MVPbkContactLink
+ iOp = iVCardEngine->ExportVCardL( iDestStream, *iResult, *this );
+ CActiveScheduler::Start();
+
+ delete iVCardEngine;
+ iVCardEngine = NULL;
+
+ if(iBuffer)
+ {
+ RFile file;
+ CleanupClosePushL(file);
+ file.Replace(iRfs,KFileName,EFileWrite);
+ file.Write(0,*iBuffer);
+ CleanupStack::PopAndDestroy(&file);
+ delete iBuffer;
+ iBuffer = NULL;
+ }
+
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(iResult);
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ }
+ iFindResults = NULL;
+ __UHEAP_MARK;
+ //using sapi
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ TFileName file(KFileName);
+
+ serviceHandle->ImportVCardToStoreL(this,0,file);
+ iLog->Log(_L("ImportVCardToStoreL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ __UHEAP_MARKEND;
+ /**Delete using virtual Phonebook */
+
+
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KMatchNo, KMatchNo().Length(), *this );
+ CActiveScheduler::Start();
+ iErr = KErrGeneral;
+ count = iFindResults->Count();
+ while(count)
+ {
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(&(const_cast<MVPbkContactLink&>(iFindResults->At(--count))));
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+ }
+ /**end */
+
+ return iErr;
+ }
+// -----------------------------------------------------------------------------
+// CContactsUT::OrganiseDeleteL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CContactsUT::ExportL( CStifItemParser& aItem )
+ {
+
+ // Print to UI
+ _LIT( KContactsTest, "ContactsTest" );
+ _LIT( KExample, "In Import" );
+ TestModuleIf().Printf( 0, KContactsTest, KExample );
+ // Print to log file
+ iLog->Log( KExample );
+
+ TInt i = 0;
+ TPtrC string;
+ _LIT( KParam, "Param[%i]: %S" );
+ while ( aItem.GetNextString ( string ) == KErrNone )
+ {
+ TestModuleIf().Printf( i, KContactsTest,
+ KParam, i, &string );
+ i++;
+ }
+ iErr = KErrNone;
+ _LIT(KFileName,"c:\\vcardim.vcf");
+ RFs fs;
+ CleanupClosePushL(fs);
+ User::LeaveIfError(fs.Connect());
+ RFile file;
+ if(!file.Open(fs,KFileName,EFileRead))
+ {
+ file.Close();
+ fs.Delete(KFileName);
+ }
+ CleanupStack::PopAndDestroy(&fs);
+
+ DeleteAllL();
+ _LIT(KFirstName,"Akbar");
+ TPtrC ptr(KFirstName);
+ AddOneContactL(ptr);
+
+ /** Retrieve the contact */
+
+ // Phone number to be searched for
+ // Create find operation
+ iOp = iContactManager->MatchPhoneNumberL(
+ KPhoneNumber, KPhoneNumber().Length(), *this );
+
+ CActiveScheduler::Start();
+ TInt count = iFindResults->Count();
+ while(count)
+ {
+ iResult = &(const_cast<MVPbkContactLink&>(iFindResults->At(--count)));
+ iBuffer = iResult->PackLC();
+ CleanupStack::Pop();
+
+ // __UHEAP_MARK;
+ //using sapi
+ CContactService* serviceHandle = CContactService::NewL();
+ CleanupStack::PushL(serviceHandle);
+ iLog->Log( KServiceOpen );
+
+ TFileName file(KFileName);
+ serviceHandle->ExportVCardL(this,0,file,*iBuffer);
+ iLog->Log(_L("ExportVCardL called\n"));
+ iLog->Log(_L("Start Active Scheduler\n"));
+ CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
+ iLog->Log( KServiceClose );
+ // __UHEAP_MARKEND;
+
+ iContactToDelete = CVPbkContactLinkArray::NewL();
+ iContactToDelete->AppendL(iResult);
+ iOp = iContactManager->DeleteContactsL( *iContactToDelete, *this );
+ CActiveScheduler::Start();
+
+ delete iBuffer;
+ iBuffer = NULL;
+
+ RPointerArray< MVPbkStoreContact > importedContacts;
+ CleanupClosePushL(importedContacts);
+
+ iVCardEngine = CVPbkVCardEng::NewL( *iContactManager );
+
+ // Open the RFileReadStream that holds the vCard content
+ iErr = iSource.Open( iRfs, KFileName, EFileRead );
+
+ // Import the contact from RFileReadStream asynchronously
+ // The operation status is reported via MVPbkSingleContactOperationObserver.
+ iOp = iVCardEngine->ImportVCardL( importedContacts, *iStore, iSource, *this );
+ CActiveScheduler::Start();
+
+ if(!importedContacts.Count())
+ {
+ return KErrGeneral;
+
+ }
+
+ // Close iImportedContacts
+ //
+ importedContacts.ResetAndDestroy();
+ CleanupStack::PopAndDestroy(&importedContacts);
+ }
+ iFindResults = NULL;
+
+
+ return iErr;
+ }
+
+
+TInt CContactsUT::GetListCancelL( CStifItemParser& /*aItem*/)
+ {
+
+ int ret=0;
+ ret = getlist_cancel(0, NULL);
+
+ if(ret==0)
+ return KErrNone;
+ else
+ return KErrGeneral;
+ }
+
+
+TInt CContactsUT::GetListSrchCancelL( CStifItemParser& /*aItem*/)
+ {
+
+ int ret=0;
+ ret = getlistsrh_cancel(0, NULL);
+
+ if(ret==0)
+ return KErrNone;
+ else
+ return KErrGeneral;
+ }
+
+
+
+TInt CContactsUT::ExportCancelL( CStifItemParser& /*aItem*/)
+ {
+
+ int ret=0;
+ ret = export_cancel(0, NULL);
+
+ if(ret==0)
+ return KErrNone;
+ else
+ return KErrGeneral;
+
+
+ }
+
+TInt CContactsUT::AddCancelL( CStifItemParser& /*aItem*/ )
+ {
+ int ret=0;
+ ret = add_cancel(0, NULL);
+
+ if(ret==0)
+ return KErrNone;
+ else
+ return KErrGeneral;
+ }
+
+TInt CContactsUT::ImportCancelL( CStifItemParser& /*aItem*/)
+ {
+
+ int ret=0;
+ ret = import_cancel(0, NULL);
+
+ if(ret==0)
+ return KErrNone;
+ else
+ return KErrGeneral;
+
+
+ }
+
+TInt CContactsUT::DeleteCancelL( CStifItemParser& /*aItem*/)
+ {
+
+ int ret=0;
+ ret = delete_cancel(0, NULL);
+
+ if(ret==0)
+ return KErrNone;
+ else
+ return KErrGeneral;
+
+ }
+TInt CContactsUT::OrganiseCancelL( CStifItemParser& /*aItem*/)
+ {
+
+ int ret=0;
+ ret = organise_cancel(0, NULL);
+
+ if(ret==0)
+ return KErrNone;
+ else
+ return KErrGeneral;
+
+ }
+//End of file