QList<QXmppMessage> UnreadMessageModel::take(QString jid) { QString resource = jidToResource(jid); QString bareJid = jidToBareJid(jid); QList<QXmppMessage> results; if (resource.isEmpty()) { results = m_messageStore.take(bareJid); } else { QList<QXmppMessage> mid = m_messageStore.take(bareJid); foreach (QXmppMessage message, mid) { if (jidToResource(message.from()) == resource) { results << message; } else { add(message); } } } if (m_messageStore.isEmpty()) { emit messageCleared(); } else { qDebug("no empty"); } reset(); return results; }
void QXmppRosterManager::presenceReceived(const QXmppPresence& presence) { QString jid = presence.from(); QString bareJid = jidToBareJid(jid); QString resource = jidToResource(jid); if (bareJid.isEmpty()) return; switch(presence.type()) { case QXmppPresence::Available: m_presences[bareJid][resource] = presence; emit presenceChanged(bareJid, resource); break; case QXmppPresence::Unavailable: m_presences[bareJid].remove(resource); emit presenceChanged(bareJid, resource); break; case QXmppPresence::Subscribe: if (m_stream->configuration().autoAcceptSubscriptions()) { QXmppPresence presence; presence.setTo(jid); presence.setType(QXmppPresence::Subscribed); m_stream->sendPacket(presence); } break; default: break; } }
void QXmppConfiguration::setJid(const QString& jid) { m_user = jidToUser(jid); m_domain = jidToDomain(jid); const QString resource = jidToResource(jid); if (!resource.isEmpty()) m_resource = resource; }
void TestUtils::testJid() { QCOMPARE(jidToBareJid("[email protected]/resource"), QLatin1String("*****@*****.**")); QCOMPARE(jidToBareJid("*****@*****.**"), QLatin1String("*****@*****.**")); QCOMPARE(jidToBareJid("example.com"), QLatin1String("example.com")); QCOMPARE(jidToBareJid(QString()), QString()); QCOMPARE(jidToDomain("[email protected]/resource"), QLatin1String("example.com")); QCOMPARE(jidToDomain("*****@*****.**"), QLatin1String("example.com")); QCOMPARE(jidToDomain("example.com"), QLatin1String("example.com")); QCOMPARE(jidToDomain(QString()), QString()); QCOMPARE(jidToResource("[email protected]/resource"), QLatin1String("resource")); QCOMPARE(jidToResource("*****@*****.**"), QString()); QCOMPARE(jidToResource("example.com"), QString()); QCOMPARE(jidToResource(QString()), QString()); QCOMPARE(jidToUser("[email protected]/resource"), QLatin1String("foo")); QCOMPARE(jidToUser("*****@*****.**"), QLatin1String("foo")); QCOMPARE(jidToUser("example.com"), QString()); QCOMPARE(jidToUser(QString()), QString()); }
void ChatWindow::changeSelfState(QXmppMessage::State state) { if (m_selfState != state) { m_selfState = state; QString resource = jidToResource(m_jid); QString bareJid = jidToBareJid(m_jid); XmppMessage message(m_client->getConfiguration().jid(), m_jid); message.setState(state); if (resource.isEmpty()) { // if breaJid at less have one resource if (!m_client->getRoster().getAllPresencesForBareJid(bareJid).isEmpty()) { m_client->sendPacket(message); } } else { // if resource no unavable if (!m_client->getRoster().getPresence(bareJid, resource).from().isEmpty()) { m_client->sendPacket(message); } } } }