testread.cpp

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     // Iterate through all vCards in the file.
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         // Create a vcard using the string representation.
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 
KDE Home | KDE Accessibility Home | Description of Access Keys