本文整理汇总了C++中CContactDatabase::OpenContactL方法的典型用法代码示例。如果您正苦于以下问题:C++ CContactDatabase::OpenContactL方法的具体用法?C++ CContactDatabase::OpenContactL怎么用?C++ CContactDatabase::OpenContactL使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CContactDatabase
的用法示例。
在下文中一共展示了CContactDatabase::OpenContactL方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RemoveSpeedDialWhenOpenL
void RemoveSpeedDialWhenOpenL(TInt aContact, TInt aSpeedDialID, CContactDatabase& aDatabase)
{
CContactItem* card1 = 0;
TInt error = KErrNone;
// First open the contact, which locks it:
card1 = aDatabase.OpenContactL(aContact);
CleanupStack::PushL(card1);
// Now attempt to open the contact (must fail with in use):
error = KErrNone;
TRAP(error, aDatabase.OpenContactL(aContact));
g_test(error == KErrInUse);
// Now remove the speed dial on that contact (must fail with in use):
error = KErrNone;
TRAP(error, aDatabase.RemoveSpeedDialFieldL(aContact, aSpeedDialID));
g_test(error == KErrInUse);
// Now remove the speed dial on that contact again (must fail with in use):
// Defect was application crash.
error = KErrNone;
TRAP(error, aDatabase.RemoveSpeedDialFieldL(aContact, aSpeedDialID));
g_test(error == KErrInUse);
// Now attempt to open the contact (must fail with in use):
// Defect was fails with wrong error/no error.
error = KErrNone;
TRAP(error, aDatabase.OpenContactL(aContact));
g_test(error == KErrInUse);
// Cleanup and close:
CleanupStack::PopAndDestroy(card1);
TRAP(error, aDatabase.CloseContactL(aContact));
g_test(error == KErrNone);
}
示例2: AssignSpeedDialL
void AssignSpeedDialL( TInt aContact, TInt aSpeedDialID, CContactDatabase& database )
{
CContactItem* item = NULL;
item = database.OpenContactL( aContact );
CleanupStack::PushL( item );
if ( ContactIsASpeedDial( *item ) )
{
g_test.Printf( _L("Contact is a speed dial !!! \n") );
}
else
{
g_test.Printf( _L("Contact is NOT A SPEED DIAL \n") );
}
CContactItemFieldSet &fieldSet = item->CardFields();
for(TInt index = fieldSet.Count() - 1; index > 0; --index)
{
if(fieldSet[index].StorageType() == KStorageTypeText)
{
//set the last text field from the fieldset as speeddial field.
database.SetFieldAsSpeedDialL(*item, index, aSpeedDialID );
break;
}
}
g_test.Next( _L("Contact changed to speed dial") );
g_test(ContactIsASpeedDial( *item ));
CleanupStack::PopAndDestroy( item );
}
示例3: FailEditValidationL
/**
* Unsuccessful edit. Fail the edit validation request
* @param aDb Contact database
* @param aId Item Id to edit
*/
void FailEditValidationL(CContactDatabase& aDb, TContactItemId aId)
{
syncChecker->SetValidateResponseL(MContactSynchroniser::ERead,KErrNone);
syncChecker->SetValidateResponseL(MContactSynchroniser::EEdit, KErrAccessDenied);
syncChecker->ResetMethodCallCountsL();
test(syncChecker->ValidateMethodCallCountL() == 0);
TRAPD(err, aDb.OpenContactL(aId));
test(syncChecker->ValidateMethodCallCountL() == 2);
test(err==KErrAccessDenied);
}
示例4: TestDeleteNameL
/** Delete the surname field of the contact indicated by the index. Will Leave if the contact has no surname
@leave KErrNotFound contact has no surname
@param aDb The contact database
@param aIndex The index of the contact whose surname will be removed
*/
LOCAL_C void TestDeleteNameL(CContactDatabase& aDb, TInt aIndex)
{
CContactItem* item=aDb.OpenContactL(aIndex);
CleanupStack::PushL(item);
CContactItemFieldSet& fields=item->CardFields();
TInt i = fields.Find(KUidContactFieldFamilyName);
User::LeaveIfError(i);
fields[i].TextStorage()->SetTextL(KNullDesC);
aDb.CommitContactL(*item);
CleanupStack::PopAndDestroy(item);
}
示例5: LongNumSpeedDialTestsL
LOCAL_C void LongNumSpeedDialTestsL()
{
_LIT(KLongNumSpeedDialTest, "Long Phone Number Speed Dial Test");
g_test.Start(KLongNumSpeedDialTest);
// create default, empty database
CContactDatabase* db = CContactDatabase::ReplaceL(KLongNumSpeedDialDbName);
CleanupStack::PushL(db);
// create a contact and add it to the db
CContactItem* contact = CContactCard::NewLC();
CContactItemField* fname = CContactItemField::NewLC(KStorageTypeText,
KUidContactFieldGivenName);
_LIT(KFname, "James");
fname->TextStorage()->SetTextL(KFname() );
contact->AddFieldL(*fname);
CleanupStack::Pop(fname);
CContactItemField* phone = CContactItemField::NewLC(KStorageTypeText,
KUidContactFieldPhoneNumber);
_LIT(KPhoneNum, "01234567890123456789012345678901234567890123456789012345678901234567890123456789"); // 80 chars
phone->TextStorage()->SetTextL(KPhoneNum() );
contact->AddFieldL(*phone);
CleanupStack::Pop(phone);
const TContactItemId KContactId = db->AddNewContactL(*contact);
CleanupStack::PopAndDestroy(contact);
contact = NULL;
// retrieve contact and assign its number to speed dial #1
contact = db->OpenContactL(KContactId);
CleanupStack::PushL(contact);
const TInt KSpeedDial1(1);
const TInt KPhoneNumIndex = contact->CardFields().Find(KUidContactFieldPhoneNumber);
db->SetFieldAsSpeedDialL(*contact, KPhoneNumIndex, KSpeedDial1);
TBuf<100> speedDialNumberText;
TContactItemId speedDialId = db->GetSpeedDialFieldL(KSpeedDial1, speedDialNumberText);
_LIT(KOutputFormat, "retrieved speed dial id: %d;\nretrieved speed dial phone number: ...\n%S\n");
g_test.Printf(KOutputFormat, speedDialId, &speedDialNumberText);
db->CloseContactL(KContactId);
// cleanup
CleanupStack::PopAndDestroy(2, db); // and contact
CContactDatabase::DeleteDatabaseL(KLongNumSpeedDialDbName);
// Since PDEF121954, long phone numbers set as speed dial are truncated to
// the length of KSpeedDialPhoneLength. So, we need to get the truncated
// version of the phone number for comparison with the speed dial value.
TPtrC phoneNum(KPhoneNum().Mid(0, KSpeedDialPhoneLength));
g_test(speedDialId == KContactId && speedDialNumberText.CompareC(phoneNum) == 0);
g_test.End();
g_test.Close();
}
示例6: EditEntryL
void CPbTester::EditEntryL(TContactItemId itemId)
{
_LIT(KEmailAddress,"[email protected]");
CContactItem *item = ipbDb->OpenContactL(itemId);
CContactCard* card = NULL;
CleanupStack::PushL(item);
card = (CContactCard*)item;
// Create the emailAddress field and add the data to it
CContactItemField* emailAddr = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldEMail);
emailAddr->SetMapping(KUidContactFieldVCardMapEMAILINTERNET);
emailAddr ->TextStorage()->SetTextL(KEmailAddress);
card->AddFieldL(*emailAddr);
CleanupStack::Pop(emailAddr);
ipbDb->CommitContactL(*item);
CleanupStack::PopAndDestroy(item);
}
示例7: UpdateSpeedDialL
void UpdateSpeedDialL(TInt aContact, TInt aSpeedDialID, CContactDatabase& database )
{
CContactItem* item = NULL;
item = database.OpenContactL( aContact );
CleanupStack::PushL( item );
if ( ContactIsASpeedDial( *item ) )
{
g_test.Printf( _L("Contact is a speed dial !!! \n") );
database.SetFieldAsSpeedDialL(*item, item->Id(), aSpeedDialID );
}
else
{
g_test.Printf( _L("Contact is NOT A SPEED DIAL \n") );
}
CleanupStack::PopAndDestroy( item );
}
示例8: ContactIsASpeedDialL
TBool ContactIsASpeedDialL(TInt aContactId, CContactDatabase& aDatabase)
{
CContactItem* item = NULL;
TBool result = EFalse;
item = aDatabase.OpenContactL(aContactId);
CleanupStack::PushL(item);
const CContactItemFieldSet& fields = item->CardFields();
const TInt count = fields.Count();
for (TInt index = 0; index < count; ++index)
{
if (fields[index].IsSpeedDial())
{
result = ETrue;
break;
}
}
aDatabase.CloseContactL(aContactId);
CleanupStack::PopAndDestroy(item);
return result;
}
示例9: CreateTestGroupsL
void CRemoteViewTestResources::CreateTestGroupsL()
{
test.Next(_L("Test for creating a remote view and validating that queued events are received in the correct order."));
TContactViewEvent event;
// Create A then "unnanmed", then rename "unnamed" to B
test.Next(_L("Test for Create group A, then create group B"));
CContactItem* group1 = iDb->CreateContactGroupLC(_L("A"));
iViewEventQueue->ListenForEvent(2,event);
CheckEvent(event, TContactViewEvent::EItemAdded, 0, group1->Id());
CContactItem* group0 = iDb->CreateContactGroupLC(_L(""));
iViewEventQueue->ListenForEvent(2,event);
CheckEvent(event, TContactViewEvent::EItemAdded, 1, group0->Id());
CContactItem *group00 = iDb->OpenContactL(group0->Id());
static_cast<CContactGroup*> (group00)->SetGroupLabelL(_L("B"));
iDb->CommitContactL(*group00);
// Received 3 events, grp changed, removed and added
iViewEventQueue->ListenForEvent(2,event);
CheckEvent(event, TContactViewEvent::EGroupChanged, 0, group00->Id());
iViewEventQueue->ListenForEvent(2,event);
CheckEvent(event, TContactViewEvent::EItemRemoved, 1, group00->Id());
iViewEventQueue->ListenForEvent(2,event);
CheckEvent(event, TContactViewEvent::EItemAdded, 1, group00->Id());
// Create D then "unnamed", then rename "unnamed" to C
test.Next(_L("Test for Create group D, then create group C"));
CContactItem* group2 = iDb->CreateContactGroupLC(_L("D"));
iViewEventQueue->ListenForEvent(2,event);
CheckEvent(event, TContactViewEvent::EItemAdded, 2, group2->Id());
CContactItem* group3 = iDb->CreateContactGroupLC(_L(""));
iViewEventQueue->ListenForEvent(2,event);
CheckEvent(event, TContactViewEvent::EItemAdded, 3, group3->Id());
CContactItem *group4 = iDb->OpenContactL(group3->Id());
static_cast<CContactGroup*> (group4)->SetGroupLabelL(_L("C"));
iDb->CommitContactL(*group4);
// Received 3 events, grp changed, removed and added
iViewEventQueue->ListenForEvent(2,event);
CheckEvent(event, TContactViewEvent::EGroupChanged, 0, group4->Id());
iViewEventQueue->ListenForEvent(2,event);
CheckEvent(event, TContactViewEvent::EItemRemoved, 3, group4->Id());
iViewEventQueue->ListenForEvent(2,event);
CheckEvent(event, TContactViewEvent::EItemAdded, 2, group4->Id());
// More complex set of add and deletes.
test.Next(_L("Test-Addgroup E, Addgroup F, Addgroup G , RemoveGroup G Addgroup H RenameGroup H as EA"));
CContactItem* group5 = iDb->CreateContactGroupLC(_L("E"));
CContactItem* group6 = iDb->CreateContactGroupLC(_L("F"));
CContactItem* group7 = iDb->CreateContactGroupLC(_L("G"));
iDb->DeleteContactL(group7->Id());
CContactItem* group8 = iDb->CreateContactGroupLC(_L("H"));
CContactItem *group01 = iDb->OpenContactL(group8->Id());
static_cast<CContactGroup*> (group01)->SetGroupLabelL(_L("EA"));
iDb->CommitContactL(*group01);
// Should receive events for operations above, order is not important
// Should receive events as add for E F EA(H) - In the order E EA(H) F
// (none for G as add, then remove)
iViewEventQueue->ListenForEvent( 2, event );
CheckEvent( event, TContactViewEvent::EItemAdded, 4, group5->Id() );
iViewEventQueue->ListenForEvent( 2, event );
CheckEvent( event, TContactViewEvent::EItemAdded, 5, group6->Id() );
iViewEventQueue->ListenForEvent( 2, event );
CheckEvent( event, TContactViewEvent::EItemAdded, 6, group8->Id() );
iViewEventQueue->ListenForEvent( 2, event );
CheckEvent( event, TContactViewEvent::EItemAdded, 7, group7->Id() );
iViewEventQueue->ListenForEvent( 2, event );
CheckEvent( event, TContactViewEvent::EItemRemoved, 7, group7->Id() );
iViewEventQueue->ListenForEvent( 2, event );
CheckEvent( event, TContactViewEvent::EGroupChanged, 0, group8->Id() );
// Cleanup
delete group01;
delete group00;
delete group4;
CleanupStack::PopAndDestroy(group8);
CleanupStack::PopAndDestroy(group7);
CleanupStack::PopAndDestroy(group6);
CleanupStack::PopAndDestroy(group5);
CleanupStack::PopAndDestroy(group3);
CleanupStack::PopAndDestroy(group2);
CleanupStack::PopAndDestroy(group0);
CleanupStack::PopAndDestroy(group1);
}