forked from blue/squawk
now we have avatars in muc chats
This commit is contained in:
parent
55703c2007
commit
52efc2b1a4
8 changed files with 94 additions and 13 deletions
|
@ -276,6 +276,7 @@ void Models::Room::addParticipant(const QString& p_name, const QMap<QString, QVa
|
|||
part->setName(p_name);
|
||||
participants.insert(std::make_pair(p_name, part));
|
||||
appendChild(part);
|
||||
emit participantJoined(*part);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -299,6 +300,7 @@ void Models::Room::removeParticipant(const QString& p_name)
|
|||
participants.erase(itr);
|
||||
removeChild(p->row());
|
||||
p->deleteLater();
|
||||
emit participantLeft(p_name);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -373,3 +375,24 @@ void Models::Room::setAvatarState(unsigned int p_state)
|
|||
qDebug() << "An attempt to set invalid avatar state" << p_state << "to the room" << jid << ", skipping";
|
||||
}
|
||||
}
|
||||
|
||||
std::map<QString, const Models::Participant &> Models::Room::getParticipants() const
|
||||
{
|
||||
std::map<QString, const Models::Participant&> result;
|
||||
|
||||
for (std::pair<QString, Models::Participant*> pair : participants) {
|
||||
result.emplace(pair.first, *(pair.second));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
QString Models::Room::getParticipantIconPath(const QString& name) const
|
||||
{
|
||||
std::map<QString, Models::Participant*>::const_iterator itr = participants.find(name);
|
||||
if (itr == participants.end()) {
|
||||
return "";
|
||||
}
|
||||
|
||||
return itr->second->getAvatarPath();
|
||||
}
|
||||
|
|
|
@ -71,6 +71,12 @@ public:
|
|||
QString getDisplayedName() const override;
|
||||
Shared::Avatar getAvatarState() const;
|
||||
QString getAvatarPath() const;
|
||||
std::map<QString, const Participant&> getParticipants() const;
|
||||
QString getParticipantIconPath(const QString& name) const;
|
||||
|
||||
signals:
|
||||
void participantJoined(const Participant& participant);
|
||||
void participantLeft(const QString& name);
|
||||
|
||||
private:
|
||||
void handleParticipantUpdate(std::map<QString, Participant*>::const_iterator itr, const QMap<QString, QVariant>& data);
|
||||
|
|
|
@ -949,7 +949,7 @@ bool Models::Roster::groupHasContact(const QString& account, const QString& grou
|
|||
}
|
||||
}
|
||||
|
||||
QString Models::Roster::getContactIconPath(const QString& account, const QString& jid)
|
||||
QString Models::Roster::getContactIconPath(const QString& account, const QString& jid, const QString& resource)
|
||||
{
|
||||
ElId id(account, jid);
|
||||
std::multimap<ElId, Contact*>::const_iterator cItr = contacts.find(id);
|
||||
|
@ -959,7 +959,7 @@ QString Models::Roster::getContactIconPath(const QString& account, const QString
|
|||
if (rItr == rooms.end()) {
|
||||
qDebug() << "An attempt to get an icon path of non existing contact" << account << ":" << jid << ", returning empty value";
|
||||
} else {
|
||||
//path = rItr->second->getRoomName();
|
||||
path = rItr->second->getParticipantIconPath(resource);
|
||||
}
|
||||
} else {
|
||||
if (cItr->second->getAvatarState() != Shared::Avatar::empty) {
|
||||
|
|
|
@ -73,7 +73,7 @@ public:
|
|||
|
||||
std::deque<QString> groupList(const QString& account) const;
|
||||
bool groupHasContact(const QString& account, const QString& group, const QString& contactJID) const;
|
||||
QString getContactIconPath(const QString& account, const QString& jid);
|
||||
QString getContactIconPath(const QString& account, const QString& jid, const QString& resource);
|
||||
Account* getAccount(const QString& name);
|
||||
QModelIndex getAccountIndex(const QString& name);
|
||||
QModelIndex getGroupIndex(const QString& account, const QString& name);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue