add a method to determine if avatar with display name exists

This commit is contained in:
Stephen Birarda 2014-04-17 17:44:41 -07:00
parent e75d14139f
commit 47d4ef0b2d
3 changed files with 30 additions and 2 deletions

View file

@ -22,7 +22,7 @@
class MyAvatar;
class AvatarManager : public QObject, public AvatarHashMap {
class AvatarManager : public AvatarHashMap {
Q_OBJECT
public:
AvatarManager(QObject* parent = 0);

View file

@ -35,6 +35,30 @@ bool AvatarHashMap::shouldKillAvatar(const AvatarSharedPointer& sharedAvatar) {
|| sharedAvatar->getLastUpdateTimer().elapsed() > AVATAR_SILENCE_THRESHOLD_MSECS);
}
bool AvatarHashMap::containsAvatarWithDisplayName(const QString& displayName) {
AvatarHash::iterator avatarIterator = _avatarHash.begin();
while (avatarIterator != _avatarHash.end()) {
AvatarSharedPointer sharedAvatar = avatarIterator.value();
if (avatarIterator.value()->getDisplayName() == displayName) {
// this is a match
// check if this avatar should still be around
if (!shouldKillAvatar(sharedAvatar)) {
// we have a match, return true
return true;
} else {
// we should remove this avatar, do that now
erase(avatarIterator);
}
break;
}
}
// return false, no match
return false;
}
AvatarSharedPointer AvatarHashMap::newSharedAvatar() {
return AvatarSharedPointer(new AvatarData());
}

View file

@ -23,7 +23,8 @@
typedef QSharedPointer<AvatarData> AvatarSharedPointer;
typedef QHash<QUuid, AvatarSharedPointer> AvatarHash;
class AvatarHashMap {
class AvatarHashMap : public QObject {
Q_OBJECT
public:
AvatarHashMap();
@ -31,6 +32,9 @@ public:
int size() const { return _avatarHash.size(); }
virtual void insert(const QUuid& id, AvatarSharedPointer avatar);
public slots:
bool containsAvatarWithDisplayName(const QString& displayName);
protected:
virtual AvatarHash::iterator erase(const AvatarHash::iterator& iterator);