⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phonebkexengine.cpp

📁 基于Symbian OS
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	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 + -