mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 04:44:11 +02:00
add a method to determine if avatar with display name exists
This commit is contained in:
parent
e75d14139f
commit
47d4ef0b2d
3 changed files with 30 additions and 2 deletions
|
@ -22,7 +22,7 @@
|
|||
|
||||
class MyAvatar;
|
||||
|
||||
class AvatarManager : public QObject, public AvatarHashMap {
|
||||
class AvatarManager : public AvatarHashMap {
|
||||
Q_OBJECT
|
||||
public:
|
||||
AvatarManager(QObject* parent = 0);
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue