#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 AvatarStorage; class StanzaChannel; class IQRouter; class AvatarManager { public: AvatarManager(StanzaChannel*, IQRouter*, AvatarStorage*); String getAvatarHash(const JID&) const; boost::filesystem::path getAvatarPath(const JID&) const; public: boost::signal onAvatarChanged; private: void handlePresenceReceived(boost::shared_ptr); void handleVCardReceived(JID from, boost::shared_ptr, const boost::optional&); private: StanzaChannel* stanzaChannel_; IQRouter* iqRouter_; AvatarStorage* avatarStorage_; std::map avatarHashes_; }; }