mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 09:28:46 +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 MyAvatar;
|
||||||
|
|
||||||
class AvatarManager : public QObject, public AvatarHashMap {
|
class AvatarManager : public AvatarHashMap {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
AvatarManager(QObject* parent = 0);
|
AvatarManager(QObject* parent = 0);
|
||||||
|
|
|
@ -35,6 +35,30 @@ bool AvatarHashMap::shouldKillAvatar(const AvatarSharedPointer& sharedAvatar) {
|
||||||
|| sharedAvatar->getLastUpdateTimer().elapsed() > AVATAR_SILENCE_THRESHOLD_MSECS);
|
|| 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() {
|
AvatarSharedPointer AvatarHashMap::newSharedAvatar() {
|
||||||
return AvatarSharedPointer(new AvatarData());
|
return AvatarSharedPointer(new AvatarData());
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,8 @@
|
||||||
typedef QSharedPointer<AvatarData> AvatarSharedPointer;
|
typedef QSharedPointer<AvatarData> AvatarSharedPointer;
|
||||||
typedef QHash<QUuid, AvatarSharedPointer> AvatarHash;
|
typedef QHash<QUuid, AvatarSharedPointer> AvatarHash;
|
||||||
|
|
||||||
class AvatarHashMap {
|
class AvatarHashMap : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
AvatarHashMap();
|
AvatarHashMap();
|
||||||
|
|
||||||
|
@ -31,6 +32,9 @@ public:
|
||||||
int size() const { return _avatarHash.size(); }
|
int size() const { return _avatarHash.size(); }
|
||||||
|
|
||||||
virtual void insert(const QUuid& id, AvatarSharedPointer avatar);
|
virtual void insert(const QUuid& id, AvatarSharedPointer avatar);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
bool containsAvatarWithDisplayName(const QString& displayName);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual AvatarHash::iterator erase(const AvatarHash::iterator& iterator);
|
virtual AvatarHash::iterator erase(const AvatarHash::iterator& iterator);
|
||||||
|
|
Loading…
Reference in a new issue