Resource *Roster::get_resource(const QString &full_jid, bool create) { QString jid, resource; int index = full_jid.indexOf("/"); if(index == -1) { jid = full_jid; resource = "default"; } else { jid = full_jid.left(index); resource = full_jid.mid(index + 1); } //qDebug() << "jid:" << jid << "resource:" << resource; RosterItem *item = get_item(jid); if(!item) { qDebug() << "no item for jid" + jid; return 0; } Resource *n = static_cast<Resource *>(item->child(resource)); if(!n && create) { n = new Resource(resource, item); item->addChild(n); } return n; }