Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members  

vCard.h

00001 #ifndef INCL_JABBEROOX_VCARD
00002 #define INCL_JABBEROOX_VCARD
00003 
00004 #include "judo.hpp"
00005 
00006 #include <sigc++/object.h>
00007 #include <sigc++/slot.h>
00008 
00009 namespace jabberoo
00010 {
00011     class vCard : public SigC::Object
00012     {
00013     public:
00014         enum Field
00015         {
00016             Firstname,
00017             Middlename,
00018             Lastname,
00019             Fullname,
00020             Nickname,
00021             EMail,
00022             Birthday,
00023             Telephone,
00024             URL,
00025             Description
00026         };
00027 
00028         class Entry
00029         {
00030         public:
00031             Entry(judo::Element& elem): _elem(elem)
00032             { 
00033                 _data = _elem.getCDATA();
00034             }
00035             ~Entry()
00036             { }
00037 
00038             void update()
00039             { 
00040                 judo::Element::iterator i = _elem.find("#CDATA", judo::Node::ntCDATA);
00041                 if (i != _elem.end())
00042                     _elem.erase(i);
00043                 _elem.addCDATA(_data.c_str(), _data.length()); 
00044             }
00045 
00046             // Pretend to be a string
00047             operator std::string() const
00048             { return std::string(_data); }
00049             Entry& operator=(const std::string& val)
00050             { _data = val; return *this; }
00051 
00052         private:
00053             judo::Element&  _elem;
00054             std::string     _data;
00055         };
00056 
00057         vCard(const judo::Element& elem);
00058         ~vCard();
00059 
00060         vCard::Entry& operator[](vCard::Field field);
00061 
00062         std::string toString(void);
00063     private:
00064         judo::Element  _elem;
00065         typedef std::map<vCard::Field, vCard::Entry*>::iterator EntryIter;
00066         std::map<vCard::Field, vCard::Entry*> _entries;
00067         typedef std::map<vCard::Field, std::string>::iterator QueryIter;
00068         std::map<vCard::Field, std::string> _queries;
00069     };
00070 };
00071 
00072 #endif // INCL_JABBEROOX_VCARD

Generated on Thu Jul 24 13:31:51 2003 for jabberoo by doxygen1.3-rc3