author | wazlaf <wazlaf> | 2002-09-29 21:45:16 (UTC) |
---|---|---|
committer | wazlaf <wazlaf> | 2002-09-29 21:45:16 (UTC) |
commit | a54430dbebd980109afdf604c7bfc9b0e15c4fdb (patch) (unidiff) | |
tree | b81722f654163301c67e98b4d210b1bcf068c20b /noncore | |
parent | 75c85d30c3f7de8d2785f70e0f28ef838ea7f419 (diff) | |
download | opie-a54430dbebd980109afdf604c7bfc9b0e15c4fdb.zip opie-a54430dbebd980109afdf604c7bfc9b0e15c4fdb.tar.gz opie-a54430dbebd980109afdf604c7bfc9b0e15c4fdb.tar.bz2 |
modeless channel support
-rw-r--r-- | noncore/net/opieirc/ircconnection.cpp | 2 | ||||
-rw-r--r-- | noncore/net/opieirc/ircmessageparser.cpp | 2 | ||||
-rw-r--r-- | noncore/net/opieirc/ircservereditor.cpp | 4 | ||||
-rw-r--r-- | noncore/net/opieirc/ircservertab.cpp | 2 |
4 files changed, 5 insertions, 5 deletions
diff --git a/noncore/net/opieirc/ircconnection.cpp b/noncore/net/opieirc/ircconnection.cpp index 5eb0cf2..2325cca 100644 --- a/noncore/net/opieirc/ircconnection.cpp +++ b/noncore/net/opieirc/ircconnection.cpp | |||
@@ -43,49 +43,49 @@ void IRCConnection::login() { | |||
43 | emit outputReady(IRCOutput(OUTPUT_CLIENTMESSAGE, tr("Connected, logging in .."))); | 43 | emit outputReady(IRCOutput(OUTPUT_CLIENTMESSAGE, tr("Connected, logging in .."))); |
44 | m_connected = TRUE; | 44 | m_connected = TRUE; |
45 | gethostname(hostname, sizeof(hostname)-1); | 45 | gethostname(hostname, sizeof(hostname)-1); |
46 | hostname[sizeof (hostname) - 1] = 0; | 46 | hostname[sizeof (hostname) - 1] = 0; |
47 | 47 | ||
48 | /* Create a logon string and send it */ | 48 | /* Create a logon string and send it */ |
49 | if (m_server->password().length()>0) { | 49 | if (m_server->password().length()>0) { |
50 | loginString += "PASS " + m_server->password() + "\r\n"; | 50 | loginString += "PASS " + m_server->password() + "\r\n"; |
51 | } | 51 | } |
52 | loginString += "NICK " + m_server->nick() + "\r\n" + | 52 | loginString += "NICK " + m_server->nick() + "\r\n" + |
53 | "USER " + m_server->username() + " " + hostname + | 53 | "USER " + m_server->username() + " " + hostname + |
54 | " " + m_server->hostname() + " :" + m_server->realname() + "\r\n"; | 54 | " " + m_server->hostname() + " :" + m_server->realname() + "\r\n"; |
55 | sendLine(loginString); | 55 | sendLine(loginString); |
56 | } | 56 | } |
57 | 57 | ||
58 | /* Called when data arrives on the socket */ | 58 | /* Called when data arrives on the socket */ |
59 | void IRCConnection::dataReady() { | 59 | void IRCConnection::dataReady() { |
60 | while(m_socket->canReadLine()) { | 60 | while(m_socket->canReadLine()) { |
61 | IRCMessage message(m_socket->readLine()); | 61 | IRCMessage message(m_socket->readLine()); |
62 | if (!m_loggedIn && message.isNumerical() && message.commandNumber() == 1) { | 62 | if (!m_loggedIn && message.isNumerical() && message.commandNumber() == 1) { |
63 | /* Now autojoin all channels specified inside the server profile */ | 63 | /* Now autojoin all channels specified inside the server profile */ |
64 | QStringList channels = QStringList::split(QChar(','), m_server->channels()); | 64 | QStringList channels = QStringList::split(QChar(','), m_server->channels()); |
65 | for (QStringList::Iterator it = channels.begin(); it != channels.end(); ++it) { | 65 | for (QStringList::Iterator it = channels.begin(); it != channels.end(); ++it) { |
66 | QString channelName = (*it).stripWhiteSpace(); | 66 | QString channelName = (*it).stripWhiteSpace(); |
67 | if (channelName.startsWith("#")) { | 67 | if (channelName.startsWith("#") || channelName.startsWith("+")) { |
68 | sendLine("JOIN "+ channelName); | 68 | sendLine("JOIN "+ channelName); |
69 | } | 69 | } |
70 | } | 70 | } |
71 | m_loggedIn = TRUE; | 71 | m_loggedIn = TRUE; |
72 | emit outputReady(IRCOutput(OUTPUT_CLIENTMESSAGE, tr("Successfully logged in."))); | 72 | emit outputReady(IRCOutput(OUTPUT_CLIENTMESSAGE, tr("Successfully logged in."))); |
73 | } | 73 | } |
74 | emit messageArrived(&message); | 74 | emit messageArrived(&message); |
75 | } | 75 | } |
76 | } | 76 | } |
77 | 77 | ||
78 | /* Called if any type of socket error occurs */ | 78 | /* Called if any type of socket error occurs */ |
79 | void IRCConnection::error(int num) { | 79 | void IRCConnection::error(int num) { |
80 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Socket error : ") + strerror(num))); | 80 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Socket error : ") + strerror(num))); |
81 | } | 81 | } |
82 | 82 | ||
83 | void IRCConnection::disconnect() { | 83 | void IRCConnection::disconnect() { |
84 | m_connected = FALSE; | 84 | m_connected = FALSE; |
85 | m_loggedIn = FALSE; | 85 | m_loggedIn = FALSE; |
86 | emit outputReady(IRCOutput(OUTPUT_CONNCLOSE, tr("Connection closed"))); | 86 | emit outputReady(IRCOutput(OUTPUT_CONNCLOSE, tr("Connection closed"))); |
87 | } | 87 | } |
88 | 88 | ||
89 | bool IRCConnection::isConnected() { | 89 | bool IRCConnection::isConnected() { |
90 | return m_connected; | 90 | return m_connected; |
91 | } | 91 | } |
diff --git a/noncore/net/opieirc/ircmessageparser.cpp b/noncore/net/opieirc/ircmessageparser.cpp index 2b77414..a95c64e 100644 --- a/noncore/net/opieirc/ircmessageparser.cpp +++ b/noncore/net/opieirc/ircmessageparser.cpp | |||
@@ -162,49 +162,49 @@ void IRCMessageParser::parseLiteralPart(IRCMessage *message) { | |||
162 | emit outputReady(output); | 162 | emit outputReady(output); |
163 | delete person; | 163 | delete person; |
164 | } else { | 164 | } else { |
165 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Parting person not found - desynchronized?"))); | 165 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Parting person not found - desynchronized?"))); |
166 | } | 166 | } |
167 | } | 167 | } |
168 | } else { | 168 | } else { |
169 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Channel for part not found - desynchronized?"))); | 169 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Channel for part not found - desynchronized?"))); |
170 | } | 170 | } |
171 | } | 171 | } |
172 | 172 | ||
173 | void IRCMessageParser::parseLiteralPrivMsg(IRCMessage *message) { | 173 | void IRCMessageParser::parseLiteralPrivMsg(IRCMessage *message) { |
174 | if (m_session->m_server->nick() == message->param(0)) { | 174 | if (m_session->m_server->nick() == message->param(0)) { |
175 | /* IRC Query message detected, verify sender and display it */ | 175 | /* IRC Query message detected, verify sender and display it */ |
176 | IRCPerson mask(message->prefix()); | 176 | IRCPerson mask(message->prefix()); |
177 | IRCPerson *person = m_session->getPerson(mask.nick()); | 177 | IRCPerson *person = m_session->getPerson(mask.nick()); |
178 | if (!person) { | 178 | if (!person) { |
179 | /* Person not yet known, create and add to the current session */ | 179 | /* Person not yet known, create and add to the current session */ |
180 | person = new IRCPerson(message->prefix()); | 180 | person = new IRCPerson(message->prefix()); |
181 | m_session->addPerson(person); | 181 | m_session->addPerson(person); |
182 | } | 182 | } |
183 | IRCOutput output(OUTPUT_QUERYPRIVMSG, message->param(1)); | 183 | IRCOutput output(OUTPUT_QUERYPRIVMSG, message->param(1)); |
184 | output.addParam(person); | 184 | output.addParam(person); |
185 | emit outputReady(output); | 185 | emit outputReady(output); |
186 | } else if (message->param(0).at(0) == '#') { | 186 | } else if (message->param(0).at(0) == '#' || message->param(0).at(0) == '+') { |
187 | /* IRC Channel message detected, verify sender, channel and display it */ | 187 | /* IRC Channel message detected, verify sender, channel and display it */ |
188 | IRCChannel *channel = m_session->getChannel(message->param(0).lower()); | 188 | IRCChannel *channel = m_session->getChannel(message->param(0).lower()); |
189 | if (channel) { | 189 | if (channel) { |
190 | IRCPerson mask(message->prefix()); | 190 | IRCPerson mask(message->prefix()); |
191 | IRCChannelPerson *person = channel->getPerson(mask.nick()); | 191 | IRCChannelPerson *person = channel->getPerson(mask.nick()); |
192 | if (person) { | 192 | if (person) { |
193 | IRCOutput output(OUTPUT_CHANPRIVMSG, message->param(1)); | 193 | IRCOutput output(OUTPUT_CHANPRIVMSG, message->param(1)); |
194 | output.addParam(channel); | 194 | output.addParam(channel); |
195 | output.addParam(person); | 195 | output.addParam(person); |
196 | emit outputReady(output); | 196 | emit outputReady(output); |
197 | } else { | 197 | } else { |
198 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Channel message with unknown sender"))); | 198 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Channel message with unknown sender"))); |
199 | } | 199 | } |
200 | } else { | 200 | } else { |
201 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Channel message with unknown channel ") + message->param(0).lower())); | 201 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Channel message with unknown channel ") + message->param(0).lower())); |
202 | } | 202 | } |
203 | } else { | 203 | } else { |
204 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Received PRIVMSG of unknown type"))); | 204 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Received PRIVMSG of unknown type"))); |
205 | } | 205 | } |
206 | } | 206 | } |
207 | 207 | ||
208 | void IRCMessageParser::parseLiteralNick(IRCMessage *message) { | 208 | void IRCMessageParser::parseLiteralNick(IRCMessage *message) { |
209 | IRCPerson mask(message->prefix()); | 209 | IRCPerson mask(message->prefix()); |
210 | 210 | ||
diff --git a/noncore/net/opieirc/ircservereditor.cpp b/noncore/net/opieirc/ircservereditor.cpp index 5e916ae..f976c84 100644 --- a/noncore/net/opieirc/ircservereditor.cpp +++ b/noncore/net/opieirc/ircservereditor.cpp | |||
@@ -33,45 +33,45 @@ IRCServerEditor::IRCServerEditor(IRCServer server, QWidget* parent, const char* | |||
33 | m_channels = new QLineEdit(server.channels(), this); | 33 | m_channels = new QLineEdit(server.channels(), this); |
34 | layout->addWidget(label, 6, 0); | 34 | layout->addWidget(label, 6, 0); |
35 | layout->addWidget(m_channels, 6, 1); | 35 | layout->addWidget(m_channels, 6, 1); |
36 | setCaption(tr("Edit server information")); | 36 | setCaption(tr("Edit server information")); |
37 | showMaximized(); | 37 | showMaximized(); |
38 | } | 38 | } |
39 | 39 | ||
40 | 40 | ||
41 | void IRCServerEditor::accept() { | 41 | void IRCServerEditor::accept() { |
42 | if (m_name->text().length()==0) | 42 | if (m_name->text().length()==0) |
43 | QMessageBox::critical(this, tr("Error"), tr("Profile name required")); | 43 | QMessageBox::critical(this, tr("Error"), tr("Profile name required")); |
44 | else if (m_hostname->text().length()==0) | 44 | else if (m_hostname->text().length()==0) |
45 | QMessageBox::critical(this, tr("Error"), tr("Host name required")); | 45 | QMessageBox::critical(this, tr("Error"), tr("Host name required")); |
46 | else if (m_port->text().toInt()<=0) | 46 | else if (m_port->text().toInt()<=0) |
47 | QMessageBox::critical(this, tr("Error"), tr("Port required")); | 47 | QMessageBox::critical(this, tr("Error"), tr("Port required")); |
48 | else if (m_nickname->text().length()==0) | 48 | else if (m_nickname->text().length()==0) |
49 | QMessageBox::critical(this, tr("Error"), tr("Nickname required")); | 49 | QMessageBox::critical(this, tr("Error"), tr("Nickname required")); |
50 | else if (m_realname->text().length()==0) | 50 | else if (m_realname->text().length()==0) |
51 | QMessageBox::critical(this, tr("Error"), tr("Realname required")); | 51 | QMessageBox::critical(this, tr("Error"), tr("Realname required")); |
52 | else { | 52 | else { |
53 | /* Now verify whether the channel list has a valid format */ | 53 | /* Now verify whether the channel list has a valid format */ |
54 | QStringList channels = QStringList::split(QChar(','), m_channels->text()); | 54 | QStringList channels = QStringList::split(QChar(','), m_channels->text()); |
55 | for (QStringList::Iterator it = channels.begin(); it != channels.end(); ++it) { | 55 | for (QStringList::Iterator it = channels.begin(); it != channels.end(); ++it) { |
56 | QString channelName = (*it).stripWhiteSpace(); | 56 | QString channelName = (*it).stripWhiteSpace(); |
57 | if (!channelName.startsWith("#")) { | 57 | if (!channelName.startsWith("#") && !channelName.startsWith("+")) { |
58 | QMessageBox::critical(this, tr("Error"), tr("The channel list needs to contain a\ncomma separated list of channel\n names which start with '#'")); | 58 | QMessageBox::critical(this, tr("Error"), tr("The channel list needs to contain a\ncomma separated list of channel\n names which start with either '#' or '+'")); |
59 | return; | 59 | return; |
60 | } | 60 | } |
61 | } | 61 | } |
62 | QDialog::accept(); | 62 | QDialog::accept(); |
63 | } | 63 | } |
64 | } | 64 | } |
65 | 65 | ||
66 | IRCServer IRCServerEditor::getServer() { | 66 | IRCServer IRCServerEditor::getServer() { |
67 | IRCServer server; | 67 | IRCServer server; |
68 | server.setName(m_name->text()); | 68 | server.setName(m_name->text()); |
69 | server.setHostname(m_hostname->text()); | 69 | server.setHostname(m_hostname->text()); |
70 | server.setPort(m_port->text().toInt()); | 70 | server.setPort(m_port->text().toInt()); |
71 | server.setNick(m_nickname->text()); | 71 | server.setNick(m_nickname->text()); |
72 | server.setRealname(m_realname->text()); | 72 | server.setRealname(m_realname->text()); |
73 | server.setUsername(m_nickname->text()); | 73 | server.setUsername(m_nickname->text()); |
74 | server.setPassword(m_password->text()); | 74 | server.setPassword(m_password->text()); |
75 | server.setChannels(m_channels->text()); | 75 | server.setChannels(m_channels->text()); |
76 | return server; | 76 | return server; |
77 | } | 77 | } |
diff --git a/noncore/net/opieirc/ircservertab.cpp b/noncore/net/opieirc/ircservertab.cpp index aea58a3..d16c05f 100644 --- a/noncore/net/opieirc/ircservertab.cpp +++ b/noncore/net/opieirc/ircservertab.cpp | |||
@@ -47,49 +47,49 @@ QString IRCServerTab::title() { | |||
47 | return "Server"; | 47 | return "Server"; |
48 | } | 48 | } |
49 | 49 | ||
50 | IRCSession *IRCServerTab::session() { | 50 | IRCSession *IRCServerTab::session() { |
51 | return m_session; | 51 | return m_session; |
52 | } | 52 | } |
53 | 53 | ||
54 | IRCServer *IRCServerTab::server() { | 54 | IRCServer *IRCServerTab::server() { |
55 | return &m_server; | 55 | return &m_server; |
56 | } | 56 | } |
57 | 57 | ||
58 | void IRCServerTab::settingsChanged() { | 58 | void IRCServerTab::settingsChanged() { |
59 | m_textview->setText("<qt bgcolor=\"" + m_backgroundColor + "\"/>"); | 59 | m_textview->setText("<qt bgcolor=\"" + m_backgroundColor + "\"/>"); |
60 | } | 60 | } |
61 | 61 | ||
62 | void IRCServerTab::executeCommand(IRCTab *tab, QString line) { | 62 | void IRCServerTab::executeCommand(IRCTab *tab, QString line) { |
63 | QTextIStream stream(&line); | 63 | QTextIStream stream(&line); |
64 | QString command; | 64 | QString command; |
65 | stream >> command; | 65 | stream >> command; |
66 | command = command.upper().right(command.length()-1); | 66 | command = command.upper().right(command.length()-1); |
67 | 67 | ||
68 | if (command == "JOIN") { | 68 | if (command == "JOIN") { |
69 | QString channel; | 69 | QString channel; |
70 | stream >> channel; | 70 | stream >> channel; |
71 | if (channel.length() > 0 && channel.startsWith("#")) { | 71 | if (channel.length() > 0 && (channel.startsWith("#") || channel.startsWith("+"))) { |
72 | m_session->join(channel); | 72 | m_session->join(channel); |
73 | } else { | 73 | } else { |
74 | tab->appendText("<font color=\"" + m_errorColor + "\">Unknown channel format!</font><br>"); | 74 | tab->appendText("<font color=\"" + m_errorColor + "\">Unknown channel format!</font><br>"); |
75 | } | 75 | } |
76 | } else if (command == "ME") { | 76 | } else if (command == "ME") { |
77 | QString text = line.right(line.length()-4); | 77 | QString text = line.right(line.length()-4); |
78 | if (text.length() > 0) { | 78 | if (text.length() > 0) { |
79 | if (tab->isA("IRCChannelTab")) { | 79 | if (tab->isA("IRCChannelTab")) { |
80 | tab->appendText("<font color=\"" + m_selfColor + "\">*" + IRCOutput::toHTML(m_server.nick()) + " " + IRCOutput::toHTML(text) + "</font><br>"); | 80 | tab->appendText("<font color=\"" + m_selfColor + "\">*" + IRCOutput::toHTML(m_server.nick()) + " " + IRCOutput::toHTML(text) + "</font><br>"); |
81 | m_session->sendAction(((IRCChannelTab *)tab)->channel(), text); | 81 | m_session->sendAction(((IRCChannelTab *)tab)->channel(), text); |
82 | } else if (tab->isA("IRCQueryTab")) { | 82 | } else if (tab->isA("IRCQueryTab")) { |
83 | tab->appendText("<font color=\"" + m_selfColor + "\">*" + IRCOutput::toHTML(m_server.nick()) + " " + IRCOutput::toHTML(text) + "</font><br>"); | 83 | tab->appendText("<font color=\"" + m_selfColor + "\">*" + IRCOutput::toHTML(m_server.nick()) + " " + IRCOutput::toHTML(text) + "</font><br>"); |
84 | m_session->sendAction(((IRCQueryTab *)tab)->person(), text); | 84 | m_session->sendAction(((IRCQueryTab *)tab)->person(), text); |
85 | } else { | 85 | } else { |
86 | tab->appendText("<font color=\"" + m_errorColor + "\">Invalid tab for this command</font><br>"); | 86 | tab->appendText("<font color=\"" + m_errorColor + "\">Invalid tab for this command</font><br>"); |
87 | } | 87 | } |
88 | } | 88 | } |
89 | } else if (command == "MSG") { | 89 | } else if (command == "MSG") { |
90 | QString nickname; | 90 | QString nickname; |
91 | stream >> nickname; | 91 | stream >> nickname; |
92 | if (nickname.length() > 0) { | 92 | if (nickname.length() > 0) { |
93 | if (line.length() > 6 + nickname.length()) { | 93 | if (line.length() > 6 + nickname.length()) { |
94 | QString text = line.right(line.length()-nickname.length()-6); | 94 | QString text = line.right(line.length()-nickname.length()-6); |
95 | IRCPerson person; | 95 | IRCPerson person; |