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(); +} + + +}  | 
 Swift