summaryrefslogtreecommitdiff
path: root/noncore
authorwazlaf <wazlaf>2002-09-29 21:45:16 (UTC)
committer wazlaf <wazlaf>2002-09-29 21:45:16 (UTC)
commita54430dbebd980109afdf604c7bfc9b0e15c4fdb (patch) (unidiff)
treeb81722f654163301c67e98b4d210b1bcf068c20b /noncore
parent75c85d30c3f7de8d2785f70e0f28ef838ea7f419 (diff)
downloadopie-a54430dbebd980109afdf604c7bfc9b0e15c4fdb.zip
opie-a54430dbebd980109afdf604c7bfc9b0e15c4fdb.tar.gz
opie-a54430dbebd980109afdf604c7bfc9b0e15c4fdb.tar.bz2
modeless channel support
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opieirc/ircconnection.cpp2
-rw-r--r--noncore/net/opieirc/ircmessageparser.cpp2
-rw-r--r--noncore/net/opieirc/ircservereditor.cpp4
-rw-r--r--noncore/net/opieirc/ircservertab.cpp2
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 */
59void IRCConnection::dataReady() { 59void 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 */
79void IRCConnection::error(int num) { 79void 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
83void IRCConnection::disconnect() { 83void 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
89bool IRCConnection::isConnected() { 89bool 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
173void IRCMessageParser::parseLiteralPrivMsg(IRCMessage *message) { 173void 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
208void IRCMessageParser::parseLiteralNick(IRCMessage *message) { 208void 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
41void IRCServerEditor::accept() { 41void 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
66IRCServer IRCServerEditor::getServer() { 66IRCServer 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
50IRCSession *IRCServerTab::session() { 50IRCSession *IRCServerTab::session() {
51 return m_session; 51 return m_session;
52} 52}
53 53
54IRCServer *IRCServerTab::server() { 54IRCServer *IRCServerTab::server() {
55 return &m_server; 55 return &m_server;
56} 56}
57 57
58void IRCServerTab::settingsChanged() { 58void IRCServerTab::settingsChanged() {
59 m_textview->setText("<qt bgcolor=\"" + m_backgroundColor + "\"/>"); 59 m_textview->setText("<qt bgcolor=\"" + m_backgroundColor + "\"/>");
60} 60}
61 61
62void IRCServerTab::executeCommand(IRCTab *tab, QString line) { 62void 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;