Recieve messages from MUC rooms
This commit is contained in:
parent
3f62492b9c
commit
061489ba2e
|
@ -136,10 +136,15 @@ JabberHandler::Process(BMessage* msg)
|
||||||
|
|
||||||
case IM_JOIN_ROOM: {
|
case IM_JOIN_ROOM: {
|
||||||
BString chat_id = msg->FindString("chat_id");
|
BString chat_id = msg->FindString("chat_id");
|
||||||
chat_id << "/" << fUsername;
|
BString join_id = chat_id;
|
||||||
|
join_id << "/" << fUsername;
|
||||||
|
|
||||||
gloox::MUCRoom room(fClient, gloox::JID(chat_id.String()), this, this);
|
gloox::MUCRoom* room =
|
||||||
room.join();
|
new gloox::MUCRoom(fClient, gloox::JID(join_id.String()),
|
||||||
|
this, this);
|
||||||
|
room->join();
|
||||||
|
|
||||||
|
fRooms.AddItem(chat_id, room);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1074,9 +1079,25 @@ JabberHandler::handleMUCParticipantPresence(gloox::MUCRoom *room,
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
JabberHandler::handleMUCMessage(gloox::MUCRoom *room, const gloox::Message &msg,
|
JabberHandler::handleMUCMessage(gloox::MUCRoom *room, const gloox::Message &m,
|
||||||
bool priv)
|
bool priv)
|
||||||
{
|
{
|
||||||
|
// We need a body
|
||||||
|
if (m.body() == "")
|
||||||
|
return;
|
||||||
|
|
||||||
|
BString chat_id(room->name().c_str());
|
||||||
|
chat_id << "@" << room->service().c_str();
|
||||||
|
|
||||||
|
// Notify that a chat message was received
|
||||||
|
BMessage msg(IM_MESSAGE);
|
||||||
|
msg.AddString("user_id", m.from().resource().c_str());
|
||||||
|
msg.AddString("chat_id", chat_id);
|
||||||
|
msg.AddInt32("im_what", IM_MESSAGE_RECEIVED);
|
||||||
|
if (m.subject() != "")
|
||||||
|
msg.AddString("subject", m.subject().c_str());
|
||||||
|
msg.AddString("body", m.body().c_str());
|
||||||
|
_SendMessage(&msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -31,9 +31,14 @@
|
||||||
|
|
||||||
#include <CayaProtocol.h>
|
#include <CayaProtocol.h>
|
||||||
#include <CayaConstants.h>
|
#include <CayaConstants.h>
|
||||||
|
#include <libsupport/KeyMap.h>
|
||||||
|
|
||||||
class BList;
|
class BList;
|
||||||
|
|
||||||
|
|
||||||
|
typedef KeyMap<BString, gloox::MUCRoom*> RoomMap;
|
||||||
|
|
||||||
|
|
||||||
class JabberHandler : public CayaProtocol, gloox::RosterListener, gloox::ConnectionListener,
|
class JabberHandler : public CayaProtocol, gloox::RosterListener, gloox::ConnectionListener,
|
||||||
gloox::LogHandler, gloox::MessageSessionHandler,
|
gloox::LogHandler, gloox::MessageSessionHandler,
|
||||||
gloox::MessageHandler, gloox::MessageEventHandler,
|
gloox::MessageHandler, gloox::MessageEventHandler,
|
||||||
|
@ -100,6 +105,7 @@ private:
|
||||||
|
|
||||||
gloox::JID fJid;
|
gloox::JID fJid;
|
||||||
thread_id fRecvThread;
|
thread_id fRecvThread;
|
||||||
|
RoomMap fRooms;
|
||||||
|
|
||||||
BPath fCachePath;
|
BPath fCachePath;
|
||||||
BPath fAvatarCachePath;
|
BPath fAvatarCachePath;
|
||||||
|
@ -136,7 +142,7 @@ private:
|
||||||
virtual void handleMUCParticipantPresence(gloox::MUCRoom* room,
|
virtual void handleMUCParticipantPresence(gloox::MUCRoom* room,
|
||||||
const gloox::MUCRoomParticipant participant,
|
const gloox::MUCRoomParticipant participant,
|
||||||
const gloox::Presence &presence);
|
const gloox::Presence &presence);
|
||||||
virtual void handleMUCMessage(gloox::MUCRoom* room, const gloox::Message &msg, bool priv);
|
virtual void handleMUCMessage(gloox::MUCRoom* room, const gloox::Message &m, bool priv);
|
||||||
virtual bool handleMUCRoomCreation(gloox::MUCRoom* room);
|
virtual bool handleMUCRoomCreation(gloox::MUCRoom* room);
|
||||||
virtual void handleMUCSubject(gloox::MUCRoom* room, const std::string &nick,
|
virtual void handleMUCSubject(gloox::MUCRoom* room, const std::string &nick,
|
||||||
const std::string &subject);
|
const std::string &subject);
|
||||||
|
|
Ŝarĝante…
Reference in New Issue