Diffstat (limited to 'noncore/net/opieirc/ircservertab.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/opieirc/ircservertab.cpp | 111 |
1 files changed, 100 insertions, 11 deletions
diff --git a/noncore/net/opieirc/ircservertab.cpp b/noncore/net/opieirc/ircservertab.cpp index 5aa447f..1d9520a 100644 --- a/noncore/net/opieirc/ircservertab.cpp +++ b/noncore/net/opieirc/ircservertab.cpp | |||
@@ -22,9 +22,15 @@ IRCServerTab::IRCServerTab(IRCServer server, MainWindow *mainWindow, QWidget *pa | |||
22 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); | 22 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); |
23 | m_field->setFocus(); | 23 | m_field->setFocus(); |
24 | connect(m_session, SIGNAL(outputReady(IRCOutput)), this, SLOT(display(IRCOutput))); | 24 | connect(m_session, SIGNAL(outputReady(IRCOutput)), this, SLOT(display(IRCOutput))); |
25 | connect(m_mainWindow, SIGNAL(updateScroll()), this, SLOT(scrolling())); | ||
25 | settingsChanged(); | 26 | settingsChanged(); |
26 | } | 27 | } |
27 | 28 | ||
29 | void IRCServerTab::scrolling(){ | ||
30 | m_textview->ensureVisible(0, m_textview->contentsHeight()); | ||
31 | } | ||
32 | |||
33 | |||
28 | void IRCServerTab::appendText(QString text) { | 34 | void IRCServerTab::appendText(QString text) { |
29 | /* not using append because it creates layout problems */ | 35 | /* not using append because it creates layout problems */ |
30 | QString txt = m_textview->text() + text + "\n"; | 36 | QString txt = m_textview->text() + text + "\n"; |
@@ -64,6 +70,10 @@ QString IRCServerTab::title() { | |||
64 | IRCSession *IRCServerTab::session() { | 70 | IRCSession *IRCServerTab::session() { |
65 | return m_session; | 71 | return m_session; |
66 | } | 72 | } |
73 | /* | ||
74 | QString *IRCServerTab::mynick() { | ||
75 | return (*m_server->nick()); | ||
76 | } */ | ||
67 | 77 | ||
68 | IRCServer *IRCServerTab::server() { | 78 | IRCServer *IRCServerTab::server() { |
69 | return &m_server; | 79 | return &m_server; |
@@ -79,16 +89,92 @@ void IRCServerTab::executeCommand(IRCTab *tab, QString line) { | |||
79 | QString command; | 89 | QString command; |
80 | stream >> command; | 90 | stream >> command; |
81 | command = command.upper().right(command.length()-1); | 91 | command = command.upper().right(command.length()-1); |
82 | 92 | ||
83 | if (command == "JOIN") { | 93 | //JOIN |
94 | if (command == "JOIN" || command == "J") { | ||
84 | QString channel; | 95 | QString channel; |
85 | stream >> channel; | 96 | stream >> channel; |
86 | if (channel.length() > 0 && (channel.startsWith("#") || channel.startsWith("+"))) { | 97 | if (channel.length() > 0 && (channel.startsWith("#") || channel.startsWith("+"))) { |
87 | m_session->join(channel); | 98 | m_session->join(channel); |
88 | } else { | 99 | } else { |
89 | tab->appendText("<font color=\"" + m_errorColor + "\">Unknown channel format!</font><br>"); | 100 | tab->appendText("<font color=\"" + m_errorColor + "\">Unknown channel format!</font><br>"); |
90 | } | 101 | } |
91 | } else if (command == "ME") { | 102 | } |
103 | |||
104 | //KICK | ||
105 | else if (command == "KICK"){ | ||
106 | QString nickname; | ||
107 | stream >> nickname; | ||
108 | if (nickname.length() > 0) { | ||
109 | if (line.length() > 7 + nickname.length()) { | ||
110 | QString text = line.right(line.length()-nickname.length()-7); | ||
111 | IRCPerson person; | ||
112 | person.setNick(nickname); | ||
113 | m_session->kick(((IRCChannelTab *)tab)->channel(), &person, text); | ||
114 | } else { | ||
115 | IRCPerson person; | ||
116 | person.setNick(nickname); | ||
117 | m_session->kick(((IRCChannelTab *)tab)->channel(), &person); | ||
118 | } | ||
119 | } | ||
120 | } | ||
121 | |||
122 | else if (command == "OP"){ | ||
123 | QString nickname; | ||
124 | stream >> nickname; | ||
125 | if (nickname.length() > 0) { | ||
126 | if (line.length() > 7 + nickname.length()) { | ||
127 | QString text = line.right(line.length()-nickname.length()-7); | ||
128 | IRCPerson person; | ||
129 | person.setNick(nickname); | ||
130 | m_session->kick(((IRCChannelTab *)tab)->channel(), &person, text); | ||
131 | } else { | ||
132 | IRCPerson person; | ||
133 | person.setNick(nickname); | ||
134 | m_session->kick(((IRCChannelTab *)tab)->channel(), &person); | ||
135 | } | ||
136 | } | ||
137 | } | ||
138 | |||
139 | //SEND MODES | ||
140 | else if (command == "MODE"){ | ||
141 | QString text = line.right(line.length()-6); | ||
142 | if (text.length() > 0) { | ||
143 | m_session->mode(text); | ||
144 | } else { | ||
145 | tab->appendText("<font color=\"" + m_errorColor + "\">/mode channel {[+|-]|o|p|s|i|t|n|b|v} [limit] [user] [ban mask]<br>/mode nickname {[+|-]|i|w|s|o}</font><br>"); | ||
146 | } | ||
147 | } | ||
148 | //SEND RAW MESSAGE TO SERVER, COMPLETELY UNCHECKED - anything in the RFC...or really anything you want | ||
149 | else if (command == "RAW"){ | ||
150 | QString text = line.right(line.length()-5); | ||
151 | if (text.length() > 0) { | ||
152 | m_session->raw(text); | ||
153 | } | ||
154 | } | ||
155 | else if (command == "SUSPEND"){ | ||
156 | QString text = line.right(line.length()-9); | ||
157 | if (text.upper() == "ON") { | ||
158 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; | ||
159 | } | ||
160 | else if (text.upper() == "OFF"){ | ||
161 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Disable; | ||
162 | } else { | ||
163 | tab->appendText("<font color=\"" + m_errorColor + "\">Line: "+ line +"</font><br>Text: "+text); | ||
164 | } | ||
165 | } | ||
166 | |||
167 | else if (command == "QUIT"){ | ||
168 | QString text = line.right(line.length()-6); | ||
169 | if (text.length() > 0) { | ||
170 | m_session->quit(text); | ||
171 | } else { | ||
172 | m_session->quit(); | ||
173 | } | ||
174 | } | ||
175 | |||
176 | //SEND ACTION | ||
177 | else if (command == "ME") { | ||
92 | QString text = line.right(line.length()-4); | 178 | QString text = line.right(line.length()-4); |
93 | if (text.length() > 0) { | 179 | if (text.length() > 0) { |
94 | if (tab->isA("IRCChannelTab")) { | 180 | if (tab->isA("IRCChannelTab")) { |
@@ -98,10 +184,12 @@ void IRCServerTab::executeCommand(IRCTab *tab, QString line) { | |||
98 | tab->appendText("<font color=\"" + m_selfColor + "\">*" + IRCOutput::toHTML(m_server.nick()) + " " + IRCOutput::toHTML(text) + "</font><br>"); | 184 | tab->appendText("<font color=\"" + m_selfColor + "\">*" + IRCOutput::toHTML(m_server.nick()) + " " + IRCOutput::toHTML(text) + "</font><br>"); |
99 | m_session->sendAction(((IRCQueryTab *)tab)->person(), text); | 185 | m_session->sendAction(((IRCQueryTab *)tab)->person(), text); |
100 | } else { | 186 | } else { |
101 | tab->appendText("<font color=\"" + m_errorColor + "\">Invalid tab for this command</font><br>"); | 187 | tab->appendText("<font color=\"" + m_errorColor + "\">Invalid tab for this command</font><br>"); |
102 | } | 188 | } |
103 | } | 189 | } |
104 | } else if (command == "MSG") { | 190 | } |
191 | //SEND PRIVMSG | ||
192 | else if (command == "MSG") { | ||
105 | QString nickname; | 193 | QString nickname; |
106 | stream >> nickname; | 194 | stream >> nickname; |
107 | if (nickname.length() > 0) { | 195 | if (nickname.length() > 0) { |
@@ -112,9 +200,10 @@ void IRCServerTab::executeCommand(IRCTab *tab, QString line) { | |||
112 | tab->appendText("<font color=\"" + m_textColor + "\">></font><font color=\"" + m_otherColor + "\">"+IRCOutput::toHTML(nickname)+"</font><font color=\"" + m_textColor + "\">< "+IRCOutput::toHTML(text)+"</font><br>"); | 200 | tab->appendText("<font color=\"" + m_textColor + "\">></font><font color=\"" + m_otherColor + "\">"+IRCOutput::toHTML(nickname)+"</font><font color=\"" + m_textColor + "\">< "+IRCOutput::toHTML(text)+"</font><br>"); |
113 | m_session->sendMessage(&person, text); | 201 | m_session->sendMessage(&person, text); |
114 | } | 202 | } |
115 | } | 203 | } |
116 | } else { | 204 | } |
117 | tab->appendText("<font color=\"" + m_errorColor + "\">Unknown command</font><br>"); | 205 | else { |
206 | tab->appendText("<font color=\"" + m_errorColor + "\">Unknown command</font><br>"); | ||
118 | } | 207 | } |
119 | } | 208 | } |
120 | 209 | ||
@@ -153,7 +242,7 @@ void IRCServerTab::remove() { | |||
153 | 242 | ||
154 | IRCChannelTab *IRCServerTab::getTabForChannel(IRCChannel *channel) { | 243 | IRCChannelTab *IRCServerTab::getTabForChannel(IRCChannel *channel) { |
155 | QListIterator<IRCChannelTab> it(m_channelTabs); | 244 | QListIterator<IRCChannelTab> it(m_channelTabs); |
156 | 245 | ||
157 | for (; it.current(); ++it) { | 246 | for (; it.current(); ++it) { |
158 | if (it.current()->channel() == channel) | 247 | if (it.current()->channel() == channel) |
159 | return it.current(); | 248 | return it.current(); |
@@ -163,7 +252,7 @@ IRCChannelTab *IRCServerTab::getTabForChannel(IRCChannel *channel) { | |||
163 | 252 | ||
164 | IRCQueryTab *IRCServerTab::getTabForQuery(IRCPerson *person) { | 253 | IRCQueryTab *IRCServerTab::getTabForQuery(IRCPerson *person) { |
165 | QListIterator<IRCQueryTab> it(m_queryTabs); | 254 | QListIterator<IRCQueryTab> it(m_queryTabs); |
166 | 255 | ||
167 | for (; it.current(); ++it) { | 256 | for (; it.current(); ++it) { |
168 | if (it.current()->person()->nick() == person->nick()) | 257 | if (it.current()->person()->nick() == person->nick()) |
169 | return it.current(); | 258 | return it.current(); |