handle subject

This commit is contained in:
Jan Kaluza 2011-05-19 12:46:20 +02:00
parent 8e03fbec47
commit a1eba9bedb
7 changed files with 41 additions and 6 deletions

View file

@ -131,9 +131,10 @@ void MyIrcBuffer::on_modeChanged(const QString& origin, const QString& mode, con
np->handleParticipantChanged(user, nickname, receiver().toStdString(), flags, Swift::StatusShow::Online, "");
}
void MyIrcBuffer::on_topicChanged(const QString& origin, const QString& topic)
{
qDebug() << "topic changed:" << receiver() << origin << topic;
void MyIrcBuffer::on_topicChanged(const QString& origin, const QString& topic) {
//topic changed: "#testik" "HanzZ" "test"
qDebug() << "topic changed:" << receiver() << origin << topic;
np->handleSubject(user, receiver().toStdString(), topic.toStdString(), origin.toStdString());
}
void MyIrcBuffer::on_invited(const QString& origin, const QString& receiver, const QString& channel)
@ -180,6 +181,12 @@ void MyIrcBuffer::on_ctcpActionReceived(const QString& origin, const QString& ac
void MyIrcBuffer::on_numericMessageReceived(const QString& origin, uint code, const QStringList& params)
{
switch (code) {
case 332:
m_topicData = params.value(2).toStdString();
break;
case 333:
np->handleSubject(user, params.value(1).toStdString(), m_topicData, params.value(2).toStdString());
break;
case 353:
QString channel = params.value(2);
QStringList members = params.value(3).split(" ");

View file

@ -47,6 +47,7 @@ public:
NetworkPlugin *np;
std::string user;
MyIrcSession *p;
std::string m_topicData;
protected Q_SLOTS:
void on_receiverChanged(const QString& receiver);

View file

@ -50,6 +50,8 @@ class NetworkPlugin {
void handleMessage(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &nickname = "");
void handleSubject(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &nickname = "");
void handleRoomChanged(const std::string &user, const std::string &room, const std::string &nickname);
virtual void handleLoginRequest(const std::string &user, const std::string &legacyName, const std::string &password) = 0;

View file

@ -54,7 +54,7 @@ class NetworkPluginServer {
void handleConnectedPayload(const std::string &payload);
void handleDisconnectedPayload(const std::string &payload);
void handleBuddyChangedPayload(const std::string &payload);
void handleConvMessagePayload(const std::string &payload);
void handleConvMessagePayload(const std::string &payload, bool subject = false);
void handleParticipantChangedPayload(const std::string &payload);
void handleRoomChangedPayload(const std::string &payload);

View file

@ -71,6 +71,22 @@ void NetworkPlugin::handleMessage(const std::string &user, const std::string &le
send(message);
}
void NetworkPlugin::handleSubject(const std::string &user, const std::string &legacyName, const std::string &msg, const std::string &nickname) {
pbnetwork::ConversationMessage m;
m.set_username(user);
m.set_buddyname(legacyName);
m.set_message(msg);
m.set_nickname(nickname);
std::string message;
m.SerializeToString(&message);
WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_ROOM_SUBJECT_CHANGED);
// std::cout << "SENDING MESSAGE\n";
send(message);
}
void NetworkPlugin::handleBuddyChanged(const std::string &user, const std::string &buddyName, const std::string &alias,
const std::string &groups, int status, const std::string &statusMessage, const std::string &iconHash) {
pbnetwork::Buddy buddy;

View file

@ -243,7 +243,7 @@ void NetworkPluginServer::handleRoomChangedPayload(const std::string &data) {
conv->setNickname(payload.nickname());
}
void NetworkPluginServer::handleConvMessagePayload(const std::string &data) {
void NetworkPluginServer::handleConvMessagePayload(const std::string &data, bool subject) {
pbnetwork::ConversationMessage payload;
// std::cout << "payload...\n";
if (payload.ParseFromString(data) == false) {
@ -256,7 +256,12 @@ void NetworkPluginServer::handleConvMessagePayload(const std::string &data) {
return;
boost::shared_ptr<Swift::Message> msg(new Swift::Message());
msg->setBody(payload.message());
if (subject) {
msg->setSubject(payload.message());
}
else {
msg->setBody(payload.message());
}
NetworkConversation *conv = (NetworkConversation *) user->getConversationManager()->getConversation(payload.buddyname());
if (!conv) {
@ -306,6 +311,9 @@ void NetworkPluginServer::handleDataRead(boost::shared_ptr<Swift::Connection> c,
case pbnetwork::WrapperMessage_Type_TYPE_CONV_MESSAGE:
handleConvMessagePayload(wrapper.payload());
break;
case pbnetwork::WrapperMessage_Type_TYPE_ROOM_SUBJECT_CHANGED:
handleConvMessagePayload(wrapper.payload(), true);
break;
case pbnetwork::WrapperMessage_Type_TYPE_PONG:
m_pongReceived = true;
break;

View file

@ -72,6 +72,7 @@ message WrapperMessage {
TYPE_LEAVE_ROOM = 12;
TYPE_PARTICIPANT_CHANGED = 13;
TYPE_ROOM_NICKNAME_CHANGED = 14;
TYPE_ROOM_SUBJECT_CHANGED = 15;
}
required Type type = 1;
optional bytes payload = 2;