rosteritem.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef ROSTERITEM_H__
00015 #define ROSTERITEM_H__
00016
00017 #include "gloox.h"
00018 #include "resource.h"
00019 #include "presence.h"
00020
00021 #include <string>
00022 #include <list>
00023
00024
00025 namespace gloox
00026 {
00027
00028 class RosterItemData;
00029
00039 class GLOOX_API RosterItem
00040 {
00041 friend class RosterManager;
00042
00043 public:
00047 typedef std::map<std::string, Resource*> ResourceMap;
00048
00054 RosterItem( const std::string& jid, const std::string& name = EmptyString );
00055
00061 RosterItem( const RosterItemData& data );
00062
00066 virtual ~RosterItem();
00067
00072 void setName( const std::string& name );
00073
00078 const std::string& name() const;
00079
00084 const std::string& jid() const;
00085
00091 void setSubscription( const std::string& subscription, const std::string& ask );
00092
00097 SubscriptionType subscription() const;
00098
00103 void setGroups( const StringList& groups );
00104
00109 const StringList groups() const;
00110
00115 bool changed() const;
00116
00121 bool online() const;
00122
00127 const ResourceMap& resources() const { return m_resources; }
00128
00134 const Resource* resource( const std::string& res ) const;
00135
00140 const Resource* highestResource() const;
00141
00142 protected:
00148 void setPresence( const std::string& resource, Presence::PresenceType presence );
00149
00155 void setStatus( const std::string& resource, const std::string& msg );
00156
00162 void setPriority( const std::string& resource, int priority );
00163
00169 void setExtensions( const std::string& resource, const StanzaExtensionList& exts );
00170
00174 void setSynchronized();
00175
00180 void removeResource( const std::string& resource );
00181
00186 void setData( const RosterItemData& rid );
00187
00188 private:
00189 RosterItemData* m_data;
00190 ResourceMap m_resources;
00191
00192 };
00193
00194 }
00195
00196 #endif // ROSTERITEM_H__