serviceproviders/sapi_contacts_vpbk/tsrc/dev/tcontacts_sync/src/tcontacts_sync_blocks.cpp
/*
* 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 "tcontacts_sync.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");
// ============================ 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( "Import_contact_sapi", CContactsUT::ImportContactSAPIL ),
ENTRY( "Export_contact_sapi", CContactsUT::ExportContactSAPIL ),
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 ),
};
const TInt count = sizeof( KFunctions ) /
sizeof( TStifFunctionInfo );
return RunInternalL( KFunctions, count, aItem );
}
void CContactsUT::HandleReturnArray(const TInt& aError, RPointerArray<HBufC8>& aArray, TInt aTransId )
{
CActiveScheduler::Stop();
}
void CContactsUT::HandleReturnId( const TInt& aError, HBufC8* acntId, TInt aTransId )
{
CActiveScheduler::Stop();
}
void CContactsUT::HandleReturnValue( TOperationEvent /*aEvent*/, const TInt& aError, TInt /*aTransId*/ )
{
CActiveScheduler::Stop();
_LIT(KFunc,"In Handle Return Value\n");
iLog->Log(KFunc);
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);
HBufC8* idBuf = NULL;
_LIT8(KNumber,"MobilePhoneGen");
while(ETrue)
{
aIter->NextL(iSingleContact,idBuf);
if(!iSingleContact)
{
break;
}
CleanupStack::PushL(idBuf);
TInt count(iSingleContact->FieldCount());
CSingleContactField* field = NULL;
while(count)
{
TPtrC8 fieldKey;
TPtrC label;
TPtrC value;
field = iSingleContact->FieldAt(--count);
field->GetFieldDataL(fieldKey,label,value);
if(!(fieldKey.Compare(KNumber)) && !(value.Compare(KPhoneNumber)))
{
CleanupStack::Pop(idBuf);
delete aIter;
return; //NOTE
}
}
CleanupStack::PopAndDestroy(idBuf);
delete iSingleContact;
iSingleContact = NULL;
}
delete aIter;
}
/*
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;
CSingleContact* singleContact = NULL;
HBufC8* buf = NULL;
_LIT(KPhone,"560087");
_LIT8(KField,"MobilePhoneGen");
while(ETrue)
{
aIter->NextL(singleContact,buf);
CleanupStack::PushL(singleContact);
CleanupStack::PushL(buf);
if(!singleContact)
{
break;
}
if(!buf->Compare(*iBuffer))
{
TInt count(singleContact->FieldCount());
CSingleContactField* field = NULL;
while(count)
{
TBuf8<50> fieldKey;
TBuf<50> label;
TBuf<50> 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"));
iServiceHandle->AddL(this,0,singleContact);
iLog->Log(_L("AddL called\n"));
iLog->Log(_L("Start Active Scheduler\n"));
CActiveScheduler::Start();
break;
}
}
}
CleanupStack::PopAndDestroy(buf);
CleanupStack::PopAndDestroy(singleContact);
}
}
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);
TBuf8<256> fieldKey;
TBuf<256> label;
TBuf<256> value;
field->GetFieldDataL(fieldKey,label,value);
if (fieldKey == KFirstName && value == KName)
{
iErr = KErrNone;
}
// delete field;
}
delete singleContact;
}
}
if(EGetGroup == iOperation )
{
iOperation = ENone;
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);
TBuf<256> groupId;
RPointerArray<HBufC8> array;
field->GetFieldDataL(groupId,array);
TInt contacts(array.Count());
//array->Reset();
}
}
}
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;
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(singleContact);
iLog->Log(_L("AddL called\n"));
iLog->Log(_L("Start Active Scheduler\n"));
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(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;
}
}
//
//MVPbkContactLinkArray* linkArray = iContactManager->CreateLinksLC(iSingleContact->GetContactId());
//iOp = iContactManager->RetrieveContactL(linkArray->At(0),*this);
//CActiveScheduler::Start();
//CleanupStack::Pop();
//
__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 = KErrGeneral;
/**Add 1 group using virtual phonebook */
iGroup = iStore->CreateNewContactGroupLC();
iGroup->SetGroupLabelL(KGroup1);
iGroup->CommitL(*this);
CActiveScheduler::Start();
CleanupStack::Pop();
// __UHEAP_MARK;
iServiceHandle = CContactService::NewL();
iLog->Log( KServiceOpen );
CContactIter* iter = iServiceHandle->GetListL(EGroups);
iLog->Log(_L("GetListL called\n"));
iLog->Log(_L("Start Active Scheduler\n"));
// CActiveScheduler::Start();
iErr = KErrGeneral;
CSingleContact* singleContact = NULL;
HBufC8* buf = NULL;
TInt count = 0;
while(ETrue)
{
iter->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 iServiceHandle;//serviceHandle
delete iter;
iServiceHandle = NULL;
iLog->Log( KServiceClose );
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;
delete iter;
iLog->Log( KServiceClose );
// __UHEAP_MARKEND;
return iErr;
}
// -----------------------------------------------------------------------------
// CContactsUT::?member_function
// ?implementation_description
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CContactsUT::GetContactsL( CStifItemParser& aItem )
{
/**GetList using SAPI Core class */
// __UHEAP_MARK;
// 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*/
iServiceHandle = CContactService::NewL();
iLog->Log( KServiceOpen );
iOperation = EGetContact;
CContactIter* iter = iServiceHandle->GetListL(EContacts);
_LIT8(KFirstName1,"FirstName");
_LIT(KTName,"Tenali");
_LIT(KBName,"Birbal");
TInt tError = KErrNotFound;
TInt bError = KErrNotFound;
CSingleContact* singleContact = NULL;
HBufC8* buf = NULL;
TInt count = 0;
while(ETrue)
{
iter->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 == KFirstName1 && value == KTName)
{
tError = KErrNone;
}
else if (fieldKey == KFirstName1 && value == KBName)
{
bError = KErrNone;
}
}
delete singleContact;
}
if(tError == KErrNone && bError == KErrNone)
{
iErr = KErrNone;
}
else
{
iErr = KErrNotFound;
}
delete iServiceHandle;//serviceHandle
delete iter;
iServiceHandle = NULL;
iLog->Log( KServiceClose );
return iErr;
}
// -----------------------------------------------------------------------------
// CContactsUT::?member_function
// ?implementation_description
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TInt CContactsUT::AddL( CStifItemParser& aItem )
{
__UHEAP_MARK;
// 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");
//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"));
//temp
serviceHandle->AddL(this,0,singleContact);
CActiveScheduler::Start();
serviceHandle->AddL(singleContact);
iLog->Log(_L("AddL called\n"));
iLog->Log(_L("Start Active Scheduler\n"));
CleanupStack::Pop(phoneContactField);//singleContactField
CleanupStack::Pop(nameContactField);//singleContactField
CleanupStack::PopAndDestroy(singleContact);//singleContact
CContactIter* iter = serviceHandle->GetListL( EContacts,KNullDesC8,KName);
HBufC8* buf = NULL;
TInt count = 0;
while(ETrue)
{
iter->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 singleContact;
delete buf;
}
delete buf;
CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
delete iter;
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(NULL,KNullDesC8,KGroup);
iLog->Log(_L("AddL called\n"));
iLog->Log(_L("Start Active Scheduler\n"));
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 )
{
__UHEAP_MARK;
RPointerArray<TDesC8> idArray;
CleanupClosePushL(idArray);
CSingleContact* myContact=NULL;
HBufC8* conactId = NULL;
CContactService* serviceHandle = CContactService::NewL();
CleanupStack::PushL(serviceHandle);
iLog->Log( KServiceOpen );
CContactIter* Iter = serviceHandle->GetListL( EContacts );
Iter->NextL(myContact,conactId);
idArray.AppendL(&conactId->Des());
serviceHandle->DeleteL(idArray);
iLog->Log(_L("DeleteL called\n"));
iLog->Log(_L("Start Active Scheduler\n"));
//CActiveScheduler::Start();
CleanupStack::PopAndDestroy(serviceHandle);//serviceHandle
CleanupStack::PopAndDestroy(&idArray);//singleContactField
delete myContact;
delete conactId;
delete Iter;
iLog->Log( KServiceClose );
__UHEAP_MARKEND;
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(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;
/** Add 1 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,"123456");
(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);
/** ends */
/** Retrieve contact ids and modify using SAPI core class */
// Phone number to be searched for
_LIT( KMatchNo, "123456" );
// Create find operation
iOp = iContactManager->MatchPhoneNumberL(
KMatchNo, KMatchNo().Length(), *this );
CActiveScheduler::Start();
TInt count(iFindResults->Count());
/**end*/
/**Modify using SAPI core class*/
iBuffer = (const_cast<MVPbkContactLink&>(iFindResults->At(--count))).PackLC();
CleanupStack::Pop();//iBuffer
//__UHEAP_MARK;
iServiceHandle = CContactService::NewL();
iLog->Log( KServiceOpen );
iOperation = EContact;
CContactIter* iter = iServiceHandle->GetListL(EContacts);
iErr = KErrGeneral;
CSingleContact* singleContact = NULL;
HBufC8* buf = NULL;
_LIT(KPhone,"Birbal");
_LIT8(KField,"FirstName");
while(ETrue)
{
// __UHEAP_MARK;
iter->NextL(singleContact,buf);
if(!singleContact)
{
break;
}
CleanupStack::PushL(singleContact);
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(singleContact);
iLog->Log(_L("AddL called\n"));
iLog->Log(_L("Start Active Scheduler\n"));
// CActiveScheduler::Start();
//__UHEAP_MARKEND;
break;
}
}
}
CleanupStack::PopAndDestroy(singleContact);
delete buf;
}
delete buf;
delete iter;
CContactIter* iterr = iServiceHandle->GetListL(EContacts,iBuffer->Des());
while(ETrue)
{
//__UHEAP_MARK;
iter->NextL(singleContact,buf);
if(!singleContact)
{
break;
}
CleanupStack::PushL(singleContact);
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 == KField && value == KPhone)
{
iErr = KErrNone;
}
}
}
CleanupStack::PopAndDestroy(singleContact);
delete buf;
}
delete buf;
iLog->Log(_L("GetListL called\n"));
iLog->Log(_L("Start Active Scheduler\n"));
//CActiveScheduler::Start();
delete iServiceHandle;//serviceHandle
delete iterr;
iServiceHandle = NULL;
iLog->Log( KServiceClose );
// __UHEAP_MARKEND;
/** ends */
/**Delete using virtual Phonebook
_LIT(KPhone1,"560087");
// Create find operation
iOp = iContactManager->MatchPhoneNumberL(
KPhone1, KPhone1().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::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(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 */
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,"24680");
(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,"24680");
(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 */
// Phone number to be searched for
_LIT( KMatchNo, "24680" );
// Create find operation
iOp = iContactManager->MatchPhoneNumberL(
KMatchNo, KMatchNo().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(*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();
iOp = iContactManager->DeleteContactsL( *linkArray, *this );
CActiveScheduler::Start();
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(*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(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);
/** 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,"214365");
(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, "214365" );
// Create find operation
iOp = iContactManager->MatchPhoneNumberL(
KMatchNo, KMatchNo().Length(), *this );
CActiveScheduler::Start();
TInt count = iFindResults->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 );
CSingleContact* myContact=NULL;
HBufC8* conactId = NULL;
TFileName filename(KFileName);
CContactIter* Iter = serviceHandle->GetListL( EContacts );
Iter->NextL(myContact,conactId);
serviceHandle->ExportVCardL(filename,conactId->Des());
delete myContact;
delete Iter;
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;
/**Delete using virtual Phonebook */
// Create find operation
iOp = iContactManager->MatchPhoneNumberL(
KMatchNo, KMatchNo().Length(), *this );
CActiveScheduler::Start();
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;
}
//End of file