×
Namespaces

Variants
Actions
(Difference between revisions)

Archived:Exporting a vCard item from contacts to a file using Symbian C++

From Nokia Developer Wiki
Jump to: navigation, search
aknyman (Talk | contribs)
(New page: __NOTOC__ __NOEDITSECTION__ {|style="background:#eceff2" width="660px" border="1" cellpadding="5" cellspacing="0" |- |'''ID''' ||   |'''Creation date''' || April 9, 2008 |- |'''Plat...)
 
aknyman (Talk | contribs)
Line 28: Line 28:
 
==MMP file==
 
==MMP file==
  
The following libraries are required:
+
The following capabilities and libraries are required:
 +
 
 +
<code>
 +
CAPABILITY ReadUserData
 +
</code>
  
 
<code>
 
<code>
Line 120: Line 124:
 
The function returns ETrue to the caller in success case or EFalse when the file creation fails.  
 
The function returns ETrue to the caller in success case or EFalse when the file creation fails.  
  
<!--
 
 
==See also==
 
==See also==
-->
+
[[Importing_vCard_item_from_a_file]]
  
 
[[Category:Symbian C++]][[Category:Code Examples]][[Category:PIM]]
 
[[Category:Symbian C++]][[Category:Code Examples]][[Category:PIM]]

Revision as of 09:34, 10 April 2008


ID   Creation date April 9, 2008
Platform S60 3rd Edition, FP1 Tested on devices Nokia N93
Category Symbian C++ Subcategory PIM


Keywords (APIs, classes, methods, functions): RFileWriteStream, CContactDatabase, CContactIdArray, CCntFilter, CContactDatabase::OpenL(), CContactDatabase::ExportSelectedContactsL(), CContactDatabase::FilterDatabaseL(), CCntFilter::SetContactFilterTypeALL(), CCntFilter::SetContactFilterTypeCard()

Overview

This snippet shows a simple function implementation to export one contact from the default contacts database as vCard to the given file.

This snippet can be self-signed.

MMP file

The following capabilities and libraries are required:

CAPABILITY ReadUserData
LIBRARY  euser.lib
LIBRARY estor.lib
LIBRARY efsrv.lib
LIBRARY cntmodel.lib

Source file

#include <e32cmn.h>   //TUid
#include <e32std.h> //User
#include <e32base.h> //CArrayPtr, CleanupStack
#include <e32def.h> //TBool
#include <s32file.h> //RFileReadStream
#include <f32file.h> //RFs
#include <cntdb.h> //CContactDatabase
#include <cntdef.h> //CContactIdArray
#include <cntfilt.h> //CCntFilter
TBool ExportVCardL(const TDesC& aFileName, TInt aItemIndex)
{
RFs fileSession;
RFile file;
 
User::LeaveIfError(fileSession.Connect());
CleanupClosePushL(fileSession);
 
if (file.Replace(fileSession, aFileName, EFileWrite) != KErrNone)
{
//failed to create the file
CleanupStack::PopAndDestroy(); //fileSession
return EFalse;
}
CleanupClosePushL(file);
 
//open a write stream to the file
RFileWriteStream outputFileStream(file);
CleanupClosePushL(outputFileStream);
 
//open the default contacts database
CContactDatabase* contactsDb = CContactDatabase::OpenL();
CleanupStack::PushL(contactsDb);
 
//create an array of contact IDs to export
CContactIdArray* exportContacts = CContactIdArray::NewL();
CleanupStack::PushL(exportContacts);
 
//use a filter to get only contact items (e.g. templates are excluded)
CCntFilter *filter = CCntFilter::NewLC();
filter->SetContactFilterTypeALL(EFalse);
filter->SetContactFilterTypeCard(ETrue);
contactsDb->FilterDatabaseL(*filter);
 
//create an array to hold all filtered contact items
CContactIdArray* contactIds;
contactIds = CContactIdArray::NewLC(filter->iIds);
 
//add given contact(by index) to the array of contact IDs to export
if((*contactIds).Count() >= aItemIndex)
exportContacts->AddL((*contactIds)[aItemIndex] );
 
CleanupStack::PopAndDestroy(2); //contactIds, filter
 
//KVersitEntityUidVCard is used to identify a vCard
TUid uid = TUid::Uid(KVersitEntityUidVCard);
contactsDb->ExportSelectedContactsL(uid,
*exportContacts,
outputFileStream,
//contact ID is no exported
CContactDatabase::EExcludeUid);
 
CleanupStack::PopAndDestroy(5); //exportContacts,contactsDb,
//outputFileStream,file,fileSession
 
return ETrue;
}

Postconditions

One contact given by index from the default contacts database is exported as a vCard to the given file. The function returns ETrue to the caller in success case or EFalse when the file creation fails.

See also

Importing_vCard_item_from_a_file

121 page views in the last 30 days.
×