void Client::handleVCard(const gloox::JID& jid, const gloox::VCard* vcard) { TRACE(); if (vcard != NULL) { VCardToUser user(vcard); myHandler.onUserInfo(jid.bare(), user); if (jid.bare() == myClient.jid().bare()) broadcastPhotoHash(user.pictureSha1()); } }
void ClientConnection::handleItemUpdated (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; } emit rosterItemUpdated (JID2CLEntry_ [jid.bareJID ()]); }
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); }
void Client::handleItemUpdated(const gloox::JID& jid) { TRACE("%s", jid.full().c_str()); gloox::RosterItem* item = myRosterManager->getRosterItem(jid); addRosterItem(*item); }
void ClientConnection::handleItemAdded (const gloox::JID& jid) { gloox::RosterItem *ri = Client_->rosterManager ()->getRosterItem (jid); GlooxCLEntry *entry = new GlooxCLEntry (ri, Account_); JID2CLEntry_ [jid.bareJID ()] = entry; emit gotRosterItems (QList<QObject*> () << entry); }
bool Client::handleSubscriptionRequest( const gloox::JID& jid, const string& msg) { TRACE(); myHandler.onUserAuthorizationRequest(jid.bare(), msg); return false; // Ignored by gloox }
void Modul::LowLength( gloox::MUCRoom *muc , const gloox::JID &from , const bool priv ) const { std::string msg = "неправильно заданы параметры"; if( priv ) Send( from, msg, "" ); else muc->send( from.resource() + ": " + msg ); }
void RootModul::NotPermissed( const gloox::JID &user, gloox::MUCRoom *room, const bool priv ){ const int MESSAGES_NUMBER = 4; const std::string messages[] = { "Вы не в праве повелевать мной :P" , "Сударь, что Вы себе позволяете?" , "укуси мой зад :P" , "лизни тунца :P" }; const std::string msg = messages[ std::rand() % MESSAGES_NUMBER ]; if( priv ) Send( user, msg, "" ); else room->send( user.resource() + ": " + msg ); }
void Modul::Send( gloox::MUCRoom *room , const gloox::JID &to , const std::string &msg , bool priv ) const { const std::string::size_type MAX_MUC_MSG_LENGTH = 150; if( priv ) Send( to, msg ); else if( msg.length( ) > MAX_MUC_MSG_LENGTH ){ Send( room, to, "Сообщение отправлено в личку", priv ); Send( to, msg ); }else room->send( to.resource() + ": " + msg ); }
void Client::handleVCardResult(gloox::VCardHandler::VCardContext context, const gloox::JID& jid, gloox::StanzaError error) { TRACE(); if (error != gloox::StanzaErrorUndefined) { gLog.warning("%s vCard for user %s failed with error %u", context == gloox::VCardHandler::StoreVCard ? "Storing" : "Fetching", jid ? jid.bare().c_str() : myClient.jid().bare().c_str(), error); } if (!jid && context == gloox::VCardHandler::StoreVCard) { if (error == gloox::StanzaErrorUndefined) broadcastPhotoHash(myPendingPhotoHash); else broadcastPhotoHash(boost::none); myPendingPhotoHash = boost::none; } }
bool UserPlugin::onVCard(const VCardWrapper& vcardWrapper) { const gloox::JID jid=vcardWrapper.jid(); gloox::VCard vcard=gloox::VCard(vcardWrapper.vcard()); qDebug() << "Got vcard: "+vcardWrapper.id(); QString jidStr=QString::fromStdString(jid.full()); QString reqId=QString("vcard_%1").arg(vcardWrapper.id()); AsyncRequest* req=bot()->asyncRequests()->byStanzaId(reqId); if (req==0l) { return false; } if (vcardWrapper.isEmpty()) { reply(req->stanza(), "No VCard found"); bot()->asyncRequests()->removeAll(req); return true; } if (req->name()=="VCARD") { QString replyStr=vcardWrapper.vcardStr(); if (replyStr.isEmpty()) { reply(req->stanza(), "Empty VCard"); } else { reply(req->stanza(), QString("VCard: %1").arg(replyStr)); } } else if (req->name()=="PHOTO") { std::string photoContentStd=vcard.photo().binval; QByteArray photoContent=QByteArray(photoContentStd.data(), photoContentStd.size()); //QFile file("/tmp/out.png"); //file.open(QIODevice::WriteOnly); //file.write(photoContentStd.data(), photoContentStd.size()); //file.close(); QImage image; if (!image.loadFromData(photoContent)) { reply(req->stanza(), "Can't load image"); bot()->asyncRequests()->removeAll(req); return true; } MessageParser parser(req->stanza(), getMyNick(req->stanza())); parser.nextToken(); QString cmd=parser.nextToken().toUpper(); QString jid=parser.nextToken(); QString widthStr=parser.nextToken(); QString white=parser.nextToken(); QString black=parser.nextToken(); Image2Ascii img2ascii(image); if (!widthStr.isEmpty()) img2ascii.setWidth(widthStr.toInt()); if (!white.isEmpty() && white.length()<=5) img2ascii.setWhite(white); if (!black.isEmpty() && black.length()<=5) img2ascii.setBlack(black); QString ascii=img2ascii.ascii(); if (ascii.isEmpty()) reply(req->stanza(), "Can't convert image to ASCII"); else reply(req->stanza(), QString("Photo:\n%1").arg(ascii)); } bot()->asyncRequests()->removeAll(req); return true; }
void Client::handleItemUnsubscribed(const gloox::JID& jid) { TRACE("%s", jid.full().c_str()); gLog.info("No longer authorized for %s", jid.bare().c_str()); }
void Client::handleItemRemoved(const gloox::JID& jid) { TRACE("%s", jid.full().c_str()); myHandler.onUserRemoved(jid.bare()); }