void Client::slotRosterRequestFinished() { JT_Roster *r = (JT_Roster *)sender(); // on success, let's take it if(r->success()) { //d->roster.flagAllForDelete(); // mod_groups patch importRoster(r->roster()); for(LiveRoster::Iterator it = d->roster.begin(); it != d->roster.end();) { LiveRosterItem &i = *it; if(i.flagForDelete()) { rosterItemRemoved(i); it = d->roster.remove(it); } else ++it; } } else { // don't report a disconnect. Client::error() will do that. if(r->statusCode() == Task::ErrDisc) return; } // report success / fail rosterRequestFinished(r->success(), r->statusCode(), r->statusString()); }
void Client::importRosterItem(const RosterItem &item) { QString substr; switch(item.subscription().type()) { case Subscription::Both: substr = "<-->"; break; case Subscription::From: substr = " ->"; break; case Subscription::To: substr = "<- "; break; case Subscription::Remove: substr = "xxxx"; break; case Subscription::None: default: substr = "----"; break; } QString dstr, str; str.sprintf(" %s %-32s", substr.latin1(), item.jid().full().latin1()); if(!item.name().isEmpty()) str += QString(" [") + item.name() + "]"; str += '\n'; // Remove if(item.subscription().type() == Subscription::Remove) { LiveRoster::Iterator it = d->roster.find(item.jid()); if(it != d->roster.end()) { rosterItemRemoved(*it); d->roster.remove(it); } dstr = "Client: (Removed) "; } // Add/Update else { LiveRoster::Iterator it = d->roster.find(item.jid()); if(it != d->roster.end()) { LiveRosterItem &i = *it; i.setFlagForDelete(false); i.setRosterItem(item); rosterItemUpdated(i); dstr = "Client: (Updated) "; } else { LiveRosterItem i(item); d->roster += i; // signal it rosterItemAdded(i); dstr = "Client: (Added) "; } } debug(dstr + str); }
void ClientConnection::handleItemRemoved (const gloox::JID& jid) { if (!JID2CLEntry_.contains (jid.bareJID ())) { qWarning () << Q_FUNC_INFO << "strange, we have no" << jid.full ().c_str () << "in our JID2CLEntry_"; return; } GlooxCLEntry *entry = JID2CLEntry_.take (jid.bareJID ()); emit rosterItemRemoved (entry); }