- size_t nAdr = 0;
- void *cookie;
- wxVCardAddress *addr = vcard.GetFirstAddress(&cookie);
- while ( addr )
- {
- wxString flagsStr;
- int flags = addr->GetFlags();
- if ( flags & wxVCardAddress::Domestic )
- {
- flagsStr << _T("domestic ");
- }
- if ( flags & wxVCardAddress::Intl )
- {
- flagsStr << _T("international ");
- }
- if ( flags & wxVCardAddress::Postal )
- {
- flagsStr << _T("postal ");
- }
- if ( flags & wxVCardAddress::Parcel )
- {
- flagsStr << _T("parcel ");
- }
- if ( flags & wxVCardAddress::Home )
- {
- flagsStr << _T("home ");
- }
- if ( flags & wxVCardAddress::Work )
- {
- flagsStr << _T("work ");
- }
-
- printf("Address %u:\n"
- "\tflags = %s\n"
- "\tvalue = %s;%s;%s;%s;%s;%s;%s\n",
- ++nAdr,
- flagsStr.c_str(),
- addr->GetPostOffice().c_str(),
- addr->GetExtAddress().c_str(),
- addr->GetStreet().c_str(),
- addr->GetLocality().c_str(),
- addr->GetRegion().c_str(),
- addr->GetPostalCode().c_str(),
- addr->GetCountry().c_str()
- );
-
- delete addr;
- addr = vcard.GetNextAddress(&cookie);
- }
-}
-
-static void DumpVCardPhoneNumbers(const wxVCard& vcard)
-{
- puts("\nShowing all phone numbers from vCard:\n");
-
- size_t nPhone = 0;
- void *cookie;
- wxVCardPhoneNumber *phone = vcard.GetFirstPhoneNumber(&cookie);
- while ( phone )
- {
- wxString flagsStr;
- int flags = phone->GetFlags();
- if ( flags & wxVCardPhoneNumber::Voice )
- {
- flagsStr << _T("voice ");
- }
- if ( flags & wxVCardPhoneNumber::Fax )
- {
- flagsStr << _T("fax ");
- }
- if ( flags & wxVCardPhoneNumber::Cellular )
- {
- flagsStr << _T("cellular ");
- }
- if ( flags & wxVCardPhoneNumber::Modem )
- {
- flagsStr << _T("modem ");
- }
- if ( flags & wxVCardPhoneNumber::Home )
- {
- flagsStr << _T("home ");
- }
- if ( flags & wxVCardPhoneNumber::Work )
- {
- flagsStr << _T("work ");
- }
-
- printf("Phone number %u:\n"
- "\tflags = %s\n"
- "\tvalue = %s\n",
- ++nPhone,
- flagsStr.c_str(),
- phone->GetNumber().c_str()
- );
-
- delete phone;
- phone = vcard.GetNextPhoneNumber(&cookie);
- }
-}
-
-static void TestVCardRead()
-{
- puts("*** Testing wxVCard reading ***\n");
-
- wxVCard vcard(_T("vcard.vcf"));
- if ( !vcard.IsOk() )
- {
- puts("ERROR: couldn't load vCard.");
- }
- else
- {
- // read individual vCard properties
- wxVCardObject *vcObj = vcard.GetProperty("FN");
- wxString value;
- if ( vcObj )
- {
- vcObj->GetValue(&value);
- delete vcObj;
- }
- else
- {
- value = _T("<none>");
- }
-
- printf("Full name retrieved directly: %s\n", value.c_str());
-
-
- if ( !vcard.GetFullName(&value) )
- {
- value = _T("<none>");
- }
-
- printf("Full name from wxVCard API: %s\n", value.c_str());
-
- // now show how to deal with multiply occuring properties
- DumpVCardAddresses(vcard);
- DumpVCardPhoneNumbers(vcard);
-
- // and finally show all
- puts("\nNow dumping the entire vCard:\n"
- "-----------------------------\n");
-
- DumpVObject(0, vcard);
- }
-}
-
-static void TestVCardWrite()
-{
- puts("*** Testing wxVCard writing ***\n");
-
- wxVCard vcard;
- if ( !vcard.IsOk() )
- {
- puts("ERROR: couldn't create vCard.");
- }
- else
- {
- // set some fields
- vcard.SetName("Zeitlin", "Vadim");
- vcard.SetFullName("Vadim Zeitlin");
- vcard.SetOrganization("wxWindows", "R&D");
-
- // just dump the vCard back
- puts("Entire vCard follows:\n");
- puts(vcard.Write());
- }
-}
-
-#endif // TEST_VCARD
-
-// ----------------------------------------------------------------------------
-// wide char (Unicode) support
-// ----------------------------------------------------------------------------
-
-#ifdef TEST_WCHAR
-
-#include <wx/strconv.h>
-#include <wx/fontenc.h>
-#include <wx/encconv.h>
-#include <wx/buffer.h>
-
-static void TestUtf8()
-{
- puts("*** Testing UTF8 support ***\n");
-
- static const char textInUtf8[] =
- {
- 208, 157, 208, 181, 209, 129, 208, 186, 208, 176, 208, 183, 208, 176,
- 208, 189, 208, 189, 208, 190, 32, 208, 191, 208, 190, 209, 128, 208,
- 176, 208, 180, 208, 190, 208, 178, 208, 176, 208, 187, 32, 208, 188,
- 208, 181, 208, 189, 209, 143, 32, 209, 129, 208, 178, 208, 190, 208,
- 181, 208, 185, 32, 208, 186, 209, 128, 209, 131, 209, 130, 208, 181,
- 208, 185, 209, 136, 208, 181, 208, 185, 32, 208, 189, 208, 190, 208,
- 178, 208, 190, 209, 129, 209, 130, 209, 140, 209, 142, 0
- };
-
- char buf[1024];
- wchar_t wbuf[1024];
- if ( wxConvUTF8.MB2WC(wbuf, textInUtf8, WXSIZEOF(textInUtf8)) <= 0 )
- {
- puts("ERROR: UTF-8 decoding failed.");
- }
- else
- {
- // using wxEncodingConverter
-#if 0
- wxEncodingConverter ec;
- ec.Init(wxFONTENCODING_UNICODE, wxFONTENCODING_KOI8);
- ec.Convert(wbuf, buf);
-#else // using wxCSConv
- wxCSConv conv(_T("koi8-r"));
- if ( conv.WC2MB(buf, wbuf, 0 /* not needed wcslen(wbuf) */) <= 0 )
- {
- puts("ERROR: conversion to KOI8-R failed.");
- }
- else
-#endif
-
- printf("The resulting string (in koi8-r): %s\n", buf);
- }
-}
-
-#endif // TEST_WCHAR
-
-// ----------------------------------------------------------------------------
-// ZIP stream
-// ----------------------------------------------------------------------------
-
-#ifdef TEST_ZIP
-
-#include "wx/filesys.h"
-#include "wx/fs_zip.h"
-#include "wx/zipstrm.h"
-
-static const wxChar *TESTFILE_ZIP = _T("testdata.zip");
-
-static void TestZipStreamRead()