author | wazlaf <wazlaf> | 2002-09-29 19:54:12 (UTC) |
---|---|---|
committer | wazlaf <wazlaf> | 2002-09-29 19:54:12 (UTC) |
commit | 1dd254c95a582c2c86c816516a1b4433d8142d8a (patch) (unidiff) | |
tree | a3225293a4b399494a04e5bb07154bd673ba0acf | |
parent | f91ea4e068f38e9df17b06c87cd8635628837a4f (diff) | |
download | opie-1dd254c95a582c2c86c816516a1b4433d8142d8a.zip opie-1dd254c95a582c2c86c816516a1b4433d8142d8a.tar.gz opie-1dd254c95a582c2c86c816516a1b4433d8142d8a.tar.bz2 |
some more message types supported to make this work more smoothly with freenode.net
-rw-r--r-- | noncore/net/opieirc/ircmessageparser.cpp | 33 | ||||
-rw-r--r-- | noncore/net/opieirc/ircmessageparser.h | 3 | ||||
-rw-r--r-- | noncore/net/opieirc/ircoutput.h | 3 | ||||
-rw-r--r-- | noncore/net/opieirc/ircservertab.cpp | 12 |
4 files changed, 49 insertions, 2 deletions
diff --git a/noncore/net/opieirc/ircmessageparser.cpp b/noncore/net/opieirc/ircmessageparser.cpp index 5c70753..d1b70a5 100644 --- a/noncore/net/opieirc/ircmessageparser.cpp +++ b/noncore/net/opieirc/ircmessageparser.cpp | |||
@@ -17,2 +17,3 @@ IRCLiteralMessageParserStruct IRCMessageParser::literalParserProcTable[] = { | |||
17 | { "KICK", FUNC(parseLiteralKick) }, | 17 | { "KICK", FUNC(parseLiteralKick) }, |
18 | { "TOPIC", FUNC(parseLiteralTopic) }, | ||
18 | { 0 , 0 } | 19 | { 0 , 0 } |
@@ -38,2 +39,4 @@ IRCNumericalMessageParserStruct IRCMessageParser::numericalParserProcTable[] = { | |||
38 | { 255, FUNC(parseNumericalStats) }, // RPL_LUSERNAME | 39 | { 255, FUNC(parseNumericalStats) }, // RPL_LUSERNAME |
40 | { 332, FUNC(parseNumericalTopic) }, // RPL_TOPIC | ||
41 | { 333, FUNC(parseNumericalTopicWhoTime) }, // RPL_TOPICWHOTIME | ||
39 | { 353, FUNC(parseNumericalNames) }, // RPL_NAMREPLY | 42 | { 353, FUNC(parseNumericalNames) }, // RPL_NAMREPLY |
@@ -193,3 +196,3 @@ void IRCMessageParser::parseLiteralPrivMsg(IRCMessage *message) { | |||
193 | } else { | 196 | } else { |
194 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Channel message with unknown channel"))); | 197 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Channel message with unknown channel ") + message->param(0))); |
195 | } | 198 | } |
@@ -244,2 +247,14 @@ void IRCMessageParser::parseLiteralQuit(IRCMessage *message) { | |||
244 | 247 | ||
248 | void IRCMessageParser::parseLiteralTopic(IRCMessage *message) { | ||
249 | IRCPerson mask(message->prefix()); | ||
250 | IRCChannel *channel = m_session->getChannel(message->param(0)); | ||
251 | if (channel) { | ||
252 | IRCOutput output(OUTPUT_TOPIC, mask.nick() + tr(" changed topic to ") + "\"" + message->param(1) + "\""); | ||
253 | output.addParam(channel); | ||
254 | emit outputReady(output); | ||
255 | } else { | ||
256 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Unknown channel topic - desynchronized?"))); | ||
257 | } | ||
258 | } | ||
259 | |||
245 | void IRCMessageParser::parseLiteralError(IRCMessage *message) { | 260 | void IRCMessageParser::parseLiteralError(IRCMessage *message) { |
@@ -486 +501,17 @@ void IRCMessageParser::parseNumericalNoSuchNick(IRCMessage *) { | |||
486 | } | 501 | } |
502 | |||
503 | void IRCMessageParser::parseNumericalTopic(IRCMessage *message) { | ||
504 | IRCChannel *channel = m_session->getChannel(message->param(1)); | ||
505 | if (channel) { | ||
506 | IRCOutput output(OUTPUT_TOPIC, tr("Topic for channel " + channel->channelname() + " is \"" + message->param(2) + "\"")); | ||
507 | output.addParam(channel); | ||
508 | emit outputReady(output); | ||
509 | } else { | ||
510 | IRCOutput output(OUTPUT_TOPIC, tr("Topic for channel " + message->param(1) + " is \"" + message->param(2) + "\"")); | ||
511 | output.addParam(0); | ||
512 | emit outputReady(output); | ||
513 | } | ||
514 | } | ||
515 | |||
516 | void IRCMessageParser::parseNumericalTopicWhoTime(IRCMessage *message) { | ||
517 | } | ||
diff --git a/noncore/net/opieirc/ircmessageparser.h b/noncore/net/opieirc/ircmessageparser.h index f774047..c4dd96c 100644 --- a/noncore/net/opieirc/ircmessageparser.h +++ b/noncore/net/opieirc/ircmessageparser.h | |||
@@ -74,2 +74,3 @@ private: | |||
74 | void parseLiteralKick(IRCMessage *message); | 74 | void parseLiteralKick(IRCMessage *message); |
75 | void parseLiteralTopic(IRCMessage *message); | ||
75 | void parseNumerical001(IRCMessage *message); | 76 | void parseNumerical001(IRCMessage *message); |
@@ -84,2 +85,4 @@ private: | |||
84 | void parseNumericalNoSuchNick(IRCMessage *message); | 85 | void parseNumericalNoSuchNick(IRCMessage *message); |
86 | void parseNumericalTopic(IRCMessage *message); | ||
87 | void parseNumericalTopicWhoTime(IRCMessage *message); | ||
85 | void parseCTCPPing(IRCMessage *message); | 88 | void parseCTCPPing(IRCMessage *message); |
diff --git a/noncore/net/opieirc/ircoutput.h b/noncore/net/opieirc/ircoutput.h index e8cc524..9c0b8bb 100644 --- a/noncore/net/opieirc/ircoutput.h +++ b/noncore/net/opieirc/ircoutput.h | |||
@@ -46,3 +46,4 @@ enum IRCOutputType { | |||
46 | OUTPUT_QUERYACTION = 15, /* parameters : person (IRCPerson) */ | 46 | OUTPUT_QUERYACTION = 15, /* parameters : person (IRCPerson) */ |
47 | OUTPUT_CHANPERSONMODE = 16 /* parameters : channel (IRCCHannel) person (IRCChannelPerson) */ | 47 | OUTPUT_CHANPERSONMODE = 16, /* parameters : channel (IRCCHannel) person (IRCChannelPerson) */ |
48 | OUTPUT_TOPIC = 17 /* parameters : channel (IRCChannel) */ | ||
48 | }; | 49 | }; |
diff --git a/noncore/net/opieirc/ircservertab.cpp b/noncore/net/opieirc/ircservertab.cpp index 4be60ef..aea58a3 100644 --- a/noncore/net/opieirc/ircservertab.cpp +++ b/noncore/net/opieirc/ircservertab.cpp | |||
@@ -221,2 +221,14 @@ void IRCServerTab::display(IRCOutput output) { | |||
221 | break; | 221 | break; |
222 | case OUTPUT_TOPIC: { | ||
223 | IRCChannel *channel = (IRCChannel *) output.getParam(0); | ||
224 | if (channel) { | ||
225 | IRCChannelTab *channelTab = getTabForChannel(channel); | ||
226 | if (channelTab) { | ||
227 | channelTab->appendText("<font color=\"" + m_notificationColor + "\">"+output.htmlMessage()+"</font><br>"); | ||
228 | return; | ||
229 | } | ||
230 | } | ||
231 | appendText("<font color=\"" + m_notificationColor + "\">"+output.htmlMessage()+"</font><br>"); | ||
232 | } | ||
233 | break; | ||
222 | case OUTPUT_QUIT: { | 234 | case OUTPUT_QUIT: { |