forked from blue/squawk
an idea how to manage info object better
This commit is contained in:
parent
ec362cef55
commit
6f32e99593
12 changed files with 390 additions and 63 deletions
|
@ -735,7 +735,7 @@ void Core::Account::requestInfo(const QString& jid) {
|
|||
void Core::Account::updateInfo(const Shared::Info& info) {
|
||||
//TODO switch case of what kind of entity this info update is about
|
||||
//right now it could be only about myself
|
||||
vh->uploadVCard(info.vcard);
|
||||
vh->uploadVCard(info.getVCardRef());
|
||||
}
|
||||
|
||||
QString Core::Account::getAvatarPath() const {
|
||||
|
|
|
@ -339,18 +339,16 @@ bool Core::Conference::setAvatar(const QByteArray& data, Archive::AvatarInfo& in
|
|||
return result;
|
||||
}
|
||||
|
||||
Shared::VCard Core::Conference::handleResponseVCard(const QXmppVCardIq& card, const QString &resource)
|
||||
void Core::Conference::handleResponseVCard(const QXmppVCardIq& card, const QString &resource, Shared::VCard& out)
|
||||
{
|
||||
Shared::VCard result = RosterItem::handleResponseVCard(card, resource);
|
||||
RosterItem::handleResponseVCard(card, resource, out);
|
||||
|
||||
if (resource.size() > 0) {
|
||||
emit changeParticipant(resource, {
|
||||
{"avatarState", static_cast<uint>(result.getAvatarType())},
|
||||
{"avatarPath", result.getAvatarPath()}
|
||||
{"avatarState", static_cast<uint>(out.getAvatarType())},
|
||||
{"avatarPath", out.getAvatarPath()}
|
||||
});
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
QMap<QString, QVariant> Core::Conference::getAllAvatars() const
|
||||
|
|
|
@ -52,7 +52,7 @@ public:
|
|||
void setAutoJoin(bool p_autoJoin);
|
||||
void handlePresence(const QXmppPresence & pres) override;
|
||||
bool setAutoGeneratedAvatar(const QString& resource = "") override;
|
||||
Shared::VCard handleResponseVCard(const QXmppVCardIq & card, const QString &resource) override;
|
||||
void handleResponseVCard(const QXmppVCardIq & card, const QString &resource, Shared::VCard& out) override;
|
||||
QMap<QString, QVariant> getAllAvatars() const;
|
||||
|
||||
signals:
|
||||
|
|
|
@ -101,7 +101,7 @@ void Core::VCardHandler::onVCardReceived(const QXmppVCardIq& card) {
|
|||
}
|
||||
|
||||
Shared::Info info(jid, Shared::EntryType::contact);
|
||||
info.vcard = item->handleResponseVCard(card, resource);
|
||||
item->handleResponseVCard(card, resource, info.getVCardRef());
|
||||
|
||||
emit acc->infoReady(info);
|
||||
}
|
||||
|
@ -187,14 +187,15 @@ void Core::VCardHandler::onOwnVCardReceived(const QXmppVCardIq& card) {
|
|||
|
||||
ownVCardRequestInProgress = false;
|
||||
|
||||
Shared::Info info(acc->getBareJid(), Shared::EntryType::ownAccount, true);
|
||||
initializeVCard(info.vcard, card);
|
||||
Shared::Info info(acc->getBareJid(), Shared::EntryType::ownAccount);
|
||||
Shared::VCard& vCard = info.getVCardRef();
|
||||
initializeVCard(vCard, card);
|
||||
|
||||
if (avatarType.size() > 0) {
|
||||
info.vcard.setAvatarType(Shared::Avatar::valid);
|
||||
info.vcard.setAvatarPath(path + "avatar." + avatarType);
|
||||
vCard.setAvatarType(Shared::Avatar::valid);
|
||||
vCard.setAvatarPath(path + "avatar." + avatarType);
|
||||
} else {
|
||||
info.vcard.setAvatarType(Shared::Avatar::empty);
|
||||
vCard.setAvatarType(Shared::Avatar::empty);
|
||||
}
|
||||
|
||||
emit acc->infoReady(info);
|
||||
|
|
|
@ -506,14 +506,13 @@ bool Core::RosterItem::readAvatarInfo(Archive::AvatarInfo& target, const QString
|
|||
return archive->readAvatarInfo(target, resource);
|
||||
}
|
||||
|
||||
Shared::VCard Core::RosterItem::handleResponseVCard(const QXmppVCardIq& card, const QString& resource)
|
||||
void Core::RosterItem::handleResponseVCard(const QXmppVCardIq& card, const QString& resource, Shared::VCard& vCard)
|
||||
{
|
||||
Archive::AvatarInfo info;
|
||||
Archive::AvatarInfo newInfo;
|
||||
bool hasAvatar = readAvatarInfo(info, resource);
|
||||
|
||||
QByteArray ava = card.photo();
|
||||
Shared::VCard vCard;
|
||||
initializeVCard(vCard, card);
|
||||
Shared::Avatar type = Shared::Avatar::empty;
|
||||
QString path = "";
|
||||
|
@ -546,8 +545,6 @@ Shared::VCard Core::RosterItem::handleResponseVCard(const QXmppVCardIq& card, co
|
|||
if (resource.size() == 0) {
|
||||
emit avatarChanged(vCard.getAvatarType(), vCard.getAvatarPath());
|
||||
}
|
||||
|
||||
return vCard;
|
||||
}
|
||||
|
||||
void Core::RosterItem::clearArchiveRequests()
|
||||
|
|
|
@ -72,7 +72,7 @@ public:
|
|||
QString folderPath() const;
|
||||
bool readAvatarInfo(Archive::AvatarInfo& target, const QString& resource = "") const;
|
||||
virtual bool setAutoGeneratedAvatar(const QString& resource = "");
|
||||
virtual Shared::VCard handleResponseVCard(const QXmppVCardIq& card, const QString& resource);
|
||||
virtual void handleResponseVCard(const QXmppVCardIq& card, const QString& resource, Shared::VCard& out);
|
||||
virtual void handlePresence(const QXmppPresence& pres) = 0;
|
||||
|
||||
bool changeMessage(const QString& id, const QMap<QString, QVariant>& data);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue