handle subject
This commit is contained in:
parent
8e03fbec47
commit
a1eba9bedb
7 changed files with 41 additions and 6 deletions
|
@ -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(" ");
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue