예제 #1
0
파일: client.cpp 프로젝트: j0wl/licq
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());
  }
}
예제 #2
0
					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 ()]);
					}
예제 #3
0
					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);
					}
예제 #4
0
파일: client.cpp 프로젝트: j0wl/licq
void Client::handleItemUpdated(const gloox::JID& jid)
{
  TRACE("%s", jid.full().c_str());

  gloox::RosterItem* item = myRosterManager->getRosterItem(jid);
  addRosterItem(*item);
}
예제 #5
0
					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);
					}
예제 #6
0
파일: client.cpp 프로젝트: j0wl/licq
bool Client::handleSubscriptionRequest(
    const gloox::JID& jid, const string& msg)
{
  TRACE();

  myHandler.onUserAuthorizationRequest(jid.bare(), msg);
  return false; // Ignored by gloox
}
예제 #7
0
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 );
} 
예제 #8
0
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 );
}
예제 #9
0
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 );
}
예제 #10
0
파일: client.cpp 프로젝트: j0wl/licq
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;
  }
}
예제 #11
0
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;
}
예제 #12
0
파일: client.cpp 프로젝트: j0wl/licq
void Client::handleItemUnsubscribed(const gloox::JID& jid)
{
  TRACE("%s", jid.full().c_str());

  gLog.info("No longer authorized for %s", jid.bare().c_str());
}
예제 #13
0
파일: client.cpp 프로젝트: j0wl/licq
void Client::handleItemRemoved(const gloox::JID& jid)
{
  TRACE("%s", jid.full().c_str());

  myHandler.onUserRemoved(jid.bare());
}