VCardManager Class Reference

A VCardManager can be used to fetch an entities VCard as well as for setting one's own VCard. More...

#include <vcardmanager.h>

Inherits IqHandler.

Inheritance diagram for VCardManager:

Inheritance graph
[legend]
Collaboration diagram for VCardManager:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 VCardManager (ClientBase *parent, Disco *disco)
virtual ~VCardManager ()
void fetchVCard (const JID &jid, VCardHandler *vch)
void storeVCard (const VCard *vcard, VCardHandler *vch)
void cancelVCardOperations (VCardHandler *vch)
virtual bool handleIq (Stanza *stanza)
virtual bool handleIqID (Stanza *stanza, int context)

Detailed Description

A VCardManager can be used to fetch an entities VCard as well as for setting one's own VCard.

You need only one VCardManager per Client/ClientBase.

Fetching a VCard

Create a VCardManager and have a VCardHandler ready. Then simply call fetchVCard() and wait for the result.
 class MyClass : public VCardHandler
 {
   public:
     MyClass()
     {
       m_myClass = new MyClass();
       m_vcardManager = new VCardManager( m_client, m_client->disco() );
     };

   ...

     void fetchVCard( const JID& jid )
     {
       m_vcardManager->fetchVCard( jid, this );
     };

     virtual void handleVCard( const JID& jid, const VCard *vcard );
     {
       printf( "received vcard\n" );
     };

     virtual void handleVCardResult( VCardContext context, const JID& jid,
                                     StanzaError se )
     {
       printf( "vcard operation result received\n" );
     };

   ...

   private:
     VCardManager *m_vcardManager;
 };

Storing one's own VCard

Note:
Some, if not many, servers do not implement support for all the fields specified in JEP-0054. Therefore it is possible that you cannot retrieve fields you stored previously.
Similar to the above, you need a VCardManager and a VCardHandler. Then construct your VCard and call storeVCard().
     void storeMyVCard()
     {
       VCard *v = new VCard();
       v->setFormattedname( "Me" );
       v->setNickname( "Myself" );
       ...
       m_vcardManager->storeVCard( v, this );
     };

This implementation supports more than one address, address label, email address and telephone number.

Note:
Currently, this implementation lacks support for the following fields: AGENT, CATEGORIES, SOUND, KEY
Author:
Jakob Schroeter <js@camaya.net>
Since:
0.8

Definition at line 99 of file vcardmanager.h.


Constructor & Destructor Documentation

VCardManager ( ClientBase parent,
Disco disco 
)

Constructor.

Definition at line 23 of file vcardmanager.cpp.

~VCardManager (  )  [virtual]

Virtual destructor.

Definition at line 33 of file vcardmanager.cpp.


Member Function Documentation

void fetchVCard ( const JID jid,
VCardHandler vch 
)

Use this function to fetch the VCard of a remote entity or yourself. The result will be announced by calling handleVCard() the VCardHandler.

Parameters:
jid The entity's JID.
vch The VCardHandler that will receive the result of the VCard fetch.

Definition at line 42 of file vcardmanager.cpp.

void storeVCard ( const VCard vcard,
VCardHandler vch 
)

Use this function to store or update your own VCard on the server. Remember to always send a full VCard, not a delta of changes. If you, for any reason, pass a foreign VCard to this function, your own will be overwritten.

Parameters:
vcard Your VCard to store.
vch The VCardHandler that will receive the result of the VCard store.

Definition at line 77 of file vcardmanager.cpp.

void cancelVCardOperations ( VCardHandler vch  ) 

Use this function, e.g. from your VCardHandler-derived class's dtor, to cancel any outstanding operations (fetchVCard(), storeVCard()). Calling this function even if no operations are pending is just fine.

Parameters:
vch The VCardHandler to remove from any queues.
Since:
0.9

Definition at line 64 of file vcardmanager.cpp.

bool handleIq ( Stanza stanza  )  [virtual]

Reimplement this function if you want to be notified about incoming IQs.

Parameters:
stanza The complete Stanza.
Returns:
Indicates whether a request of type 'get' or 'set' has been handled. This includes the obligatory 'result' answer. If you return false, a 'error' will be sent.

Implements IqHandler.

Definition at line 93 of file vcardmanager.cpp.

bool handleIqID ( Stanza stanza,
int  context 
) [virtual]

Reimplement this function if you want to be notified about incoming IQs with a specific value of the id attribute. You have to enable tracking of those IDs using Client::trackID(). This is usually useful for IDs that generate a positive reply, i.e. <iq type='result' id='reg'/> where a namespace filter wouldn't work.

Parameters:
stanza The complete Stanza.
context A value to restore context, stored with ClientBase::trackID().
Returns:
Indicates whether a request of type 'get' or 'set' has been handled. This includes the obligatory 'result' answer. If you return false, a 'error' will be sent.

Implements IqHandler.

Definition at line 98 of file vcardmanager.cpp.


The documentation for this class was generated from the following files:
Generated on Tue May 1 14:20:27 2007 for gloox by  doxygen 1.5.1