diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_versit_example_8cpp-source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_versit_example_8cpp-source.html Tue Mar 30 11:56:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,192 +0,0 @@ - -
-00001 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). -00002 // All rights reserved. -00003 // This component and the accompanying materials are made available -00004 // under the terms of "Eclipse Public License v1.0" -00005 // which accompanies this distribution, and is available -00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html". -00007 // -00008 // Initial Contributors: -00009 // Nokia Corporation - initial contribution. -00010 // -00011 // Contributors: -00012 // -00013 // Description: -00014 // This example demonstrates a vCard parser -00015 // -00016 -00017 -00018 #include <e32base.h> -00019 #include <e32cons.h> -00020 #include <vcard.h> -00021 #include <versit.h> -00022 #include "VersitExample.h" -00023 -00024 // Global definition -00025 static CConsoleBase* gConsole; -00026 -00027 // name of file to write the vCard to -00028 _LIT(KVCardFileJIS,"\\Private\\E8000094\\charsetJIS.vcf"); -00029 -00030 // string for display -00031 _LIT(KMsgPressAnyKey,"\n\nPress any key to continue\n"); -00032 -00033 CExampleVersit* CExampleVersit::NewL() -00034 { -00035 CExampleVersit* self = new (ELeave) CExampleVersit(); -00036 CleanupStack::PushL(self); -00037 self->ConstructL(); -00038 CleanupStack::Pop(self); -00039 return self; -00040 } -00041 -00042 void CExampleVersit::ConstructL() -00043 { -00044 iParser = CParserVCard::NewL(); -00045 } -00046 -00047 CExampleVersit::~CExampleVersit() -00048 { -00049 delete iParser; -00050 iFsSession .Close(); -00051 } -00052 -00053 // Externalises a vCard to a file -00054 void CExampleVersit::ExternalizeToFileL(const TDesC& aFileName) -00055 { -00056 RFile file; -00057 iFsSession.Connect(); -00058 // create the private directory (\Private\E8000094\) on writable drive -00059 User::LeaveIfError(iFsSession.CreatePrivatePath(RFs::GetSystemDrive())); -00060 User::LeaveIfError(file.Replace(iFsSession, aFileName, EFileWrite)); -00061 CleanupClosePushL(file); -00062 iParser->ExternalizeL(file); -00063 CleanupStack::PopAndDestroy(&file); -00064 } -00065 -00066 // Internalises a vCard from a file -00067 void CExampleVersit::InternalizeFromFileL(RFile& aInputFile) -00068 { -00069 TInt size; -00070 if (aInputFile.Size(size)==KErrNone) -00071 { -00072 delete iParser; -00073 iParser = NULL; -00074 -00075 iParser = CParserVCard::NewL(); -00076 RFileReadStream stream(aInputFile); -00077 CleanupClosePushL(stream); -00078 iParser->InternalizeL(stream); -00079 CleanupStack::PopAndDestroy(&stream); -00080 } -00081 } -00082 -00083 // Creates a vCard containing a note property and a character set property parameter. -00084 // Then externalizes the vCard to a file. -00085 void CExampleVersit::CreateAndExternalizeVCardL() -00086 { -00087 //create a property value to hold some text -00088 _LIT(KNote,"\x4e79\x4f19\x5032"); -00089 CParserPropertyValue* value=CParserPropertyValueHBufC::NewL(KNote); -00090 CleanupStack::PushL(value); -00091 -00092 CArrayPtr<CParserParam>* arrayOfParams = new(ELeave)CArrayPtrFlat<CParserParam>(5); -00093 CleanupStack::PushL(arrayOfParams); -00094 -00095 // Add a character set property parameter -00096 CParserParam* parserParam=CParserParam::NewL(KVersitTokenCHARSET,KVersitTokenJIS); -00097 CleanupStack::PushL(parserParam); -00098 arrayOfParams->AppendL(parserParam); -00099 CleanupStack::Pop(parserParam); -00100 -00101 // create the NOTE property -00102 CParserGroupedProperty* property=CParserGroupedProperty::NewL(*value,KVersitTokenNOTE,NULL,arrayOfParams); -00103 -00104 CleanupStack::Pop(2,value); // value, arrayOfParams -00105 CleanupStack::PushL(property); -00106 -00107 // Add the property to the vCard -00108 iParser->AddPropertyL(property); -00109 CleanupStack::Pop(property); -00110 //Sets the default transformation format -00111 iParser->SetDefaultCharSet(Versit::EJISCharSet); -00112 ExternalizeToFileL(KVCardFileJIS); -00113 } -00114 -00115 //Internalize the VCard -00116 void CExampleVersit::InternalizeVCardL() -00117 { -00118 RFile file; -00119 TInt err=file.Open(iFsSession,KVCardFileJIS,EFileRead); -00120 User::LeaveIfError(err); -00121 CleanupClosePushL(file); -00122 InternalizeFromFileL(file); -00123 CleanupStack::PopAndDestroy(&file); -00124 -00125 _LIT(KConsoleMessage1, "vCard has been successfully internalised from a file"); -00126 gConsole->Printf(KConsoleMessage1); -00127 } -00128 -00129 void CExampleVersit::EgVersitL() -00130 { -00131 CreateAndExternalizeVCardL(); -00132 InternalizeVCardL(); -00133 } -00134 -00135 static void DoExampleL() -00136 { -00137 // Create the console to print the messages to. -00138 _LIT(KConsoleMessageDisplay, "Versit Example"); -00139 _LIT(KConsoleStars,"\n*************************\n"); -00140 gConsole = Console::NewL(KConsoleMessageDisplay,TSize(KConsFullScreen,KConsFullScreen)); -00141 CleanupStack::PushL(gConsole); -00142 gConsole->Printf(KConsoleMessageDisplay); -00143 gConsole->Printf(KConsoleStars); -00144 -00145 CExampleVersit* egVersit= CExampleVersit::NewL(); -00146 TRAPD(err, egVersit->EgVersitL()); -00147 if (err) -00148 { -00149 _LIT(KFailed,"\n\nExample failed: leave code=%d"); -00150 gConsole->Printf(KFailed, err); -00151 } -00152 delete egVersit; -00153 // wait for user to press a key before destroying gConsole -00154 gConsole->Printf(KMsgPressAnyKey); -00155 gConsole->Getch(); -00156 CleanupStack::PopAndDestroy(gConsole); -00157 } -00158 -00159 // Standard entry point function -00160 TInt E32Main() -00161 { -00162 __UHEAP_MARK; -00163 // Active scheduler required as this is a console app -00164 CActiveScheduler* scheduler=new CActiveScheduler; -00165 // If active scheduler has been created, install it. -00166 if (scheduler) -00167 { -00168 CActiveScheduler::Install(scheduler); -00169 // Cleanup stack needed -00170 CTrapCleanup* cleanup=CTrapCleanup::New(); -00171 if (cleanup) -00172 { -00173 TRAP_IGNORE(DoExampleL()); -00174 delete cleanup; -00175 } -00176 delete scheduler; -00177 } -00178 __UHEAP_MARKEND; -00179 return KErrNone; -00180 } -