📄 phonebkexengine.cpp
字号:
CBCardEngine* cardEngine = CBCardEngine::NewL(iPbkContactEngine);
CleanupStack::PushL(cardEngine);
CPbkContactItem* contact = iPbkContactEngine->ReadContactLC(aContactId);
cardEngine->ExportBusinessCardL(writeStream, *contact);
CleanupStack::PopAndDestroy(contact);
writeStream.CommitL();
writeStream.Close();
outfile.Close();
CleanupStack::PopAndDestroy(cardEngine);
}
void CPhoneBkExEngine::ImportVCardL()
{
ImportVCardL(*iFileDirText);
}
void CPhoneBkExEngine::ImportVCardL(const TDesC& aVCardStream)
{
RFile infile;
infile.Open(CCoeEnv::Static()->FsSession(),aVCardStream,EFileRead);
RFileReadStream readStream(infile);
CPbkContactItem* contactItem = iPbkContactEngine->CreateEmptyContactL();
CleanupStack::PushL(contactItem);
CBCardEngine* cardEngine = CBCardEngine::NewL(iPbkContactEngine);
CleanupStack::PushL(cardEngine);
cardEngine->ImportBusinessCardL(*contactItem, readStream);
// add the new contact to the phonebook.
TContactItemId contactId = iPbkContactEngine->AddNewContactL(*contactItem);
iContactsAddedArray->AddL(contactId);
CleanupStack::PopAndDestroy(2, contactItem);
readStream.Close();
infile.Close();
}
TContactItemId CPhoneBkExEngine::AddContactL(const TDesC& aName, const TDesC& aNumber,const TDesC& aJob)
{
CPbkContactItem* contactItem = iPbkContactEngine->CreateEmptyContactL();
CleanupStack::PushL(contactItem);
TPbkContactItemField* name = contactItem->FindField(EPbkFieldIdFirstName);
name->TextStorage()->SetTextL(aName);
TPbkContactItemField* mobileNumber = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
mobileNumber->TextStorage()->SetTextL(aNumber);
TPbkContactItemField* job = contactItem->FindField(EPbkFieldIdJobTitle);
job->TextStorage()->SetTextL(aJob);
// add the new contact to the phonebook.
TContactItemId contactId = iPbkContactEngine->AddNewContactL(*contactItem);
iContactsAddedArray->AddL(contactId);
CleanupStack::PopAndDestroy(contactItem);
return contactId;
}
void CPhoneBkExEngine::DisplayPhoneNumbersL(MObjectProvider* aMopParent)
{
RPbkViewResourceFile phonebookResource( *(CEikonEnv::Static()) );
if ( !phonebookResource.IsOpen())
{
phonebookResource.OpenL();
}
// Add searching array to parameters
CContactDatabase::TContactViewFilter filter(CContactDatabase::EPhonable);
CPbkMultipleEntryFetchDlg::TParams params;
params.iContactView = &iPbkContactEngine->FilteredContactsViewL( filter );
// Launch fetching dialog
CPbkMultipleEntryFetchDlg* fetchDlg = CPbkMultipleEntryFetchDlg::NewL( params, *iPbkContactEngine );
fetchDlg->SetMopParent( aMopParent );
TInt okPressed = fetchDlg->ExecuteLD();
CleanupStack::PushL( params.iMarkedEntries );
if ( okPressed )
{
TInt paramCount = params.iMarkedEntries->Count();
// Get the selected contacts id array
for ( TInt i = 0; i < paramCount; ++i )
{
const TContactItemId cid = ( *params.iMarkedEntries )[i];
// Open the selected contact using Phonebook engine,
// choose correct number (launch list query if needed)
CPbkContactItem* pbkItem = iPbkContactEngine->ReadContactLC( cid );
TPtrC tempAddress;
CPbkPhoneNumberSelect* selectDlg = new (ELeave) CPbkPhoneNumberSelect( );
tempAddress.Set( selectDlg->ExecuteLD(*pbkItem, pbkItem->DefaultSmsField(), ETrue) );
HBufC* infoText = StringLoader::LoadLC(R_INFO_TEXT);
CEikonEnv::Static()->InfoWinL(*infoText, tempAddress );
CleanupStack::PopAndDestroy(2); // pbkItem, infoText
}
}
CleanupStack::PopAndDestroy(); // iMarkedEntries
phonebookResource.Close(); // Close the phonebook view
}
void CPhoneBkExEngine::CreateNewContactL()
{
RPbkViewResourceFile phonebookResource( *(CEikonEnv::Static()) );
// Open the phonebook view if it is not already open
if ( !phonebookResource.IsOpen())
{
phonebookResource.OpenL();
}
// create an empty contact
CPbkContactItem* contactItem =iPbkContactEngine->CreateEmptyContactL();
CleanupStack::PushL(contactItem);
// create and launch the dialog
CPbkContactEditorDlg* editor = CPbkContactEditorDlg::NewL(*iPbkContactEngine, *contactItem, ETrue);
TContactItemId id = editor->ExecuteLD();
// if the contact was added to the db, add it to our array so we can delete it on exit
if(id != KNullContactId)
iContactsAddedArray->AddL(id);
CleanupStack::PopAndDestroy(contactItem);
phonebookResource.Close(); // Close the phonebook view
}
TContactItemId CPhoneBkExEngine::ContactNo2Id() const
{
return iContactNumber2;
}
void CPhoneBkExEngine::AddTestDataL()
{
//contact 1
HBufC* contactJob = StringLoader::LoadLC(R_JOB1_TEXT);
HBufC* contactName = StringLoader::LoadLC(R_CONTACTNAME11_TEXT);
HBufC* contactNumber = StringLoader::LoadLC(R_CONTACTNUMBER1_TEXT);
AddContactL(*contactName, *contactNumber, *contactJob);
CleanupStack::PopAndDestroy(3);
contactName = NULL;
contactNumber = NULL;
contactJob = NULL;
//contact 2
contactName = StringLoader::LoadLC(R_CONTACTNAME2_TEXT);
contactNumber = StringLoader::LoadLC(R_CONTACTNUMBER2_TEXT);
contactJob = StringLoader::LoadLC(R_JOB2_TEXT);
iContactNumber2 = AddContactL(*contactName, *contactNumber, *contactJob);
CleanupStack::PopAndDestroy(3);
contactName = NULL;
contactNumber = NULL;
contactJob = NULL;
//contact 3
contactName = StringLoader::LoadLC(R_CONTACTNAME3_TEXT);
contactNumber = StringLoader::LoadLC(R_CONTACTNUMBER3_TEXT);
contactJob = StringLoader::LoadLC(R_JOB2_TEXT);
AddContactL(*contactName, *contactNumber, *contactJob);
CleanupStack::PopAndDestroy(3);
contactName = NULL;
contactNumber = NULL;
contactJob = NULL;
contactName = StringLoader::LoadLC(R_CONTACTNAME4_TEXT);
contactNumber = StringLoader::LoadLC(R_CONTACTNUMBER4_TEXT);
contactJob = StringLoader::LoadLC(R_JOB1_TEXT);
AddContactL(*contactName, *contactNumber, *contactJob);
CleanupStack::PopAndDestroy(3);
contactName = NULL;
contactNumber = NULL;
contactJob = NULL;
contactName = StringLoader::LoadLC(R_CONTACTNAME5_TEXT);
contactNumber = StringLoader::LoadLC(R_CONTACTNUMBER5_TEXT);
contactJob = StringLoader::LoadLC(R_JOB2_TEXT);
AddContactL(*contactName, *contactNumber, *contactJob);
CleanupStack::PopAndDestroy(3);
contactName = NULL;
contactNumber = NULL;
contactJob = NULL;
contactName = StringLoader::LoadLC(R_CONTACTNAME6_TEXT);
contactNumber = StringLoader::LoadLC(R_CONTACTNUMBER6_TEXT);
contactJob = StringLoader::LoadLC(R_JOB2_TEXT);
AddContactL(*contactName, *contactNumber, *contactJob);
CleanupStack::PopAndDestroy(3);
contactName = NULL;
contactNumber = NULL;
contactJob = NULL;
contactName = StringLoader::LoadLC(R_CONTACTNAME7_TEXT);
contactNumber = StringLoader::LoadLC(R_CONTACTNUMBER7_TEXT);
contactJob = StringLoader::LoadLC(R_JOB1_TEXT);
AddContactL(*contactName, *contactNumber, *contactJob);
CleanupStack::PopAndDestroy(3);
contactName = NULL;
contactNumber = NULL;
contactJob = NULL;
contactName = StringLoader::LoadLC(R_CONTACTNAME8_TEXT);
contactNumber = StringLoader::LoadLC(R_CONTACTNUMBER8_TEXT);
contactJob = StringLoader::LoadLC(R_JOB1_TEXT);
AddContactL(*contactName, *contactNumber, *contactJob);
CleanupStack::PopAndDestroy(3);
contactName = NULL;
contactNumber = NULL;
contactJob = NULL;
contactName = StringLoader::LoadLC(R_CONTACTNAME9_TEXT);
contactNumber = StringLoader::LoadLC(R_CONTACTNUMBER9_TEXT);
contactJob = StringLoader::LoadLC(R_JOB1_TEXT);
AddContactL(*contactName, *contactNumber, *contactJob);
CleanupStack::PopAndDestroy(3);
contactName = NULL;
contactNumber = NULL;
contactJob = NULL;
contactName = StringLoader::LoadLC(R_CONTACTNAME10_TEXT);
contactNumber = StringLoader::LoadLC(R_CONTACTNUMBER10_TEXT);
contactJob = StringLoader::LoadLC(R_JOB2_TEXT);
AddContactL(*contactName, *contactNumber, *contactJob);
CleanupStack::PopAndDestroy(3);
contactName = NULL;
contactNumber = NULL;
contactJob = NULL;
contactName = StringLoader::LoadLC(R_CONTACTNAME11_TEXT);
contactNumber = StringLoader::LoadLC(R_CONTACTNUMBER11_TEXT);
contactJob = StringLoader::LoadLC(R_JOB3_TEXT);
HBufC* vCard = StringLoader::LoadLC(R_VCARDFILE_TEXT);
iVCardId = AddContactL(*contactName, *contactNumber, *contactJob);
ExportAsVCardL(*vCard, iVCardId);
CleanupStack::PopAndDestroy(4);
DeleteContact(iVCardId);
}
void CPhoneBkExEngine::DeleteContact(TContactItemId aContactToDelete)
{
TRAPD(leaveCode,iPbkContactEngine->DeleteContactL(aContactToDelete));
if(leaveCode != KErrNone)
{
// error message
}
TInt index = iContactsAddedArray->Find(aContactToDelete);
iContactsAddedArray->Remove(index);
iVCardId = 0;
}
void CPhoneBkExEngine::DeleteTestData()
{
TInt count = iContactsAddedArray->Count();
for (TInt i=0; i<count; i++)
{
TRAPD(error,iPbkContactEngine->DeleteContactL((*iContactsAddedArray)[i]));
if(error != KErrNone)
{
// error has occurred
}
}
count = iContactGroupsAddedArray->Count();
for (TInt j=0; j<count; j++)
{
TRAPD(groupError,iPbkContactEngine->DeleteContactL((*iContactGroupsAddedArray)[j]));
if (groupError != KErrNone)
{
// errror has occurred
}
}
iPbkContactEngine->CompressL();
CCoeEnv::Static()->FsSession().Delete(*iFileDirText);
}
// End of File
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -