00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include <e32base.h>
00033 #include <e32cons.h>
00034 #include <vcard.h>
00035 #include <versit.h>
00036 #include "VersitExample.h"
00037
00038
00039 static CConsoleBase* gConsole;
00040
00041
00042 _LIT(KVCardFileJIS,"\\Private\\E8000094\\charsetJIS.vcf");
00043
00044
00045 _LIT(KMsgPressAnyKey,"\n\nPress any key to continue\n");
00046
00047 CExampleVersit* CExampleVersit::NewL()
00048 {
00049 CExampleVersit* self = new (ELeave) CExampleVersit();
00050 CleanupStack::PushL(self);
00051 self->ConstructL();
00052 CleanupStack::Pop(self);
00053 return self;
00054 }
00055
00056 void CExampleVersit::ConstructL()
00057 {
00058 iParser = CParserVCard::NewL();
00059 }
00060
00061 CExampleVersit::~CExampleVersit()
00062 {
00063 delete iParser;
00064 iFsSession .Close();
00065 }
00066
00067
00068 void CExampleVersit::ExternalizeToFileL(const TDesC& aFileName)
00069 {
00070 RFile file;
00071 iFsSession.Connect();
00072
00073 User::LeaveIfError(iFsSession.CreatePrivatePath(RFs::GetSystemDrive()));
00074 User::LeaveIfError(file.Replace(iFsSession, aFileName, EFileWrite));
00075 CleanupClosePushL(file);
00076 iParser->ExternalizeL(file);
00077 CleanupStack::PopAndDestroy(&file);
00078 }
00079
00080
00081 void CExampleVersit::InternalizeFromFileL(RFile& aInputFile)
00082 {
00083 TInt size;
00084 if (aInputFile.Size(size)==KErrNone)
00085 {
00086 delete iParser;
00087 iParser = NULL;
00088
00089 iParser = CParserVCard::NewL();
00090 RFileReadStream stream(aInputFile);
00091 CleanupClosePushL(stream);
00092 iParser->InternalizeL(stream);
00093 CleanupStack::PopAndDestroy(&stream);
00094 }
00095 }
00096
00097
00098
00099 void CExampleVersit::CreateAndExternalizeVCardL()
00100 {
00101
00102 _LIT(KNote,"\x4e79\x4f19\x5032");
00103 CParserPropertyValue* value=CParserPropertyValueHBufC::NewL(KNote);
00104 CleanupStack::PushL(value);
00105
00106 CArrayPtr<CParserParam>* arrayOfParams = new(ELeave)CArrayPtrFlat<CParserParam>(5);
00107 CleanupStack::PushL(arrayOfParams);
00108
00109
00110 CParserParam* parserParam=CParserParam::NewL(KVersitTokenCHARSET,KVersitTokenJIS);
00111 CleanupStack::PushL(parserParam);
00112 arrayOfParams->AppendL(parserParam);
00113 CleanupStack::Pop(parserParam);
00114
00115
00116 CParserGroupedProperty* property=CParserGroupedProperty::NewL(*value,KVersitTokenNOTE,NULL,arrayOfParams);
00117
00118 CleanupStack::Pop(2,value);
00119 CleanupStack::PushL(property);
00120
00121
00122 iParser->AddPropertyL(property);
00123 CleanupStack::Pop(property);
00124
00125 iParser->SetDefaultCharSet(Versit::EJISCharSet);
00126 ExternalizeToFileL(KVCardFileJIS);
00127 }
00128
00129
00130 void CExampleVersit::InternalizeVCardL()
00131 {
00132 RFile file;
00133 TInt err=file.Open(iFsSession,KVCardFileJIS,EFileRead);
00134 User::LeaveIfError(err);
00135 CleanupClosePushL(file);
00136 InternalizeFromFileL(file);
00137 CleanupStack::PopAndDestroy(&file);
00138
00139 _LIT(KConsoleMessage1, "vCard has been successfully internalised from a file");
00140 gConsole->Printf(KConsoleMessage1);
00141 }
00142
00143 void CExampleVersit::EgVersitL()
00144 {
00145 CreateAndExternalizeVCardL();
00146 InternalizeVCardL();
00147 }
00148
00149 static void DoExampleL()
00150 {
00151
00152 _LIT(KConsoleMessageDisplay, "Versit Example");
00153 _LIT(KConsoleStars,"\n*************************\n");
00154 gConsole = Console::NewL(KConsoleMessageDisplay,TSize(KConsFullScreen,KConsFullScreen));
00155 CleanupStack::PushL(gConsole);
00156 gConsole->Printf(KConsoleMessageDisplay);
00157 gConsole->Printf(KConsoleStars);
00158
00159 CExampleVersit* egVersit= CExampleVersit::NewL();
00160 TRAPD(err, egVersit->EgVersitL());
00161 if (err)
00162 {
00163 _LIT(KFailed,"\n\nExample failed: leave code=%d");
00164 gConsole->Printf(KFailed, err);
00165 }
00166 delete egVersit;
00167
00168 gConsole->Printf(KMsgPressAnyKey);
00169 gConsole->Getch();
00170 CleanupStack::PopAndDestroy(gConsole);
00171 }
00172
00173
00174 TInt E32Main()
00175 {
00176 __UHEAP_MARK;
00177
00178 CActiveScheduler* scheduler=new CActiveScheduler;
00179
00180 if (scheduler)
00181 {
00182 CActiveScheduler::Install(scheduler);
00183
00184 CTrapCleanup* cleanup=CTrapCleanup::New();
00185 if (cleanup)
00186 {
00187 TRAP_IGNORE(DoExampleL());
00188 delete cleanup;
00189 }
00190 delete scheduler;
00191 }
00192 __UHEAP_MARKEND;
00193 return KErrNone;
00194 }