diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-12-12 12:29:20 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-12-12 16:00:53 (GMT) |
commit | 4315ccbd51f63e408d69d944f162d0ead4f9addd (patch) | |
tree | 046b3734d18c7c5e76040e8798a6f4af5e5045cb /Swiften/Client/NickManagerImpl.cpp | |
parent | aaf38fe2e6804bd87ea5e99a05ed57070cbe1c57 (diff) | |
download | swift-contrib-4315ccbd51f63e408d69d944f162d0ead4f9addd.zip swift-contrib-4315ccbd51f63e408d69d944f162d0ead4f9addd.tar.bz2 |
Refactored own nickname handling.
Diffstat (limited to 'Swiften/Client/NickManagerImpl.cpp')
-rw-r--r-- | Swiften/Client/NickManagerImpl.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/Swiften/Client/NickManagerImpl.cpp b/Swiften/Client/NickManagerImpl.cpp new file mode 100644 index 0000000..09f8de5 --- /dev/null +++ b/Swiften/Client/NickManagerImpl.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include <Swiften/Client/NickManagerImpl.h> + +#include <boost/bind.hpp> + +#include <Swiften/VCards/VCardManager.h> + +namespace Swift { + +NickManagerImpl::NickManagerImpl(const JID& ownJID, VCardManager* vcardManager) : ownJID(ownJID), vcardManager(vcardManager) { + vcardManager->onVCardChanged.connect(boost::bind(&NickManagerImpl::handleVCardReceived, this, _1, _2)); +} + +NickManagerImpl::~NickManagerImpl() { + vcardManager->onVCardChanged.disconnect(boost::bind(&NickManagerImpl::handleVCardReceived, this, _1, _2)); +} + +String NickManagerImpl::getOwnNick() const { + return ownJID; +} + +void NickManagerImpl::setOwnNick(const String&) { +} + +void NickManagerImpl::handleVCardReceived(const JID& jid, VCard::ref vcard) { + if (!jid.equals(ownJID, JID::WithoutResource)) { + return; + } + + String nick; + if (!vcard->getNickname().isEmpty()) { + nick = vcard->getNickname(); + } + if (ownNick != nick) { + ownNick = nick; + onOwnNickChanged(ownNick); + } +} + +} |