00001
#include <iostream>
00002
#include <stdlib.h>
00003
#include <assert.h>
00004
00005
#include <qfile.h>
00006
#include <qtextstream.h>
00007
00008
#include <VCard.h>
00009
00010
using namespace std;
00011
00012
int main(
int argc,
char * argv[])
00013 {
00014
if (argc != 2) {
00015 cerr <<
"Usage: " << argv[0] <<
" <filename>" <<
endl;
00016 exit(1);
00017 }
00018
00019
QFile f(argv[1]);
00020
00021
QCString str;
00022
00023
if (!f.
open(IO_ReadOnly)) {
00024 cerr <<
"Couldn't open file \"" << argv[1] <<
endl;
00025 exit(1);
00026 }
00027
00028
QTextStream t(&f);
00029
00030
while (!t.eof())
00031 str += t.
readLine().utf8() +
'\n';
00032
00033
using namespace VCARD;
00034
00035
00036
00037 cout <<
"--------- begin ----------" <<
endl;
00038 cout << str.data();
00039 cout <<
"--------- end ----------" <<
endl;
00040
00041 VCardEntity e(str);
00042
00043 VCardListIterator it(e.cardList());
00044
00045
for (; it.current(); ++it) {
00046
00047 cerr <<
"****************** VCARD ********************" <<
endl;
00048
00049
00050 VCard & v (*it.current());
00051
00052
if (v.has(EntityEmail)) {
00053 cerr <<
"Email parameter found" <<
endl;
00054
00055
QCString s = v.contentLine(EntityEmail)->value()->asString();
00056
00057 cerr <<
"Email value == " << s <<
endl;
00058 }
00059
00060
if (v.has(EntityNickname)) {
00061 cerr <<
"Nickname parameter found" <<
endl;
00062
00063 cerr <<
"Nickname value == " <<
00064 v.contentLine(EntityNickname)->value()->asString() <<
00065
endl;
00066 }
00067
00068
if (v.has(EntityRevision)) {
00069
00070 cerr <<
"Revision parameter found" <<
endl;
00071
00072 DateValue * d =
00073 (DateValue *)
00074 v.contentLine(EntityRevision)->value();
00075
00076 assert(d != 0);
00077
00078 cerr <<
"Revision date: " <<
endl;
00079 cerr <<
"Day : " << d->day() <<
endl;
00080 cerr <<
"Month : " << d->month() <<
endl;
00081 cerr <<
"Year : " << d->year() <<
endl;
00082
00083
if (d->hasTime()) {
00084 cerr <<
"Revision date has a time component" <<
endl;
00085 cerr <<
"Revision time: " <<
endl;
00086 cerr <<
"Hour : " << d->hour() <<
endl;
00087 cerr <<
"Minute : " << d->minute() <<
endl;
00088 cerr <<
"Second : " << d->second() <<
endl;
00089
00090 }
00091
else cerr <<
"Revision date does NOT have a time component" <<
endl;
00092 }
00093
00094
if (v.has(EntityURL)) {
00095 cerr <<
"URL Parameter found" <<
endl;
00096
00097 cerr <<
"URL Value == " <<
00098 v.contentLine(EntityURL)->value()->asString() <<
00099
endl;
00100
00101 URIValue * urlVal =
00102 (URIValue *)v.contentLine(EntityURL)->value();
00103
00104 assert(urlVal != 0);
00105
00106 cerr <<
"URL scheme == " <<
00107 urlVal->scheme() <<
endl;
00108
00109 cerr <<
"URL scheme specific part == " <<
00110 urlVal->schemeSpecificPart() <<
endl;
00111 }
00112
00113
if (v.has(EntityN)) {
00114 cerr <<
"N Parameter found" <<
endl;
00115
00116 NValue * n =
00117 (NValue *)(v.contentLine(EntityN)->value());
00118
00119 cerr <<
"Family name == " << n->family() <<
endl;
00120 cerr <<
"Given name == " << n->given() <<
endl;
00121 cerr <<
"Middle name == " << n->middle() <<
endl;
00122 cerr <<
"Prefix == " << n->prefix() <<
endl;
00123 cerr <<
"Suffix == " << n->suffix() <<
endl;
00124 }
00125
00126 cerr <<
"***************** END VCARD ******************" <<
endl;
00127 }
00128 }
00129