Skip to content

Commit d8b219b

Browse files
committed
Added missed nick attribute to mut item actor
1 parent 37be14e commit d8b219b

File tree

5 files changed

+27
-24
lines changed

5 files changed

+27
-24
lines changed

src/xmpp/xmpp-im/types.cpp

+13-13
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828

2929
#include <QList>
3030
#include <QMap>
31-
#include <type_traits>
3231

3332
#define NS_XML "http://www.w3.org/XML/1998/namespace"
3433

@@ -336,7 +335,7 @@ void MUCItem::setAffiliation(Affiliation a) { affiliation_ = a; }
336335

337336
void MUCItem::setRole(Role r) { role_ = r; }
338337

339-
void MUCItem::setActor(const Jid &a) { actor_ = a; }
338+
void MUCItem::setActor(const Actor &a) { actor_ = a; }
340339

341340
void MUCItem::setReason(const QString &r) { reason_ = r; }
342341

@@ -348,7 +347,7 @@ MUCItem::Affiliation MUCItem::affiliation() const { return affiliation_; }
348347

349348
MUCItem::Role MUCItem::role() const { return role_; }
350349

351-
const Jid &MUCItem::actor() const { return actor_; }
350+
const MUCItem::Actor &MUCItem::actor() const { return actor_; }
352351

353352
const QString &MUCItem::reason() const { return reason_; }
354353

@@ -384,14 +383,11 @@ void MUCItem::fromXml(const QDomElement &e)
384383
role_ = NoRole;
385384
}
386385

387-
for (QDomNode n = e.firstChild(); !n.isNull(); n = n.nextSibling()) {
388-
QDomElement i = n.toElement();
389-
if (i.isNull())
390-
continue;
391-
392-
if (i.tagName() == QLatin1String("actor"))
393-
actor_ = Jid(i.attribute(QLatin1String("jid")));
394-
else if (i.tagName() == QLatin1String("reason"))
386+
for (QDomElement i = e.firstChildElement(); !i.isNull(); i = i.nextSiblingElement()) {
387+
if (i.tagName() == QLatin1String("actor")) {
388+
actor_.jid = Jid(i.attribute(QLatin1String("jid")));
389+
actor_.nick = i.attribute(QLatin1String("nick"));
390+
} else if (i.tagName() == QLatin1String("reason"))
395391
reason_ = i.text();
396392
}
397393
}
@@ -448,11 +444,15 @@ QDomElement MUCItem::toXml(QDomDocument &d)
448444
return e;
449445
}
450446

447+
bool MUCItem::Actor::operator==(const Actor &o) const
448+
{
449+
return ((!jid.isValid() && !o.jid.isValid()) || jid.compare(o.jid, true)) && (nick == o.nick);
450+
}
451+
451452
bool MUCItem::operator==(const MUCItem &o) const
452453
{
453454
return !nick_.compare(o.nick_) && ((!jid_.isValid() && !o.jid_.isValid()) || jid_.compare(o.jid_, true))
454-
&& ((!actor_.isValid() && !o.actor_.isValid()) || actor_.compare(o.actor_, true))
455-
&& affiliation_ == o.affiliation_ && role_ == o.role_ && !reason_.compare(o.reason_);
455+
&& (actor_ == o.actor_) && affiliation_ == o.affiliation_ && role_ == o.role_ && !reason_.compare(o.reason_);
456456
}
457457

458458
//----------------------------------------------------------------------------

src/xmpp/xmpp-im/xmpp_ibb.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,8 @@
2323
#include "xmpp_stream.h"
2424
#include "xmpp_xmlcommon.h"
2525

26+
#include <QTimer>
2627
#include <QtCrypto>
27-
#include <qtimer.h>
28-
#include <stdlib.h>
2928

3029
#define IBB_PACKET_DELAY 0
3130

src/xmpp/xmpp-im/xmpp_ibb.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class IBBData {
4646
};
4747

4848
// this is an IBB connection. use it much like a qsocket
49-
class IBBConnection : public BSConnection {
49+
class IBBConnection final : public BSConnection {
5050
Q_OBJECT
5151
public:
5252
static const int PacketSize = 4096;

src/xmpp/xmpp-im/xmpp_muc.h

+11-3
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,28 @@ class MUCItem {
3131
enum Affiliation { UnknownAffiliation, Outcast, NoAffiliation, Member, Admin, Owner };
3232
enum Role { UnknownRole, NoRole, Visitor, Participant, Moderator };
3333

34+
struct Actor {
35+
Jid jid;
36+
QString nick;
37+
38+
bool operator==(const Actor &o) const;
39+
};
40+
3441
MUCItem(Role = UnknownRole, Affiliation = UnknownAffiliation);
3542
MUCItem(const QDomElement &);
3643

3744
void setNick(const QString &);
3845
void setJid(const Jid &);
3946
void setAffiliation(Affiliation);
4047
void setRole(Role);
41-
void setActor(const Jid &);
48+
void setActor(const Actor &);
4249
void setReason(const QString &);
4350

4451
const QString &nick() const;
4552
const Jid &jid() const; // real jid of muc participant
4653
Affiliation affiliation() const;
4754
Role role() const;
48-
const Jid &actor() const;
55+
const Actor &actor() const;
4956
const QString &reason() const;
5057

5158
void fromXml(const QDomElement &);
@@ -55,7 +62,8 @@ class MUCItem {
5562

5663
private:
5764
QString nick_;
58-
Jid jid_, actor_;
65+
Jid jid_;
66+
Actor actor_;
5967
Affiliation affiliation_;
6068
Role role_;
6169
QString reason_;

src/xmpp/xmpp-im/xmpp_tasks.cpp

+1-5
Original file line numberDiff line numberDiff line change
@@ -753,11 +753,7 @@ bool JT_PushPresence::take(const QDomElement &e)
753753
QByteArray::fromHex(tagContent(t).toLatin1())); // if hash is empty this may mean photo removal
754754
// else vcard.hasPhotoHash() returns false and that's mean user is not yet ready to advertise his image
755755
} else if (i.tagName() == "x" && i.namespaceURI() == "http://jabber.org/protocol/muc#user") {
756-
for (QDomNode muc_n = i.firstChild(); !muc_n.isNull(); muc_n = muc_n.nextSibling()) {
757-
QDomElement muc_e = muc_n.toElement();
758-
if (muc_e.isNull())
759-
continue;
760-
756+
for (QDomElement muc_e = i.firstChildElement(); !muc_e.isNull(); muc_e = muc_e.nextSiblingElement()) {
761757
if (muc_e.tagName() == "item")
762758
p.setMUCItem(MUCItem(muc_e));
763759
else if (muc_e.tagName() == "status")

0 commit comments

Comments
 (0)