diff options
Diffstat (limited to 'Swiften/Avatars')
-rw-r--r-- | Swiften/Avatars/AvatarManager.h | 2 | ||||
-rw-r--r-- | Swiften/Avatars/AvatarManagerImpl.cpp | 8 | ||||
-rw-r--r-- | Swiften/Avatars/AvatarManagerImpl.h | 1 | ||||
-rw-r--r-- | Swiften/Avatars/DummyAvatarManager.h | 32 | ||||
-rw-r--r-- | Swiften/Avatars/NullAvatarManager.h | 4 |
5 files changed, 47 insertions, 0 deletions
diff --git a/Swiften/Avatars/AvatarManager.h b/Swiften/Avatars/AvatarManager.h index 74e58f7..d40c3c0 100644 --- a/Swiften/Avatars/AvatarManager.h +++ b/Swiften/Avatars/AvatarManager.h @@ -9,6 +9,7 @@ #include <boost/filesystem.hpp> #include "Swiften/Base/boost_bsignals.h" +#include "Swiften/Base/ByteArray.h" namespace Swift { class JID; @@ -17,6 +18,7 @@ namespace Swift { public: virtual ~AvatarManager(); + virtual ByteArray getAvatar(const JID&) const = 0; virtual boost::filesystem::path getAvatarPath(const JID&) const = 0; boost::signal<void (const JID&)> onAvatarChanged; diff --git a/Swiften/Avatars/AvatarManagerImpl.cpp b/Swiften/Avatars/AvatarManagerImpl.cpp index 384994b..9813aed 100644 --- a/Swiften/Avatars/AvatarManagerImpl.cpp +++ b/Swiften/Avatars/AvatarManagerImpl.cpp @@ -11,6 +11,7 @@ #include "Swiften/Avatars/VCardUpdateAvatarManager.h" #include "Swiften/Avatars/VCardAvatarManager.h" #include "Swiften/Avatars/AvatarStorage.h" +#include "Swiften/Base/ByteArray.h" namespace Swift { @@ -39,5 +40,12 @@ boost::filesystem::path AvatarManagerImpl::getAvatarPath(const JID& jid) const { return boost::filesystem::path(); } +ByteArray AvatarManagerImpl::getAvatar(const JID& jid) const { + String hash = combinedAvatarProvider.getAvatarHash(jid); + if (!hash.isEmpty()) { + return avatarStorage->getAvatar(hash); + } + return ByteArray(); +} } diff --git a/Swiften/Avatars/AvatarManagerImpl.h b/Swiften/Avatars/AvatarManagerImpl.h index f533160..a28d490 100644 --- a/Swiften/Avatars/AvatarManagerImpl.h +++ b/Swiften/Avatars/AvatarManagerImpl.h @@ -33,6 +33,7 @@ namespace Swift { virtual ~AvatarManagerImpl(); virtual boost::filesystem::path getAvatarPath(const JID&) const; + virtual ByteArray getAvatar(const JID&) const; private: CombinedAvatarProvider combinedAvatarProvider; diff --git a/Swiften/Avatars/DummyAvatarManager.h b/Swiften/Avatars/DummyAvatarManager.h new file mode 100644 index 0000000..db63b05 --- /dev/null +++ b/Swiften/Avatars/DummyAvatarManager.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <map> + +#include "Swiften/Avatars/AvatarManager.h" + +namespace Swift { + class DummyAvatarManager : public AvatarManager { + public: + virtual boost::filesystem::path getAvatarPath(const JID&) const { + return boost::filesystem::path(); + } + + virtual ByteArray getAvatar(const JID& jid) const { + std::map<JID, ByteArray>::const_iterator i = avatars.find(jid); + if (i != avatars.end()) { + return i->second; + } + else { + return ByteArray(); + } + } + + std::map<JID, ByteArray> avatars; + }; +} diff --git a/Swiften/Avatars/NullAvatarManager.h b/Swiften/Avatars/NullAvatarManager.h index 7f3c646..e96ed7a 100644 --- a/Swiften/Avatars/NullAvatarManager.h +++ b/Swiften/Avatars/NullAvatarManager.h @@ -14,5 +14,9 @@ namespace Swift { virtual boost::filesystem::path getAvatarPath(const JID&) const { return boost::filesystem::path(); } + + virtual ByteArray getAvatar(const JID&) const { + return ByteArray(); + } }; } |