author | wazlaf <wazlaf> | 2002-09-21 07:11:10 (UTC) |
---|---|---|
committer | wazlaf <wazlaf> | 2002-09-21 07:11:10 (UTC) |
commit | d8accaeed5f95340e8d293d6d5d1bb136c57fe35 (patch) (unidiff) | |
tree | 8452081a1b36ab0db6b34a5a738ff7b64be641e9 | |
parent | 2f560ac908935bd4bc4a6b8852d27676100510bb (diff) | |
download | opie-d8accaeed5f95340e8d293d6d5d1bb136c57fe35.zip opie-d8accaeed5f95340e8d293d6d5d1bb136c57fe35.tar.gz opie-d8accaeed5f95340e8d293d6d5d1bb136c57fe35.tar.bz2 |
CTCP action now work via /me, HTML escaping now also works for text sent by yourself
-rw-r--r-- | noncore/net/opieirc/ircchanneltab.cpp | 4 | ||||
-rw-r--r-- | noncore/net/opieirc/ircoutput.cpp | 6 | ||||
-rw-r--r-- | noncore/net/opieirc/ircoutput.h | 2 | ||||
-rw-r--r-- | noncore/net/opieirc/ircservertab.cpp | 11 | ||||
-rw-r--r-- | noncore/net/opieirc/ircsession.cpp | 8 | ||||
-rw-r--r-- | noncore/net/opieirc/ircsession.h | 2 |
6 files changed, 31 insertions, 2 deletions
diff --git a/noncore/net/opieirc/ircchanneltab.cpp b/noncore/net/opieirc/ircchanneltab.cpp index 754442a..3267525 100644 --- a/noncore/net/opieirc/ircchanneltab.cpp +++ b/noncore/net/opieirc/ircchanneltab.cpp | |||
@@ -16,67 +16,69 @@ IRCChannelTab::IRCChannelTab(IRCChannel *channel, IRCServerTab *parentTab, MainW | |||
16 | m_textview->setCornerWidget(m_listButton); | 16 | m_textview->setCornerWidget(m_listButton); |
17 | connect(m_listButton, SIGNAL(clicked()), this, SLOT(toggleList())); | 17 | connect(m_listButton, SIGNAL(clicked()), this, SLOT(toggleList())); |
18 | m_list = new IRCChannelList(m_channel, hbox); | 18 | m_list = new IRCChannelList(m_channel, hbox); |
19 | m_list->update(); | 19 | m_list->update(); |
20 | m_list->setMaximumWidth(LISTWIDTH); | 20 | m_list->setMaximumWidth(LISTWIDTH); |
21 | m_field = new QLineEdit(this); | 21 | m_field = new QLineEdit(this); |
22 | m_layout->add(hbox); | 22 | m_layout->add(hbox); |
23 | hbox->show(); | 23 | hbox->show(); |
24 | m_layout->add(m_field); | 24 | m_layout->add(m_field); |
25 | m_field->setFocus(); | 25 | m_field->setFocus(); |
26 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); | 26 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); |
27 | 27 | ||
28 | } | 28 | } |
29 | 29 | ||
30 | void IRCChannelTab::appendText(QString text) { | 30 | void IRCChannelTab::appendText(QString text) { |
31 | /* not using append because it creates layout problems */ | 31 | /* not using append because it creates layout problems */ |
32 | m_textview->setText(m_textview->text() + text); | 32 | m_textview->setText(m_textview->text() + text); |
33 | m_textview->ensureVisible(0, m_textview->contentsHeight()); | 33 | m_textview->ensureVisible(0, m_textview->contentsHeight()); |
34 | } | 34 | } |
35 | 35 | ||
36 | IRCChannelTab::~IRCChannelTab() { | 36 | IRCChannelTab::~IRCChannelTab() { |
37 | m_parentTab->removeChannelTab(this); | 37 | m_parentTab->removeChannelTab(this); |
38 | } | 38 | } |
39 | 39 | ||
40 | void IRCChannelTab::processCommand() { | 40 | void IRCChannelTab::processCommand() { |
41 | QString text = m_field->text(); | 41 | QString text = m_field->text(); |
42 | if (text.length()>0) { | 42 | if (text.length()>0) { |
43 | if (session()->isSessionActive()) { | 43 | if (session()->isSessionActive()) { |
44 | if (text.startsWith("/") && !text.startsWith("//")) { | 44 | if (text.startsWith("/") && !text.startsWith("//")) { |
45 | /* Command mode */ | 45 | /* Command mode */ |
46 | m_parentTab->executeCommand(this, text);; | 46 | m_parentTab->executeCommand(this, text);; |
47 | } else { | 47 | } else { |
48 | if (text.startsWith("//")) | ||
49 | text = text.right(text.length()-1); | ||
48 | if (session()->isSessionActive()) { | 50 | if (session()->isSessionActive()) { |
49 | session()->sendMessage(m_channel, m_field->text()); | 51 | session()->sendMessage(m_channel, m_field->text()); |
50 | appendText("<<font color=\"#dd0000\">"+m_parentTab->server()->nick()+"</font>> "+m_field->text()+"<br>"); | 52 | appendText("<<font color=\"#dd0000\">"+m_parentTab->server()->nick()+"</font>> "+IRCOutput::toHTML(m_field->text())+"<br>"); |
51 | } | 53 | } |
52 | } | 54 | } |
53 | } else { | 55 | } else { |
54 | appendText("<font color=\"#ff0000\">"+tr("Disconnected")+"</font><br>"); | 56 | appendText("<font color=\"#ff0000\">"+tr("Disconnected")+"</font><br>"); |
55 | } | 57 | } |
56 | } | 58 | } |
57 | m_field->clear(); | 59 | m_field->clear(); |
58 | } | 60 | } |
59 | 61 | ||
60 | void IRCChannelTab::toggleList() { | 62 | void IRCChannelTab::toggleList() { |
61 | if (m_listVisible) { | 63 | if (m_listVisible) { |
62 | m_list->setMaximumWidth(0); | 64 | m_list->setMaximumWidth(0); |
63 | m_listButton->setText("<"); | 65 | m_listButton->setText("<"); |
64 | } else { | 66 | } else { |
65 | m_list->setMaximumWidth(LISTWIDTH); | 67 | m_list->setMaximumWidth(LISTWIDTH); |
66 | m_listButton->setText(">"); | 68 | m_listButton->setText(">"); |
67 | } | 69 | } |
68 | m_listVisible = !m_listVisible; | 70 | m_listVisible = !m_listVisible; |
69 | } | 71 | } |
70 | 72 | ||
71 | QString IRCChannelTab::title() { | 73 | QString IRCChannelTab::title() { |
72 | return m_channel->channelname(); | 74 | return m_channel->channelname(); |
73 | } | 75 | } |
74 | 76 | ||
75 | IRCSession *IRCChannelTab::session() { | 77 | IRCSession *IRCChannelTab::session() { |
76 | return m_parentTab->session(); | 78 | return m_parentTab->session(); |
77 | } | 79 | } |
78 | 80 | ||
79 | void IRCChannelTab::remove() { | 81 | void IRCChannelTab::remove() { |
80 | if (session()->isSessionActive()) { | 82 | if (session()->isSessionActive()) { |
81 | session()->part(m_channel); | 83 | session()->part(m_channel); |
82 | } else { | 84 | } else { |
diff --git a/noncore/net/opieirc/ircoutput.cpp b/noncore/net/opieirc/ircoutput.cpp index 878bc9b..4822fc4 100644 --- a/noncore/net/opieirc/ircoutput.cpp +++ b/noncore/net/opieirc/ircoutput.cpp | |||
@@ -1,29 +1,33 @@ | |||
1 | #include "ircoutput.h" | 1 | #include "ircoutput.h" |
2 | 2 | ||
3 | IRCOutput::IRCOutput(IRCOutputType type, QString message) { | 3 | IRCOutput::IRCOutput(IRCOutputType type, QString message) { |
4 | m_type = type; | 4 | m_type = type; |
5 | m_message = message; | 5 | m_message = message; |
6 | } | 6 | } |
7 | 7 | ||
8 | IRCOutputType IRCOutput::type() { | 8 | IRCOutputType IRCOutput::type() { |
9 | return m_type; | 9 | return m_type; |
10 | } | 10 | } |
11 | 11 | ||
12 | QString IRCOutput::message() { | 12 | QString IRCOutput::message() { |
13 | return m_message; | 13 | return m_message; |
14 | } | 14 | } |
15 | 15 | ||
16 | QString IRCOutput::htmlMessage() { | 16 | QString IRCOutput::htmlMessage() { |
17 | QString htmlMessage =m_message.replace(QRegExp("&"), "&"); | 17 | return toHTML(m_message); |
18 | } | ||
19 | |||
20 | QString IRCOutput::toHTML(QString message) { | ||
21 | QString htmlMessage =message.replace(QRegExp("&"), "&"); | ||
18 | htmlMessage = htmlMessage.replace(QRegExp(">"), ">"); | 22 | htmlMessage = htmlMessage.replace(QRegExp(">"), ">"); |
19 | htmlMessage = htmlMessage.replace(QRegExp("<"), "<"); | 23 | htmlMessage = htmlMessage.replace(QRegExp("<"), "<"); |
20 | return htmlMessage; | 24 | return htmlMessage; |
21 | } | 25 | } |
22 | 26 | ||
23 | void IRCOutput::addParam(void *data) { | 27 | void IRCOutput::addParam(void *data) { |
24 | m_parameters.append(data); | 28 | m_parameters.append(data); |
25 | } | 29 | } |
26 | 30 | ||
27 | void *IRCOutput::getParam(int index) { | 31 | void *IRCOutput::getParam(int index) { |
28 | return m_parameters.at(index); | 32 | return m_parameters.at(index); |
29 | } | 33 | } |
diff --git a/noncore/net/opieirc/ircoutput.h b/noncore/net/opieirc/ircoutput.h index 72361d4..e8cc524 100644 --- a/noncore/net/opieirc/ircoutput.h +++ b/noncore/net/opieirc/ircoutput.h | |||
@@ -33,40 +33,42 @@ enum IRCOutputType { | |||
33 | OUTPUT_CHANPRIVMSG = 2, /* parameters : channel (IRCChannel), person (IRCChannelPerson) */ | 33 | OUTPUT_CHANPRIVMSG = 2, /* parameters : channel (IRCChannel), person (IRCChannelPerson) */ |
34 | OUTPUT_QUERYPRIVMSG = 3, /* parameters : person (IRCPerson) */ | 34 | OUTPUT_QUERYPRIVMSG = 3, /* parameters : person (IRCPerson) */ |
35 | OUTPUT_NICKCHANGE = 4, /* parameters : person (IRCPerson) */ | 35 | OUTPUT_NICKCHANGE = 4, /* parameters : person (IRCPerson) */ |
36 | OUTPUT_SELFJOIN = 5, /* parameters : channel (IRCChannel) */ | 36 | OUTPUT_SELFJOIN = 5, /* parameters : channel (IRCChannel) */ |
37 | OUTPUT_OTHERJOIN = 6, /* parameters : channel (IRCChannel), person (IRCChannelPerson) */ | 37 | OUTPUT_OTHERJOIN = 6, /* parameters : channel (IRCChannel), person (IRCChannelPerson) */ |
38 | OUTPUT_SELFPART = 7, /* parameters : channel (IRCChannel) */ | 38 | OUTPUT_SELFPART = 7, /* parameters : channel (IRCChannel) */ |
39 | OUTPUT_OTHERPART = 8, /* parameters : channel (IRCChannel), person (IRCChannelPerson) */ | 39 | OUTPUT_OTHERPART = 8, /* parameters : channel (IRCChannel), person (IRCChannelPerson) */ |
40 | OUTPUT_QUIT = 9, /* parameters : person (IRCPerson) */ | 40 | OUTPUT_QUIT = 9, /* parameters : person (IRCPerson) */ |
41 | OUTPUT_CONNCLOSE = 10, /* parameters : none */ | 41 | OUTPUT_CONNCLOSE = 10, /* parameters : none */ |
42 | OUTPUT_CTCP = 11, /* parameters : none */ | 42 | OUTPUT_CTCP = 11, /* parameters : none */ |
43 | OUTPUT_SELFKICK = 12, /* parameters : channel (IRCChannel) */ | 43 | OUTPUT_SELFKICK = 12, /* parameters : channel (IRCChannel) */ |
44 | OUTPUT_OTHERKICK = 13, /* parameters : channel (IRCChannel) person (IRCChannelPerson) */ | 44 | OUTPUT_OTHERKICK = 13, /* parameters : channel (IRCChannel) person (IRCChannelPerson) */ |
45 | OUTPUT_CHANACTION = 14, /* parameters : channel (IRCChannel) person (IRCChannelPerson) */ | 45 | OUTPUT_CHANACTION = 14, /* parameters : channel (IRCChannel) person (IRCChannelPerson) */ |
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 | }; | 48 | }; |
49 | 49 | ||
50 | /* The IRCOutput class is used as a kind of message which is sent by the | 50 | /* The IRCOutput class is used as a kind of message which is sent by the |
51 | IRC parser to inform the GUI of changes. This could for example be a | 51 | IRC parser to inform the GUI of changes. This could for example be a |
52 | channel message or a nickname change */ | 52 | channel message or a nickname change */ |
53 | 53 | ||
54 | class IRCOutput { | 54 | class IRCOutput { |
55 | public: | 55 | public: |
56 | IRCOutput(IRCOutputType type, QString message); | 56 | IRCOutput(IRCOutputType type, QString message); |
57 | /* Used to add a parameter to this IRCOutput. Parameters are dependent | 57 | /* Used to add a parameter to this IRCOutput. Parameters are dependent |
58 | on which IRCOutputType we are using (see above) */ | 58 | on which IRCOutputType we are using (see above) */ |
59 | void addParam(void *data); | 59 | void addParam(void *data); |
60 | 60 | ||
61 | IRCOutputType type(); | 61 | IRCOutputType type(); |
62 | QString message(); | 62 | QString message(); |
63 | /* Return the message with all HTML code escaped (for example < instead of '<') */ | 63 | /* Return the message with all HTML code escaped (for example < instead of '<') */ |
64 | QString htmlMessage(); | 64 | QString htmlMessage(); |
65 | |||
66 | static QString toHTML(QString message); | ||
65 | void *getParam(int index); | 67 | void *getParam(int index); |
66 | protected: | 68 | protected: |
67 | IRCOutputType m_type; | 69 | IRCOutputType m_type; |
68 | QString m_message; | 70 | QString m_message; |
69 | QList<void> m_parameters; | 71 | QList<void> m_parameters; |
70 | }; | 72 | }; |
71 | 73 | ||
72 | #endif | 74 | #endif |
diff --git a/noncore/net/opieirc/ircservertab.cpp b/noncore/net/opieirc/ircservertab.cpp index 2ad56a8..503a758 100644 --- a/noncore/net/opieirc/ircservertab.cpp +++ b/noncore/net/opieirc/ircservertab.cpp | |||
@@ -30,64 +30,75 @@ IRCServerTab::~IRCServerTab() { | |||
30 | } | 30 | } |
31 | 31 | ||
32 | void IRCServerTab::removeChannelTab(IRCChannelTab *tab) { | 32 | void IRCServerTab::removeChannelTab(IRCChannelTab *tab) { |
33 | m_channelTabs.remove(tab); | 33 | m_channelTabs.remove(tab); |
34 | } | 34 | } |
35 | 35 | ||
36 | QString IRCServerTab::title() { | 36 | QString IRCServerTab::title() { |
37 | return "Server"; | 37 | return "Server"; |
38 | } | 38 | } |
39 | 39 | ||
40 | IRCSession *IRCServerTab::session() { | 40 | IRCSession *IRCServerTab::session() { |
41 | return m_session; | 41 | return m_session; |
42 | } | 42 | } |
43 | 43 | ||
44 | IRCServer *IRCServerTab::server() { | 44 | IRCServer *IRCServerTab::server() { |
45 | return &m_server; | 45 | return &m_server; |
46 | } | 46 | } |
47 | 47 | ||
48 | void IRCServerTab::executeCommand(IRCTab *tab, QString line) { | 48 | void IRCServerTab::executeCommand(IRCTab *tab, QString line) { |
49 | QTextIStream stream(&line); | 49 | QTextIStream stream(&line); |
50 | QString command; | 50 | QString command; |
51 | stream >> command; | 51 | stream >> command; |
52 | command = command.upper().right(command.length()-1); | 52 | command = command.upper().right(command.length()-1); |
53 | 53 | ||
54 | if (command == "JOIN") { | 54 | if (command == "JOIN") { |
55 | QString channel; | 55 | QString channel; |
56 | stream >> channel; | 56 | stream >> channel; |
57 | if (channel.length() > 0 && channel.startsWith("#")) { | 57 | if (channel.length() > 0 && channel.startsWith("#")) { |
58 | m_session->join(channel); | 58 | m_session->join(channel); |
59 | } else { | 59 | } else { |
60 | tab->appendText("<font color=\"#ff0000\">Unknown channel format!</font><br>"); | 60 | tab->appendText("<font color=\"#ff0000\">Unknown channel format!</font><br>"); |
61 | } | 61 | } |
62 | } else if (command == "ME") { | ||
63 | QString text = IRCOutput::toHTML(line.right(line.length()-4)); | ||
64 | if (text.length() > 0) { | ||
65 | if (tab->isA("IRCChannelTab")) { | ||
66 | tab->appendText("<font color=\"#cc0000\">*" + m_server.nick() + " " + text + "</font><br>"); | ||
67 | m_session->sendAction(((IRCChannelTab *)tab)->channel(), text); | ||
68 | } else if (tab->isA("IRCQueryTab")) { | ||
69 | } else { | ||
70 | tab->appendText("<font color=\"#ff0000\">Invalid tab for this command</font><br>"); | ||
71 | } | ||
72 | } | ||
62 | } else { | 73 | } else { |
63 | tab->appendText("<font color=\"#ff0000\">Unknown command</font><br>"); | 74 | tab->appendText("<font color=\"#ff0000\">Unknown command</font><br>"); |
64 | } | 75 | } |
65 | } | 76 | } |
66 | 77 | ||
67 | void IRCServerTab::processCommand() { | 78 | void IRCServerTab::processCommand() { |
68 | QString text = m_field->text(); | 79 | QString text = m_field->text(); |
69 | if (text.startsWith("/") && !text.startsWith("//")) { | 80 | if (text.startsWith("/") && !text.startsWith("//")) { |
70 | /* Command mode */ | 81 | /* Command mode */ |
71 | executeCommand(this, text); | 82 | executeCommand(this, text); |
72 | } | 83 | } |
73 | m_field->clear(); | 84 | m_field->clear(); |
74 | } | 85 | } |
75 | 86 | ||
76 | void IRCServerTab::doConnect() { | 87 | void IRCServerTab::doConnect() { |
77 | m_session->beginSession(); | 88 | m_session->beginSession(); |
78 | } | 89 | } |
79 | 90 | ||
80 | void IRCServerTab::remove() { | 91 | void IRCServerTab::remove() { |
81 | /* Close requested */ | 92 | /* Close requested */ |
82 | if (m_session->isSessionActive()) { | 93 | if (m_session->isSessionActive()) { |
83 | /* While there is a running session */ | 94 | /* While there is a running session */ |
84 | m_close = TRUE; | 95 | m_close = TRUE; |
85 | m_session->endSession(); | 96 | m_session->endSession(); |
86 | } else { | 97 | } else { |
87 | /* Session has previously been closed */ | 98 | /* Session has previously been closed */ |
88 | m_channelTabs.first(); | 99 | m_channelTabs.first(); |
89 | while (m_channelTabs.current() != 0) { | 100 | while (m_channelTabs.current() != 0) { |
90 | m_mainWindow->killTab(m_channelTabs.current()); | 101 | m_mainWindow->killTab(m_channelTabs.current()); |
91 | } | 102 | } |
92 | m_mainWindow->killTab(this); | 103 | m_mainWindow->killTab(this); |
93 | } | 104 | } |
diff --git a/noncore/net/opieirc/ircsession.cpp b/noncore/net/opieirc/ircsession.cpp index 89df68c..122a943 100644 --- a/noncore/net/opieirc/ircsession.cpp +++ b/noncore/net/opieirc/ircsession.cpp | |||
@@ -7,64 +7,72 @@ IRCSession::IRCSession(IRCServer *server) { | |||
7 | m_connection = new IRCConnection(m_server); | 7 | m_connection = new IRCConnection(m_server); |
8 | m_parser = new IRCMessageParser(this); | 8 | m_parser = new IRCMessageParser(this); |
9 | connect(m_connection, SIGNAL(messageArrived(IRCMessage *)), this, SLOT(handleMessage(IRCMessage *))); | 9 | connect(m_connection, SIGNAL(messageArrived(IRCMessage *)), this, SLOT(handleMessage(IRCMessage *))); |
10 | connect(m_parser, SIGNAL(outputReady(IRCOutput)), this, SIGNAL(outputReady(IRCOutput))); | 10 | connect(m_parser, SIGNAL(outputReady(IRCOutput)), this, SIGNAL(outputReady(IRCOutput))); |
11 | connect(m_connection, SIGNAL(outputReady(IRCOutput)), this, SIGNAL(outputReady(IRCOutput))); | 11 | connect(m_connection, SIGNAL(outputReady(IRCOutput)), this, SIGNAL(outputReady(IRCOutput))); |
12 | } | 12 | } |
13 | 13 | ||
14 | IRCSession::~IRCSession() { | 14 | IRCSession::~IRCSession() { |
15 | /* We want this to get deleted automatically */ | 15 | /* We want this to get deleted automatically */ |
16 | m_channels.setAutoDelete(TRUE); | 16 | m_channels.setAutoDelete(TRUE); |
17 | m_people.setAutoDelete(TRUE); | 17 | m_people.setAutoDelete(TRUE); |
18 | 18 | ||
19 | delete m_parser; | 19 | delete m_parser; |
20 | delete m_connection; | 20 | delete m_connection; |
21 | } | 21 | } |
22 | 22 | ||
23 | void IRCSession::beginSession() { | 23 | void IRCSession::beginSession() { |
24 | m_connection->doConnect(); | 24 | m_connection->doConnect(); |
25 | } | 25 | } |
26 | 26 | ||
27 | void IRCSession::join(QString channelname) { | 27 | void IRCSession::join(QString channelname) { |
28 | m_connection->sendLine("JOIN "+channelname); | 28 | m_connection->sendLine("JOIN "+channelname); |
29 | } | 29 | } |
30 | 30 | ||
31 | void IRCSession::sendMessage(IRCPerson *person, QString message) { | 31 | void IRCSession::sendMessage(IRCPerson *person, QString message) { |
32 | m_connection->sendLine("PRIVMSG " + person->nick() + " :" + message); | 32 | m_connection->sendLine("PRIVMSG " + person->nick() + " :" + message); |
33 | } | 33 | } |
34 | 34 | ||
35 | void IRCSession::sendMessage(IRCChannel *channel, QString message) { | 35 | void IRCSession::sendMessage(IRCChannel *channel, QString message) { |
36 | m_connection->sendLine("PRIVMSG " + channel->channelname() + " :" + message); | 36 | m_connection->sendLine("PRIVMSG " + channel->channelname() + " :" + message); |
37 | } | 37 | } |
38 | 38 | ||
39 | void IRCSession::sendAction(IRCChannel *channel, QString message) { | ||
40 | m_connection->sendLine("PRIVMSG " + channel->channelname() + " :\001ACTION " + message + "\001"); | ||
41 | } | ||
42 | |||
43 | void IRCSession::sendAction(IRCPerson *person, QString message) { | ||
44 | m_connection->sendLine("PRIVMSG " + person->nick() + " :\001ACTION " + message + "\001"); | ||
45 | } | ||
46 | |||
39 | bool IRCSession::isSessionActive() { | 47 | bool IRCSession::isSessionActive() { |
40 | return m_connection->isConnected(); | 48 | return m_connection->isConnected(); |
41 | } | 49 | } |
42 | 50 | ||
43 | void IRCSession::endSession() { | 51 | void IRCSession::endSession() { |
44 | if (m_connection->isLoggedIn()) | 52 | if (m_connection->isLoggedIn()) |
45 | m_connection->sendLine("QUIT :" APP_VERSION); | 53 | m_connection->sendLine("QUIT :" APP_VERSION); |
46 | else | 54 | else |
47 | m_connection->close(); | 55 | m_connection->close(); |
48 | } | 56 | } |
49 | 57 | ||
50 | void IRCSession::part(IRCChannel *channel) { | 58 | void IRCSession::part(IRCChannel *channel) { |
51 | m_connection->sendLine("PART " + channel->channelname() + " :" + APP_VERSION); | 59 | m_connection->sendLine("PART " + channel->channelname() + " :" + APP_VERSION); |
52 | } | 60 | } |
53 | 61 | ||
54 | 62 | ||
55 | IRCChannel *IRCSession::getChannel(QString channelname) { | 63 | IRCChannel *IRCSession::getChannel(QString channelname) { |
56 | QListIterator<IRCChannel> it(m_channels); | 64 | QListIterator<IRCChannel> it(m_channels); |
57 | for (; it.current(); ++it) { | 65 | for (; it.current(); ++it) { |
58 | if (it.current()->channelname() == channelname) { | 66 | if (it.current()->channelname() == channelname) { |
59 | return it.current(); | 67 | return it.current(); |
60 | } | 68 | } |
61 | } | 69 | } |
62 | return 0; | 70 | return 0; |
63 | } | 71 | } |
64 | 72 | ||
65 | IRCPerson *IRCSession::getPerson(QString nickname) { | 73 | IRCPerson *IRCSession::getPerson(QString nickname) { |
66 | QListIterator<IRCPerson> it(m_people); | 74 | QListIterator<IRCPerson> it(m_people); |
67 | for (; it.current(); ++it) { | 75 | for (; it.current(); ++it) { |
68 | if (it.current()->nick() == nickname) { | 76 | if (it.current()->nick() == nickname) { |
69 | return it.current(); | 77 | return it.current(); |
70 | } | 78 | } |
diff --git a/noncore/net/opieirc/ircsession.h b/noncore/net/opieirc/ircsession.h index 59c26aa..aa4bed3 100644 --- a/noncore/net/opieirc/ircsession.h +++ b/noncore/net/opieirc/ircsession.h | |||
@@ -21,53 +21,55 @@ | |||
21 | #ifndef __IRCSESSION_H | 21 | #ifndef __IRCSESSION_H |
22 | #define __IRCSESSION_H | 22 | #define __IRCSESSION_H |
23 | 23 | ||
24 | #include <qstring.h> | 24 | #include <qstring.h> |
25 | #include <qlist.h> | 25 | #include <qlist.h> |
26 | #include "ircserver.h" | 26 | #include "ircserver.h" |
27 | #include "ircconnection.h" | 27 | #include "ircconnection.h" |
28 | #include "ircmessage.h" | 28 | #include "ircmessage.h" |
29 | #include "ircchannel.h" | 29 | #include "ircchannel.h" |
30 | #include "ircoutput.h" | 30 | #include "ircoutput.h" |
31 | 31 | ||
32 | class IRCMessageParser; | 32 | class IRCMessageParser; |
33 | 33 | ||
34 | /* The IRCSession stores all information relating to the connection | 34 | /* The IRCSession stores all information relating to the connection |
35 | to one IRC server. IRCSession makes it possible to run multiple | 35 | to one IRC server. IRCSession makes it possible to run multiple |
36 | IRC server connections from within the same program */ | 36 | IRC server connections from within the same program */ |
37 | 37 | ||
38 | class IRCSession : public QObject { | 38 | class IRCSession : public QObject { |
39 | friend class IRCMessageParser; | 39 | friend class IRCMessageParser; |
40 | Q_OBJECT | 40 | Q_OBJECT |
41 | public: | 41 | public: |
42 | IRCSession(IRCServer *server); | 42 | IRCSession(IRCServer *server); |
43 | ~IRCSession(); | 43 | ~IRCSession(); |
44 | 44 | ||
45 | void join(QString channel); | 45 | void join(QString channel); |
46 | void part(IRCChannel *channel); | 46 | void part(IRCChannel *channel); |
47 | void beginSession(); | 47 | void beginSession(); |
48 | bool isSessionActive(); | 48 | bool isSessionActive(); |
49 | void endSession(); | 49 | void endSession(); |
50 | 50 | ||
51 | void sendMessage(IRCPerson *person, QString message); | 51 | void sendMessage(IRCPerson *person, QString message); |
52 | void sendMessage(IRCChannel *channel, QString message); | 52 | void sendMessage(IRCChannel *channel, QString message); |
53 | void sendAction(IRCPerson *person, QString message); | ||
54 | void sendAction(IRCChannel *channel, QString message); | ||
53 | IRCChannel *getChannel(QString channelname); | 55 | IRCChannel *getChannel(QString channelname); |
54 | IRCPerson *getPerson(QString nickname); | 56 | IRCPerson *getPerson(QString nickname); |
55 | protected: | 57 | protected: |
56 | void addPerson(IRCPerson *person); | 58 | void addPerson(IRCPerson *person); |
57 | void addChannel(IRCChannel *channel); | 59 | void addChannel(IRCChannel *channel); |
58 | void removeChannel(IRCChannel *channel); | 60 | void removeChannel(IRCChannel *channel); |
59 | void removePerson(IRCPerson *person); | 61 | void removePerson(IRCPerson *person); |
60 | void getChannelsByPerson(IRCPerson *person, QList<IRCChannel> &channels); | 62 | void getChannelsByPerson(IRCPerson *person, QList<IRCChannel> &channels); |
61 | protected slots: | 63 | protected slots: |
62 | void handleMessage(IRCMessage *message); | 64 | void handleMessage(IRCMessage *message); |
63 | signals: | 65 | signals: |
64 | void outputReady(IRCOutput output); | 66 | void outputReady(IRCOutput output); |
65 | protected: | 67 | protected: |
66 | IRCServer *m_server; | 68 | IRCServer *m_server; |
67 | IRCConnection *m_connection; | 69 | IRCConnection *m_connection; |
68 | IRCMessageParser *m_parser; | 70 | IRCMessageParser *m_parser; |
69 | QList<IRCChannel> m_channels; | 71 | QList<IRCChannel> m_channels; |
70 | QList<IRCPerson> m_people; | 72 | QList<IRCPerson> m_people; |
71 | }; | 73 | }; |
72 | 74 | ||
73 | #endif /* __IRCSESSION_H */ | 75 | #endif /* __IRCSESSION_H */ |