diff options
Diffstat (limited to 'Swiften/Avatars/AvatarManagerImpl.cpp')
-rw-r--r-- | Swiften/Avatars/AvatarManagerImpl.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Swiften/Avatars/AvatarManagerImpl.cpp b/Swiften/Avatars/AvatarManagerImpl.cpp new file mode 100644 index 0000000..384994b --- /dev/null +++ b/Swiften/Avatars/AvatarManagerImpl.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "Swiften/Avatars/AvatarManagerImpl.h" + +#include <boost/bind.hpp> + +#include "Swiften/Avatars/VCardUpdateAvatarManager.h" +#include "Swiften/Avatars/VCardAvatarManager.h" +#include "Swiften/Avatars/AvatarStorage.h" + +namespace Swift { + +AvatarManagerImpl::AvatarManagerImpl(VCardManager* vcardManager, StanzaChannel* stanzaChannel, AvatarStorage* avatarStorage, MUCRegistry* mucRegistry) : avatarStorage(avatarStorage) { + vcardUpdateAvatarManager = new VCardUpdateAvatarManager(vcardManager, stanzaChannel, avatarStorage, mucRegistry); + combinedAvatarProvider.addProvider(vcardUpdateAvatarManager); + + vcardAvatarManager = new VCardAvatarManager(vcardManager, avatarStorage, mucRegistry); + combinedAvatarProvider.addProvider(vcardAvatarManager); + + combinedAvatarProvider.onAvatarChanged.connect(boost::ref(onAvatarChanged)); +} + +AvatarManagerImpl::~AvatarManagerImpl() { + combinedAvatarProvider.removeProvider(vcardAvatarManager); + delete vcardAvatarManager; + combinedAvatarProvider.removeProvider(vcardUpdateAvatarManager); + delete vcardUpdateAvatarManager; +} + +boost::filesystem::path AvatarManagerImpl::getAvatarPath(const JID& jid) const { + String hash = combinedAvatarProvider.getAvatarHash(jid); + if (!hash.isEmpty()) { + return avatarStorage->getAvatarPath(hash); + } + return boost::filesystem::path(); +} + + +} |