本文整理汇总了C++中CContactDatabase::CloseContactL方法的典型用法代码示例。如果您正苦于以下问题:C++ CContactDatabase::CloseContactL方法的具体用法?C++ CContactDatabase::CloseContactL怎么用?C++ CContactDatabase::CloseContactL使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CContactDatabase
的用法示例。
在下文中一共展示了CContactDatabase::CloseContactL方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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: 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();
}
示例3: DeleteContactsL
void CTestContactOperations::DeleteContactsL()
{
// existing database
TPtrC databaseFile(_L("C:contactDB.cdb"));
TContactItemId itemId = KErrNotFound;
CContactDatabase* dBase = NULL;
CContactIdArray* idArray = NULL;
dBase = CContactDatabase::OpenL(databaseFile);
CleanupStack::PushL(dBase);
// Set the filter to select all the contact items in the database
CCntFilter* exportFilter = CCntFilter::NewL();
CleanupStack::PushL(exportFilter);
exportFilter->SetContactFilterTypeCard(ETrue);
dBase->FilterDatabaseL(*exportFilter);
idArray = exportFilter->iIds;
CleanupStack::PushL(idArray);
TInt numberOfContacts;
GetIntFromConfig(ConfigSection(), KNumberOfCont, numberOfContacts);
INFO_PRINTF1(_L("Deleting Contacts....."));
// Delete the contacts one at a time
for(TInt i=(idArray->Count()-1);i>=0;i--)
{
dBase->DeleteContactL((*idArray)[i]);
}
_LIT(KCount, "The number of contacts in the database is %d \n");
INFO_PRINTF2(KCount, dBase->CountL());
// Close the contacts
dBase->CloseContactL(itemId);
// Cleanup
CleanupStack::Pop(idArray);
CleanupStack::PopAndDestroy(exportFilter);
CleanupStack::PopAndDestroy(dBase);
}
示例4: 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;
}
示例5: CreateAndUpdateMultipleContactsL
/** Create Multiple Contact Item with field and Add all contact
* Item to Contact database. Update the multiple contact item field value and
* verify field is being updated.
* aValue - field value
* @param aStorageType - Storage type of each field
* @param aContFieldUid - Uid of Contact field
* @param avCardMapUid - Uid of vCard
* @return - void
*/
void CTestUpdateMultipleContactsStep::CreateAndUpdateMultipleContactsL(TPtrC aValue, TInt aStorageType,TUid aContFieldUid, TUid avCardMap)
{
TPtrC value, updateVal, getUpdateValue;
CContactDatabase *dBase = NULL;
_LIT(KTestDbName, "c:contactmultiple.cdb");
TInt year, month, day,noOfCI;
TContactItemId id = 0;
RArray <TInt> idArray;
CleanupClosePushL(idArray);
//replace existing database name
dBase = CContactDatabase::ReplaceL(KTestDbName);
//Get the number of contact item from ini file
GetIntFromConfig(ConfigSection(), KNoOfContactItem, noOfCI);
//Get the int value
GetIntFromConfig(ConfigSection(), KIniYear, year);
GetIntFromConfig(ConfigSection(), KIniMonth, month);
GetIntFromConfig(ConfigSection(), KIniDay, day);
// Create contact item and add field to it
for(TInt range=0;range<noOfCI;range++)
{
CContactItem* item = CContactCard::NewLC();
CContactItemField* field = CContactItemField::NewL(aStorageType, aContFieldUid);
CleanupStack::PushL(field);
field->SetMapping(avCardMap);
if(aStorageType==KStorageTypeDateTime)
{
TDateTime date(year,(TMonth)month,day,0,0,0,0);
field->DateTimeStorage()->SetTime(date);
}
else
{
field->TextStorage()->SetTextL(aValue);
}
item->AddFieldL(*field);
CleanupStack::Pop(field);
// add contact item to database
id = dBase->AddNewContactL(*item);
idArray.Append(id);
CleanupStack::PopAndDestroy(item);
}
dBase->CloseContactL(id);
// Get the value from ini file for update
GetStringFromConfig(ConfigSection(), KIniUpdatedvalue, updateVal);
GetIntFromConfig(ConfigSection(), KIniUpdateYear, year);
GetIntFromConfig(ConfigSection(), KIniUpdateMonth, month);
GetIntFromConfig(ConfigSection(), KIniUpdateDay, day);
// update multiple contact item field value
CContactItem *readItem = NULL;
for(TInt readContact=0;readContact<noOfCI;readContact++)
{
readItem = dBase->ReadContactLC(idArray[readContact]);
CContactItemFieldSet& ContactFieldSet = readItem->CardFields();
TInt pos = ContactFieldSet.Find(aContFieldUid, avCardMap);
if(pos != KErrNotFound)
{
if(aStorageType==KStorageTypeDateTime)
{
// update the field value
TDateTime date(year,(TMonth)month,day,0,0,0,0);
ContactFieldSet[pos].DateTimeStorage()->SetTime(date);
ContactFieldSet.UpdateFieldL(ContactFieldSet[pos],pos);
// verify the updated field value
TInt upadtePos = ContactFieldSet.Find(aContFieldUid, avCardMap);
TDateTime result=ContactFieldSet[upadtePos].DateTimeStorage()->Time().DateTime();
if((result.Year() == year) && (result.Month() == (TMonth)month) && (result.Day() == day))
{
SetTestStepResult(EPass);
}
else
{
SetTestStepResult(EFail);
}
}
else
{
// Update the field value
ContactFieldSet[pos].TextStorage()->SetTextL(updateVal);
ContactFieldSet.UpdateFieldL(ContactFieldSet[pos],pos);
// verify the field is being updated
TInt upadtePos = ContactFieldSet.Find(aContFieldUid, avCardMap);
getUpdateValue.Set(ContactFieldSet[upadtePos].TextStorage()->Text());
//.........这里部分代码省略.........