Archived:Exporting a vCard item from contacts to a file using Symbian C++
hamishwillee
(Talk | contribs) m (Hamishwillee - Bot update - Fix metadata etc) |
m (Lpvalente -) |
||
| (4 intermediate revisions by one user not shown) | |||
| Line 1: | Line 1: | ||
| − | |||
[[Category:Symbian C++]][[Category:Code Snippet]][[Category:PIM]][[Category:S60 3rd Edition (initial release)]][[Category:Code Snippet]] | [[Category:Symbian C++]][[Category:Code Snippet]][[Category:PIM]][[Category:S60 3rd Edition (initial release)]][[Category:Code Snippet]] | ||
| + | {{Archived|timestamp=20120314040357|user=roy.debjit| }} | ||
| + | |||
{{ArticleMetaData <!-- v1.2 --> | {{ArticleMetaData <!-- v1.2 --> | ||
|sourcecode= <!-- Link to example source code (e.g. [[Media:The Code Example ZIP.zip]]) --> | |sourcecode= <!-- Link to example source code (e.g. [[Media:The Code Example ZIP.zip]]) --> | ||
| Line 29: | Line 30: | ||
==Overview== | ==Overview== | ||
| − | This snippet shows a simple function implementation to export one contact from the default contacts database as a vCard to a given file. | + | {{Abstract|This snippet shows a simple function implementation to export one contact from the default contacts database as a vCard to a given file.}} |
This snippet can be self-signed. | This snippet can be self-signed. | ||
| Line 133: | Line 134: | ||
==See also== | ==See also== | ||
| − | [[Importing a vCard item into the contacts database from a file using Symbian C++]] | + | [[Archived:Importing a vCard item into the contacts database from a file using Symbian C++]] |
Latest revision as of 21:13, 11 August 2012
Archived: This article is archived because it is not considered relevant for third-party developers creating commercial solutions today. If you think this article is still relevant, let us know by adding the template {{ReviewForRemovalFromArchive|user=~~~~|write your reason here}}.
Article Metadata
Tested with
Devices(s): Nokia N93
Compatibility
Platform(s): S60 3rd Edition, FP1
Article
Keywords: RFileWriteStream, CContactDatabase, CContactIdArray, CCntFilter, CContactDatabase::OpenL(), CContactDatabase::ExportSelectedContactsL(), CContactDatabase::FilterDatabaseL(), CCntFilter::SetContactFilterTypeALL(), CCntFilter::SetContactFilterTypeCard()
Created: aknyman
(09 Apr 2008)
Last edited: lpvalente
(11 Aug 2012)
Contents |
Overview
This snippet shows a simple function implementation to export one contact from the default contacts database as a vCard to a 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
A contact given by the index from the default contacts database is exported as a vCard to the given file.
The function returns ETrue to the caller when the file creation succeeds or EFalse when the file creation fails.
See also
Archived:Importing a vCard item into the contacts database from a file using Symbian C++

