#pragma once #include #include #include #include #include #include "Swiften/JID/JID.h" #include "Swiften/Elements/Presence.h" #include "Swiften/Elements/VCard.h" #include "Swiften/Elements/Error.h" namespace Swift { class MUCRegistry; class AvatarStorage; class StanzaChannel; class IQRouter; class AvatarManager { public: AvatarManager(StanzaChannel*, IQRouter*, AvatarStorage*, MUCRegistry*); String getAvatarHash(const JID&) const; boost::filesystem::path getAvatarPath(const JID&) const; void setAvatar(const JID&, const ByteArray& avatar); public: boost::signal onAvatarChanged; private: void handlePresenceReceived(boost::shared_ptr); void handleVCardReceived(const JID& from, const String& hash, boost::shared_ptr, const boost::optional&); void setAvatarHash(const JID& from, const String& hash); JID getAvatarJID(const JID& o) const; private: StanzaChannel* stanzaChannel_; IQRouter* iqRouter_; AvatarStorage* avatarStorage_; MUCRegistry* mucRegistry_; std::map avatarHashes_; }; }