Roster::Roster(IXmppStream *AXmppStream, IStanzaProcessor *AStanzaProcessor) : QObject(AXmppStream->instance()) { FXmppStream = AXmppStream; FStanzaProcessor = AStanzaProcessor; FOpened = false; FVerSupported = false; IStanzaHandle itemHandle; itemHandle.handler = this; itemHandle.order = SHO_DEFAULT; itemHandle.direction = IStanzaHandle::DirectionIn; itemHandle.streamJid = FXmppStream->streamJid(); itemHandle.conditions.append(SHC_ROSTER); FSHIRosterPush = FStanzaProcessor->insertStanzaHandle(itemHandle); IStanzaHandle subscrHandle; subscrHandle.handler = this; subscrHandle.order = SHO_DEFAULT; subscrHandle.direction = IStanzaHandle::DirectionIn; subscrHandle.streamJid = FXmppStream->streamJid(); subscrHandle.conditions.append(SHC_PRESENCE); FSHISubscription = FStanzaProcessor->insertStanzaHandle(subscrHandle); FXmppStream->insertXmppStanzaHandler(XSHO_XMPP_FEATURE,this); connect(FXmppStream->instance(),SIGNAL(opened()),SLOT(onStreamOpened())); connect(FXmppStream->instance(),SIGNAL(closed()),SLOT(onStreamClosed())); connect(FXmppStream->instance(),SIGNAL(jidAboutToBeChanged(const Jid &)),SLOT(onStreamJidAboutToBeChanged(const Jid &))); connect(FXmppStream->instance(),SIGNAL(jidChanged(const Jid &)),SLOT(onStreamJidChanged(const Jid &))); }
Presence::Presence(IXmppStream *AXmppStream, IStanzaProcessor *AStanzaProcessor) : QObject(AXmppStream->instance()) { FXmppStream = AXmppStream; FStanzaProcessor = AStanzaProcessor; FOpened = false; FShow = Offline; FPriority = 0; IStanzaHandle shandle; shandle.handler = this; shandle.order = SHO_DEFAULT; shandle.direction = IStanzaHandle::DirectionIn; shandle.streamJid = FXmppStream->streamJid(); shandle.conditions.append(SHC_PRESENCE); FSHIPresence = FStanzaProcessor->insertStanzaHandle(shandle); connect(AXmppStream->instance(),SIGNAL(error(const QString &)),SLOT(onStreamError(const QString &))); connect(AXmppStream->instance(),SIGNAL(closed()),SLOT(onStreamClosed())); LogDetaile(QString("[Presence][%1] Presence created").arg(streamJid().bare())); }