author | kergoth <kergoth> | 2003-08-09 17:00:23 (UTC) |
---|---|---|
committer | kergoth <kergoth> | 2003-08-09 17:00:23 (UTC) |
commit | c33d5ec60361238e50a4a9d6e0eec03e396dce60 (patch) (unidiff) | |
tree | 31c0c85dc4262044db90c7918014bc45265ef420 | |
parent | 78c296d534589835801fb6374ac9d43d44b2b1c9 (diff) | |
download | opie-c33d5ec60361238e50a4a9d6e0eec03e396dce60.zip opie-c33d5ec60361238e50a4a9d6e0eec03e396dce60.tar.gz opie-c33d5ec60361238e50a4a9d6e0eec03e396dce60.tar.bz2 |
Merge from BRANCH_1_0
28 files changed, 334 insertions, 635 deletions
diff --git a/noncore/net/mailit/config.in b/noncore/net/mailit/config.in index 142b840..2b56b5f 100644 --- a/noncore/net/mailit/config.in +++ b/noncore/net/mailit/config.in | |||
@@ -1,4 +1,4 @@ | |||
1 | config MAILIT | 1 | config MAILIT |
2 | boolean "opie-mailit (a simple POP3 email client)" | 2 | boolean "mailit" |
3 | default "n" | 3 | default "n" |
4 | depends ( LIBQPE || LIBQPE-X11 ) | 4 | depends ( LIBQPE || LIBQPE-X11 ) |
diff --git a/noncore/net/mailit/popclient.cpp b/noncore/net/mailit/popclient.cpp index 5da3bcb..1df6b2b 100644 --- a/noncore/net/mailit/popclient.cpp +++ b/noncore/net/mailit/popclient.cpp | |||
@@ -1,331 +1,332 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2001 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2001 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qt Palmtop Environment. | 4 | ** This file is part of Qt Palmtop Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | #include "popclient.h" | 20 | #include "popclient.h" |
21 | #include "emailhandler.h" | 21 | #include "emailhandler.h" |
22 | //#define APOP_TEST | 22 | //#define APOP_TEST |
23 | 23 | ||
24 | extern "C" { | 24 | extern "C" { |
25 | #include "md5.h" | 25 | #include "md5.h" |
26 | } | 26 | } |
27 | 27 | ||
28 | #include <qcstring.h> | 28 | #include <qcstring.h> |
29 | 29 | ||
30 | PopClient::PopClient() | 30 | PopClient::PopClient() |
31 | { | 31 | { |
32 | 32 | ||
33 | socket = new QSocket(this, "popClient"); | 33 | socket = new QSocket(this, "popClient"); |
34 | connect(socket, SIGNAL(error(int)), this, SLOT(errorHandling(int))); | 34 | connect(socket, SIGNAL(error(int)), this, SLOT(errorHandling(int))); |
35 | connect(socket, SIGNAL(connected()), this, SLOT(connectionEstablished())); | 35 | connect(socket, SIGNAL(connected()), this, SLOT(connectionEstablished())); |
36 | connect(socket, SIGNAL(readyRead()), this, SLOT(incomingData())); | 36 | connect(socket, SIGNAL(readyRead()), this, SLOT(incomingData())); |
37 | 37 | ||
38 | stream = new QTextStream(socket); | 38 | stream = new QTextStream(socket); |
39 | 39 | ||
40 | receiving = FALSE; | 40 | receiving = FALSE; |
41 | synchronize = FALSE; | 41 | synchronize = FALSE; |
42 | lastSync = 0; | 42 | lastSync = 0; |
43 | headerLimit = 0; | 43 | headerLimit = 0; |
44 | mailList = 0; | ||
44 | preview = FALSE; | 45 | preview = FALSE; |
45 | } | 46 | } |
46 | 47 | ||
47 | PopClient::~PopClient() | 48 | PopClient::~PopClient() |
48 | { | 49 | { |
49 | delete socket; | 50 | delete socket; |
50 | delete stream; | 51 | delete stream; |
51 | } | 52 | } |
52 | 53 | ||
53 | void PopClient::newConnection(const QString &target, int port) | 54 | void PopClient::newConnection(const QString &target, int port) |
54 | { | 55 | { |
55 | if (receiving) { | 56 | if (receiving) { |
56 | qWarning("socket in use, connection refused"); | 57 | qWarning("socket in use, connection refused"); |
57 | return; | 58 | return; |
58 | } | 59 | } |
59 | 60 | ||
60 | status = Init; | 61 | status = Init; |
61 | 62 | ||
62 | socket->connectToHost(target, port); | 63 | socket->connectToHost(target, port); |
63 | receiving = TRUE; | 64 | receiving = TRUE; |
64 | //selected = FALSE; | 65 | //selected = FALSE; |
65 | 66 | ||
66 | emit updateStatus(tr("DNS lookup")); | 67 | emit updateStatus(tr("DNS lookup")); |
67 | } | 68 | } |
68 | 69 | ||
69 | void PopClient::setAccount(const QString &popUser, const QString &popPasswd) | 70 | void PopClient::setAccount(const QString &popUser, const QString &popPasswd) |
70 | { | 71 | { |
71 | popUserName = popUser; | 72 | popUserName = popUser; |
72 | popPassword = popPasswd; | 73 | popPassword = popPasswd; |
73 | } | 74 | } |
74 | 75 | ||
75 | void PopClient::setSynchronize(int lastCount) | 76 | void PopClient::setSynchronize(int lastCount) |
76 | { | 77 | { |
77 | synchronize = TRUE; | 78 | synchronize = TRUE; |
78 | lastSync = lastCount; | 79 | lastSync = lastCount; |
79 | } | 80 | } |
80 | 81 | ||
81 | void PopClient::removeSynchronize() | 82 | void PopClient::removeSynchronize() |
82 | { | 83 | { |
83 | synchronize = FALSE; | 84 | synchronize = FALSE; |
84 | lastSync = 0; | 85 | lastSync = 0; |
85 | } | 86 | } |
86 | 87 | ||
87 | void PopClient::headersOnly(bool headers, int limit) | 88 | void PopClient::headersOnly(bool headers, int limit) |
88 | { | 89 | { |
89 | preview = headers; | 90 | preview = headers; |
90 | headerLimit = limit; | 91 | headerLimit = limit; |
91 | } | 92 | } |
92 | 93 | ||
93 | void PopClient::setSelectedMails(MailList *list) | 94 | void PopClient::setSelectedMails(MailList *list) |
94 | { | 95 | { |
95 | selected = TRUE; | 96 | selected = TRUE; |
96 | mailList = list; | 97 | mailList = list; |
97 | } | 98 | } |
98 | 99 | ||
99 | void PopClient::connectionEstablished() | 100 | void PopClient::connectionEstablished() |
100 | { | 101 | { |
101 | emit updateStatus(tr("Connection established")); | 102 | emit updateStatus(tr("Connection established")); |
102 | } | 103 | } |
103 | 104 | ||
104 | void PopClient::errorHandling(int status) | 105 | void PopClient::errorHandling(int status) |
105 | { | 106 | { |
106 | errorHandlingWithMsg( status, QString::null ); | 107 | errorHandlingWithMsg( status, QString::null ); |
107 | } | 108 | } |
108 | void PopClient::errorHandlingWithMsg(int status, const QString & Msg ) | 109 | void PopClient::errorHandlingWithMsg(int status, const QString & Msg ) |
109 | { | 110 | { |
110 | emit updateStatus(tr("Error Occured")); | 111 | emit updateStatus(tr("Error Occured")); |
111 | emit errorOccurred(status, Msg); | 112 | emit errorOccurred(status, Msg); |
112 | socket->close(); | 113 | socket->close(); |
113 | receiving = FALSE; | 114 | receiving = FALSE; |
114 | } | 115 | } |
115 | 116 | ||
116 | void PopClient::incomingData() | 117 | void PopClient::incomingData() |
117 | { | 118 | { |
118 | QString response, temp, temp2, timeStamp; | 119 | QString response, temp, temp2, timeStamp; |
119 | QString md5Source; | 120 | QString md5Source; |
120 | int start, end; | 121 | int start, end; |
121 | // char *md5Digest; | 122 | // char *md5Digest; |
122 | char md5Digest[16]; | 123 | char md5Digest[16]; |
123 | // if ( !socket->canReadLine() ) | 124 | // if ( !socket->canReadLine() ) |
124 | // return; | 125 | // return; |
125 | 126 | ||
126 | 127 | ||
127 | response = socket->readLine(); | 128 | response = socket->readLine(); |
128 | 129 | ||
129 | switch(status) { | 130 | switch(status) { |
130 | //logging in | 131 | //logging in |
131 | case Init: { | 132 | case Init: { |
132 | #ifdef APOP_TEST | 133 | #ifdef APOP_TEST |
133 | start = response.find('<',0); | 134 | start = response.find('<',0); |
134 | end = response.find('>', start); | 135 | end = response.find('>', start); |
135 | if( start >= 0 && end > start ) | 136 | if( start >= 0 && end > start ) |
136 | { | 137 | { |
137 | timeStamp = response.mid( start , end - start + 1); | 138 | timeStamp = response.mid( start , end - start + 1); |
138 | md5Source = timeStamp + popPassword; | 139 | md5Source = timeStamp + popPassword; |
139 | 140 | ||
140 | md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]); | 141 | md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]); |
141 | 142 | ||
142 | for(int j =0;j < MD5_DIGEST_LENGTH ;j++) | 143 | for(int j =0;j < MD5_DIGEST_LENGTH ;j++) |
143 | { | 144 | { |
144 | printf("%x", md5Digest[j]); | 145 | printf("%x", md5Digest[j]); |
145 | } | 146 | } |
146 | printf("\n"); | 147 | printf("\n"); |
147 | // qDebug(md5Digest); | 148 | // qDebug(md5Digest); |
148 | *stream << "APOP " << popUserName << " " << md5Digest << "\r\n"; | 149 | *stream << "APOP " << popUserName << " " << md5Digest << "\r\n"; |
149 | // qDebug("%s", stream); | 150 | // qDebug("%s", stream); |
150 | status = Stat; | 151 | status = Stat; |
151 | } | 152 | } |
152 | else | 153 | else |
153 | #endif | 154 | #endif |
154 | { | 155 | { |
155 | timeStamp = ""; | 156 | timeStamp = ""; |
156 | *stream << "USER " << popUserName << "\r\n"; | 157 | *stream << "USER " << popUserName << "\r\n"; |
157 | status = Pass; | 158 | status = Pass; |
158 | } | 159 | } |
159 | 160 | ||
160 | break; | 161 | break; |
161 | } | 162 | } |
162 | 163 | ||
163 | case Pass: { | 164 | case Pass: { |
164 | *stream << "PASS " << popPassword << "\r\n"; | 165 | *stream << "PASS " << popPassword << "\r\n"; |
165 | status = Stat; | 166 | status = Stat; |
166 | 167 | ||
167 | break; | 168 | break; |
168 | } | 169 | } |
169 | //ask for number of messages | 170 | //ask for number of messages |
170 | case Stat: { | 171 | case Stat: { |
171 | if (response[0] == '+') { | 172 | if (response[0] == '+') { |
172 | *stream << "STAT" << "\r\n"; | 173 | *stream << "STAT" << "\r\n"; |
173 | status = Mcnt; | 174 | status = Mcnt; |
174 | } else errorHandlingWithMsg(ErrLoginFailed, response); | 175 | } else errorHandlingWithMsg(ErrLoginFailed, response); |
175 | break; | 176 | break; |
176 | } | 177 | } |
177 | //get count of messages, eg "+OK 4 900.." -> int 4 | 178 | //get count of messages, eg "+OK 4 900.." -> int 4 |
178 | case Mcnt: { | 179 | case Mcnt: { |
179 | if (response[0] == '+') { | 180 | if (response[0] == '+') { |
180 | temp = response.replace(0, 4, ""); | 181 | temp = response.replace(0, 4, ""); |
181 | int x = temp.find(" ", 0); | 182 | int x = temp.find(" ", 0); |
182 | temp.truncate((uint) x); | 183 | temp.truncate((uint) x); |
183 | newMessages = temp.toInt(); | 184 | newMessages = temp.toInt(); |
184 | messageCount = 1; | 185 | messageCount = 1; |
185 | status = List; | 186 | status = List; |
186 | 187 | ||
187 | if (synchronize) { | 188 | if (synchronize) { |
188 | //messages deleted from server, reload all | 189 | //messages deleted from server, reload all |
189 | if (newMessages < lastSync) | 190 | if (newMessages < lastSync) |
190 | lastSync = 0; | 191 | lastSync = 0; |
191 | messageCount = 1; | 192 | messageCount = 1; |
192 | } | 193 | } |
193 | 194 | ||
194 | if (selected) { | 195 | if (selected && mailList ) { |
195 | int *ptr = mailList->first(); | 196 | int *ptr = mailList->first(); |
196 | if (ptr != 0) { | 197 | if (ptr != 0) { |
197 | newMessages++; //to ensure no early jumpout | 198 | newMessages++; //to ensure no early jumpout |
198 | messageCount = *ptr; | 199 | messageCount = *ptr; |
199 | } else newMessages = 0; | 200 | } else newMessages = 0; |
200 | } | 201 | } |
201 | 202 | ||
202 | } else errorHandlingWithMsg(ErrUnknownResponse, response); | 203 | } else errorHandlingWithMsg(ErrUnknownResponse, response); |
203 | } | 204 | } |
204 | //Read message number x, count upwards to messageCount | 205 | //Read message number x, count upwards to messageCount |
205 | case List: { | 206 | case List: { |
206 | if (messageCount <= newMessages) { | 207 | if (messageCount <= newMessages) { |
207 | *stream << "LIST " << messageCount << "\r\n"; | 208 | *stream << "LIST " << messageCount << "\r\n"; |
208 | status = Size; | 209 | status = Size; |
209 | temp2.setNum(newMessages - lastSync); | 210 | temp2.setNum(newMessages - lastSync); |
210 | temp.setNum(messageCount - lastSync); | 211 | temp.setNum(messageCount - lastSync); |
211 | if (!selected) { | 212 | if (!selected) { |
212 | emit updateStatus(tr("Retrieving ") + temp + "/" + temp2); | 213 | emit updateStatus(tr("Retrieving ") + temp + "/" + temp2); |
213 | } else { | 214 | } else { |
214 | //completing a previously closed transfer | 215 | //completing a previously closed transfer |
215 | /* if ( (messageCount - lastSync) <= 0) { | 216 | /* if ( (messageCount - lastSync) <= 0) { |
216 | temp.setNum(messageCount); | 217 | temp.setNum(messageCount); |
217 | emit updateStatus(tr("Previous message ") + temp); | 218 | emit updateStatus(tr("Previous message ") + temp); |
218 | } else {*/ | 219 | } else {*/ |
219 | emit updateStatus(tr("Completing message ") + temp); | 220 | emit updateStatus(tr("Completing message ") + temp); |
220 | //} | 221 | //} |
221 | } | 222 | } |
222 | break; | 223 | break; |
223 | } else { | 224 | } else { |
224 | emit updateStatus(tr("No new Messages")); | 225 | emit updateStatus(tr("No new Messages")); |
225 | status = Quit; | 226 | status = Quit; |
226 | } | 227 | } |
227 | } | 228 | } |
228 | //get size of message, eg "500 characters in message.." -> int 500 | 229 | //get size of message, eg "500 characters in message.." -> int 500 |
229 | case Size: { | 230 | case Size: { |
230 | if (status != Quit) { //because of idiotic switch | 231 | if (status != Quit) { //because of idiotic switch |
231 | if (response[0] == '+') { | 232 | if (response[0] == '+') { |
232 | temp = response.replace(0, 4, ""); | 233 | temp = response.replace(0, 4, ""); |
233 | int x = temp.find(" ", 0); | 234 | int x = temp.find(" ", 0); |
234 | temp = temp.right(temp.length() - ((uint) x + 1) ); | 235 | temp = temp.right(temp.length() - ((uint) x + 1) ); |
235 | mailSize = temp.toInt(); | 236 | mailSize = temp.toInt(); |
236 | emit currentMailSize(mailSize); | 237 | emit currentMailSize(mailSize); |
237 | 238 | ||
238 | status = Retr; | 239 | status = Retr; |
239 | } else { | 240 | } else { |
240 | //qWarning(response); | 241 | //qWarning(response); |
241 | errorHandlingWithMsg(ErrUnknownResponse, response); | 242 | errorHandlingWithMsg(ErrUnknownResponse, response); |
242 | } | 243 | } |
243 | } | 244 | } |
244 | } | 245 | } |
245 | //Read message number x, count upwards to messageCount | 246 | //Read message number x, count upwards to messageCount |
246 | case Retr: { | 247 | case Retr: { |
247 | if (status != Quit) { | 248 | if (status != Quit) { |
248 | if ((selected)||(mailSize <= headerLimit)) | 249 | if ((selected)||(mailSize <= headerLimit)) |
249 | { | 250 | { |
250 | *stream << "RETR " << messageCount << "\r\n"; | 251 | *stream << "RETR " << messageCount << "\r\n"; |
251 | } else { //only header | 252 | } else { //only header |
252 | *stream << "TOP " << messageCount << " 0\r\n"; | 253 | *stream << "TOP " << messageCount << " 0\r\n"; |
253 | } | 254 | } |
254 | messageCount++; | 255 | messageCount++; |
255 | status = Ignore; | 256 | status = Ignore; |
256 | break; | 257 | break; |
257 | } } | 258 | } } |
258 | case Ignore: { | 259 | case Ignore: { |
259 | if (status != Quit) { //because of idiotic switch | 260 | if (status != Quit) { //because of idiotic switch |
260 | if (response[0] == '+') { | 261 | if (response[0] == '+') { |
261 | message = ""; | 262 | message = ""; |
262 | status = Read; | 263 | status = Read; |
263 | if (!socket->canReadLine()) //sync. problems | 264 | if (!socket->canReadLine()) //sync. problems |
264 | break; | 265 | break; |
265 | response = socket->readLine(); | 266 | response = socket->readLine(); |
266 | } else errorHandlingWithMsg(ErrUnknownResponse, response); | 267 | } else errorHandlingWithMsg(ErrUnknownResponse, response); |
267 | } | 268 | } |
268 | } | 269 | } |
269 | //add all incoming lines to body. When size is reached, send | 270 | //add all incoming lines to body. When size is reached, send |
270 | //message, and go back to read new message | 271 | //message, and go back to read new message |
271 | case Read: { | 272 | case Read: { |
272 | if (status != Quit) { //because of idiotic switch | 273 | if (status != Quit) { //because of idiotic switch |
273 | message += response; | 274 | message += response; |
274 | while ( socket->canReadLine() ) { | 275 | while ( socket->canReadLine() ) { |
275 | response = socket->readLine(); | 276 | response = socket->readLine(); |
276 | message += response; | 277 | message += response; |
277 | } | 278 | } |
278 | emit downloadedSize(message.length()); | 279 | emit downloadedSize(message.length()); |
279 | int x = message.find("\r\n.\r\n",-5); | 280 | int x = message.find("\r\n.\r\n",-5); |
280 | if (x == -1) { | 281 | if (x == -1) { |
281 | break; | 282 | break; |
282 | } else { //message reach entire size | 283 | } else { //message reach entire size |
283 | if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active | 284 | if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active |
284 | { | 285 | { |
285 | emit newMessage(message, messageCount-1, mailSize, TRUE); | 286 | emit newMessage(message, messageCount-1, mailSize, TRUE); |
286 | } else { //incomplete mail downloaded | 287 | } else { //incomplete mail downloaded |
287 | emit newMessage(message, messageCount-1, mailSize, FALSE); | 288 | emit newMessage(message, messageCount-1, mailSize, FALSE); |
288 | } | 289 | } |
289 | 290 | ||
290 | if ((messageCount > newMessages)||(selected)) //last message ? | 291 | if ((messageCount > newMessages)||(selected)) //last message ? |
291 | { | 292 | { |
292 | status = Quit; | 293 | status = Quit; |
293 | if (selected) { //grab next from queue | 294 | if (selected) { //grab next from queue |
294 | newMessages--; | 295 | newMessages--; |
295 | status = Quit; | 296 | status = Quit; |
296 | } | 297 | } |
297 | } | 298 | } |
298 | else | 299 | else |
299 | { | 300 | { |
300 | *stream << "LIST " << messageCount << "\r\n"; | 301 | *stream << "LIST " << messageCount << "\r\n"; |
301 | status = Size; | 302 | status = Size; |
302 | temp2.setNum(newMessages - lastSync); | 303 | temp2.setNum(newMessages - lastSync); |
303 | temp.setNum(messageCount - lastSync); | 304 | temp.setNum(messageCount - lastSync); |
304 | emit updateStatus(tr("Retrieving ") + temp + "/" + temp2); | 305 | emit updateStatus(tr("Retrieving ") + temp + "/" + temp2); |
305 | 306 | ||
306 | break; | 307 | break; |
307 | } | 308 | } |
308 | } | 309 | } |
309 | } | 310 | } |
310 | if (status != Quit) | 311 | if (status != Quit) |
311 | break; | 312 | break; |
312 | } | 313 | } |
313 | case Quit: { | 314 | case Quit: { |
314 | *stream << "Quit\r\n"; | 315 | *stream << "Quit\r\n"; |
315 | status = Done; | 316 | status = Done; |
316 | int newM = newMessages - lastSync; | 317 | int newM = newMessages - lastSync; |
317 | if (newM > 0) { | 318 | if (newM > 0) { |
318 | temp.setNum(newM); | 319 | temp.setNum(newM); |
319 | emit updateStatus(temp + tr(" new messages")); | 320 | emit updateStatus(temp + tr(" new messages")); |
320 | } else { | 321 | } else { |
321 | emit updateStatus(tr("No new messages")); | 322 | emit updateStatus(tr("No new messages")); |
322 | } | 323 | } |
323 | 324 | ||
324 | socket->close(); | 325 | socket->close(); |
325 | receiving = FALSE; | 326 | receiving = FALSE; |
326 | emit mailTransfered(newM); | 327 | emit mailTransfered(newM); |
327 | break; | 328 | break; |
328 | } | 329 | } |
329 | } | 330 | } |
330 | 331 | ||
331 | } | 332 | } |
diff --git a/noncore/net/mailit/resource.cpp b/noncore/net/mailit/resource.cpp deleted file mode 100644 index dc19880..0000000 --- a/noncore/net/mailit/resource.cpp +++ b/dev/null | |||
@@ -1,136 +0,0 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Qtopia Environment. | ||
5 | ** | ||
6 | ** This file may be distributed and/or modified under the terms of the | ||
7 | ** GNU General Public License version 2 as published by the Free Software | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
13 | ** | ||
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
15 | ** | ||
16 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
17 | ** not clear to you. | ||
18 | ** | ||
19 | **********************************************************************/ | ||
20 | |||
21 | #include "qpeapplication.h" | ||
22 | #include "resource.h" | ||
23 | #include <qdir.h> | ||
24 | #include <qfile.h> | ||
25 | #include <qregexp.h> | ||
26 | #include <qpixmapcache.h> | ||
27 | #include <qpainter.h> | ||
28 | |||
29 | #include "inlinepics_p.h" | ||
30 | |||
31 | /*! | ||
32 | \class Resource resource.h | ||
33 | \brief The Resource class provides access to named resources. | ||
34 | |||
35 | The resources may be provided from files or other sources. | ||
36 | */ | ||
37 | |||
38 | /*! | ||
39 | \fn Resource::Resource() | ||
40 | \internal | ||
41 | */ | ||
42 | |||
43 | /*! | ||
44 | Returns the QPixmap named \a pix. You should avoid including | ||
45 | any filename type extension (eg. .png, .xpm). | ||
46 | */ | ||
47 | QPixmap Resource::loadPixmap( const QString &pix ) | ||
48 | { | ||
49 | QPixmap pm; | ||
50 | QString key="QPE_"+pix; | ||
51 | if ( !QPixmapCache::find(key,pm) ) { | ||
52 | pm.convertFromImage(loadImage(pix)); | ||
53 | QPixmapCache::insert(key,pm); | ||
54 | } | ||
55 | return pm; | ||
56 | } | ||
57 | |||
58 | /*! | ||
59 | Returns the QBitmap named \a pix. You should avoid including | ||
60 | any filename type extension (eg. .png, .xpm). | ||
61 | */ | ||
62 | QBitmap Resource::loadBitmap( const QString &pix ) | ||
63 | { | ||
64 | QBitmap bm; | ||
65 | bm = loadPixmap(pix); | ||
66 | return bm; | ||
67 | } | ||
68 | |||
69 | /*! | ||
70 | Returns the filename of a pixmap named \a pix. You should avoid including | ||
71 | any filename type extension (eg. .png, .xpm). | ||
72 | |||
73 | Normally you will use loadPixmap() rather than this function. | ||
74 | */ | ||
75 | QString Resource::findPixmap( const QString &pix ) | ||
76 | { | ||
77 | QString picsPath = QPEApplication::qpeDir() + "pics/"; | ||
78 | |||
79 | if ( QFile( picsPath + pix + ".png").exists() ) | ||
80 | return picsPath + pix + ".png"; | ||
81 | else if ( QFile( picsPath + pix + ".xpm").exists() ) | ||
82 | return picsPath + pix + ".xpm"; | ||
83 | else if ( QFile( picsPath + pix ).exists() ) | ||
84 | return picsPath + pix; | ||
85 | |||
86 | //qDebug("Cannot find pixmap: %s", pix.latin1()); | ||
87 | return QString(); | ||
88 | } | ||
89 | |||
90 | /*! | ||
91 | Returns a sound file for a sound named \a name. | ||
92 | You should avoid including any filename type extension (eg. .wav, .au, .mp3). | ||
93 | */ | ||
94 | QString Resource::findSound( const QString &name ) | ||
95 | { | ||
96 | QString picsPath = QPEApplication::qpeDir() + "sounds/"; | ||
97 | |||
98 | QString result; | ||
99 | if ( QFile( (result = picsPath + name + ".wav") ).exists() ) | ||
100 | return result; | ||
101 | |||
102 | return QString(); | ||
103 | } | ||
104 | |||
105 | /*! | ||
106 | Returns a list of all sound names. | ||
107 | */ | ||
108 | QStringList Resource::allSounds() | ||
109 | { | ||
110 | QDir resourcedir( QPEApplication::qpeDir() + "sounds/", "*.wav" ); | ||
111 | QStringList entries = resourcedir.entryList(); | ||
112 | QStringList result; | ||
113 | for (QStringList::Iterator i=entries.begin(); i != entries.end(); ++i) | ||
114 | result.append((*i).replace(QRegExp("\\.wav"),"")); | ||
115 | return result; | ||
116 | } | ||
117 | |||
118 | /*! | ||
119 | Returns the QImage named \a name. You should avoid including | ||
120 | any filename type extension (eg. .png, .xpm). | ||
121 | */ | ||
122 | QImage Resource::loadImage( const QString &name) | ||
123 | { | ||
124 | QImage img = qembed_findImage(name.latin1()); | ||
125 | if ( img.isNull() ) | ||
126 | return QImage(findPixmap(name)); | ||
127 | return img; | ||
128 | } | ||
129 | |||
130 | /*! | ||
131 | \fn QIconSet Resource::loadIconSet( const QString &name ) | ||
132 | |||
133 | Returns a QIconSet for the pixmap named \a name. A disabled icon is | ||
134 | generated that conforms to the Qtopia look & feel. You should avoid | ||
135 | including any filename type extension (eg. .png, .xpm). | ||
136 | */ | ||
diff --git a/noncore/net/mailit/resource.h b/noncore/net/mailit/resource.h deleted file mode 100644 index 982c58a..0000000 --- a/noncore/net/mailit/resource.h +++ b/dev/null | |||
@@ -1,80 +0,0 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Qtopia Environment. | ||
5 | ** | ||
6 | ** This file may be distributed and/or modified under the terms of the | ||
7 | ** GNU General Public License version 2 as published by the Free Software | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
13 | ** | ||
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
15 | ** | ||
16 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
17 | ** not clear to you. | ||
18 | ** | ||
19 | **********************************************************************/ | ||
20 | #ifndef PIXMAPLOADER_H | ||
21 | #define PIXMAPLOADER_H | ||
22 | |||
23 | #include <qimage.h> | ||
24 | #include <qbitmap.h> | ||
25 | #include <qiconset.h> | ||
26 | #include <qstringlist.h> | ||
27 | |||
28 | class Resource | ||
29 | { | ||
30 | public: | ||
31 | Resource() {} | ||
32 | |||
33 | static QImage loadImage( const QString &name); | ||
34 | |||
35 | static QPixmap loadPixmap( const QString &name ); | ||
36 | static QBitmap loadBitmap( const QString &name ); | ||
37 | static QString findPixmap( const QString &name ); | ||
38 | |||
39 | static QIconSet loadIconSet( const QString &name ); | ||
40 | |||
41 | static QString findSound( const QString &name ); | ||
42 | static QStringList allSounds(); | ||
43 | }; | ||
44 | |||
45 | // Inline for compatibility with SHARP ROMs | ||
46 | inline QIconSet Resource::loadIconSet( const QString &pix ) | ||
47 | { | ||
48 | QImage img = loadImage( pix ); | ||
49 | QPixmap pm; | ||
50 | pm.convertFromImage( img ); | ||
51 | QIconSet is( pm ); | ||
52 | QIconSet::Size size = pm.width() <= 22 ? QIconSet::Small : QIconSet::Large; | ||
53 | |||
54 | QPixmap dpm = loadPixmap( pix + "_disabled" ); | ||
55 | |||
56 | #ifndef QT_NO_DEPTH_32// have alpha-blended pixmaps | ||
57 | if ( dpm.isNull() ) { | ||
58 | QImage dimg( img.width(), img.height(), 32 ); | ||
59 | for ( int y = 0; y < img.height(); y++ ) { | ||
60 | for ( int x = 0; x < img.width(); x++ ) { | ||
61 | QRgb p = img.pixel( x, y ); | ||
62 | uint a = (p & 0xff000000) / 3; | ||
63 | p = (p & 0x00ffffff) | (a & 0xff000000); | ||
64 | dimg.setPixel( x, y, p ); | ||
65 | } | ||
66 | } | ||
67 | |||
68 | dimg.setAlphaBuffer( TRUE ); | ||
69 | dpm.convertFromImage( dimg ); | ||
70 | } | ||
71 | #endif | ||
72 | |||
73 | if ( !dpm.isNull() ) | ||
74 | is.setPixmap( dpm, size, QIconSet::Disabled ); | ||
75 | |||
76 | return is; | ||
77 | } | ||
78 | |||
79 | |||
80 | #endif | ||
diff --git a/noncore/net/mailit/smtpclient.cpp b/noncore/net/mailit/smtpclient.cpp index 5b5ef52..51ca50b 100644 --- a/noncore/net/mailit/smtpclient.cpp +++ b/noncore/net/mailit/smtpclient.cpp | |||
@@ -59,112 +59,112 @@ void SmtpClient::addMail(const QString &from, const QString &subject, const QStr | |||
59 | 59 | ||
60 | mail->from = from; | 60 | mail->from = from; |
61 | mail->subject = subject; | 61 | mail->subject = subject; |
62 | mail->to = to; | 62 | mail->to = to; |
63 | mail->body = body; | 63 | mail->body = body; |
64 | 64 | ||
65 | mailList.append(mail); | 65 | mailList.append(mail); |
66 | } | 66 | } |
67 | 67 | ||
68 | void SmtpClient::connectionEstablished() | 68 | void SmtpClient::connectionEstablished() |
69 | { | 69 | { |
70 | emit updateStatus(tr("Connection established")); | 70 | emit updateStatus(tr("Connection established")); |
71 | 71 | ||
72 | } | 72 | } |
73 | 73 | ||
74 | void SmtpClient::errorHandling(int status) | 74 | void SmtpClient::errorHandling(int status) |
75 | { | 75 | { |
76 | errorHandlingWithMsg( status, QString::null ); | 76 | errorHandlingWithMsg( status, QString::null ); |
77 | } | 77 | } |
78 | 78 | ||
79 | void SmtpClient::errorHandlingWithMsg(int status, const QString & EMsg ) | 79 | void SmtpClient::errorHandlingWithMsg(int status, const QString & EMsg ) |
80 | { | 80 | { |
81 | emit errorOccurred(status, EMsg ); | 81 | emit errorOccurred(status, EMsg ); |
82 | socket->close(); | 82 | socket->close(); |
83 | mailList.clear(); | 83 | mailList.clear(); |
84 | sending = FALSE; | 84 | sending = FALSE; |
85 | } | 85 | } |
86 | 86 | ||
87 | void SmtpClient::incomingData() | 87 | void SmtpClient::incomingData() |
88 | { | 88 | { |
89 | QString response; | 89 | QString response; |
90 | 90 | ||
91 | if (!socket->canReadLine()) | 91 | if (!socket->canReadLine()) |
92 | return; | 92 | return; |
93 | 93 | ||
94 | response = socket->readLine(); | 94 | response = socket->readLine(); |
95 | switch(status) { | 95 | switch(status) { |
96 | case Init: { | 96 | case Init: { |
97 | if (response[0] == '2') { | 97 | if (response[0] == '2') { |
98 | status = From; | 98 | status = From; |
99 | mailPtr = mailList.first(); | 99 | mailPtr = mailList.first(); |
100 | *stream << "HELO there\r\n"; | 100 | *stream << "HELO there\r\n"; |
101 | } else errorHandlingWithMsg(ErrUnknownResponse,response); | 101 | } else errorHandlingWithMsg(ErrUnknownResponse,response); |
102 | break; | 102 | break; |
103 | } | 103 | } |
104 | case From: { | 104 | case From: { |
105 | if (response[0] == '2') { | 105 | if (response[0] == '2') { |
106 | qDebug(mailPtr->from); | 106 | qDebug(mailPtr->from); |
107 | *stream << "MAIL FROM: <" << mailPtr->from << ">\r\n"; | 107 | *stream << "MAIL FROM: " << mailPtr->from << "\r\n"; |
108 | status = Recv; | 108 | status = Recv; |
109 | } else errorHandlingWithMsg(ErrUnknownResponse, response ); | 109 | } else errorHandlingWithMsg(ErrUnknownResponse, response ); |
110 | break; | 110 | break; |
111 | } | 111 | } |
112 | case Recv: { | 112 | case Recv: { |
113 | if (response[0] == '2') { | 113 | if (response[0] == '2') { |
114 | it = mailPtr->to.begin(); | 114 | it = mailPtr->to.begin(); |
115 | if (it == NULL) { | 115 | if (it == NULL) { |
116 | errorHandlingWithMsg(ErrUnknownResponse,response); | 116 | errorHandlingWithMsg(ErrUnknownResponse,response); |
117 | } | 117 | } |
118 | *stream << "RCPT TO: <" << *it << ">\r\n"; | 118 | *stream << "RCPT TO: " << *it << "\r\n"; |
119 | status = MRcv; | 119 | status = MRcv; |
120 | } else errorHandlingWithMsg(ErrUnknownResponse,response); | 120 | } else errorHandlingWithMsg(ErrUnknownResponse,response); |
121 | break; | 121 | break; |
122 | } | 122 | } |
123 | case MRcv: { | 123 | case MRcv: { |
124 | if (response[0] == '2') { | 124 | if (response[0] == '2') { |
125 | it++; | 125 | it++; |
126 | if ( it != mailPtr->to.end() ) { | 126 | if ( it != mailPtr->to.end() ) { |
127 | *stream << "RCPT TO: <" << *it << ">\r\n"; | 127 | *stream << "RCPT TO: " << *it << "\r\n"; |
128 | break; | 128 | break; |
129 | } else { | 129 | } else { |
130 | status = Data; | 130 | status = Data; |
131 | } | 131 | } |
132 | } else errorHandlingWithMsg(ErrUnknownResponse,response); | 132 | } else errorHandlingWithMsg(ErrUnknownResponse,response); |
133 | } | 133 | } |
134 | case Data: { | 134 | case Data: { |
135 | if (response[0] == '2') { | 135 | if (response[0] == '2') { |
136 | *stream << "DATA\r\n"; | 136 | *stream << "DATA\r\n"; |
137 | status = Body; | 137 | status = Body; |
138 | emit updateStatus(tr("Sending: ") + mailPtr->subject); | 138 | emit updateStatus(tr("Sending: ") + mailPtr->subject); |
139 | 139 | ||
140 | } else errorHandlingWithMsg(ErrUnknownResponse,response); | 140 | } else errorHandlingWithMsg(ErrUnknownResponse,response); |
141 | break; | 141 | break; |
142 | } | 142 | } |
143 | case Body: { | 143 | case Body: { |
144 | if (response[0] == '3') { | 144 | if (response[0] == '3') { |
145 | *stream << mailPtr->body << "\r\n.\r\n"; | 145 | *stream << mailPtr->body << "\r\n.\r\n"; |
146 | mailPtr = mailList.next(); | 146 | mailPtr = mailList.next(); |
147 | if (mailPtr != NULL) { | 147 | if (mailPtr != NULL) { |
148 | status = From; | 148 | status = From; |
149 | } else { | 149 | } else { |
150 | status = Quit; | 150 | status = Quit; |
151 | } | 151 | } |
152 | } else errorHandlingWithMsg(ErrUnknownResponse,response); | 152 | } else errorHandlingWithMsg(ErrUnknownResponse,response); |
153 | break; | 153 | break; |
154 | } | 154 | } |
155 | case Quit: { | 155 | case Quit: { |
156 | if (response[0] == '2') { | 156 | if (response[0] == '2') { |
157 | *stream << "QUIT\r\n"; | 157 | *stream << "QUIT\r\n"; |
158 | status = Done; | 158 | status = Done; |
159 | QString temp; | 159 | QString temp; |
160 | temp.setNum(mailList.count()); | 160 | temp.setNum(mailList.count()); |
161 | emit updateStatus(tr("Sent ") + temp + tr(" messages")); | 161 | emit updateStatus(tr("Sent ") + temp + tr(" messages")); |
162 | emit mailSent(); | 162 | emit mailSent(); |
163 | mailList.clear(); | 163 | mailList.clear(); |
164 | sending = FALSE; | 164 | sending = FALSE; |
165 | socket->close(); | 165 | socket->close(); |
166 | } else errorHandlingWithMsg(ErrUnknownResponse,response); | 166 | } else errorHandlingWithMsg(ErrUnknownResponse,response); |
167 | break; | 167 | break; |
168 | } | 168 | } |
169 | } | 169 | } |
170 | } | 170 | } |
diff --git a/noncore/net/mailit/viewatt.cpp b/noncore/net/mailit/viewatt.cpp index 293e137..3515ba5 100644 --- a/noncore/net/mailit/viewatt.cpp +++ b/noncore/net/mailit/viewatt.cpp | |||
@@ -1,121 +1,121 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2001 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2001 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qt Palmtop Environment. | 4 | ** This file is part of Qt Palmtop Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | #include "resource.h" | 20 | #include <qpe/resource.h> |
21 | #include "viewatt.h" | 21 | #include "viewatt.h" |
22 | #include <qwhatsthis.h> | 22 | #include <qwhatsthis.h> |
23 | #include <qpe/applnk.h> | 23 | #include <qpe/applnk.h> |
24 | #include <qpe/mimetype.h> | 24 | #include <qpe/mimetype.h> |
25 | 25 | ||
26 | ViewAtt::ViewAtt(QWidget *parent, const char *name, WFlags f) | 26 | ViewAtt::ViewAtt(QWidget *parent, const char *name, WFlags f) |
27 | : QMainWindow(parent, name, f) | 27 | : QMainWindow(parent, name, f) |
28 | { | 28 | { |
29 | setCaption(tr("Exploring attatchments")); | 29 | setCaption(tr("Exploring attatchments")); |
30 | 30 | ||
31 | setToolBarsMovable( FALSE ); | 31 | setToolBarsMovable( FALSE ); |
32 | bar = new QToolBar(this); | 32 | bar = new QToolBar(this); |
33 | installButton = new QAction( tr( "Install" ), Resource::loadPixmap( "exec" ), QString::null, CTRL + Key_C, this, 0 ); | 33 | installButton = new QAction( tr( "Install" ), Resource::loadPixmap( "exec" ), QString::null, CTRL + Key_C, this, 0 ); |
34 | connect(installButton, SIGNAL(activated()), this, SLOT(install()) ); | 34 | connect(installButton, SIGNAL(activated()), this, SLOT(install()) ); |
35 | installButton->setWhatsThis(tr("Click here to install the attachment to your Documents")); | 35 | installButton->setWhatsThis(tr("Click here to install the attachment to your Documents")); |
36 | 36 | ||
37 | listView = new QListView(this, "AttView"); | 37 | listView = new QListView(this, "AttView"); |
38 | listView->addColumn( tr("Attatchment") ); | 38 | listView->addColumn( tr("Attatchment") ); |
39 | listView->addColumn( tr("Type") ); | 39 | listView->addColumn( tr("Type") ); |
40 | listView->addColumn( tr("Installed") ); | 40 | listView->addColumn( tr("Installed") ); |
41 | setCentralWidget(listView); | 41 | setCentralWidget(listView); |
42 | QWhatsThis::add(listView,QWidget::tr("This is an overview about all attachments in the mail")); | 42 | QWhatsThis::add(listView,QWidget::tr("This is an overview about all attachments in the mail")); |
43 | } | 43 | } |
44 | 44 | ||
45 | void ViewAtt::update(Email *mailIn, bool inbox) | 45 | void ViewAtt::update(Email *mailIn, bool inbox) |
46 | { | 46 | { |
47 | QListViewItem *item; | 47 | QListViewItem *item; |
48 | Enclosure *ePtr; | 48 | Enclosure *ePtr; |
49 | |||
50 | 49 | ||
51 | 50 | ||
51 | |||
52 | listView->clear(); | 52 | listView->clear(); |
53 | if (inbox) { | 53 | if (inbox) { |
54 | bar->clear(); | 54 | bar->clear(); |
55 | installButton->addTo( bar ); | 55 | installButton->addTo( bar ); |
56 | bar->show(); | 56 | bar->show(); |
57 | } else { | 57 | } else { |
58 | bar->hide(); | 58 | bar->hide(); |
59 | } | 59 | } |
60 | 60 | ||
61 | mail = mailIn; | 61 | mail = mailIn; |
62 | for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { | 62 | for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { |
63 | 63 | ||
64 | QString isInstalled = tr("No"); | 64 | QString isInstalled = tr("No"); |
65 | if (ePtr->installed) | 65 | if (ePtr->installed) |
66 | isInstalled = tr("Yes"); | 66 | isInstalled = tr("Yes"); |
67 | item = new QListViewItem(listView, ePtr->originalName, ePtr->contentType, isInstalled); | 67 | item = new QListViewItem(listView, ePtr->originalName, ePtr->contentType, isInstalled); |
68 | 68 | ||
69 | const QString& mtypeDef=(const QString&) ePtr->contentType+"/"+ePtr->contentAttribute; | 69 | const QString& mtypeDef=(const QString&) ePtr->contentType+"/"+ePtr->contentAttribute; |
70 | 70 | ||
71 | MimeType mt(mtypeDef); | 71 | MimeType mt(mtypeDef); |
72 | 72 | ||
73 | item->setPixmap(0, mt.pixmap()); | 73 | item->setPixmap(0, mt.pixmap()); |
74 | 74 | ||
75 | /* | 75 | /* |
76 | if (ePtr->contentType == "TEXT") { | 76 | if (ePtr->contentType == "TEXT") { |
77 | actions = new QAction( tr("View"), Resource::loadPixmap("TextEditor"), QString::null, CTRL + Key_C, this, 0); | 77 | actions = new QAction( tr("View"), Resource::loadPixmap("TextEditor"), QString::null, CTRL + Key_C, this, 0); |
78 | actions->addTo(bar); | 78 | actions->addTo(bar); |
79 | } | 79 | } |
80 | if (ePtr->contentType == "AUDIO") { | 80 | if (ePtr->contentType == "AUDIO") { |
81 | actions = new QAction( tr("Play"), Resource::loadPixmap("SoundPlayer"), QString::null, CTRL + Key_C, this, 0); | 81 | actions = new QAction( tr("Play"), Resource::loadPixmap("SoundPlayer"), QString::null, CTRL + Key_C, this, 0); |
82 | actions->addTo(bar); | 82 | actions->addTo(bar); |
83 | item->setPixmap(0, Resource::loadPixmap("play")); | 83 | item->setPixmap(0, Resource::loadPixmap("play")); |
84 | } | 84 | } |
85 | if (ePtr->contentType == "IMAGE") { | 85 | if (ePtr->contentType == "IMAGE") { |
86 | actions = new QAction( tr("Show"), Resource::loadPixmap("pixmap"), QString::null, CTRL + Key_C, this, 0); | 86 | actions = new QAction( tr("Show"), Resource::loadPixmap("pixmap"), QString::null, CTRL + Key_C, this, 0); |
87 | actions->addTo(bar); | 87 | actions->addTo(bar); |
88 | item->setPixmap(0, Resource::loadPixmap("pixmap")); | 88 | item->setPixmap(0, Resource::loadPixmap("pixmap")); |
89 | }*/ | 89 | }*/ |
90 | } | 90 | } |
91 | } | 91 | } |
92 | 92 | ||
93 | void ViewAtt::install() | 93 | void ViewAtt::install() |
94 | { | 94 | { |
95 | Enclosure *ePtr, *selPtr; | 95 | Enclosure *ePtr, *selPtr; |
96 | QListViewItem *item; | 96 | QListViewItem *item; |
97 | QString filename; | 97 | QString filename; |
98 | DocLnk d; | 98 | DocLnk d; |
99 | 99 | ||
100 | item = listView->selectedItem(); | 100 | item = listView->selectedItem(); |
101 | if (item != NULL) { | 101 | if (item != NULL) { |
102 | filename = item->text(0); | 102 | filename = item->text(0); |
103 | selPtr = NULL; | 103 | selPtr = NULL; |
104 | for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { | 104 | for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { |
105 | if (ePtr->originalName == filename) | 105 | if (ePtr->originalName == filename) |
106 | selPtr = ePtr; | 106 | selPtr = ePtr; |
107 | } | 107 | } |
108 | 108 | ||
109 | if (selPtr == NULL) { | 109 | if (selPtr == NULL) { |
110 | qWarning("Internal error, file is not installed to documents"); | 110 | qWarning("Internal error, file is not installed to documents"); |
111 | return; | 111 | return; |
112 | } | 112 | } |
113 | 113 | ||
114 | d.setName(selPtr->originalName); | 114 | d.setName(selPtr->originalName); |
115 | d.setFile(selPtr->path + selPtr->name); | 115 | d.setFile(selPtr->path + selPtr->name); |
116 | d.setType(selPtr->contentType + "/" + selPtr->contentAttribute); | 116 | d.setType(selPtr->contentType + "/" + selPtr->contentAttribute); |
117 | d.writeLink(); | 117 | d.writeLink(); |
118 | selPtr->installed = TRUE; | 118 | selPtr->installed = TRUE; |
119 | item->setText(2, tr("Yes")); | 119 | item->setText(2, tr("Yes")); |
120 | } | 120 | } |
121 | } | 121 | } |
diff --git a/noncore/net/opieftp/opieftp.pro b/noncore/net/opieftp/opieftp.pro index dbccd98..ac16819 100644 --- a/noncore/net/opieftp/opieftp.pro +++ b/noncore/net/opieftp/opieftp.pro | |||
@@ -1,31 +1,31 @@ | |||
1 | TEMPLATE = app | 1 | TEMPLATE = app |
2 | CONFIG += qt warn_on release | 2 | CONFIG += qt warn_on release |
3 | HEADERS = opieftp.h inputDialog.h ftplib.h | 3 | HEADERS = opieftp.h inputDialog.h |
4 | SOURCES = opieftp.cpp inputDialog.cpp main.cpp | 4 | SOURCES = opieftp.cpp inputDialog.cpp main.cpp |
5 | TARGET = opieftp | 5 | TARGET = opieftp |
6 | DESTDIR = $(OPIEDIR)/bin | 6 | DESTDIR = $(OPIEDIR)/bin |
7 | INCLUDEPATH += $(OPIEDIR)/include | 7 | INCLUDEPATH += $(OPIEDIR)/include |
8 | DEPENDPATH += $(OPIEDIR)/include | 8 | DEPENDPATH += $(OPIEDIR)/include |
9 | LIBS += -lqpe -lftplib | 9 | LIBS += -lqpe -lftplib |
10 | 10 | ||
11 | TRANSLATIONS = ../../../i18n/de/opieftp.ts \ | 11 | TRANSLATIONS = ../../../i18n/de/opieftp.ts \ |
12 | ../../../i18n/nl/opieftp.ts \ | 12 | ../../../i18n/nl/opieftp.ts \ |
13 | ../../../i18n/da/opieftp.ts \ | 13 | ../../../i18n/da/opieftp.ts \ |
14 | ../../../i18n/xx/opieftp.ts \ | 14 | ../../../i18n/xx/opieftp.ts \ |
15 | ../../../i18n/en/opieftp.ts \ | 15 | ../../../i18n/en/opieftp.ts \ |
16 | ../../../i18n/es/opieftp.ts \ | 16 | ../../../i18n/es/opieftp.ts \ |
17 | ../../../i18n/fr/opieftp.ts \ | 17 | ../../../i18n/fr/opieftp.ts \ |
18 | ../../../i18n/hu/opieftp.ts \ | 18 | ../../../i18n/hu/opieftp.ts \ |
19 | ../../../i18n/ja/opieftp.ts \ | 19 | ../../../i18n/ja/opieftp.ts \ |
20 | ../../../i18n/ko/opieftp.ts \ | 20 | ../../../i18n/ko/opieftp.ts \ |
21 | ../../../i18n/no/opieftp.ts \ | 21 | ../../../i18n/no/opieftp.ts \ |
22 | ../../../i18n/pl/opieftp.ts \ | 22 | ../../../i18n/pl/opieftp.ts \ |
23 | ../../../i18n/pt/opieftp.ts \ | 23 | ../../../i18n/pt/opieftp.ts \ |
24 | ../../../i18n/pt_BR/opieftp.ts \ | 24 | ../../../i18n/pt_BR/opieftp.ts \ |
25 | ../../../i18n/sl/opieftp.ts \ | 25 | ../../../i18n/sl/opieftp.ts \ |
26 | ../../../i18n/zh_CN/opieftp.ts \ | 26 | ../../../i18n/zh_CN/opieftp.ts \ |
27 | ../../../i18n/zh_TW/opieftp.ts | 27 | ../../../i18n/zh_TW/opieftp.ts |
28 | 28 | ||
29 | 29 | ||
30 | 30 | ||
31 | include ( $(OPIEDIR)/include.pro ) | 31 | include ( $(OPIEDIR)/include.pro ) |
diff --git a/noncore/net/opieirc/config.in b/noncore/net/opieirc/config.in index 30184a9..7c6949d 100644 --- a/noncore/net/opieirc/config.in +++ b/noncore/net/opieirc/config.in | |||
@@ -1,4 +1,4 @@ | |||
1 | config OPIEIRC | 1 | config OPIEIRC |
2 | boolean "opieirc" | 2 | boolean "opie-irc (chat via your favorite IRC server)" |
3 | default "y" | 3 | default "y" |
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE | 4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE |
diff --git a/noncore/net/opieirc/ircchannellist.cpp b/noncore/net/opieirc/ircchannellist.cpp index e592d05..566b223 100644 --- a/noncore/net/opieirc/ircchannellist.cpp +++ b/noncore/net/opieirc/ircchannellist.cpp | |||
@@ -1,37 +1,48 @@ | |||
1 | #include <qpe/resource.h> | 1 | #include <qpe/resource.h> |
2 | #include <qpixmap.h> | 2 | #include <qpixmap.h> |
3 | #include "ircchannellist.h" | 3 | #include "ircchannellist.h" |
4 | 4 | ||
5 | IRCChannelList::IRCChannelList(IRCChannel *channel, QWidget *parent, const char *name, WFlags f) : QListBox(parent, name, f) { | 5 | IRCChannelList::IRCChannelList(IRCChannel *channel, QWidget *parent, const char *name, WFlags f) : QListBox(parent, name, f) { |
6 | m_channel = channel; | 6 | m_channel = channel; |
7 | } | 7 | } |
8 | 8 | ||
9 | void IRCChannelList::update() { | 9 | void IRCChannelList::update() { |
10 | QPixmap op = Resource::loadPixmap("opieirc/op"); | 10 | QPixmap op = Resource::loadPixmap("opieirc/op"); |
11 | QPixmap hop = Resource::loadPixmap("opieirc/hop"); | 11 | QPixmap hop = Resource::loadPixmap("opieirc/hop"); |
12 | QPixmap voice = Resource::loadPixmap("opieirc/voice"); | 12 | QPixmap voice = Resource::loadPixmap("opieirc/voice"); |
13 | QListIterator<IRCChannelPerson> it = m_channel->people(); | 13 | QListIterator<IRCChannelPerson> it = m_channel->people(); |
14 | clear(); | 14 | clear(); |
15 | for (; it.current(); ++it) { | 15 | for (; it.current(); ++it) { |
16 | IRCChannelPerson *person = it.current(); | 16 | IRCChannelPerson *person = it.current(); |
17 | if (person->flags & PERSON_FLAG_OP) { | 17 | if (person->flags & PERSON_FLAG_OP) { |
18 | insertItem(op, person->person->nick()); | 18 | insertItem(op, person->person->nick()); |
19 | } else if (person->flags & PERSON_FLAG_HALFOP) { | 19 | } else if (person->flags & PERSON_FLAG_HALFOP) { |
20 | insertItem(op, person->person->nick()); | 20 | insertItem(op, person->person->nick()); |
21 | } else if (person->flags & PERSON_FLAG_VOICE) { | 21 | } else if (person->flags & PERSON_FLAG_VOICE) { |
22 | insertItem(voice, person->person->nick()); | 22 | insertItem(voice, person->person->nick()); |
23 | } else { | 23 | } else { |
24 | insertItem(person->person->nick()); | 24 | insertItem(person->person->nick()); |
25 | } | 25 | } |
26 | } | 26 | } |
27 | sort(); | 27 | sort(); |
28 | } | 28 | } |
29 | 29 | ||
30 | 30 | ||
31 | bool IRCChannelList::hasPerson(QString nick) { | 31 | bool IRCChannelList::hasPerson(QString nick) { |
32 | for (unsigned int i=0; i<count(); i++) { | 32 | for (unsigned int i=0; i<count(); i++) { |
33 | if (text(i) == nick) | 33 | if (text(i) == nick) |
34 | return TRUE; | 34 | return TRUE; |
35 | } | 35 | } |
36 | return FALSE; | 36 | return FALSE; |
37 | } | 37 | } |
38 | |||
39 | bool IRCChannelList::removePerson(QString nick) { | ||
40 | for (unsigned int i=0; i<count(); i++) { | ||
41 | if (text(i) == nick){ | ||
42 | removeItem(i); | ||
43 | return TRUE; | ||
44 | } | ||
45 | } | ||
46 | return FALSE; | ||
47 | } | ||
48 | |||
diff --git a/noncore/net/opieirc/ircchannellist.h b/noncore/net/opieirc/ircchannellist.h index fa3c8cd..deab649 100644 --- a/noncore/net/opieirc/ircchannellist.h +++ b/noncore/net/opieirc/ircchannellist.h | |||
@@ -1,36 +1,37 @@ | |||
1 | /* | 1 | /* |
2 | OpieIRC - An embedded IRC client | 2 | OpieIRC - An embedded IRC client |
3 | Copyright (C) 2002 Wenzel Jakob | 3 | Copyright (C) 2002 Wenzel Jakob |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 17 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
18 | 18 | ||
19 | */ | 19 | */ |
20 | 20 | ||
21 | #ifndef __IRCCHANNELLIST_H | 21 | #ifndef __IRCCHANNELLIST_H |
22 | #define __IRCCHANNELLIST_H | 22 | #define __IRCCHANNELLIST_H |
23 | 23 | ||
24 | #include <qlistbox.h> | 24 | #include <qlistbox.h> |
25 | #include "ircchannel.h" | 25 | #include "ircchannel.h" |
26 | 26 | ||
27 | class IRCChannelList : public QListBox { | 27 | class IRCChannelList : public QListBox { |
28 | public: | 28 | public: |
29 | IRCChannelList(IRCChannel *channel, QWidget *parent = 0, const char *name = 0, WFlags f = 0); | 29 | IRCChannelList(IRCChannel *channel, QWidget *parent = 0, const char *name = 0, WFlags f = 0); |
30 | void update(); | 30 | void update(); |
31 | bool hasPerson(QString nick); | 31 | bool hasPerson(QString nick); |
32 | bool removePerson(QString nick); | ||
32 | protected: | 33 | protected: |
33 | IRCChannel *m_channel; | 34 | IRCChannel *m_channel; |
34 | }; | 35 | }; |
35 | 36 | ||
36 | #endif /* __IRCCHANNELLIST_H */ | 37 | #endif /* __IRCCHANNELLIST_H */ |
diff --git a/noncore/net/opieirc/ircchanneltab.cpp b/noncore/net/opieirc/ircchanneltab.cpp index beb8bce..2b8b65e 100644 --- a/noncore/net/opieirc/ircchanneltab.cpp +++ b/noncore/net/opieirc/ircchanneltab.cpp | |||
@@ -17,96 +17,97 @@ IRCChannelTab::IRCChannelTab(IRCChannel *channel, IRCServerTab *parentTab, MainW | |||
17 | m_textview->setVScrollBarMode(QScrollView::AlwaysOn); | 17 | m_textview->setVScrollBarMode(QScrollView::AlwaysOn); |
18 | m_listVisible = TRUE; | 18 | m_listVisible = TRUE; |
19 | m_listButton = new QPushButton(">", m_textview); | 19 | m_listButton = new QPushButton(">", m_textview); |
20 | m_textview->setCornerWidget(m_listButton); | 20 | m_textview->setCornerWidget(m_listButton); |
21 | m_textview->setTextFormat(RichText); | 21 | m_textview->setTextFormat(RichText); |
22 | QWhatsThis::add(m_textview, tr("Channel discussion")); | 22 | QWhatsThis::add(m_textview, tr("Channel discussion")); |
23 | connect(m_listButton, SIGNAL(clicked()), this, SLOT(toggleList())); | 23 | connect(m_listButton, SIGNAL(clicked()), this, SLOT(toggleList())); |
24 | m_list = new IRCChannelList(m_channel, hbox); | 24 | m_list = new IRCChannelList(m_channel, hbox); |
25 | m_list->update(); | 25 | m_list->update(); |
26 | m_list->setMaximumWidth(LISTWIDTH); | 26 | m_list->setMaximumWidth(LISTWIDTH); |
27 | m_field = new IRCHistoryLineEdit(this); | 27 | m_field = new IRCHistoryLineEdit(this); |
28 | QWhatsThis::add(m_field, tr("Type your message here to participate in the channel discussion")); | 28 | QWhatsThis::add(m_field, tr("Type your message here to participate in the channel discussion")); |
29 | m_popup = new QPopupMenu(m_list); | 29 | m_popup = new QPopupMenu(m_list); |
30 | m_lines = 0; | 30 | m_lines = 0; |
31 | /* Required so that embedded-style "right" clicks work */ | 31 | /* Required so that embedded-style "right" clicks work */ |
32 | QPEApplication::setStylusOperation(m_list->viewport(), QPEApplication::RightOnHold); | 32 | QPEApplication::setStylusOperation(m_list->viewport(), QPEApplication::RightOnHold); |
33 | connect(m_list, SIGNAL(mouseButtonPressed(int, QListBoxItem *, const QPoint&)), this, SLOT(mouseButtonPressed(int, QListBoxItem *, const QPoint &))); | 33 | connect(m_list, SIGNAL(mouseButtonPressed(int, QListBoxItem *, const QPoint&)), this, SLOT(mouseButtonPressed(int, QListBoxItem *, const QPoint &))); |
34 | /* Construct the popup menu */ | 34 | /* Construct the popup menu */ |
35 | QPopupMenu *ctcpMenu = new QPopupMenu(m_list); | 35 | QPopupMenu *ctcpMenu = new QPopupMenu(m_list); |
36 | m_popup->insertItem(Resource::loadPixmap("opieirc/ctcp"), tr("CTCP"), ctcpMenu); | 36 | m_popup->insertItem(Resource::loadPixmap("opieirc/ctcp"), tr("CTCP"), ctcpMenu); |
37 | m_popup->insertItem(Resource::loadPixmap("opieirc/query"), tr("Query"), this, SLOT(popupQuery())); | 37 | m_popup->insertItem(Resource::loadPixmap("opieirc/query"), tr("Query"), this, SLOT(popupQuery())); |
38 | ctcpMenu->insertItem(Resource::loadPixmap("opieirc/ping"), tr("Ping"), this, SLOT(popupPing())); | 38 | ctcpMenu->insertItem(Resource::loadPixmap("opieirc/ping"), tr("Ping"), this, SLOT(popupPing())); |
39 | ctcpMenu->insertItem(Resource::loadPixmap("opieirc/version"), tr("Version"), this, SLOT(popupVersion())); | 39 | ctcpMenu->insertItem(Resource::loadPixmap("opieirc/version"), tr("Version"), this, SLOT(popupVersion())); |
40 | ctcpMenu->insertItem(Resource::loadPixmap("opieirc/whois"), tr("Whois"), this, SLOT(popupWhois())); | 40 | ctcpMenu->insertItem(Resource::loadPixmap("opieirc/whois"), tr("Whois"), this, SLOT(popupWhois())); |
41 | connect(m_mainWindow, SIGNAL(updateScroll()), this, SLOT(scrolling())); | 41 | connect(m_mainWindow, SIGNAL(updateScroll()), this, SLOT(scrolling())); |
42 | m_layout->add(hbox); | 42 | m_layout->add(hbox); |
43 | hbox->show(); | 43 | hbox->show(); |
44 | m_layout->add(m_field); | 44 | m_layout->add(m_field); |
45 | m_field->setFocus(); | 45 | m_field->setFocus(); |
46 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); | 46 | connect(m_field, SIGNAL(returnPressed()), this, SLOT(processCommand())); |
47 | settingsChanged(); | 47 | settingsChanged(); |
48 | } | 48 | } |
49 | 49 | ||
50 | void IRCChannelTab::scrolling(){ | 50 | void IRCChannelTab::scrolling(){ |
51 | m_textview->ensureVisible(0, m_textview->contentsHeight()); | 51 | m_textview->ensureVisible(0, m_textview->contentsHeight()); |
52 | } | 52 | } |
53 | 53 | ||
54 | void IRCChannelTab::appendText(QString text) { | 54 | void IRCChannelTab::appendText(QString text) { |
55 | /* not using append because it creates layout problems */ | 55 | /* not using append because it creates layout problems */ |
56 | QString txt = m_textview->text() + text + "\n"; | 56 | QString txt = m_textview->text() + text + "\n"; |
57 | if (m_maxLines > 0 && m_lines >= m_maxLines) { | 57 | if (m_maxLines > 0 && m_lines >= m_maxLines) { |
58 | int firstBreak = txt.find('\n'); | 58 | int firstBreak = txt.find('\n'); |
59 | if (firstBreak != -1) { | 59 | if (firstBreak != -1) { |
60 | txt = "<qt bgcolor=\"" + m_backgroundColor + "\"/>" + txt.right(txt.length() - (firstBreak + 1)); | 60 | txt = "<qt bgcolor=\"" + m_backgroundColor + "\"/>" + txt.right(txt.length() - (firstBreak + 1)); |
61 | } | 61 | } |
62 | } else { | 62 | } else { |
63 | m_lines++; | 63 | m_lines++; |
64 | } | 64 | } |
65 | m_textview->ensureVisible(0, m_textview->contentsHeight()); | ||
65 | m_textview->setText(txt); | 66 | m_textview->setText(txt); |
66 | m_textview->ensureVisible(0, m_textview->contentsHeight()); | 67 | m_textview->ensureVisible(0, m_textview->contentsHeight()); |
67 | emit changed(this); | 68 | emit changed(this); |
68 | } | 69 | } |
69 | 70 | ||
70 | IRCChannelTab::~IRCChannelTab() { | 71 | IRCChannelTab::~IRCChannelTab() { |
71 | m_parentTab->removeChannelTab(this); | 72 | m_parentTab->removeChannelTab(this); |
72 | } | 73 | } |
73 | 74 | ||
74 | void IRCChannelTab::processCommand() { | 75 | void IRCChannelTab::processCommand() { |
75 | QString text = m_field->text(); | 76 | QString text = m_field->text(); |
76 | if (text.length()>0) { | 77 | if (text.length()>0) { |
77 | if (session()->isSessionActive()) { | 78 | if (session()->isSessionActive()) { |
78 | if (text.startsWith("/") && !text.startsWith("//")) { | 79 | if (text.startsWith("/") && !text.startsWith("//")) { |
79 | /* Command mode */ | 80 | /* Command mode */ |
80 | m_parentTab->executeCommand(this, text);; | 81 | m_parentTab->executeCommand(this, text);; |
81 | } else { | 82 | } else { |
82 | if (text.startsWith("//")) | 83 | if (text.startsWith("//")) |
83 | text = text.right(text.length()-1); | 84 | text = text.right(text.length()-1); |
84 | session()->sendMessage(m_channel, m_field->text()); | 85 | session()->sendMessage(m_channel, m_field->text()); |
85 | appendText("<font color=\"" + m_textColor + "\"><</font><font color=\"" + m_selfColor + "\">"+m_parentTab->server()->nick()+"</font><font color=\"" + m_textColor + "\">> "+IRCOutput::toHTML(m_field->text())+"</font><br>"); | 86 | appendText("<font color=\"" + m_textColor + "\"><</font><font color=\"" + m_selfColor + "\">"+m_parentTab->server()->nick()+"</font><font color=\"" + m_textColor + "\">> "+IRCOutput::toHTML(m_field->text())+"</font><br>"); |
86 | } | 87 | } |
87 | } else { | 88 | } else { |
88 | appendText("<font color=\"" + m_errorColor + "\">"+tr("Disconnected")+"</font><br>"); | 89 | appendText("<font color=\"" + m_errorColor + "\">"+tr("Disconnected")+"</font><br>"); |
89 | } | 90 | } |
90 | } | 91 | } |
91 | m_field->clear(); | 92 | m_field->clear(); |
92 | } | 93 | } |
93 | 94 | ||
94 | void IRCChannelTab::settingsChanged() { | 95 | void IRCChannelTab::settingsChanged() { |
95 | m_textview->setText("<qt bgcolor=\"" + m_backgroundColor + "\"/>"); | 96 | m_textview->setText("<qt bgcolor=\"" + m_backgroundColor + "\"/>"); |
96 | m_lines = 0; | 97 | m_lines = 0; |
97 | } | 98 | } |
98 | 99 | ||
99 | void IRCChannelTab::toggleList() { | 100 | void IRCChannelTab::toggleList() { |
100 | if (m_listVisible) { | 101 | if (m_listVisible) { |
101 | m_list->setMaximumWidth(0); | 102 | m_list->setMaximumWidth(0); |
102 | m_listButton->setText("<"); | 103 | m_listButton->setText("<"); |
103 | } else { | 104 | } else { |
104 | m_list->setMaximumWidth(LISTWIDTH); | 105 | m_list->setMaximumWidth(LISTWIDTH); |
105 | m_listButton->setText(">"); | 106 | m_listButton->setText(">"); |
106 | } | 107 | } |
107 | m_listVisible = !m_listVisible; | 108 | m_listVisible = !m_listVisible; |
108 | } | 109 | } |
109 | 110 | ||
110 | void IRCChannelTab::mouseButtonPressed(int mouse, QListBoxItem *, const QPoint &point) { | 111 | void IRCChannelTab::mouseButtonPressed(int mouse, QListBoxItem *, const QPoint &point) { |
111 | switch (mouse) { | 112 | switch (mouse) { |
112 | case 1: | 113 | case 1: |
diff --git a/noncore/net/opieirc/ircmessageparser.cpp b/noncore/net/opieirc/ircmessageparser.cpp index 6b88f34..400ff41 100644 --- a/noncore/net/opieirc/ircmessageparser.cpp +++ b/noncore/net/opieirc/ircmessageparser.cpp | |||
@@ -161,111 +161,125 @@ void IRCMessageParser::parseLiteralPart(IRCMessage *message) { | |||
161 | output.addParam(person); | 161 | output.addParam(person); |
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) == '#' || 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 %1").arg(message->param(0).lower()) )); | 201 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Channel message with unknown channel %1").arg(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 | |||
209 | IRCPerson mask(message->prefix()); | 210 | IRCPerson mask(message->prefix()); |
210 | 211 | /* this way of handling nick changes really sucks */ | |
211 | if (mask.nick() == m_session->m_server->nick()) { | 212 | if (mask.nick() == m_session->m_server->nick()) { |
212 | /* We are changing our nickname */ | 213 | /* We are changing our nickname */ |
213 | m_session->m_server->setNick(message->param(0)); | 214 | m_session->m_server->setNick(message->param(0)); |
214 | IRCOutput output(OUTPUT_NICKCHANGE, tr("You are now known as %1").arg( message->param(0))); | 215 | IRCOutput output(OUTPUT_NICKCHANGE, tr("You are now known as %1").arg( message->param(0))); |
215 | output.addParam(0); | 216 | output.addParam(0); |
216 | emit outputReady(output); | 217 | emit outputReady(output); |
217 | } else { | 218 | } else { |
218 | /* Someone else is */ | 219 | /* Someone else is */ |
219 | IRCPerson *person = m_session->getPerson(mask.nick()); | 220 | IRCPerson *person = m_session->getPerson(mask.nick()); |
220 | if (person) { | 221 | if (person) { |
221 | IRCOutput output(OUTPUT_NICKCHANGE, tr("%1 is now known as %2").arg( mask.nick() ).arg( message->param(0 ))); | 222 | //IRCOutput output(OUTPUT_NICKCHANGE, tr("%1 is now known as %2").arg( mask.nick() ).arg( message->param(0))); |
222 | output.addParam(person); | 223 | |
223 | emit outputReady(output); | 224 | /* new code starts here -- this removes the person from all channels */ |
225 | QList<IRCChannel> channels; | ||
226 | m_session->getChannelsByPerson(person, channels); | ||
227 | QListIterator<IRCChannel> it(channels); | ||
228 | for (;it.current(); ++it) { | ||
229 | IRCChannelPerson *chanperson = it.current()->getPerson(mask.nick()); | ||
230 | it.current()->removePerson(chanperson); | ||
231 | chanperson->person->setNick(message->param(0)); | ||
232 | it.current()->addPerson(chanperson); | ||
233 | IRCOutput output(OUTPUT_NICKCHANGE, tr("%1 is now known as %2").arg( mask.nick() ).arg( message->param(0))); | ||
234 | output.addParam(person); | ||
235 | emit outputReady(output); | ||
236 | } | ||
237 | /* new code ends here */ | ||
224 | } else { | 238 | } else { |
225 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Nickname change of an unknown person"))); | 239 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Nickname change of an unknown person"))); |
226 | } | 240 | } |
227 | } | 241 | } |
228 | } | 242 | } |
229 | 243 | ||
230 | void IRCMessageParser::parseLiteralQuit(IRCMessage *message) { | 244 | void IRCMessageParser::parseLiteralQuit(IRCMessage *message) { |
231 | IRCPerson mask(message->prefix()); | 245 | IRCPerson mask(message->prefix()); |
232 | IRCPerson *person = m_session->getPerson(mask.nick()); | 246 | IRCPerson *person = m_session->getPerson(mask.nick()); |
233 | if (person) { | 247 | if (person) { |
234 | QList<IRCChannel> channels; | 248 | QList<IRCChannel> channels; |
235 | m_session->getChannelsByPerson(person, channels); | 249 | m_session->getChannelsByPerson(person, channels); |
236 | QListIterator<IRCChannel> it(channels); | 250 | QListIterator<IRCChannel> it(channels); |
237 | for (;it.current(); ++it) { | 251 | for (;it.current(); ++it) { |
238 | IRCChannelPerson *chanperson = it.current()->getPerson(mask.nick()); | 252 | IRCChannelPerson *chanperson = it.current()->getPerson(mask.nick()); |
239 | it.current()->removePerson(chanperson); | 253 | it.current()->removePerson(chanperson); |
240 | delete chanperson; | 254 | delete chanperson; |
241 | } | 255 | } |
242 | m_session->removePerson(person); | 256 | m_session->removePerson(person); |
243 | IRCOutput output(OUTPUT_QUIT, tr("%1 has quit (%2)" ).arg( mask.nick() ).arg( message->param(0) )); | 257 | IRCOutput output(OUTPUT_QUIT, tr("%1 has quit (%2)" ).arg( mask.nick() ).arg( message->param(0) )); |
244 | output.addParam(person); | 258 | output.addParam(person); |
245 | emit outputReady(output); | 259 | emit outputReady(output); |
246 | delete person; | 260 | delete person; |
247 | } else { | 261 | } else { |
248 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Unknown person quit - desynchronized?"))); | 262 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Unknown person quit - desynchronized?"))); |
249 | } | 263 | } |
250 | } | 264 | } |
251 | 265 | ||
252 | void IRCMessageParser::parseLiteralTopic(IRCMessage *message) { | 266 | void IRCMessageParser::parseLiteralTopic(IRCMessage *message) { |
253 | IRCPerson mask(message->prefix()); | 267 | IRCPerson mask(message->prefix()); |
254 | IRCChannel *channel = m_session->getChannel(message->param(0).lower()); | 268 | IRCChannel *channel = m_session->getChannel(message->param(0).lower()); |
255 | if (channel) { | 269 | if (channel) { |
256 | IRCOutput output(OUTPUT_TOPIC, mask.nick() + tr(" changed topic to ") + "\"" + message->param(1) + "\""); | 270 | IRCOutput output(OUTPUT_TOPIC, mask.nick() + tr(" changed topic to ") + "\"" + message->param(1) + "\""); |
257 | output.addParam(channel); | 271 | output.addParam(channel); |
258 | emit outputReady(output); | 272 | emit outputReady(output); |
259 | } else { | 273 | } else { |
260 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Unknown channel topic - desynchronized?"))); | 274 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Unknown channel topic - desynchronized?"))); |
261 | } | 275 | } |
262 | } | 276 | } |
263 | 277 | ||
264 | void IRCMessageParser::parseLiteralError(IRCMessage *message) { | 278 | void IRCMessageParser::parseLiteralError(IRCMessage *message) { |
265 | emit outputReady(IRCOutput(OUTPUT_ERROR, message->allParameters())); | 279 | emit outputReady(IRCOutput(OUTPUT_ERROR, message->allParameters())); |
266 | } | 280 | } |
267 | 281 | ||
268 | void IRCMessageParser::parseCTCPPing(IRCMessage *message) { | 282 | void IRCMessageParser::parseCTCPPing(IRCMessage *message) { |
269 | IRCPerson mask(message->prefix()); | 283 | IRCPerson mask(message->prefix()); |
270 | m_session->m_connection->sendCTCP(mask.nick(), "PING " + message->allParameters()); | 284 | m_session->m_connection->sendCTCP(mask.nick(), "PING " + message->allParameters()); |
271 | emit outputReady(IRCOutput(OUTPUT_CTCP, tr("Received a CTCP PING from ")+mask.nick())); | 285 | emit outputReady(IRCOutput(OUTPUT_CTCP, tr("Received a CTCP PING from ")+mask.nick())); |
@@ -352,96 +366,97 @@ void IRCMessageParser::parseLiteralMode(IRCMessage *message) { | |||
352 | } | 366 | } |
353 | } else { | 367 | } else { |
354 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Mode change with unknown person - Desynchronized?"))); | 368 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Mode change with unknown person - Desynchronized?"))); |
355 | } | 369 | } |
356 | } else if (temp == "v") { | 370 | } else if (temp == "v") { |
357 | stream >> temp; | 371 | stream >> temp; |
358 | IRCChannelPerson *person = channel->getPerson(temp); | 372 | IRCChannelPerson *person = channel->getPerson(temp); |
359 | if (person) { | 373 | if (person) { |
360 | if (set) { | 374 | if (set) { |
361 | person->flags |= PERSON_FLAG_VOICE; | 375 | person->flags |= PERSON_FLAG_VOICE; |
362 | IRCOutput output(OUTPUT_CHANPERSONMODE, mask.nick() + tr(" gives voice to " + person->person->nick())); | 376 | IRCOutput output(OUTPUT_CHANPERSONMODE, mask.nick() + tr(" gives voice to " + person->person->nick())); |
363 | output.addParam(channel); | 377 | output.addParam(channel); |
364 | output.addParam(person); | 378 | output.addParam(person); |
365 | emit outputReady(output); | 379 | emit outputReady(output); |
366 | } else { | 380 | } else { |
367 | person->flags &= 0xFFFF - PERSON_FLAG_VOICE; | 381 | person->flags &= 0xFFFF - PERSON_FLAG_VOICE; |
368 | IRCOutput output(OUTPUT_CHANPERSONMODE, mask.nick() + tr(" removes voice from " + person->person->nick())); | 382 | IRCOutput output(OUTPUT_CHANPERSONMODE, mask.nick() + tr(" removes voice from " + person->person->nick())); |
369 | output.addParam(channel); | 383 | output.addParam(channel); |
370 | output.addParam(person); | 384 | output.addParam(person); |
371 | emit outputReady(output); | 385 | emit outputReady(output); |
372 | } | 386 | } |
373 | } else { | 387 | } else { |
374 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Mode change with unknown person - Desynchronized?"))); | 388 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Mode change with unknown person - Desynchronized?"))); |
375 | } | 389 | } |
376 | } else { | 390 | } else { |
377 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Mode change with unknown flag"))); | 391 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Mode change with unknown flag"))); |
378 | } | 392 | } |
379 | } | 393 | } |
380 | } else { | 394 | } else { |
381 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Mode change with unknown kannel - Desynchronized?"))); | 395 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Mode change with unknown kannel - Desynchronized?"))); |
382 | } | 396 | } |
383 | } else { | 397 | } else { |
384 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("User modes not supported yet"))); | 398 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("User modes not supported yet"))); |
385 | } | 399 | } |
386 | } | 400 | } |
387 | 401 | ||
388 | void IRCMessageParser::parseLiteralKick(IRCMessage *message) { | 402 | void IRCMessageParser::parseLiteralKick(IRCMessage *message) { |
389 | IRCPerson mask(message->prefix()); | 403 | IRCPerson mask(message->prefix()); |
390 | IRCChannel *channel = m_session->getChannel(message->param(0).lower()); | 404 | IRCChannel *channel = m_session->getChannel(message->param(0).lower()); |
391 | if (channel) { | 405 | if (channel) { |
392 | IRCChannelPerson *person = channel->getPerson(message->param(1)); | 406 | IRCChannelPerson *person = channel->getPerson(message->param(1)); |
393 | if (person) { | 407 | if (person) { |
394 | if (person->person->nick() == m_session->m_server->nick()) { | 408 | if (person->person->nick() == m_session->m_server->nick()) { |
395 | m_session->removeChannel(channel); | 409 | m_session->removeChannel(channel); |
396 | IRCOutput output(OUTPUT_SELFKICK, tr("You were kicked from ") + channel->channelname() + tr(" by ") + mask.nick() + " (" + message->param(2) + ")"); | 410 | IRCOutput output(OUTPUT_SELFKICK, tr("You were kicked from ") + channel->channelname() + tr(" by ") + mask.nick() + " (" + message->param(2) + ")"); |
397 | output.addParam(channel); | 411 | output.addParam(channel); |
398 | emit outputReady(output); | 412 | emit outputReady(output); |
399 | } else { | 413 | } else { |
414 | /* someone else got kicked */ | ||
400 | channel->removePerson(person); | 415 | channel->removePerson(person); |
401 | IRCOutput output(OUTPUT_OTHERKICK, person->person->nick() + tr(" was kicked from ") + channel->channelname() + tr(" by ") + mask.nick()+ " (" + message->param(2) + ")"); | 416 | IRCOutput output(OUTPUT_OTHERKICK, person->person->nick() + tr(" was kicked from ") + channel->channelname() + tr(" by ") + mask.nick()+ " (" + message->param(2) + ")"); |
402 | output.addParam(channel); | 417 | output.addParam(channel); |
403 | output.addParam(person); | 418 | output.addParam(person); |
404 | emit outputReady(output); | 419 | emit outputReady(output); |
405 | } | 420 | } |
406 | } else { | 421 | } else { |
407 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Unknown person kick - desynchronized?"))); | 422 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Unknown person kick - desynchronized?"))); |
408 | } | 423 | } |
409 | } else { | 424 | } else { |
410 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Unknown channel kick - desynchronized?"))); | 425 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Unknown channel kick - desynchronized?"))); |
411 | } | 426 | } |
412 | } | 427 | } |
413 | 428 | ||
414 | void IRCMessageParser::parseNumerical001(IRCMessage *message) { | 429 | void IRCMessageParser::parseNumerical001(IRCMessage *message) { |
415 | /* Welcome to IRC message, display */ | 430 | /* Welcome to IRC message, display */ |
416 | emit outputReady(IRCOutput(OUTPUT_SERVERMESSAGE, message->param(1))); | 431 | emit outputReady(IRCOutput(OUTPUT_SERVERMESSAGE, message->param(1))); |
417 | } | 432 | } |
418 | 433 | ||
419 | void IRCMessageParser::parseNumerical002(IRCMessage *message) { | 434 | void IRCMessageParser::parseNumerical002(IRCMessage *message) { |
420 | emit outputReady(IRCOutput(OUTPUT_SERVERMESSAGE, message->param(1))); | 435 | emit outputReady(IRCOutput(OUTPUT_SERVERMESSAGE, message->param(1))); |
421 | } | 436 | } |
422 | 437 | ||
423 | void IRCMessageParser::parseNumerical003(IRCMessage *message) { | 438 | void IRCMessageParser::parseNumerical003(IRCMessage *message) { |
424 | emit outputReady(IRCOutput(OUTPUT_SERVERMESSAGE, message->param(1))); | 439 | emit outputReady(IRCOutput(OUTPUT_SERVERMESSAGE, message->param(1))); |
425 | } | 440 | } |
426 | 441 | ||
427 | void IRCMessageParser::parseNumerical004(IRCMessage *message) { | 442 | void IRCMessageParser::parseNumerical004(IRCMessage *message) { |
428 | emit outputReady(IRCOutput(OUTPUT_SERVERMESSAGE, message->allParameters())); | 443 | emit outputReady(IRCOutput(OUTPUT_SERVERMESSAGE, message->allParameters())); |
429 | } | 444 | } |
430 | 445 | ||
431 | void IRCMessageParser::parseNumerical005(IRCMessage *message) { | 446 | void IRCMessageParser::parseNumerical005(IRCMessage *message) { |
432 | emit outputReady(IRCOutput(OUTPUT_SERVERMESSAGE, message->allParameters())); | 447 | emit outputReady(IRCOutput(OUTPUT_SERVERMESSAGE, message->allParameters())); |
433 | } | 448 | } |
434 | 449 | ||
435 | void IRCMessageParser::parseNumericalStats(IRCMessage *message) { | 450 | void IRCMessageParser::parseNumericalStats(IRCMessage *message) { |
436 | emit outputReady(IRCOutput(OUTPUT_SERVERMESSAGE, message->param(1))); | 451 | emit outputReady(IRCOutput(OUTPUT_SERVERMESSAGE, message->param(1))); |
437 | } | 452 | } |
438 | 453 | ||
439 | void IRCMessageParser::parseNumericalNames(IRCMessage *message) { | 454 | void IRCMessageParser::parseNumericalNames(IRCMessage *message) { |
440 | /* Name list sent when joining a channel */ | 455 | /* Name list sent when joining a channel */ |
441 | IRCChannel *channel = m_session->getChannel(message->param(2).lower()); | 456 | IRCChannel *channel = m_session->getChannel(message->param(2).lower()); |
442 | if (channel != 0) { | 457 | if (channel != 0) { |
443 | QString people = message->param(3); | 458 | QString people = message->param(3); |
444 | QTextIStream stream(&people); | 459 | QTextIStream stream(&people); |
445 | QString temp; | 460 | QString temp; |
446 | 461 | ||
447 | while (!stream.atEnd()) { | 462 | while (!stream.atEnd()) { |
diff --git a/noncore/net/opieirc/ircservertab.cpp b/noncore/net/opieirc/ircservertab.cpp index 1d9520a..2c28507 100644 --- a/noncore/net/opieirc/ircservertab.cpp +++ b/noncore/net/opieirc/ircservertab.cpp | |||
@@ -77,109 +77,103 @@ QString *IRCServerTab::mynick() { | |||
77 | 77 | ||
78 | IRCServer *IRCServerTab::server() { | 78 | IRCServer *IRCServerTab::server() { |
79 | return &m_server; | 79 | return &m_server; |
80 | } | 80 | } |
81 | 81 | ||
82 | void IRCServerTab::settingsChanged() { | 82 | void IRCServerTab::settingsChanged() { |
83 | m_textview->setText("<qt bgcolor=\"" + m_backgroundColor + "\"/>"); | 83 | m_textview->setText("<qt bgcolor=\"" + m_backgroundColor + "\"/>"); |
84 | m_lines = 0; | 84 | m_lines = 0; |
85 | } | 85 | } |
86 | 86 | ||
87 | void IRCServerTab::executeCommand(IRCTab *tab, QString line) { | 87 | void IRCServerTab::executeCommand(IRCTab *tab, QString line) { |
88 | QTextIStream stream(&line); | 88 | QTextIStream stream(&line); |
89 | QString command; | 89 | QString command; |
90 | stream >> command; | 90 | stream >> command; |
91 | command = command.upper().right(command.length()-1); | 91 | command = command.upper().right(command.length()-1); |
92 | 92 | ||
93 | //JOIN | 93 | //JOIN |
94 | if (command == "JOIN" || command == "J") { | 94 | if (command == "JOIN" || command == "J") { |
95 | QString channel; | 95 | QString channel; |
96 | stream >> channel; | 96 | stream >> channel; |
97 | if (channel.length() > 0 && (channel.startsWith("#") || channel.startsWith("+"))) { | 97 | if (channel.length() > 0 && (channel.startsWith("#") || channel.startsWith("+"))) { |
98 | m_session->join(channel); | 98 | m_session->join(channel); |
99 | } else { | 99 | } else { |
100 | tab->appendText("<font color=\"" + m_errorColor + "\">Unknown channel format!</font><br>"); | 100 | tab->appendText("<font color=\"" + m_errorColor + "\">Unknown channel format!</font><br>"); |
101 | } | 101 | } |
102 | } | 102 | } |
103 | 103 | ||
104 | //KICK | 104 | //KICK |
105 | else if (command == "KICK"){ | 105 | else if (command == "KICK"){ |
106 | QString nickname; | 106 | QString nickname; |
107 | stream >> nickname; | 107 | stream >> nickname; |
108 | if (nickname.length() > 0) { | 108 | if (nickname.length() > 0) { |
109 | if (line.length() > 7 + nickname.length()) { | 109 | if (line.length() > 7 + nickname.length()) { |
110 | QString text = line.right(line.length()-nickname.length()-7); | 110 | QString text = line.right(line.length()-nickname.length()-7); |
111 | IRCPerson person; | 111 | IRCPerson person; |
112 | person.setNick(nickname); | 112 | person.setNick(nickname); |
113 | m_session->kick(((IRCChannelTab *)tab)->channel(), &person, text); | 113 | m_session->kick(((IRCChannelTab *)tab)->channel(), &person, text); |
114 | } else { | 114 | } else { |
115 | IRCPerson person; | 115 | IRCPerson person; |
116 | person.setNick(nickname); | 116 | person.setNick(nickname); |
117 | m_session->kick(((IRCChannelTab *)tab)->channel(), &person); | 117 | m_session->kick(((IRCChannelTab *)tab)->channel(), &person); |
118 | } | 118 | } |
119 | } | 119 | } |
120 | } | 120 | } |
121 | 121 | ||
122 | else if (command == "OP"){ | 122 | else if (command == "OP"){ |
123 | QString nickname; | 123 | QString nickname; |
124 | stream >> nickname; | 124 | stream >> nickname; |
125 | if (nickname.length() > 0) { | 125 | if (nickname.length() > 0) { |
126 | if (line.length() > 7 + nickname.length()) { | 126 | QString text = line.right(line.length()-nickname.length()-5); |
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; | 127 | IRCPerson person; |
133 | person.setNick(nickname); | 128 | person.setNick(nickname); |
134 | m_session->kick(((IRCChannelTab *)tab)->channel(), &person); | 129 | m_session->op(((IRCChannelTab *)tab)->channel(), &person); |
135 | } | 130 | } |
136 | } | 131 | } |
137 | } | ||
138 | 132 | ||
139 | //SEND MODES | 133 | //SEND MODES |
140 | else if (command == "MODE"){ | 134 | else if (command == "MODE"){ |
141 | QString text = line.right(line.length()-6); | 135 | QString text = line.right(line.length()-6); |
142 | if (text.length() > 0) { | 136 | if (text.length() > 0) { |
143 | m_session->mode(text); | 137 | m_session->mode(text); |
144 | } else { | 138 | } 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>"); | 139 | 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 | } | 140 | } |
147 | } | 141 | } |
148 | //SEND RAW MESSAGE TO SERVER, COMPLETELY UNCHECKED - anything in the RFC...or really anything you want | 142 | //SEND RAW MESSAGE TO SERVER, COMPLETELY UNCHECKED - anything in the RFC...or really anything you want |
149 | else if (command == "RAW"){ | 143 | else if (command == "RAW"){ |
150 | QString text = line.right(line.length()-5); | 144 | QString text = line.right(line.length()-5); |
151 | if (text.length() > 0) { | 145 | if (text.length() > 0) { |
152 | m_session->raw(text); | 146 | m_session->raw(text); |
153 | } | 147 | } |
154 | } | 148 | } |
155 | else if (command == "SUSPEND"){ | 149 | else if (command == "SUSPEND"){ |
156 | QString text = line.right(line.length()-9); | 150 | QString text = line.right(line.length()-9); |
157 | if (text.upper() == "ON") { | 151 | if (text.upper() == "ON") { |
158 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; | 152 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; |
159 | } | 153 | } |
160 | else if (text.upper() == "OFF"){ | 154 | else if (text.upper() == "OFF"){ |
161 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Disable; | 155 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Disable; |
162 | } else { | 156 | } else { |
163 | tab->appendText("<font color=\"" + m_errorColor + "\">Line: "+ line +"</font><br>Text: "+text); | 157 | tab->appendText("<font color=\"" + m_errorColor + "\">Line: "+ line +"</font><br>Text: "+text); |
164 | } | 158 | } |
165 | } | 159 | } |
166 | 160 | ||
167 | else if (command == "QUIT"){ | 161 | else if (command == "QUIT"){ |
168 | QString text = line.right(line.length()-6); | 162 | QString text = line.right(line.length()-6); |
169 | if (text.length() > 0) { | 163 | if (text.length() > 0) { |
170 | m_session->quit(text); | 164 | m_session->quit(text); |
171 | } else { | 165 | } else { |
172 | m_session->quit(); | 166 | m_session->quit(); |
173 | } | 167 | } |
174 | } | 168 | } |
175 | 169 | ||
176 | //SEND ACTION | 170 | //SEND ACTION |
177 | else if (command == "ME") { | 171 | else if (command == "ME") { |
178 | QString text = line.right(line.length()-4); | 172 | QString text = line.right(line.length()-4); |
179 | if (text.length() > 0) { | 173 | if (text.length() > 0) { |
180 | if (tab->isA("IRCChannelTab")) { | 174 | if (tab->isA("IRCChannelTab")) { |
181 | tab->appendText("<font color=\"" + m_selfColor + "\">*" + IRCOutput::toHTML(m_server.nick()) + " " + IRCOutput::toHTML(text) + "</font><br>"); | 175 | tab->appendText("<font color=\"" + m_selfColor + "\">*" + IRCOutput::toHTML(m_server.nick()) + " " + IRCOutput::toHTML(text) + "</font><br>"); |
182 | m_session->sendAction(((IRCChannelTab *)tab)->channel(), text); | 176 | m_session->sendAction(((IRCChannelTab *)tab)->channel(), text); |
183 | } else if (tab->isA("IRCQueryTab")) { | 177 | } else if (tab->isA("IRCQueryTab")) { |
184 | tab->appendText("<font color=\"" + m_selfColor + "\">*" + IRCOutput::toHTML(m_server.nick()) + " " + IRCOutput::toHTML(text) + "</font><br>"); | 178 | tab->appendText("<font color=\"" + m_selfColor + "\">*" + IRCOutput::toHTML(m_server.nick()) + " " + IRCOutput::toHTML(text) + "</font><br>"); |
185 | m_session->sendAction(((IRCQueryTab *)tab)->person(), text); | 179 | m_session->sendAction(((IRCQueryTab *)tab)->person(), text); |
@@ -301,68 +295,80 @@ void IRCServerTab::display(IRCOutput output) { | |||
301 | queryTab = new IRCQueryTab((IRCPerson *)output.getParam(0), this, m_mainWindow, (QWidget *)parent()); | 295 | queryTab = new IRCQueryTab((IRCPerson *)output.getParam(0), this, m_mainWindow, (QWidget *)parent()); |
302 | m_queryTabs.append(queryTab); | 296 | m_queryTabs.append(queryTab); |
303 | m_mainWindow->addTab(queryTab); | 297 | m_mainWindow->addTab(queryTab); |
304 | } | 298 | } |
305 | queryTab->display(output); | 299 | queryTab->display(output); |
306 | } | 300 | } |
307 | break; | 301 | break; |
308 | case OUTPUT_SELFPART: { | 302 | case OUTPUT_SELFPART: { |
309 | IRCChannelTab *channelTab = getTabForChannel((IRCChannel *)output.getParam(0)); | 303 | IRCChannelTab *channelTab = getTabForChannel((IRCChannel *)output.getParam(0)); |
310 | if (channelTab) | 304 | if (channelTab) |
311 | m_mainWindow->killTab(channelTab); | 305 | m_mainWindow->killTab(channelTab); |
312 | } | 306 | } |
313 | break; | 307 | break; |
314 | case OUTPUT_SELFKICK: { | 308 | case OUTPUT_SELFKICK: { |
315 | appendText("<font color=\"" + m_errorColor + "\">" + output.htmlMessage() + "</font><br>"); | 309 | appendText("<font color=\"" + m_errorColor + "\">" + output.htmlMessage() + "</font><br>"); |
316 | IRCChannelTab *channelTab = getTabForChannel((IRCChannel *)output.getParam(0)); | 310 | IRCChannelTab *channelTab = getTabForChannel((IRCChannel *)output.getParam(0)); |
317 | if (channelTab) | 311 | if (channelTab) |
318 | m_mainWindow->killTab(channelTab); | 312 | m_mainWindow->killTab(channelTab); |
319 | } | 313 | } |
320 | break; | 314 | break; |
321 | case OUTPUT_CHANACTION: { | 315 | case OUTPUT_CHANACTION: { |
322 | IRCChannelTab *channelTab = getTabForChannel((IRCChannel *)output.getParam(0)); | 316 | IRCChannelTab *channelTab = getTabForChannel((IRCChannel *)output.getParam(0)); |
323 | channelTab->appendText("<font color=\"" + m_otherColor + "\">"+output.htmlMessage()+"</font><br>"); | 317 | channelTab->appendText("<font color=\"" + m_otherColor + "\">"+output.htmlMessage()+"</font><br>"); |
324 | } | 318 | } |
325 | break; | 319 | break; |
326 | case OUTPUT_TOPIC: { | 320 | case OUTPUT_TOPIC: { |
327 | IRCChannel *channel = (IRCChannel *) output.getParam(0); | 321 | IRCChannel *channel = (IRCChannel *) output.getParam(0); |
328 | if (channel) { | 322 | if (channel) { |
329 | IRCChannelTab *channelTab = getTabForChannel(channel); | 323 | IRCChannelTab *channelTab = getTabForChannel(channel); |
330 | if (channelTab) { | 324 | if (channelTab) { |
331 | channelTab->appendText("<font color=\"" + m_notificationColor + "\">"+output.htmlMessage()+"</font><br>"); | 325 | channelTab->appendText("<font color=\"" + m_notificationColor + "\">"+output.htmlMessage()+"</font><br>"); |
332 | return; | 326 | return; |
333 | } | 327 | } |
334 | } | 328 | } |
335 | appendText("<font color=\"" + m_notificationColor + "\">"+output.htmlMessage()+"</font><br>"); | 329 | appendText("<font color=\"" + m_notificationColor + "\">"+output.htmlMessage()+"</font><br>"); |
336 | } | 330 | } |
337 | break; | 331 | break; |
338 | case OUTPUT_QUIT: { | 332 | case OUTPUT_QUIT: { |
339 | QString nick = ((IRCPerson *)output.getParam(0))->nick(); | 333 | QString nick = ((IRCPerson *)output.getParam(0))->nick(); |
340 | QListIterator<IRCChannelTab> it(m_channelTabs); | 334 | QListIterator<IRCChannelTab> it(m_channelTabs); |
341 | for (; it.current(); ++it) { | 335 | for (; it.current(); ++it) { |
342 | if (it.current()->list()->hasPerson(nick)) { | 336 | if (it.current()->list()->hasPerson(nick)) { |
343 | it.current()->appendText("<font color=\"" + m_notificationColor + "\">"+output.htmlMessage()+"</font><br>"); | 337 | it.current()->appendText("<font color=\"" + m_notificationColor + "\">"+output.htmlMessage()+"</font><br>"); |
344 | it.current()->list()->update(); | 338 | it.current()->list()->update(); |
345 | } | 339 | } |
346 | } | 340 | } |
347 | } | 341 | } |
348 | break; | 342 | break; |
349 | case OUTPUT_OTHERJOIN: | 343 | /* case OUTPUT_NICKCHANGE: { |
344 | //WAS HERE | ||
345 | QString nick = ((IRCPerson *)output.getParam(0))->nick(); | ||
346 | QListIterator<IRCChannelTab> it(m_channelTabs); | ||
347 | for (; it.current(); ++it) { | ||
348 | if (it.current()->list()->hasPerson(nick)) { | ||
349 | it.current()->appendText("<font color=\"" + m_notificationColor + "\">"+output.htmlMessage()+"</font><br>"); | ||
350 | it.current()->list()->update(); | ||
351 | } | ||
352 | } | ||
353 | } | ||
354 | break; | ||
355 | */ case OUTPUT_OTHERJOIN: | ||
350 | case OUTPUT_OTHERKICK: | 356 | case OUTPUT_OTHERKICK: |
351 | case OUTPUT_CHANPERSONMODE: | 357 | case OUTPUT_CHANPERSONMODE: |
352 | case OUTPUT_OTHERPART: { | 358 | case OUTPUT_OTHERPART: { |
353 | IRCChannelTab *channelTab = getTabForChannel((IRCChannel *)output.getParam(0)); | 359 | IRCChannelTab *channelTab = getTabForChannel((IRCChannel *)output.getParam(0)); |
354 | channelTab->appendText("<font color=\"" + m_notificationColor + "\">"+output.htmlMessage()+"</font><br>"); | 360 | channelTab->appendText("<font color=\"" + m_notificationColor + "\">"+output.htmlMessage()+"</font><br>"); |
355 | channelTab->list()->update(); | 361 | channelTab->list()->update(); |
356 | } | 362 | } |
357 | break; | 363 | break; |
358 | case OUTPUT_CTCP: | 364 | case OUTPUT_CTCP: |
359 | appendText("<font color=\"" + m_notificationColor + "\">" + output.htmlMessage() + "</font><br>"); | 365 | appendText("<font color=\"" + m_notificationColor + "\">" + output.htmlMessage() + "</font><br>"); |
360 | break; | 366 | break; |
361 | case OUTPUT_ERROR: | 367 | case OUTPUT_ERROR: |
362 | appendText("<font color=\"" + m_errorColor + "\">" + output.htmlMessage() + "</font><br>"); | 368 | appendText("<font color=\"" + m_errorColor + "\">" + output.htmlMessage() + "</font><br>"); |
363 | break; | 369 | break; |
364 | default: | 370 | default: |
365 | appendText("<font color=\"" + m_serverColor + "\">" + output.htmlMessage() + "</font><br>"); | 371 | appendText("<font color=\"" + m_serverColor + "\">" + output.htmlMessage() + "</font><br>"); |
366 | break; | 372 | break; |
367 | } | 373 | } |
368 | } | 374 | } |
diff --git a/noncore/net/opieirc/ircsession.cpp b/noncore/net/opieirc/ircsession.cpp index 1cc1ee2..6404d71 100644 --- a/noncore/net/opieirc/ircsession.cpp +++ b/noncore/net/opieirc/ircsession.cpp | |||
@@ -15,96 +15,100 @@ 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::quit(){ | 31 | void IRCSession::quit(){ |
32 | m_connection->sendLine("QUIT :[OI] I'm too good to need a reason"); | 32 | m_connection->sendLine("QUIT :[OI] I'm too good to need a reason"); |
33 | } | 33 | } |
34 | 34 | ||
35 | void IRCSession::quit(QString message){ | 35 | void IRCSession::quit(QString message){ |
36 | m_connection->sendLine("QUIT :" + message); | 36 | m_connection->sendLine("QUIT :" + message); |
37 | } | 37 | } |
38 | 38 | ||
39 | void IRCSession::topic(IRCChannel *channel, QString message){ | 39 | void IRCSession::topic(IRCChannel *channel, QString message){ |
40 | m_connection->sendLine("TOPIC :" + channel->channelname() + " " + message); | 40 | m_connection->sendLine("TOPIC :" + channel->channelname() + " " + message); |
41 | } | 41 | } |
42 | 42 | ||
43 | void IRCSession::mode(IRCChannel *channel, QString message){ | 43 | void IRCSession::mode(IRCChannel *channel, QString message){ |
44 | m_connection->sendLine("MODE " + channel->channelname() + " " + message); | 44 | m_connection->sendLine("MODE " + channel->channelname() + " " + message); |
45 | } | 45 | } |
46 | 46 | ||
47 | void IRCSession::mode(IRCPerson *person, QString message){ | 47 | void IRCSession::mode(IRCPerson *person, QString message){ |
48 | m_connection->sendLine("MODE " + person->nick() + " " + message); | 48 | m_connection->sendLine("MODE " + person->nick() + " " + message); |
49 | } | 49 | } |
50 | 50 | ||
51 | void IRCSession::mode(QString message){ | 51 | void IRCSession::mode(QString message){ |
52 | m_connection->sendLine("MODE " + message); | 52 | m_connection->sendLine("MODE " + message); |
53 | } | 53 | } |
54 | 54 | ||
55 | void IRCSession::raw(QString message){ | 55 | void IRCSession::raw(QString message){ |
56 | m_connection->sendLine(message); | 56 | m_connection->sendLine(message); |
57 | } | 57 | } |
58 | 58 | ||
59 | void IRCSession::kick(IRCChannel *channel, IRCPerson *person) { | 59 | void IRCSession::kick(IRCChannel *channel, IRCPerson *person) { |
60 | m_connection->sendLine("KICK "+ channel->channelname() + " " + person->nick() +" :0wn3d - no reason"); | 60 | m_connection->sendLine("KICK "+ channel->channelname() + " " + person->nick() +" :0wn3d - no reason"); |
61 | } | 61 | } |
62 | 62 | ||
63 | void IRCSession::op(IRCChannel *channel, IRCPerson *person) { | ||
64 | m_connection->sendLine("MODE "+ channel->channelname() + " +ooo " + person->nick()); | ||
65 | } | ||
66 | |||
63 | void IRCSession::kick(IRCChannel *channel, IRCPerson *person, QString message) { | 67 | void IRCSession::kick(IRCChannel *channel, IRCPerson *person, QString message) { |
64 | m_connection->sendLine("KICK "+ channel->channelname() + " " + person->nick() +" :" + message); | 68 | m_connection->sendLine("KICK "+ channel->channelname() + " " + person->nick() +" :" + message); |
65 | } | 69 | } |
66 | 70 | ||
67 | void IRCSession::sendMessage(IRCPerson *person, QString message) { | 71 | void IRCSession::sendMessage(IRCPerson *person, QString message) { |
68 | m_connection->sendLine("PRIVMSG " + person->nick() + " :" + message); | 72 | m_connection->sendLine("PRIVMSG " + person->nick() + " :" + message); |
69 | } | 73 | } |
70 | 74 | ||
71 | void IRCSession::sendMessage(IRCChannel *channel, QString message) { | 75 | void IRCSession::sendMessage(IRCChannel *channel, QString message) { |
72 | m_connection->sendLine("PRIVMSG " + channel->channelname() + " :" + message); | 76 | m_connection->sendLine("PRIVMSG " + channel->channelname() + " :" + message); |
73 | } | 77 | } |
74 | 78 | ||
75 | void IRCSession::sendAction(IRCChannel *channel, QString message) { | 79 | void IRCSession::sendAction(IRCChannel *channel, QString message) { |
76 | m_connection->sendLine("PRIVMSG " + channel->channelname() + " :\001ACTION " + message + "\001"); | 80 | m_connection->sendLine("PRIVMSG " + channel->channelname() + " :\001ACTION " + message + "\001"); |
77 | } | 81 | } |
78 | 82 | ||
79 | void IRCSession::sendAction(IRCPerson *person, QString message) { | 83 | void IRCSession::sendAction(IRCPerson *person, QString message) { |
80 | m_connection->sendLine("PRIVMSG " + person->nick() + " :\001ACTION " + message + "\001"); | 84 | m_connection->sendLine("PRIVMSG " + person->nick() + " :\001ACTION " + message + "\001"); |
81 | } | 85 | } |
82 | 86 | ||
83 | bool IRCSession::isSessionActive() { | 87 | bool IRCSession::isSessionActive() { |
84 | return m_connection->isConnected(); | 88 | return m_connection->isConnected(); |
85 | } | 89 | } |
86 | 90 | ||
87 | void IRCSession::endSession() { | 91 | void IRCSession::endSession() { |
88 | if (m_connection->isLoggedIn()) | 92 | if (m_connection->isLoggedIn()) |
89 | m_connection->sendLine("QUIT :" APP_VERSION); | 93 | m_connection->sendLine("QUIT :" APP_VERSION); |
90 | else | 94 | else |
91 | m_connection->close(); | 95 | m_connection->close(); |
92 | } | 96 | } |
93 | 97 | ||
94 | void IRCSession::part(IRCChannel *channel) { | 98 | void IRCSession::part(IRCChannel *channel) { |
95 | m_connection->sendLine("PART " + channel->channelname() + " :" + APP_VERSION); | 99 | m_connection->sendLine("PART " + channel->channelname() + " :" + APP_VERSION); |
96 | } | 100 | } |
97 | 101 | ||
98 | 102 | ||
99 | IRCChannel *IRCSession::getChannel(QString channelname) { | 103 | IRCChannel *IRCSession::getChannel(QString channelname) { |
100 | QListIterator<IRCChannel> it(m_channels); | 104 | QListIterator<IRCChannel> it(m_channels); |
101 | for (; it.current(); ++it) { | 105 | for (; it.current(); ++it) { |
102 | if (it.current()->channelname() == channelname) { | 106 | if (it.current()->channelname() == channelname) { |
103 | return it.current(); | 107 | return it.current(); |
104 | } | 108 | } |
105 | } | 109 | } |
106 | return 0; | 110 | return 0; |
107 | } | 111 | } |
108 | 112 | ||
109 | IRCPerson *IRCSession::getPerson(QString nickname) { | 113 | IRCPerson *IRCSession::getPerson(QString nickname) { |
110 | QListIterator<IRCPerson> it(m_people); | 114 | QListIterator<IRCPerson> it(m_people); |
diff --git a/noncore/net/opieirc/ircsession.h b/noncore/net/opieirc/ircsession.h index a6a3e50..f6330d8 100644 --- a/noncore/net/opieirc/ircsession.h +++ b/noncore/net/opieirc/ircsession.h | |||
@@ -6,78 +6,79 @@ | |||
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 17 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
18 | 18 | ||
19 | */ | 19 | */ |
20 | 20 | ||
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 quit(QString message); | 46 | void quit(QString message); |
47 | void quit(); | 47 | void quit(); |
48 | void raw(QString message); | 48 | void raw(QString message); |
49 | void topic(IRCChannel *channel, QString message); | 49 | void topic(IRCChannel *channel, QString message); |
50 | void mode(IRCChannel *channel, QString message); | 50 | void mode(IRCChannel *channel, QString message); |
51 | void mode(IRCPerson *person, QString message); | 51 | void mode(IRCPerson *person, QString message); |
52 | void mode(QString message); | 52 | void mode(QString message); |
53 | void part(IRCChannel *channel); | 53 | void part(IRCChannel *channel); |
54 | void op(IRCChannel *channel, IRCPerson *person); | ||
54 | void kick(IRCChannel *channel, IRCPerson *person); | 55 | void kick(IRCChannel *channel, IRCPerson *person); |
55 | void kick(IRCChannel *channel, IRCPerson *person, QString message); | 56 | void kick(IRCChannel *channel, IRCPerson *person, QString message); |
56 | void beginSession(); | 57 | void beginSession(); |
57 | bool isSessionActive(); | 58 | bool isSessionActive(); |
58 | void endSession(); | 59 | void endSession(); |
59 | void sendMessage(IRCPerson *person, QString message); | 60 | void sendMessage(IRCPerson *person, QString message); |
60 | void sendMessage(IRCChannel *channel, QString message); | 61 | void sendMessage(IRCChannel *channel, QString message); |
61 | void sendAction(IRCPerson *person, QString message); | 62 | void sendAction(IRCPerson *person, QString message); |
62 | void sendAction(IRCChannel *channel, QString message); | 63 | void sendAction(IRCChannel *channel, QString message); |
63 | IRCChannel *getChannel(QString channelname); | 64 | IRCChannel *getChannel(QString channelname); |
64 | IRCPerson *getPerson(QString nickname); | 65 | IRCPerson *getPerson(QString nickname); |
65 | protected: | 66 | protected: |
66 | void addPerson(IRCPerson *person); | 67 | void addPerson(IRCPerson *person); |
67 | void addChannel(IRCChannel *channel); | 68 | void addChannel(IRCChannel *channel); |
68 | void removeChannel(IRCChannel *channel); | 69 | void removeChannel(IRCChannel *channel); |
69 | void removePerson(IRCPerson *person); | 70 | void removePerson(IRCPerson *person); |
70 | void getChannelsByPerson(IRCPerson *person, QList<IRCChannel> &channels); | 71 | void getChannelsByPerson(IRCPerson *person, QList<IRCChannel> &channels); |
71 | protected slots: | 72 | protected slots: |
72 | void handleMessage(IRCMessage *message); | 73 | void handleMessage(IRCMessage *message); |
73 | signals: | 74 | signals: |
74 | void outputReady(IRCOutput output); | 75 | void outputReady(IRCOutput output); |
75 | protected: | 76 | protected: |
76 | IRCServer *m_server; | 77 | IRCServer *m_server; |
77 | IRCConnection *m_connection; | 78 | IRCConnection *m_connection; |
78 | IRCMessageParser *m_parser; | 79 | IRCMessageParser *m_parser; |
79 | QList<IRCChannel> m_channels; | 80 | QList<IRCChannel> m_channels; |
80 | QList<IRCPerson> m_people; | 81 | QList<IRCPerson> m_people; |
81 | }; | 82 | }; |
82 | 83 | ||
83 | #endif /* __IRCSESSION_H */ | 84 | #endif /* __IRCSESSION_H */ |
diff --git a/noncore/net/opietooth/blue-pin/pindlg.cc b/noncore/net/opietooth/blue-pin/pindlg.cc index 54f096e..7d60d6c 100644 --- a/noncore/net/opietooth/blue-pin/pindlg.cc +++ b/noncore/net/opietooth/blue-pin/pindlg.cc | |||
@@ -1,53 +1,54 @@ | |||
1 | 1 | ||
2 | #include <stdio.h> | 2 | #include <stdio.h> |
3 | 3 | ||
4 | #include <qcheckbox.h> | 4 | #include <qcheckbox.h> |
5 | #include <qlabel.h> | 5 | #include <qlabel.h> |
6 | #include <qlineedit.h> | 6 | #include <qlineedit.h> |
7 | #include <qtimer.h> | 7 | #include <qtimer.h> |
8 | 8 | ||
9 | #include <qpe/config.h> | 9 | #include <qpe/config.h> |
10 | 10 | ||
11 | #include "pindlg.h" | 11 | #include "pindlg.h" |
12 | 12 | ||
13 | using namespace OpieTooth; | 13 | using namespace OpieTooth; |
14 | 14 | ||
15 | PinDlg::PinDlg( const QString& status, | 15 | PinDlg::PinDlg( const QString& status, |
16 | const QString& mac, QWidget* parent, | 16 | const QString& mac, QWidget* parent, |
17 | const char* name ) | 17 | const char* name ) |
18 | : PinDlgBase( parent, name, WType_Modal ) | 18 | : PinDlgBase( parent, name, WType_Modal ) |
19 | { | 19 | { |
20 | m_mac = mac; | 20 | m_mac = mac; |
21 | test( mac ); | 21 | test( mac ); |
22 | txtStatus->setText(status); | 22 | txtStatus->setText(status); |
23 | showMaximized(); | ||
23 | } | 24 | } |
24 | PinDlg::~PinDlg() { | 25 | PinDlg::~PinDlg() { |
25 | 26 | ||
26 | } | 27 | } |
27 | void PinDlg::setMac( const QString& mac ) { | 28 | void PinDlg::setMac( const QString& mac ) { |
28 | txtStatus->setText( mac ); | 29 | txtStatus->setText( mac ); |
29 | } | 30 | } |
30 | QString PinDlg::pin() const{ | 31 | QString PinDlg::pin() const{ |
31 | return lnePin->text(); | 32 | return lnePin->text(); |
32 | } | 33 | } |
33 | 34 | ||
34 | void PinDlg::test( const QString& mac ) { | 35 | void PinDlg::test( const QString& mac ) { |
35 | if (!mac.isEmpty() ) { | 36 | if (!mac.isEmpty() ) { |
36 | Config cfg("bluepin"); | 37 | Config cfg("bluepin"); |
37 | cfg.setGroup(mac); | 38 | cfg.setGroup(mac); |
38 | lnePin->setText(cfg.readEntryCrypt("pin", QString::null ) ); | 39 | lnePin->setText(cfg.readEntryCrypt("pin", QString::null ) ); |
39 | if ( !lnePin->text().isEmpty() ) { | 40 | if ( !lnePin->text().isEmpty() ) { |
40 | //QTimer::singleShot(100, this, SLOT(accept() ) ); | 41 | //QTimer::singleShot(100, this, SLOT(accept() ) ); |
41 | } | 42 | } |
42 | 43 | ||
43 | } | 44 | } |
44 | 45 | ||
45 | } | 46 | } |
46 | void PinDlg::accept() { | 47 | void PinDlg::accept() { |
47 | if ( ckbPin->isChecked() ) { | 48 | if ( ckbPin->isChecked() ) { |
48 | Config cfg("bluepin"); | 49 | Config cfg("bluepin"); |
49 | cfg.setGroup(m_mac ); | 50 | cfg.setGroup(m_mac ); |
50 | cfg.writeEntryCrypt("pin", lnePin->text() ); | 51 | cfg.writeEntryCrypt("pin", lnePin->text() ); |
51 | } | 52 | } |
52 | QDialog::accept(); | 53 | QDialog::accept(); |
53 | } | 54 | } |
diff --git a/noncore/net/opietooth/blue-pin/pindlg.h b/noncore/net/opietooth/blue-pin/pindlg.h index b4f5ff8..5e5a763 100644 --- a/noncore/net/opietooth/blue-pin/pindlg.h +++ b/noncore/net/opietooth/blue-pin/pindlg.h | |||
@@ -1,26 +1,29 @@ | |||
1 | 1 | ||
2 | 2 | ||
3 | #include <qdialog.h> | 3 | #include <qdialog.h> |
4 | |||
5 | #include "pindlgbase.h" | 4 | #include "pindlgbase.h" |
6 | 5 | ||
7 | namespace OpieTooth { | 6 | namespace OpieTooth { |
7 | |||
8 | class PinDlg : public PinDlgBase { | 8 | class PinDlg : public PinDlgBase { |
9 | Q_OBJECT | 9 | |
10 | Q_OBJECT | ||
11 | |||
10 | public: | 12 | public: |
11 | PinDlg(const QString& text, | 13 | PinDlg(const QString& text, |
12 | const QString& mac, | 14 | const QString& mac, |
13 | QWidget* parent = 0, | 15 | QWidget* parent = 0, |
14 | const char* name= 0 ); | 16 | const char* name= 0 ); |
15 | ~PinDlg(); | 17 | ~PinDlg(); |
16 | void setMac( const QString& ); | 18 | void setMac( const QString& ); |
17 | QString pin() const; | 19 | QString pin() const; |
20 | |||
18 | private: | 21 | private: |
19 | void test( const QString& mac ); | 22 | void test( const QString& mac ); |
20 | QString m_mac; | 23 | QString m_mac; |
21 | protected slots: | ||
22 | void accept(); | ||
23 | }; | ||
24 | 24 | ||
25 | protected slots: | ||
26 | void accept(); | ||
25 | 27 | ||
28 | }; | ||
26 | }; | 29 | }; |
diff --git a/noncore/net/opietooth/blue-pin/pindlgbase.ui b/noncore/net/opietooth/blue-pin/pindlgbase.ui index 6966a03..889a25e 100644 --- a/noncore/net/opietooth/blue-pin/pindlgbase.ui +++ b/noncore/net/opietooth/blue-pin/pindlgbase.ui | |||
@@ -1,198 +1,274 @@ | |||
1 | <!DOCTYPE UI><UI> | 1 | <!DOCTYPE UI><UI> |
2 | <class>PinDlgBase</class> | 2 | <class>PinDlgBase</class> |
3 | <author>zecke</author> | 3 | <author>zecke</author> |
4 | <widget> | 4 | <widget> |
5 | <class>QDialog</class> | 5 | <class>QDialog</class> |
6 | <property stdset="1"> | 6 | <property stdset="1"> |
7 | <name>name</name> | 7 | <name>name</name> |
8 | <cstring>Form1</cstring> | 8 | <cstring>Form1</cstring> |
9 | </property> | 9 | </property> |
10 | <property stdset="1"> | 10 | <property stdset="1"> |
11 | <name>geometry</name> | 11 | <name>geometry</name> |
12 | <rect> | 12 | <rect> |
13 | <x>0</x> | 13 | <x>0</x> |
14 | <y>0</y> | 14 | <y>0</y> |
15 | <width>248</width> | 15 | <width>258</width> |
16 | <height>167</height> | 16 | <height>245</height> |
17 | </rect> | 17 | </rect> |
18 | </property> | 18 | </property> |
19 | <property stdset="1"> | 19 | <property stdset="1"> |
20 | <name>caption</name> | 20 | <name>caption</name> |
21 | <string>Please enter pin</string> | 21 | <string>Please enter pin</string> |
22 | </property> | 22 | </property> |
23 | <grid> | 23 | <vbox> |
24 | <property stdset="1"> | 24 | <property stdset="1"> |
25 | <name>margin</name> | 25 | <name>margin</name> |
26 | <number>11</number> | 26 | <number>11</number> |
27 | </property> | 27 | </property> |
28 | <property stdset="1"> | 28 | <property stdset="1"> |
29 | <name>spacing</name> | 29 | <name>spacing</name> |
30 | <number>6</number> | 30 | <number>6</number> |
31 | </property> | 31 | </property> |
32 | <widget row="0" column="0" > | 32 | <widget> |
33 | <class>QLabel</class> | ||
34 | <property stdset="1"> | ||
35 | <name>name</name> | ||
36 | <cstring>txtStatus</cstring> | ||
37 | </property> | ||
38 | <property stdset="1"> | ||
39 | <name>text</name> | ||
40 | <string></string> | ||
41 | </property> | ||
42 | <property stdset="1"> | ||
43 | <name>textFormat</name> | ||
44 | <enum>RichText</enum> | ||
45 | </property> | ||
46 | </widget> | ||
47 | <spacer> | ||
48 | <property> | ||
49 | <name>name</name> | ||
50 | <cstring>Spacer4_2</cstring> | ||
51 | </property> | ||
52 | <property stdset="1"> | ||
53 | <name>orientation</name> | ||
54 | <enum>Vertical</enum> | ||
55 | </property> | ||
56 | <property stdset="1"> | ||
57 | <name>sizeType</name> | ||
58 | <enum>Expanding</enum> | ||
59 | </property> | ||
60 | <property> | ||
61 | <name>sizeHint</name> | ||
62 | <size> | ||
63 | <width>20</width> | ||
64 | <height>20</height> | ||
65 | </size> | ||
66 | </property> | ||
67 | </spacer> | ||
68 | <widget> | ||
33 | <class>QLayoutWidget</class> | 69 | <class>QLayoutWidget</class> |
34 | <property stdset="1"> | 70 | <property stdset="1"> |
35 | <name>name</name> | 71 | <name>name</name> |
36 | <cstring>Layout6</cstring> | 72 | <cstring>Layout6</cstring> |
37 | </property> | 73 | </property> |
38 | <grid> | 74 | <vbox> |
39 | <property stdset="1"> | 75 | <property stdset="1"> |
40 | <name>margin</name> | 76 | <name>margin</name> |
41 | <number>0</number> | 77 | <number>0</number> |
42 | </property> | 78 | </property> |
43 | <property stdset="1"> | 79 | <property stdset="1"> |
44 | <name>spacing</name> | 80 | <name>spacing</name> |
45 | <number>6</number> | 81 | <number>6</number> |
46 | </property> | 82 | </property> |
47 | <widget row="3" column="0" rowspan="1" colspan="3" > | 83 | <widget> |
48 | <class>QLineEdit</class> | 84 | <class>QLabel</class> |
49 | <property stdset="1"> | 85 | <property stdset="1"> |
50 | <name>name</name> | 86 | <name>name</name> |
51 | <cstring>lnePin</cstring> | 87 | <cstring>TextLabel3</cstring> |
52 | </property> | 88 | </property> |
53 | <property stdset="1"> | 89 | <property stdset="1"> |
54 | <name>echoMode</name> | 90 | <name>text</name> |
55 | <enum>Password</enum> | 91 | <string>Please enter PIN:</string> |
56 | </property> | 92 | </property> |
57 | </widget> | 93 | </widget> |
58 | <spacer row="5" column="4" > | 94 | <widget> |
59 | <property> | 95 | <class>QLayoutWidget</class> |
96 | <property stdset="1"> | ||
60 | <name>name</name> | 97 | <name>name</name> |
61 | <cstring>Spacer2</cstring> | 98 | <cstring>Layout5</cstring> |
62 | </property> | 99 | </property> |
100 | <hbox> | ||
101 | <property stdset="1"> | ||
102 | <name>margin</name> | ||
103 | <number>0</number> | ||
104 | </property> | ||
105 | <property stdset="1"> | ||
106 | <name>spacing</name> | ||
107 | <number>6</number> | ||
108 | </property> | ||
109 | <widget> | ||
110 | <class>QLineEdit</class> | ||
111 | <property stdset="1"> | ||
112 | <name>name</name> | ||
113 | <cstring>lnePin</cstring> | ||
114 | </property> | ||
115 | <property stdset="1"> | ||
116 | <name>echoMode</name> | ||
117 | <enum>Password</enum> | ||
118 | </property> | ||
119 | </widget> | ||
120 | <spacer> | ||
121 | <property> | ||
122 | <name>name</name> | ||
123 | <cstring>Spacer4</cstring> | ||
124 | </property> | ||
125 | <property stdset="1"> | ||
126 | <name>orientation</name> | ||
127 | <enum>Horizontal</enum> | ||
128 | </property> | ||
129 | <property stdset="1"> | ||
130 | <name>sizeType</name> | ||
131 | <enum>Fixed</enum> | ||
132 | </property> | ||
133 | <property> | ||
134 | <name>sizeHint</name> | ||
135 | <size> | ||
136 | <width>21</width> | ||
137 | <height>20</height> | ||
138 | </size> | ||
139 | </property> | ||
140 | </spacer> | ||
141 | </hbox> | ||
142 | </widget> | ||
143 | <widget> | ||
144 | <class>QCheckBox</class> | ||
63 | <property stdset="1"> | 145 | <property stdset="1"> |
64 | <name>orientation</name> | 146 | <name>name</name> |
65 | <enum>Horizontal</enum> | 147 | <cstring>ckbPin</cstring> |
66 | </property> | 148 | </property> |
67 | <property stdset="1"> | 149 | <property stdset="1"> |
68 | <name>sizeType</name> | 150 | <name>text</name> |
69 | <enum>Fixed</enum> | 151 | <string>Save pin</string> |
70 | </property> | ||
71 | <property> | ||
72 | <name>sizeHint</name> | ||
73 | <size> | ||
74 | <width>16</width> | ||
75 | <height>20</height> | ||
76 | </size> | ||
77 | </property> | 152 | </property> |
78 | </spacer> | 153 | </widget> |
79 | <spacer row="5" column="0" > | 154 | </vbox> |
155 | </widget> | ||
156 | <spacer> | ||
157 | <property> | ||
158 | <name>name</name> | ||
159 | <cstring>Spacer5</cstring> | ||
160 | </property> | ||
161 | <property stdset="1"> | ||
162 | <name>orientation</name> | ||
163 | <enum>Vertical</enum> | ||
164 | </property> | ||
165 | <property stdset="1"> | ||
166 | <name>sizeType</name> | ||
167 | <enum>Expanding</enum> | ||
168 | </property> | ||
169 | <property> | ||
170 | <name>sizeHint</name> | ||
171 | <size> | ||
172 | <width>20</width> | ||
173 | <height>20</height> | ||
174 | </size> | ||
175 | </property> | ||
176 | </spacer> | ||
177 | <widget> | ||
178 | <class>QLayoutWidget</class> | ||
179 | <property stdset="1"> | ||
180 | <name>name</name> | ||
181 | <cstring>Layout7</cstring> | ||
182 | </property> | ||
183 | <hbox> | ||
184 | <property stdset="1"> | ||
185 | <name>margin</name> | ||
186 | <number>0</number> | ||
187 | </property> | ||
188 | <property stdset="1"> | ||
189 | <name>spacing</name> | ||
190 | <number>6</number> | ||
191 | </property> | ||
192 | <spacer> | ||
80 | <property> | 193 | <property> |
81 | <name>name</name> | 194 | <name>name</name> |
82 | <cstring>Spacer1</cstring> | 195 | <cstring>Spacer1</cstring> |
83 | </property> | 196 | </property> |
84 | <property stdset="1"> | 197 | <property stdset="1"> |
85 | <name>orientation</name> | 198 | <name>orientation</name> |
86 | <enum>Horizontal</enum> | 199 | <enum>Horizontal</enum> |
87 | </property> | 200 | </property> |
88 | <property stdset="1"> | 201 | <property stdset="1"> |
89 | <name>sizeType</name> | 202 | <name>sizeType</name> |
90 | <enum>Fixed</enum> | 203 | <enum>Fixed</enum> |
91 | </property> | 204 | </property> |
92 | <property> | 205 | <property> |
93 | <name>sizeHint</name> | 206 | <name>sizeHint</name> |
94 | <size> | 207 | <size> |
95 | <width>30</width> | 208 | <width>30</width> |
96 | <height>20</height> | 209 | <height>20</height> |
97 | </size> | 210 | </size> |
98 | </property> | 211 | </property> |
99 | </spacer> | 212 | </spacer> |
100 | <spacer row="3" column="3" > | 213 | <widget> |
101 | <property> | ||
102 | <name>name</name> | ||
103 | <cstring>Spacer4</cstring> | ||
104 | </property> | ||
105 | <property stdset="1"> | ||
106 | <name>orientation</name> | ||
107 | <enum>Horizontal</enum> | ||
108 | </property> | ||
109 | <property stdset="1"> | ||
110 | <name>sizeType</name> | ||
111 | <enum>Fixed</enum> | ||
112 | </property> | ||
113 | <property> | ||
114 | <name>sizeHint</name> | ||
115 | <size> | ||
116 | <width>21</width> | ||
117 | <height>20</height> | ||
118 | </size> | ||
119 | </property> | ||
120 | </spacer> | ||
121 | <widget row="0" column="0" rowspan="1" colspan="5" > | ||
122 | <class>QLabel</class> | ||
123 | <property stdset="1"> | ||
124 | <name>name</name> | ||
125 | <cstring>txtStatus</cstring> | ||
126 | </property> | ||
127 | <property stdset="1"> | ||
128 | <name>text</name> | ||
129 | <string></string> | ||
130 | </property> | ||
131 | <property stdset="1"> | ||
132 | <name>textFormat</name> | ||
133 | <enum>RichText</enum> | ||
134 | </property> | ||
135 | </widget> | ||
136 | <widget row="2" column="0" rowspan="1" colspan="5" > | ||
137 | <class>QLabel</class> | ||
138 | <property stdset="1"> | ||
139 | <name>name</name> | ||
140 | <cstring>TextLabel3</cstring> | ||
141 | </property> | ||
142 | <property stdset="1"> | ||
143 | <name>text</name> | ||
144 | <string>Please enter PIN:</string> | ||
145 | </property> | ||
146 | </widget> | ||
147 | <widget row="5" column="1" > | ||
148 | <class>QPushButton</class> | 214 | <class>QPushButton</class> |
149 | <property stdset="1"> | 215 | <property stdset="1"> |
150 | <name>name</name> | 216 | <name>name</name> |
151 | <cstring>PushButton1</cstring> | 217 | <cstring>PushButton1</cstring> |
152 | </property> | 218 | </property> |
153 | <property stdset="1"> | 219 | <property stdset="1"> |
154 | <name>text</name> | 220 | <name>text</name> |
155 | <string>&Ok</string> | 221 | <string>&Ok</string> |
156 | </property> | 222 | </property> |
157 | </widget> | 223 | </widget> |
158 | <widget row="5" column="2" rowspan="1" colspan="2" > | 224 | <widget> |
159 | <class>QPushButton</class> | 225 | <class>QPushButton</class> |
160 | <property stdset="1"> | 226 | <property stdset="1"> |
161 | <name>name</name> | 227 | <name>name</name> |
162 | <cstring>PushButton2</cstring> | 228 | <cstring>PushButton2</cstring> |
163 | </property> | 229 | </property> |
164 | <property stdset="1"> | 230 | <property stdset="1"> |
165 | <name>text</name> | 231 | <name>text</name> |
166 | <string>&Cancel</string> | 232 | <string>&Cancel</string> |
167 | </property> | 233 | </property> |
168 | </widget> | 234 | </widget> |
169 | <widget row="4" column="0" rowspan="1" colspan="5" > | 235 | <spacer> |
170 | <class>QCheckBox</class> | 236 | <property> |
171 | <property stdset="1"> | ||
172 | <name>name</name> | 237 | <name>name</name> |
173 | <cstring>ckbPin</cstring> | 238 | <cstring>Spacer2</cstring> |
174 | </property> | 239 | </property> |
175 | <property stdset="1"> | 240 | <property stdset="1"> |
176 | <name>text</name> | 241 | <name>orientation</name> |
177 | <string>Save pin</string> | 242 | <enum>Horizontal</enum> |
178 | </property> | 243 | </property> |
179 | </widget> | 244 | <property stdset="1"> |
180 | </grid> | 245 | <name>sizeType</name> |
246 | <enum>Fixed</enum> | ||
247 | </property> | ||
248 | <property> | ||
249 | <name>sizeHint</name> | ||
250 | <size> | ||
251 | <width>16</width> | ||
252 | <height>20</height> | ||
253 | </size> | ||
254 | </property> | ||
255 | </spacer> | ||
256 | </hbox> | ||
181 | </widget> | 257 | </widget> |
182 | </grid> | 258 | </vbox> |
183 | </widget> | 259 | </widget> |
184 | <connections> | 260 | <connections> |
185 | <connection> | 261 | <connection> |
186 | <sender>PushButton1</sender> | 262 | <sender>PushButton1</sender> |
187 | <signal>clicked()</signal> | 263 | <signal>clicked()</signal> |
188 | <receiver>Form1</receiver> | 264 | <receiver>Form1</receiver> |
189 | <slot>accept()</slot> | 265 | <slot>accept()</slot> |
190 | </connection> | 266 | </connection> |
191 | <connection> | 267 | <connection> |
192 | <sender>PushButton2</sender> | 268 | <sender>PushButton2</sender> |
193 | <signal>clicked()</signal> | 269 | <signal>clicked()</signal> |
194 | <receiver>Form1</receiver> | 270 | <receiver>Form1</receiver> |
195 | <slot>reject()</slot> | 271 | <slot>reject()</slot> |
196 | </connection> | 272 | </connection> |
197 | </connections> | 273 | </connections> |
198 | </UI> | 274 | </UI> |
diff --git a/noncore/net/opietooth/manager/bluebase.cpp b/noncore/net/opietooth/manager/bluebase.cpp index 935c11a..54808fa 100644 --- a/noncore/net/opietooth/manager/bluebase.cpp +++ b/noncore/net/opietooth/manager/bluebase.cpp | |||
@@ -105,97 +105,97 @@ BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl ) | |||
105 | // search conncetions | 105 | // search conncetions |
106 | addConnectedDevices(); | 106 | addConnectedDevices(); |
107 | addSignalStrength(); | 107 | addSignalStrength(); |
108 | m_iconLoader = new BTIconLoader(); | 108 | m_iconLoader = new BTIconLoader(); |
109 | readSavedDevices(); | 109 | readSavedDevices(); |
110 | } | 110 | } |
111 | 111 | ||
112 | /** | 112 | /** |
113 | * Reads all options from the config file | 113 | * Reads all options from the config file |
114 | */ | 114 | */ |
115 | void BlueBase::readConfig() { | 115 | void BlueBase::readConfig() { |
116 | 116 | ||
117 | Config cfg( "bluetoothmanager" ); | 117 | Config cfg( "bluetoothmanager" ); |
118 | cfg.setGroup( "bluezsettings" ); | 118 | cfg.setGroup( "bluezsettings" ); |
119 | 119 | ||
120 | m_deviceName = cfg.readEntry( "name" , "No name" ); // name the device should identify with | 120 | m_deviceName = cfg.readEntry( "name" , "No name" ); // name the device should identify with |
121 | m_defaultPasskey = cfg.readEntryCrypt( "passkey" , "" ); // <- hmm, look up how good the trolls did that, maybe too weak | 121 | m_defaultPasskey = cfg.readEntryCrypt( "passkey" , "" ); // <- hmm, look up how good the trolls did that, maybe too weak |
122 | m_useEncryption = cfg.readBoolEntry( "useEncryption" , TRUE ); | 122 | m_useEncryption = cfg.readBoolEntry( "useEncryption" , TRUE ); |
123 | m_enableAuthentification = cfg.readBoolEntry( "enableAuthentification" , TRUE ); | 123 | m_enableAuthentification = cfg.readBoolEntry( "enableAuthentification" , TRUE ); |
124 | m_enablePagescan = cfg.readBoolEntry( "enablePagescan" , TRUE ); | 124 | m_enablePagescan = cfg.readBoolEntry( "enablePagescan" , TRUE ); |
125 | m_enableInquiryscan = cfg.readBoolEntry( "enableInquiryscan" , TRUE ); | 125 | m_enableInquiryscan = cfg.readBoolEntry( "enableInquiryscan" , TRUE ); |
126 | } | 126 | } |
127 | 127 | ||
128 | /** | 128 | /** |
129 | * Writes all options to the config file | 129 | * Writes all options to the config file |
130 | */ | 130 | */ |
131 | void BlueBase::writeConfig() { | 131 | void BlueBase::writeConfig() { |
132 | 132 | ||
133 | Config cfg( "bluetoothmanager" ); | 133 | Config cfg( "bluetoothmanager" ); |
134 | cfg.setGroup( "bluezsettings" ); | 134 | cfg.setGroup( "bluezsettings" ); |
135 | 135 | ||
136 | cfg.writeEntry( "name" , m_deviceName ); | 136 | cfg.writeEntry( "name" , m_deviceName ); |
137 | cfg.writeEntryCrypt( "passkey" , m_defaultPasskey ); | 137 | cfg.writeEntryCrypt( "passkey" , m_defaultPasskey ); |
138 | cfg.writeEntry( "useEncryption" , m_useEncryption ); | 138 | cfg.writeEntry( "useEncryption" , m_useEncryption ); |
139 | cfg.writeEntry( "enableAuthentification" , m_enableAuthentification ); | 139 | cfg.writeEntry( "enableAuthentification" , m_enableAuthentification ); |
140 | cfg.writeEntry( "enablePagescan" , m_enablePagescan ); | 140 | cfg.writeEntry( "enablePagescan" , m_enablePagescan ); |
141 | cfg.writeEntry( "enableInquiryscan" , m_enableInquiryscan ); | 141 | cfg.writeEntry( "enableInquiryscan" , m_enableInquiryscan ); |
142 | 142 | ||
143 | writeToHciConfig(); | 143 | writeToHciConfig(); |
144 | } | 144 | } |
145 | 145 | ||
146 | /** | 146 | /** |
147 | * Modify the hcid.conf file to our needs | 147 | * Modify the hcid.conf file to our needs |
148 | */ | 148 | */ |
149 | void BlueBase::writeToHciConfig() { | 149 | void BlueBase::writeToHciConfig() { |
150 | qWarning("writeToHciConfig"); | 150 | qWarning("writeToHciConfig"); |
151 | HciConfWrapper hciconf ( "/etc/bluetooth/hcid.conf" ); | 151 | HciConfWrapper hciconf ( "/etc/bluetooth/hcid.conf" ); |
152 | hciconf.load(); | 152 | hciconf.load(); |
153 | hciconf.setPinHelper( "/bin/QtPalmtop/bin/blue-pin" ); | 153 | hciconf.setPinHelper( "/opt/QtPalmtop/bin/bluepin" ); |
154 | hciconf.setName( m_deviceName ); | 154 | hciconf.setName( m_deviceName ); |
155 | hciconf.setEncrypt( m_useEncryption ); | 155 | hciconf.setEncrypt( m_useEncryption ); |
156 | hciconf.setAuth( m_enableAuthentification ); | 156 | hciconf.setAuth( m_enableAuthentification ); |
157 | hciconf.setPscan( m_enablePagescan ); | 157 | hciconf.setPscan( m_enablePagescan ); |
158 | hciconf.setIscan( m_enableInquiryscan ); | 158 | hciconf.setIscan( m_enableInquiryscan ); |
159 | hciconf.save(); | 159 | hciconf.save(); |
160 | } | 160 | } |
161 | 161 | ||
162 | 162 | ||
163 | /** | 163 | /** |
164 | * Read the list of allready known devices | 164 | * Read the list of allready known devices |
165 | */ | 165 | */ |
166 | void BlueBase::readSavedDevices() { | 166 | void BlueBase::readSavedDevices() { |
167 | 167 | ||
168 | QValueList<RemoteDevice> loadedDevices; | 168 | QValueList<RemoteDevice> loadedDevices; |
169 | DeviceHandler handler; | 169 | DeviceHandler handler; |
170 | loadedDevices = handler.load(); | 170 | loadedDevices = handler.load(); |
171 | 171 | ||
172 | addSearchedDevices( loadedDevices ); | 172 | addSearchedDevices( loadedDevices ); |
173 | } | 173 | } |
174 | 174 | ||
175 | 175 | ||
176 | /** | 176 | /** |
177 | * Write the list of allready known devices | 177 | * Write the list of allready known devices |
178 | */ | 178 | */ |
179 | void BlueBase::writeSavedDevices() { | 179 | void BlueBase::writeSavedDevices() { |
180 | QListViewItemIterator it( ListView2 ); | 180 | QListViewItemIterator it( ListView2 ); |
181 | BTListItem* item; | 181 | BTListItem* item; |
182 | BTDeviceItem* device; | 182 | BTDeviceItem* device; |
183 | RemoteDevice::ValueList list; | 183 | RemoteDevice::ValueList list; |
184 | for ( ; it.current(); ++it ) { | 184 | for ( ; it.current(); ++it ) { |
185 | item = (BTListItem*)it.current(); | 185 | item = (BTListItem*)it.current(); |
186 | if(item->typeId() != BTListItem::Device ) | 186 | if(item->typeId() != BTListItem::Device ) |
187 | continue; | 187 | continue; |
188 | device = (BTDeviceItem*)item; | 188 | device = (BTDeviceItem*)item; |
189 | 189 | ||
190 | list.append( device->remoteDevice() ); | 190 | list.append( device->remoteDevice() ); |
191 | } | 191 | } |
192 | /* | 192 | /* |
193 | * if not empty save the List through DeviceHandler | 193 | * if not empty save the List through DeviceHandler |
194 | */ | 194 | */ |
195 | if ( list.isEmpty() ) | 195 | if ( list.isEmpty() ) |
196 | return; | 196 | return; |
197 | DeviceHandler handler; | 197 | DeviceHandler handler; |
198 | handler.save( list ); | 198 | handler.save( list ); |
199 | } | 199 | } |
200 | 200 | ||
201 | 201 | ||
diff --git a/noncore/net/ubrowser/httpfactory.cpp b/noncore/net/ubrowser/httpfactory.cpp index b57149f..369f206 100644 --- a/noncore/net/ubrowser/httpfactory.cpp +++ b/noncore/net/ubrowser/httpfactory.cpp | |||
@@ -50,135 +50,135 @@ const QMimeSource * HttpFactory::data(const QString &abs_name) const | |||
50 | name.prepend(browser->context()); | 50 | name.prepend(browser->context()); |
51 | name = name.remove(0, 7); | 51 | name = name.remove(0, 7); |
52 | } | 52 | } |
53 | 53 | ||
54 | addrEnd = name.find('/'); | 54 | addrEnd = name.find('/'); |
55 | if(addrEnd == -1) | 55 | if(addrEnd == -1) |
56 | { | 56 | { |
57 | name += '/'; | 57 | name += '/'; |
58 | addrEnd = name.length()-1; | 58 | addrEnd = name.length()-1; |
59 | } | 59 | } |
60 | 60 | ||
61 | host = name; | 61 | host = name; |
62 | file = name; | 62 | file = name; |
63 | 63 | ||
64 | host.truncate(addrEnd); | 64 | host.truncate(addrEnd); |
65 | file.remove(0, addrEnd); | 65 | file.remove(0, addrEnd); |
66 | 66 | ||
67 | portSep = host.find(':'); | 67 | portSep = host.find(':'); |
68 | if(portSep != -1) | 68 | if(portSep != -1) |
69 | { | 69 | { |
70 | portS=host; | 70 | portS=host; |
71 | host.truncate(portSep); | 71 | host.truncate(portSep); |
72 | portS.remove(0, portSep+1); | 72 | portS.remove(0, portSep+1); |
73 | port = portS.toInt(); | 73 | port = portS.toInt(); |
74 | } | 74 | } |
75 | 75 | ||
76 | //printf("%s %s %d\n", host.latin1(), file.latin1(), port); | 76 | //printf("%s %s %d\n", host.latin1(), file.latin1(), port); |
77 | 77 | ||
78 | if(port == 80) | 78 | if(port == 80) |
79 | { | 79 | { |
80 | portS="80"; | 80 | portS="80"; |
81 | } | 81 | } |
82 | 82 | ||
83 | //if(file.find(".png", file.length()-4) != -1 || file.find(".gif", file.length()-4) != -1 || file.find(".jpg", file.length()-4) != -1) | 83 | //if(file.find(".png", file.length()-4) != -1 || file.find(".gif", file.length()-4) != -1 || file.find(".jpg", file.length()-4) != -1) |
84 | //{ | 84 | //{ |
85 | // isImage=true; | 85 | // isImage=true; |
86 | //} | 86 | //} |
87 | 87 | ||
88 | //comm->setStuff(host, portS, file, text, image, isImage); | 88 | //comm->setStuff(host, portS, file, text, image, isImage); |
89 | 89 | ||
90 | //socket->connectToHost(host, port); | 90 | //socket->connectToHost(host, port); |
91 | 91 | ||
92 | int con, bytesSent; | 92 | int con, bytesSent; |
93 | struct sockaddr_in serverAddr; | 93 | struct sockaddr_in serverAddr; |
94 | struct hostent * serverInfo = gethostbyname( host.latin1() ); | 94 | struct hostent * serverInfo = gethostbyname( host.latin1() ); |
95 | 95 | ||
96 | if( serverInfo == NULL ) | 96 | if( serverInfo == NULL ) |
97 | { | 97 | { |
98 | QMessageBox *mb = new QMessageBox("Error!", | 98 | QMessageBox *mb = new QMessageBox(QObject::tr("Error!"), |
99 | "couldnt find ip address", | 99 | QObject::tr("IP-Address not found"), |
100 | QMessageBox::NoIcon, | 100 | QMessageBox::NoIcon, |
101 | QMessageBox::Ok, | 101 | QMessageBox::Ok, |
102 | QMessageBox::NoButton, | 102 | QMessageBox::NoButton, |
103 | QMessageBox::NoButton); | 103 | QMessageBox::NoButton); |
104 | mb->exec(); | 104 | mb->exec(); |
105 | perror("HttpFactory::data:"); | 105 | perror("HttpFactory::data:"); |
106 | return 0; | 106 | return 0; |
107 | } | 107 | } |
108 | 108 | ||
109 | QByteArray data; | 109 | QByteArray data; |
110 | //printf( "HttpFactory::data: %s\n", inet_ntoa(*((struct in_addr *)serverInfo->h_addr )) ); | 110 | //printf( "HttpFactory::data: %s\n", inet_ntoa(*((struct in_addr *)serverInfo->h_addr )) ); |
111 | 111 | ||
112 | QString request("GET " + file + " HTTP/1.1\r\nHost: " + host + ':' + portS + "\r\nConnection: close\r\n\r\n"); | 112 | QString request("GET " + file + " HTTP/1.1\r\nHost: " + host + ':' + portS + "\r\nConnection: close\r\n\r\n"); |
113 | 113 | ||
114 | con = socket( AF_INET, SOCK_STREAM, 0 ); | 114 | con = socket( AF_INET, SOCK_STREAM, 0 ); |
115 | if( con == -1 ) | 115 | if( con == -1 ) |
116 | { | 116 | { |
117 | QMessageBox *mb = new QMessageBox("Error!", | 117 | QMessageBox *mb = new QMessageBox(QObject::tr("Error!"), |
118 | "couldnt create socket", | 118 | QObject::tr("Error creating socket"), |
119 | QMessageBox::NoIcon, | 119 | QMessageBox::NoIcon, |
120 | QMessageBox::Ok, | 120 | QMessageBox::Ok, |
121 | QMessageBox::NoButton, | 121 | QMessageBox::NoButton, |
122 | QMessageBox::NoButton); | 122 | QMessageBox::NoButton); |
123 | mb->exec(); | 123 | mb->exec(); |
124 | perror("HttpFactory::data:"); | 124 | perror("HttpFactory::data:"); |
125 | return 0; | 125 | return 0; |
126 | } | 126 | } |
127 | 127 | ||
128 | serverAddr.sin_family = AF_INET; | 128 | serverAddr.sin_family = AF_INET; |
129 | serverAddr.sin_port = htons( port ); | 129 | serverAddr.sin_port = htons( port ); |
130 | serverAddr.sin_addr.s_addr = inet_addr( inet_ntoa(*((struct in_addr *)serverInfo->h_addr )) ); | 130 | serverAddr.sin_addr.s_addr = inet_addr( inet_ntoa(*((struct in_addr *)serverInfo->h_addr )) ); |
131 | memset( &(serverAddr.sin_zero), '\0', 8 ); | 131 | memset( &(serverAddr.sin_zero), '\0', 8 ); |
132 | 132 | ||
133 | if(::connect( con, (struct sockaddr *)&serverAddr, sizeof(struct sockaddr)) == -1 ) | 133 | if(::connect( con, (struct sockaddr *)&serverAddr, sizeof(struct sockaddr)) == -1 ) |
134 | { | 134 | { |
135 | QMessageBox *mb = new QMessageBox("Error!", | 135 | QMessageBox *mb = new QMessageBox(QObject::tr("Error!"), |
136 | "couldnt connect to socket", | 136 | QObject::tr("Error connecting to socket"), |
137 | QMessageBox::NoIcon, | 137 | QMessageBox::NoIcon, |
138 | QMessageBox::Ok, | 138 | QMessageBox::Ok, |
139 | QMessageBox::NoButton, | 139 | QMessageBox::NoButton, |
140 | QMessageBox::NoButton); | 140 | QMessageBox::NoButton); |
141 | mb->exec(); | 141 | mb->exec(); |
142 | perror("HttpFactory::data:"); | 142 | perror("HttpFactory::data:"); |
143 | return 0; | 143 | return 0; |
144 | } | 144 | } |
145 | 145 | ||
146 | 146 | ||
147 | bytesSent = send( con, request.latin1(), request.length(), 0); | 147 | bytesSent = send( con, request.latin1(), request.length(), 0); |
148 | //printf("HttpFactory::data: bytes written: %d out of: %d\n", bytesSent, request.length() ); | 148 | //printf("HttpFactory::data: bytes written: %d out of: %d\n", bytesSent, request.length() ); |
149 | //printf("HttpFactory::data: request sent:\n%s", request.latin1()); | 149 | //printf("HttpFactory::data: request sent:\n%s", request.latin1()); |
150 | 150 | ||
151 | data = this->processResponse( con, isText ); | 151 | data = this->processResponse( con, isText ); |
152 | 152 | ||
153 | ::close( con ); | 153 | ::close( con ); |
154 | 154 | ||
155 | if(isText) | 155 | if(isText) |
156 | { | 156 | { |
157 | text->setText( QString( data ) ); | 157 | text->setText( QString( data ) ); |
158 | return text; | 158 | return text; |
159 | } | 159 | } |
160 | else | 160 | else |
161 | { | 161 | { |
162 | image->setImage( QImage( data ) ); | 162 | image->setImage( QImage( data ) ); |
163 | return image; | 163 | return image; |
164 | } | 164 | } |
165 | } | 165 | } |
166 | 166 | ||
167 | const QMimeSource * HttpFactory::data(const QString &abs_or_rel_name, const QString & context) const | 167 | const QMimeSource * HttpFactory::data(const QString &abs_or_rel_name, const QString & context) const |
168 | { | 168 | { |
169 | printf("HttpFactory::data: using relative data func\n"); | 169 | printf("HttpFactory::data: using relative data func\n"); |
170 | 170 | ||
171 | if(abs_or_rel_name.startsWith(context)) | 171 | if(abs_or_rel_name.startsWith(context)) |
172 | { | 172 | { |
173 | return data(abs_or_rel_name); | 173 | return data(abs_or_rel_name); |
174 | } | 174 | } |
175 | else | 175 | else |
176 | { | 176 | { |
177 | return data(context + abs_or_rel_name); | 177 | return data(context + abs_or_rel_name); |
178 | } | 178 | } |
179 | 179 | ||
180 | return 0; | 180 | return 0; |
181 | } | 181 | } |
182 | 182 | ||
183 | const QByteArray HttpFactory::processResponse( int sockfd, bool &isText ) const | 183 | const QByteArray HttpFactory::processResponse( int sockfd, bool &isText ) const |
184 | { | 184 | { |
diff --git a/noncore/net/ubrowser/mainview.cpp b/noncore/net/ubrowser/mainview.cpp index f68c5db..9302f05 100644 --- a/noncore/net/ubrowser/mainview.cpp +++ b/noncore/net/ubrowser/mainview.cpp | |||
@@ -1,121 +1,121 @@ | |||
1 | /* | 1 | /* |
2 | Opie-uBrowser. a very small web browser, using on QTextBrowser for html display/parsing | 2 | Opie-uBrowser. a very small web browser, using on QTextBrowser for html display/parsing |
3 | Copyright (C) 2002 Thomas Stephens | 3 | Copyright (C) 2002 Thomas Stephens |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public | 5 | This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public |
6 | License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later | 6 | License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later |
7 | version. | 7 | version. |
8 | 8 | ||
9 | This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the | 9 | This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the |
10 | implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | 10 | implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
11 | Public License for more details. | 11 | Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU General Public License along with this program; if not, write to the Free | 13 | You should have received a copy of the GNU General Public License along with this program; if not, write to the Free |
14 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 14 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
15 | */ | 15 | */ |
16 | 16 | ||
17 | 17 | ||
18 | #include "mainview.h" | 18 | #include "mainview.h" |
19 | 19 | ||
20 | MainView::MainView(QWidget *parent, const char *name) : QMainWindow(parent, name) | 20 | MainView::MainView(QWidget *parent, const char *name) : QMainWindow(parent, name) |
21 | { | 21 | { |
22 | setIcon( Resource::loadPixmap( "remote" ) ); | 22 | setIcon( Resource::loadPixmap( "remote" ) ); |
23 | setCaption("uBrowser"); | 23 | setCaption(tr("uBrowser")); |
24 | 24 | ||
25 | setToolBarsMovable( false ); | 25 | setToolBarsMovable( false ); |
26 | 26 | ||
27 | QPEToolBar *toolbar = new QPEToolBar(this, "toolbar"); | 27 | QPEToolBar *toolbar = new QPEToolBar(this, "toolbar"); |
28 | back = new QToolButton(Resource::loadPixmap("ubrowser/back"), 0, 0, 0, 0, toolbar, "back"); | 28 | back = new QToolButton(Resource::loadPixmap("ubrowser/back"), 0, 0, 0, 0, toolbar, "back"); |
29 | forward = new QToolButton(Resource::loadPixmap("ubrowser/forward"), 0, 0, 0, 0, toolbar, "forward"); | 29 | forward = new QToolButton(Resource::loadPixmap("ubrowser/forward"), 0, 0, 0, 0, toolbar, "forward"); |
30 | home = new QToolButton(Resource::loadPixmap("ubrowser/home"), 0, 0, 0, 0, toolbar, "home"); | 30 | home = new QToolButton(Resource::loadPixmap("ubrowser/home"), 0, 0, 0, 0, toolbar, "home"); |
31 | location = new QComboBox(true, toolbar, "location"); | 31 | location = new QComboBox(true, toolbar, "location"); |
32 | go = new QToolButton(Resource::loadPixmap("ubrowser/go"), 0, 0, 0, 0, toolbar, "go"); | 32 | go = new QToolButton(Resource::loadPixmap("ubrowser/go"), 0, 0, 0, 0, toolbar, "go"); |
33 | 33 | ||
34 | toolbar->setStretchableWidget(location); | 34 | toolbar->setStretchableWidget(location); |
35 | toolbar->setHorizontalStretchable(true); | 35 | toolbar->setHorizontalStretchable(true); |
36 | location->setAutoCompletion( true ); | 36 | location->setAutoCompletion( true ); |
37 | 37 | ||
38 | addToolBar(toolbar); | 38 | addToolBar(toolbar); |
39 | 39 | ||
40 | browser = new QTextBrowser(this, "browser"); | 40 | browser = new QTextBrowser(this, "browser"); |
41 | setCentralWidget(browser); | 41 | setCentralWidget(browser); |
42 | 42 | ||
43 | //make the button take you to the location | 43 | //make the button take you to the location |
44 | connect(go, SIGNAL(clicked()), this, SLOT(goClicked()) ); | 44 | connect(go, SIGNAL(clicked()), this, SLOT(goClicked()) ); |
45 | connect(location->lineEdit(), SIGNAL(returnPressed()), this, SLOT(goClicked()) ); | 45 | connect(location->lineEdit(), SIGNAL(returnPressed()), this, SLOT(goClicked()) ); |
46 | 46 | ||
47 | //make back, forward and home do their thing (isnt QTextBrowser great?) | 47 | //make back, forward and home do their thing (isnt QTextBrowser great?) |
48 | connect(back, SIGNAL(clicked()), browser, SLOT(backward()) ); | 48 | connect(back, SIGNAL(clicked()), browser, SLOT(backward()) ); |
49 | connect(forward, SIGNAL(clicked()), browser, SLOT(forward()) ); | 49 | connect(forward, SIGNAL(clicked()), browser, SLOT(forward()) ); |
50 | connect(home, SIGNAL(clicked()), browser, SLOT(home()) ); | 50 | connect(home, SIGNAL(clicked()), browser, SLOT(home()) ); |
51 | 51 | ||
52 | //make back and forward buttons be enabled, only when you can go back or forward (again, i love QTextBrowser) | 52 | //make back and forward buttons be enabled, only when you can go back or forward (again, i love QTextBrowser) |
53 | //this doesnt seem to work, but doesnt break anything either... | 53 | //this doesnt seem to work, but doesnt break anything either... |
54 | connect(browser, SIGNAL(backwardAvailable(bool)), back, SLOT(setOn(bool)) ); | 54 | connect(browser, SIGNAL(backwardAvailable(bool)), back, SLOT(setOn(bool)) ); |
55 | connect(browser, SIGNAL(forwardAvailable(bool)), forward, SLOT(setOn(bool)) ); | 55 | connect(browser, SIGNAL(forwardAvailable(bool)), forward, SLOT(setOn(bool)) ); |
56 | 56 | ||
57 | //notify me when the text of the browser has changed (like when the user clicks a link) | 57 | //notify me when the text of the browser has changed (like when the user clicks a link) |
58 | connect(browser, SIGNAL(textChanged()), this, SLOT(textChanged()) ); | 58 | connect(browser, SIGNAL(textChanged()), this, SLOT(textChanged()) ); |
59 | 59 | ||
60 | http = new HttpFactory(browser); | 60 | http = new HttpFactory(browser); |
61 | 61 | ||
62 | if( qApp->argc() > 1 ) | 62 | if( qApp->argc() > 1 ) |
63 | { | 63 | { |
64 | char **argv = qApp->argv(); | 64 | char **argv = qApp->argv(); |
65 | int i = 0; | 65 | int i = 0; |
66 | QString *openfile = new QString( argv[0] ); | 66 | QString *openfile = new QString( argv[0] ); |
67 | while( openfile->contains( "ubrowser" ) == 0 && i < qApp->argc() ) | 67 | while( openfile->contains( "ubrowser" ) == 0 && i < qApp->argc() ) |
68 | { | 68 | { |
69 | i++; | 69 | i++; |
70 | *openfile = argv[i]; | 70 | *openfile = argv[i]; |
71 | } | 71 | } |
72 | *openfile = argv[i+1]; | 72 | *openfile = argv[i+1]; |
73 | if( !openfile->startsWith( "http://" ) && !openfile->startsWith( "/" ) ) | 73 | if( !openfile->startsWith( "http://" ) && !openfile->startsWith( "/" ) ) |
74 | { | 74 | { |
75 | openfile->insert( 0, QDir::currentDirPath()+"/" ); | 75 | openfile->insert( 0, QDir::currentDirPath()+"/" ); |
76 | } | 76 | } |
77 | location->setEditText( *openfile ); | 77 | location->setEditText( *openfile ); |
78 | goClicked(); | 78 | goClicked(); |
79 | } | 79 | } |
80 | } | 80 | } |
81 | 81 | ||
82 | void MainView::goClicked() | 82 | void MainView::goClicked() |
83 | { | 83 | { |
84 | location->insertItem( location->currentText() ); | 84 | location->insertItem( location->currentText() ); |
85 | 85 | ||
86 | if(location->currentText().startsWith("http://") ) | 86 | if(location->currentText().startsWith("http://") ) |
87 | { | 87 | { |
88 | location->setEditText(location->currentText().lower()); | 88 | location->setEditText(location->currentText().lower()); |
89 | browser->setMimeSourceFactory(http); | 89 | browser->setMimeSourceFactory(http); |
90 | printf("MainView::goClicked: using http source factory\n"); | 90 | printf("MainView::goClicked: using http source factory\n"); |
91 | } | 91 | } |
92 | else | 92 | else |
93 | { | 93 | { |
94 | browser->setMimeSourceFactory(QMimeSourceFactory::defaultFactory()); | 94 | browser->setMimeSourceFactory(QMimeSourceFactory::defaultFactory()); |
95 | printf("MainView::goClicked: using default source factory\n"); | 95 | printf("MainView::goClicked: using default source factory\n"); |
96 | } | 96 | } |
97 | 97 | ||
98 | browser->setSource(location->currentText()); | 98 | browser->setSource(location->currentText()); |
99 | } | 99 | } |
100 | 100 | ||
101 | void MainView::textChanged() | 101 | void MainView::textChanged() |
102 | { | 102 | { |
103 | if(browser->documentTitle().isNull()) | 103 | if(browser->documentTitle().isNull()) |
104 | { | 104 | { |
105 | setCaption(browser->source() + " - uBrowser"); | 105 | setCaption( tr("%1 - uBrowser").arg( browser->source() ) ); |
106 | } | 106 | } |
107 | else | 107 | else |
108 | { | 108 | { |
109 | setCaption(browser->documentTitle() + " - uBrowser"); | 109 | setCaption(tr(" - uBrowser").arg( browser->documentTitle() )); |
110 | } | 110 | } |
111 | 111 | ||
112 | location->setEditText(browser->source()); | 112 | location->setEditText(browser->source()); |
113 | } | 113 | } |
114 | 114 | ||
115 | void MainView::setDocument( const QString& applnk_filename ) | 115 | void MainView::setDocument( const QString& applnk_filename ) |
116 | { | 116 | { |
117 | DocLnk *file = new DocLnk( applnk_filename ); | 117 | DocLnk *file = new DocLnk( applnk_filename ); |
118 | 118 | ||
119 | location->setEditText( file->file() ); | 119 | location->setEditText( file->file() ); |
120 | goClicked(); | 120 | goClicked(); |
121 | } | 121 | } |
diff --git a/noncore/net/ubrowser/opie-ubrowser.control b/noncore/net/ubrowser/opie-ubrowser.control new file mode 100644 index 0000000..61a6cde --- a/dev/null +++ b/noncore/net/ubrowser/opie-ubrowser.control | |||
@@ -0,0 +1,10 @@ | |||
1 | Package: opie-ubrowser | ||
2 | Files: bin/ubrowser apps/Applications/ubrowser.desktop pics/ubrowser/*.png | ||
3 | Priority: optional | ||
4 | Section: opie/applications | ||
5 | Maintainer: Thomas Stephens <spiralman@softhome.net> | ||
6 | Architecture: arm | ||
7 | Version: 0.1-$SUB_VERSION | ||
8 | Depends: task-opie-minimal | ||
9 | License: GPL | ||
10 | Description: a very small web browser | ||
diff --git a/noncore/unsupported/mailit/config.in b/noncore/unsupported/mailit/config.in index 2b56b5f..142b840 100644 --- a/noncore/unsupported/mailit/config.in +++ b/noncore/unsupported/mailit/config.in | |||
@@ -1,4 +1,4 @@ | |||
1 | config MAILIT | 1 | config MAILIT |
2 | boolean "mailit" | 2 | boolean "opie-mailit (a simple POP3 email client)" |
3 | default "n" | 3 | default "n" |
4 | depends ( LIBQPE || LIBQPE-X11 ) | 4 | depends ( LIBQPE || LIBQPE-X11 ) |
diff --git a/noncore/unsupported/mailit/popclient.cpp b/noncore/unsupported/mailit/popclient.cpp index 5da3bcb..1df6b2b 100644 --- a/noncore/unsupported/mailit/popclient.cpp +++ b/noncore/unsupported/mailit/popclient.cpp | |||
@@ -1,331 +1,332 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2001 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2001 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qt Palmtop Environment. | 4 | ** This file is part of Qt Palmtop Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | #include "popclient.h" | 20 | #include "popclient.h" |
21 | #include "emailhandler.h" | 21 | #include "emailhandler.h" |
22 | //#define APOP_TEST | 22 | //#define APOP_TEST |
23 | 23 | ||
24 | extern "C" { | 24 | extern "C" { |
25 | #include "md5.h" | 25 | #include "md5.h" |
26 | } | 26 | } |
27 | 27 | ||
28 | #include <qcstring.h> | 28 | #include <qcstring.h> |
29 | 29 | ||
30 | PopClient::PopClient() | 30 | PopClient::PopClient() |
31 | { | 31 | { |
32 | 32 | ||
33 | socket = new QSocket(this, "popClient"); | 33 | socket = new QSocket(this, "popClient"); |
34 | connect(socket, SIGNAL(error(int)), this, SLOT(errorHandling(int))); | 34 | connect(socket, SIGNAL(error(int)), this, SLOT(errorHandling(int))); |
35 | connect(socket, SIGNAL(connected()), this, SLOT(connectionEstablished())); | 35 | connect(socket, SIGNAL(connected()), this, SLOT(connectionEstablished())); |
36 | connect(socket, SIGNAL(readyRead()), this, SLOT(incomingData())); | 36 | connect(socket, SIGNAL(readyRead()), this, SLOT(incomingData())); |
37 | 37 | ||
38 | stream = new QTextStream(socket); | 38 | stream = new QTextStream(socket); |
39 | 39 | ||
40 | receiving = FALSE; | 40 | receiving = FALSE; |
41 | synchronize = FALSE; | 41 | synchronize = FALSE; |
42 | lastSync = 0; | 42 | lastSync = 0; |
43 | headerLimit = 0; | 43 | headerLimit = 0; |
44 | mailList = 0; | ||
44 | preview = FALSE; | 45 | preview = FALSE; |
45 | } | 46 | } |
46 | 47 | ||
47 | PopClient::~PopClient() | 48 | PopClient::~PopClient() |
48 | { | 49 | { |
49 | delete socket; | 50 | delete socket; |
50 | delete stream; | 51 | delete stream; |
51 | } | 52 | } |
52 | 53 | ||
53 | void PopClient::newConnection(const QString &target, int port) | 54 | void PopClient::newConnection(const QString &target, int port) |
54 | { | 55 | { |
55 | if (receiving) { | 56 | if (receiving) { |
56 | qWarning("socket in use, connection refused"); | 57 | qWarning("socket in use, connection refused"); |
57 | return; | 58 | return; |
58 | } | 59 | } |
59 | 60 | ||
60 | status = Init; | 61 | status = Init; |
61 | 62 | ||
62 | socket->connectToHost(target, port); | 63 | socket->connectToHost(target, port); |
63 | receiving = TRUE; | 64 | receiving = TRUE; |
64 | //selected = FALSE; | 65 | //selected = FALSE; |
65 | 66 | ||
66 | emit updateStatus(tr("DNS lookup")); | 67 | emit updateStatus(tr("DNS lookup")); |
67 | } | 68 | } |
68 | 69 | ||
69 | void PopClient::setAccount(const QString &popUser, const QString &popPasswd) | 70 | void PopClient::setAccount(const QString &popUser, const QString &popPasswd) |
70 | { | 71 | { |
71 | popUserName = popUser; | 72 | popUserName = popUser; |
72 | popPassword = popPasswd; | 73 | popPassword = popPasswd; |
73 | } | 74 | } |
74 | 75 | ||
75 | void PopClient::setSynchronize(int lastCount) | 76 | void PopClient::setSynchronize(int lastCount) |
76 | { | 77 | { |
77 | synchronize = TRUE; | 78 | synchronize = TRUE; |
78 | lastSync = lastCount; | 79 | lastSync = lastCount; |
79 | } | 80 | } |
80 | 81 | ||
81 | void PopClient::removeSynchronize() | 82 | void PopClient::removeSynchronize() |
82 | { | 83 | { |
83 | synchronize = FALSE; | 84 | synchronize = FALSE; |
84 | lastSync = 0; | 85 | lastSync = 0; |
85 | } | 86 | } |
86 | 87 | ||
87 | void PopClient::headersOnly(bool headers, int limit) | 88 | void PopClient::headersOnly(bool headers, int limit) |
88 | { | 89 | { |
89 | preview = headers; | 90 | preview = headers; |
90 | headerLimit = limit; | 91 | headerLimit = limit; |
91 | } | 92 | } |
92 | 93 | ||
93 | void PopClient::setSelectedMails(MailList *list) | 94 | void PopClient::setSelectedMails(MailList *list) |
94 | { | 95 | { |
95 | selected = TRUE; | 96 | selected = TRUE; |
96 | mailList = list; | 97 | mailList = list; |
97 | } | 98 | } |
98 | 99 | ||
99 | void PopClient::connectionEstablished() | 100 | void PopClient::connectionEstablished() |
100 | { | 101 | { |
101 | emit updateStatus(tr("Connection established")); | 102 | emit updateStatus(tr("Connection established")); |
102 | } | 103 | } |
103 | 104 | ||
104 | void PopClient::errorHandling(int status) | 105 | void PopClient::errorHandling(int status) |
105 | { | 106 | { |
106 | errorHandlingWithMsg( status, QString::null ); | 107 | errorHandlingWithMsg( status, QString::null ); |
107 | } | 108 | } |
108 | void PopClient::errorHandlingWithMsg(int status, const QString & Msg ) | 109 | void PopClient::errorHandlingWithMsg(int status, const QString & Msg ) |
109 | { | 110 | { |
110 | emit updateStatus(tr("Error Occured")); | 111 | emit updateStatus(tr("Error Occured")); |
111 | emit errorOccurred(status, Msg); | 112 | emit errorOccurred(status, Msg); |
112 | socket->close(); | 113 | socket->close(); |
113 | receiving = FALSE; | 114 | receiving = FALSE; |
114 | } | 115 | } |
115 | 116 | ||
116 | void PopClient::incomingData() | 117 | void PopClient::incomingData() |
117 | { | 118 | { |
118 | QString response, temp, temp2, timeStamp; | 119 | QString response, temp, temp2, timeStamp; |
119 | QString md5Source; | 120 | QString md5Source; |
120 | int start, end; | 121 | int start, end; |
121 | // char *md5Digest; | 122 | // char *md5Digest; |
122 | char md5Digest[16]; | 123 | char md5Digest[16]; |
123 | // if ( !socket->canReadLine() ) | 124 | // if ( !socket->canReadLine() ) |
124 | // return; | 125 | // return; |
125 | 126 | ||
126 | 127 | ||
127 | response = socket->readLine(); | 128 | response = socket->readLine(); |
128 | 129 | ||
129 | switch(status) { | 130 | switch(status) { |
130 | //logging in | 131 | //logging in |
131 | case Init: { | 132 | case Init: { |
132 | #ifdef APOP_TEST | 133 | #ifdef APOP_TEST |
133 | start = response.find('<',0); | 134 | start = response.find('<',0); |
134 | end = response.find('>', start); | 135 | end = response.find('>', start); |
135 | if( start >= 0 && end > start ) | 136 | if( start >= 0 && end > start ) |
136 | { | 137 | { |
137 | timeStamp = response.mid( start , end - start + 1); | 138 | timeStamp = response.mid( start , end - start + 1); |
138 | md5Source = timeStamp + popPassword; | 139 | md5Source = timeStamp + popPassword; |
139 | 140 | ||
140 | md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]); | 141 | md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]); |
141 | 142 | ||
142 | for(int j =0;j < MD5_DIGEST_LENGTH ;j++) | 143 | for(int j =0;j < MD5_DIGEST_LENGTH ;j++) |
143 | { | 144 | { |
144 | printf("%x", md5Digest[j]); | 145 | printf("%x", md5Digest[j]); |
145 | } | 146 | } |
146 | printf("\n"); | 147 | printf("\n"); |
147 | // qDebug(md5Digest); | 148 | // qDebug(md5Digest); |
148 | *stream << "APOP " << popUserName << " " << md5Digest << "\r\n"; | 149 | *stream << "APOP " << popUserName << " " << md5Digest << "\r\n"; |
149 | // qDebug("%s", stream); | 150 | // qDebug("%s", stream); |
150 | status = Stat; | 151 | status = Stat; |
151 | } | 152 | } |
152 | else | 153 | else |
153 | #endif | 154 | #endif |
154 | { | 155 | { |
155 | timeStamp = ""; | 156 | timeStamp = ""; |
156 | *stream << "USER " << popUserName << "\r\n"; | 157 | *stream << "USER " << popUserName << "\r\n"; |
157 | status = Pass; | 158 | status = Pass; |
158 | } | 159 | } |
159 | 160 | ||
160 | break; | 161 | break; |
161 | } | 162 | } |
162 | 163 | ||
163 | case Pass: { | 164 | case Pass: { |
164 | *stream << "PASS " << popPassword << "\r\n"; | 165 | *stream << "PASS " << popPassword << "\r\n"; |
165 | status = Stat; | 166 | status = Stat; |
166 | 167 | ||
167 | break; | 168 | break; |
168 | } | 169 | } |
169 | //ask for number of messages | 170 | //ask for number of messages |
170 | case Stat: { | 171 | case Stat: { |
171 | if (response[0] == '+') { | 172 | if (response[0] == '+') { |
172 | *stream << "STAT" << "\r\n"; | 173 | *stream << "STAT" << "\r\n"; |
173 | status = Mcnt; | 174 | status = Mcnt; |
174 | } else errorHandlingWithMsg(ErrLoginFailed, response); | 175 | } else errorHandlingWithMsg(ErrLoginFailed, response); |
175 | break; | 176 | break; |
176 | } | 177 | } |
177 | //get count of messages, eg "+OK 4 900.." -> int 4 | 178 | //get count of messages, eg "+OK 4 900.." -> int 4 |
178 | case Mcnt: { | 179 | case Mcnt: { |
179 | if (response[0] == '+') { | 180 | if (response[0] == '+') { |
180 | temp = response.replace(0, 4, ""); | 181 | temp = response.replace(0, 4, ""); |
181 | int x = temp.find(" ", 0); | 182 | int x = temp.find(" ", 0); |
182 | temp.truncate((uint) x); | 183 | temp.truncate((uint) x); |
183 | newMessages = temp.toInt(); | 184 | newMessages = temp.toInt(); |
184 | messageCount = 1; | 185 | messageCount = 1; |
185 | status = List; | 186 | status = List; |
186 | 187 | ||
187 | if (synchronize) { | 188 | if (synchronize) { |
188 | //messages deleted from server, reload all | 189 | //messages deleted from server, reload all |
189 | if (newMessages < lastSync) | 190 | if (newMessages < lastSync) |
190 | lastSync = 0; | 191 | lastSync = 0; |
191 | messageCount = 1; | 192 | messageCount = 1; |
192 | } | 193 | } |
193 | 194 | ||
194 | if (selected) { | 195 | if (selected && mailList ) { |
195 | int *ptr = mailList->first(); | 196 | int *ptr = mailList->first(); |
196 | if (ptr != 0) { | 197 | if (ptr != 0) { |
197 | newMessages++; //to ensure no early jumpout | 198 | newMessages++; //to ensure no early jumpout |
198 | messageCount = *ptr; | 199 | messageCount = *ptr; |
199 | } else newMessages = 0; | 200 | } else newMessages = 0; |
200 | } | 201 | } |
201 | 202 | ||
202 | } else errorHandlingWithMsg(ErrUnknownResponse, response); | 203 | } else errorHandlingWithMsg(ErrUnknownResponse, response); |
203 | } | 204 | } |
204 | //Read message number x, count upwards to messageCount | 205 | //Read message number x, count upwards to messageCount |
205 | case List: { | 206 | case List: { |
206 | if (messageCount <= newMessages) { | 207 | if (messageCount <= newMessages) { |
207 | *stream << "LIST " << messageCount << "\r\n"; | 208 | *stream << "LIST " << messageCount << "\r\n"; |
208 | status = Size; | 209 | status = Size; |
209 | temp2.setNum(newMessages - lastSync); | 210 | temp2.setNum(newMessages - lastSync); |
210 | temp.setNum(messageCount - lastSync); | 211 | temp.setNum(messageCount - lastSync); |
211 | if (!selected) { | 212 | if (!selected) { |
212 | emit updateStatus(tr("Retrieving ") + temp + "/" + temp2); | 213 | emit updateStatus(tr("Retrieving ") + temp + "/" + temp2); |
213 | } else { | 214 | } else { |
214 | //completing a previously closed transfer | 215 | //completing a previously closed transfer |
215 | /* if ( (messageCount - lastSync) <= 0) { | 216 | /* if ( (messageCount - lastSync) <= 0) { |
216 | temp.setNum(messageCount); | 217 | temp.setNum(messageCount); |
217 | emit updateStatus(tr("Previous message ") + temp); | 218 | emit updateStatus(tr("Previous message ") + temp); |
218 | } else {*/ | 219 | } else {*/ |
219 | emit updateStatus(tr("Completing message ") + temp); | 220 | emit updateStatus(tr("Completing message ") + temp); |
220 | //} | 221 | //} |
221 | } | 222 | } |
222 | break; | 223 | break; |
223 | } else { | 224 | } else { |
224 | emit updateStatus(tr("No new Messages")); | 225 | emit updateStatus(tr("No new Messages")); |
225 | status = Quit; | 226 | status = Quit; |
226 | } | 227 | } |
227 | } | 228 | } |
228 | //get size of message, eg "500 characters in message.." -> int 500 | 229 | //get size of message, eg "500 characters in message.." -> int 500 |
229 | case Size: { | 230 | case Size: { |
230 | if (status != Quit) { //because of idiotic switch | 231 | if (status != Quit) { //because of idiotic switch |
231 | if (response[0] == '+') { | 232 | if (response[0] == '+') { |
232 | temp = response.replace(0, 4, ""); | 233 | temp = response.replace(0, 4, ""); |
233 | int x = temp.find(" ", 0); | 234 | int x = temp.find(" ", 0); |
234 | temp = temp.right(temp.length() - ((uint) x + 1) ); | 235 | temp = temp.right(temp.length() - ((uint) x + 1) ); |
235 | mailSize = temp.toInt(); | 236 | mailSize = temp.toInt(); |
236 | emit currentMailSize(mailSize); | 237 | emit currentMailSize(mailSize); |
237 | 238 | ||
238 | status = Retr; | 239 | status = Retr; |
239 | } else { | 240 | } else { |
240 | //qWarning(response); | 241 | //qWarning(response); |
241 | errorHandlingWithMsg(ErrUnknownResponse, response); | 242 | errorHandlingWithMsg(ErrUnknownResponse, response); |
242 | } | 243 | } |
243 | } | 244 | } |
244 | } | 245 | } |
245 | //Read message number x, count upwards to messageCount | 246 | //Read message number x, count upwards to messageCount |
246 | case Retr: { | 247 | case Retr: { |
247 | if (status != Quit) { | 248 | if (status != Quit) { |
248 | if ((selected)||(mailSize <= headerLimit)) | 249 | if ((selected)||(mailSize <= headerLimit)) |
249 | { | 250 | { |
250 | *stream << "RETR " << messageCount << "\r\n"; | 251 | *stream << "RETR " << messageCount << "\r\n"; |
251 | } else { //only header | 252 | } else { //only header |
252 | *stream << "TOP " << messageCount << " 0\r\n"; | 253 | *stream << "TOP " << messageCount << " 0\r\n"; |
253 | } | 254 | } |
254 | messageCount++; | 255 | messageCount++; |
255 | status = Ignore; | 256 | status = Ignore; |
256 | break; | 257 | break; |
257 | } } | 258 | } } |
258 | case Ignore: { | 259 | case Ignore: { |
259 | if (status != Quit) { //because of idiotic switch | 260 | if (status != Quit) { //because of idiotic switch |
260 | if (response[0] == '+') { | 261 | if (response[0] == '+') { |
261 | message = ""; | 262 | message = ""; |
262 | status = Read; | 263 | status = Read; |
263 | if (!socket->canReadLine()) //sync. problems | 264 | if (!socket->canReadLine()) //sync. problems |
264 | break; | 265 | break; |
265 | response = socket->readLine(); | 266 | response = socket->readLine(); |
266 | } else errorHandlingWithMsg(ErrUnknownResponse, response); | 267 | } else errorHandlingWithMsg(ErrUnknownResponse, response); |
267 | } | 268 | } |
268 | } | 269 | } |
269 | //add all incoming lines to body. When size is reached, send | 270 | //add all incoming lines to body. When size is reached, send |
270 | //message, and go back to read new message | 271 | //message, and go back to read new message |
271 | case Read: { | 272 | case Read: { |
272 | if (status != Quit) { //because of idiotic switch | 273 | if (status != Quit) { //because of idiotic switch |
273 | message += response; | 274 | message += response; |
274 | while ( socket->canReadLine() ) { | 275 | while ( socket->canReadLine() ) { |
275 | response = socket->readLine(); | 276 | response = socket->readLine(); |
276 | message += response; | 277 | message += response; |
277 | } | 278 | } |
278 | emit downloadedSize(message.length()); | 279 | emit downloadedSize(message.length()); |
279 | int x = message.find("\r\n.\r\n",-5); | 280 | int x = message.find("\r\n.\r\n",-5); |
280 | if (x == -1) { | 281 | if (x == -1) { |
281 | break; | 282 | break; |
282 | } else { //message reach entire size | 283 | } else { //message reach entire size |
283 | if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active | 284 | if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active |
284 | { | 285 | { |
285 | emit newMessage(message, messageCount-1, mailSize, TRUE); | 286 | emit newMessage(message, messageCount-1, mailSize, TRUE); |
286 | } else { //incomplete mail downloaded | 287 | } else { //incomplete mail downloaded |
287 | emit newMessage(message, messageCount-1, mailSize, FALSE); | 288 | emit newMessage(message, messageCount-1, mailSize, FALSE); |
288 | } | 289 | } |
289 | 290 | ||
290 | if ((messageCount > newMessages)||(selected)) //last message ? | 291 | if ((messageCount > newMessages)||(selected)) //last message ? |
291 | { | 292 | { |
292 | status = Quit; | 293 | status = Quit; |
293 | if (selected) { //grab next from queue | 294 | if (selected) { //grab next from queue |
294 | newMessages--; | 295 | newMessages--; |
295 | status = Quit; | 296 | status = Quit; |
296 | } | 297 | } |
297 | } | 298 | } |
298 | else | 299 | else |
299 | { | 300 | { |
300 | *stream << "LIST " << messageCount << "\r\n"; | 301 | *stream << "LIST " << messageCount << "\r\n"; |
301 | status = Size; | 302 | status = Size; |
302 | temp2.setNum(newMessages - lastSync); | 303 | temp2.setNum(newMessages - lastSync); |
303 | temp.setNum(messageCount - lastSync); | 304 | temp.setNum(messageCount - lastSync); |
304 | emit updateStatus(tr("Retrieving ") + temp + "/" + temp2); | 305 | emit updateStatus(tr("Retrieving ") + temp + "/" + temp2); |
305 | 306 | ||
306 | break; | 307 | break; |
307 | } | 308 | } |
308 | } | 309 | } |
309 | } | 310 | } |
310 | if (status != Quit) | 311 | if (status != Quit) |
311 | break; | 312 | break; |
312 | } | 313 | } |
313 | case Quit: { | 314 | case Quit: { |
314 | *stream << "Quit\r\n"; | 315 | *stream << "Quit\r\n"; |
315 | status = Done; | 316 | status = Done; |
316 | int newM = newMessages - lastSync; | 317 | int newM = newMessages - lastSync; |
317 | if (newM > 0) { | 318 | if (newM > 0) { |
318 | temp.setNum(newM); | 319 | temp.setNum(newM); |
319 | emit updateStatus(temp + tr(" new messages")); | 320 | emit updateStatus(temp + tr(" new messages")); |
320 | } else { | 321 | } else { |
321 | emit updateStatus(tr("No new messages")); | 322 | emit updateStatus(tr("No new messages")); |
322 | } | 323 | } |
323 | 324 | ||
324 | socket->close(); | 325 | socket->close(); |
325 | receiving = FALSE; | 326 | receiving = FALSE; |
326 | emit mailTransfered(newM); | 327 | emit mailTransfered(newM); |
327 | break; | 328 | break; |
328 | } | 329 | } |
329 | } | 330 | } |
330 | 331 | ||
331 | } | 332 | } |
diff --git a/noncore/unsupported/mailit/resource.cpp b/noncore/unsupported/mailit/resource.cpp deleted file mode 100644 index dc19880..0000000 --- a/noncore/unsupported/mailit/resource.cpp +++ b/dev/null | |||
@@ -1,136 +0,0 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Qtopia Environment. | ||
5 | ** | ||
6 | ** This file may be distributed and/or modified under the terms of the | ||
7 | ** GNU General Public License version 2 as published by the Free Software | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
13 | ** | ||
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
15 | ** | ||
16 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
17 | ** not clear to you. | ||
18 | ** | ||
19 | **********************************************************************/ | ||
20 | |||
21 | #include "qpeapplication.h" | ||
22 | #include "resource.h" | ||
23 | #include <qdir.h> | ||
24 | #include <qfile.h> | ||
25 | #include <qregexp.h> | ||
26 | #include <qpixmapcache.h> | ||
27 | #include <qpainter.h> | ||
28 | |||
29 | #include "inlinepics_p.h" | ||
30 | |||
31 | /*! | ||
32 | \class Resource resource.h | ||
33 | \brief The Resource class provides access to named resources. | ||
34 | |||
35 | The resources may be provided from files or other sources. | ||
36 | */ | ||
37 | |||
38 | /*! | ||
39 | \fn Resource::Resource() | ||
40 | \internal | ||
41 | */ | ||
42 | |||
43 | /*! | ||
44 | Returns the QPixmap named \a pix. You should avoid including | ||
45 | any filename type extension (eg. .png, .xpm). | ||
46 | */ | ||
47 | QPixmap Resource::loadPixmap( const QString &pix ) | ||
48 | { | ||
49 | QPixmap pm; | ||
50 | QString key="QPE_"+pix; | ||
51 | if ( !QPixmapCache::find(key,pm) ) { | ||
52 | pm.convertFromImage(loadImage(pix)); | ||
53 | QPixmapCache::insert(key,pm); | ||
54 | } | ||
55 | return pm; | ||
56 | } | ||
57 | |||
58 | /*! | ||
59 | Returns the QBitmap named \a pix. You should avoid including | ||
60 | any filename type extension (eg. .png, .xpm). | ||
61 | */ | ||
62 | QBitmap Resource::loadBitmap( const QString &pix ) | ||
63 | { | ||
64 | QBitmap bm; | ||
65 | bm = loadPixmap(pix); | ||
66 | return bm; | ||
67 | } | ||
68 | |||
69 | /*! | ||
70 | Returns the filename of a pixmap named \a pix. You should avoid including | ||
71 | any filename type extension (eg. .png, .xpm). | ||
72 | |||
73 | Normally you will use loadPixmap() rather than this function. | ||
74 | */ | ||
75 | QString Resource::findPixmap( const QString &pix ) | ||
76 | { | ||
77 | QString picsPath = QPEApplication::qpeDir() + "pics/"; | ||
78 | |||
79 | if ( QFile( picsPath + pix + ".png").exists() ) | ||
80 | return picsPath + pix + ".png"; | ||
81 | else if ( QFile( picsPath + pix + ".xpm").exists() ) | ||
82 | return picsPath + pix + ".xpm"; | ||
83 | else if ( QFile( picsPath + pix ).exists() ) | ||
84 | return picsPath + pix; | ||
85 | |||
86 | //qDebug("Cannot find pixmap: %s", pix.latin1()); | ||
87 | return QString(); | ||
88 | } | ||
89 | |||
90 | /*! | ||
91 | Returns a sound file for a sound named \a name. | ||
92 | You should avoid including any filename type extension (eg. .wav, .au, .mp3). | ||
93 | */ | ||
94 | QString Resource::findSound( const QString &name ) | ||
95 | { | ||
96 | QString picsPath = QPEApplication::qpeDir() + "sounds/"; | ||
97 | |||
98 | QString result; | ||
99 | if ( QFile( (result = picsPath + name + ".wav") ).exists() ) | ||
100 | return result; | ||
101 | |||
102 | return QString(); | ||
103 | } | ||
104 | |||
105 | /*! | ||
106 | Returns a list of all sound names. | ||
107 | */ | ||
108 | QStringList Resource::allSounds() | ||
109 | { | ||
110 | QDir resourcedir( QPEApplication::qpeDir() + "sounds/", "*.wav" ); | ||
111 | QStringList entries = resourcedir.entryList(); | ||
112 | QStringList result; | ||
113 | for (QStringList::Iterator i=entries.begin(); i != entries.end(); ++i) | ||
114 | result.append((*i).replace(QRegExp("\\.wav"),"")); | ||
115 | return result; | ||
116 | } | ||
117 | |||
118 | /*! | ||
119 | Returns the QImage named \a name. You should avoid including | ||
120 | any filename type extension (eg. .png, .xpm). | ||
121 | */ | ||
122 | QImage Resource::loadImage( const QString &name) | ||
123 | { | ||
124 | QImage img = qembed_findImage(name.latin1()); | ||
125 | if ( img.isNull() ) | ||
126 | return QImage(findPixmap(name)); | ||
127 | return img; | ||
128 | } | ||
129 | |||
130 | /*! | ||
131 | \fn QIconSet Resource::loadIconSet( const QString &name ) | ||
132 | |||
133 | Returns a QIconSet for the pixmap named \a name. A disabled icon is | ||
134 | generated that conforms to the Qtopia look & feel. You should avoid | ||
135 | including any filename type extension (eg. .png, .xpm). | ||
136 | */ | ||
diff --git a/noncore/unsupported/mailit/resource.h b/noncore/unsupported/mailit/resource.h deleted file mode 100644 index 982c58a..0000000 --- a/noncore/unsupported/mailit/resource.h +++ b/dev/null | |||
@@ -1,80 +0,0 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Qtopia Environment. | ||
5 | ** | ||
6 | ** This file may be distributed and/or modified under the terms of the | ||
7 | ** GNU General Public License version 2 as published by the Free Software | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
13 | ** | ||
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
15 | ** | ||
16 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
17 | ** not clear to you. | ||
18 | ** | ||
19 | **********************************************************************/ | ||
20 | #ifndef PIXMAPLOADER_H | ||
21 | #define PIXMAPLOADER_H | ||
22 | |||
23 | #include <qimage.h> | ||
24 | #include <qbitmap.h> | ||
25 | #include <qiconset.h> | ||
26 | #include <qstringlist.h> | ||
27 | |||
28 | class Resource | ||
29 | { | ||
30 | public: | ||
31 | Resource() {} | ||
32 | |||
33 | static QImage loadImage( const QString &name); | ||
34 | |||
35 | static QPixmap loadPixmap( const QString &name ); | ||
36 | static QBitmap loadBitmap( const QString &name ); | ||
37 | static QString findPixmap( const QString &name ); | ||
38 | |||
39 | static QIconSet loadIconSet( const QString &name ); | ||
40 | |||
41 | static QString findSound( const QString &name ); | ||
42 | static QStringList allSounds(); | ||
43 | }; | ||
44 | |||
45 | // Inline for compatibility with SHARP ROMs | ||
46 | inline QIconSet Resource::loadIconSet( const QString &pix ) | ||
47 | { | ||
48 | QImage img = loadImage( pix ); | ||
49 | QPixmap pm; | ||
50 | pm.convertFromImage( img ); | ||
51 | QIconSet is( pm ); | ||
52 | QIconSet::Size size = pm.width() <= 22 ? QIconSet::Small : QIconSet::Large; | ||
53 | |||
54 | QPixmap dpm = loadPixmap( pix + "_disabled" ); | ||
55 | |||
56 | #ifndef QT_NO_DEPTH_32// have alpha-blended pixmaps | ||
57 | if ( dpm.isNull() ) { | ||
58 | QImage dimg( img.width(), img.height(), 32 ); | ||
59 | for ( int y = 0; y < img.height(); y++ ) { | ||
60 | for ( int x = 0; x < img.width(); x++ ) { | ||
61 | QRgb p = img.pixel( x, y ); | ||
62 | uint a = (p & 0xff000000) / 3; | ||
63 | p = (p & 0x00ffffff) | (a & 0xff000000); | ||
64 | dimg.setPixel( x, y, p ); | ||
65 | } | ||
66 | } | ||
67 | |||
68 | dimg.setAlphaBuffer( TRUE ); | ||
69 | dpm.convertFromImage( dimg ); | ||
70 | } | ||
71 | #endif | ||
72 | |||
73 | if ( !dpm.isNull() ) | ||
74 | is.setPixmap( dpm, size, QIconSet::Disabled ); | ||
75 | |||
76 | return is; | ||
77 | } | ||
78 | |||
79 | |||
80 | #endif | ||
diff --git a/noncore/unsupported/mailit/smtpclient.cpp b/noncore/unsupported/mailit/smtpclient.cpp index 5b5ef52..51ca50b 100644 --- a/noncore/unsupported/mailit/smtpclient.cpp +++ b/noncore/unsupported/mailit/smtpclient.cpp | |||
@@ -59,112 +59,112 @@ void SmtpClient::addMail(const QString &from, const QString &subject, const QStr | |||
59 | 59 | ||
60 | mail->from = from; | 60 | mail->from = from; |
61 | mail->subject = subject; | 61 | mail->subject = subject; |
62 | mail->to = to; | 62 | mail->to = to; |
63 | mail->body = body; | 63 | mail->body = body; |
64 | 64 | ||
65 | mailList.append(mail); | 65 | mailList.append(mail); |
66 | } | 66 | } |
67 | 67 | ||
68 | void SmtpClient::connectionEstablished() | 68 | void SmtpClient::connectionEstablished() |
69 | { | 69 | { |
70 | emit updateStatus(tr("Connection established")); | 70 | emit updateStatus(tr("Connection established")); |
71 | 71 | ||
72 | } | 72 | } |
73 | 73 | ||
74 | void SmtpClient::errorHandling(int status) | 74 | void SmtpClient::errorHandling(int status) |
75 | { | 75 | { |
76 | errorHandlingWithMsg( status, QString::null ); | 76 | errorHandlingWithMsg( status, QString::null ); |
77 | } | 77 | } |
78 | 78 | ||
79 | void SmtpClient::errorHandlingWithMsg(int status, const QString & EMsg ) | 79 | void SmtpClient::errorHandlingWithMsg(int status, const QString & EMsg ) |
80 | { | 80 | { |
81 | emit errorOccurred(status, EMsg ); | 81 | emit errorOccurred(status, EMsg ); |
82 | socket->close(); | 82 | socket->close(); |
83 | mailList.clear(); | 83 | mailList.clear(); |
84 | sending = FALSE; | 84 | sending = FALSE; |
85 | } | 85 | } |
86 | 86 | ||
87 | void SmtpClient::incomingData() | 87 | void SmtpClient::incomingData() |
88 | { | 88 | { |
89 | QString response; | 89 | QString response; |
90 | 90 | ||
91 | if (!socket->canReadLine()) | 91 | if (!socket->canReadLine()) |
92 | return; | 92 | return; |
93 | 93 | ||
94 | response = socket->readLine(); | 94 | response = socket->readLine(); |
95 | switch(status) { | 95 | switch(status) { |
96 | case Init: { | 96 | case Init: { |
97 | if (response[0] == '2') { | 97 | if (response[0] == '2') { |
98 | status = From; | 98 | status = From; |
99 | mailPtr = mailList.first(); | 99 | mailPtr = mailList.first(); |
100 | *stream << "HELO there\r\n"; | 100 | *stream << "HELO there\r\n"; |
101 | } else errorHandlingWithMsg(ErrUnknownResponse,response); | 101 | } else errorHandlingWithMsg(ErrUnknownResponse,response); |
102 | break; | 102 | break; |
103 | } | 103 | } |
104 | case From: { | 104 | case From: { |
105 | if (response[0] == '2') { | 105 | if (response[0] == '2') { |
106 | qDebug(mailPtr->from); | 106 | qDebug(mailPtr->from); |
107 | *stream << "MAIL FROM: <" << mailPtr->from << ">\r\n"; | 107 | *stream << "MAIL FROM: " << mailPtr->from << "\r\n"; |
108 | status = Recv; | 108 | status = Recv; |
109 | } else errorHandlingWithMsg(ErrUnknownResponse, response ); | 109 | } else errorHandlingWithMsg(ErrUnknownResponse, response ); |
110 | break; | 110 | break; |
111 | } | 111 | } |
112 | case Recv: { | 112 | case Recv: { |
113 | if (response[0] == '2') { | 113 | if (response[0] == '2') { |
114 | it = mailPtr->to.begin(); | 114 | it = mailPtr->to.begin(); |
115 | if (it == NULL) { | 115 | if (it == NULL) { |
116 | errorHandlingWithMsg(ErrUnknownResponse,response); | 116 | errorHandlingWithMsg(ErrUnknownResponse,response); |
117 | } | 117 | } |
118 | *stream << "RCPT TO: <" << *it << ">\r\n"; | 118 | *stream << "RCPT TO: " << *it << "\r\n"; |
119 | status = MRcv; | 119 | status = MRcv; |
120 | } else errorHandlingWithMsg(ErrUnknownResponse,response); | 120 | } else errorHandlingWithMsg(ErrUnknownResponse,response); |
121 | break; | 121 | break; |
122 | } | 122 | } |
123 | case MRcv: { | 123 | case MRcv: { |
124 | if (response[0] == '2') { | 124 | if (response[0] == '2') { |
125 | it++; | 125 | it++; |
126 | if ( it != mailPtr->to.end() ) { | 126 | if ( it != mailPtr->to.end() ) { |
127 | *stream << "RCPT TO: <" << *it << ">\r\n"; | 127 | *stream << "RCPT TO: " << *it << "\r\n"; |
128 | break; | 128 | break; |
129 | } else { | 129 | } else { |
130 | status = Data; | 130 | status = Data; |
131 | } | 131 | } |
132 | } else errorHandlingWithMsg(ErrUnknownResponse,response); | 132 | } else errorHandlingWithMsg(ErrUnknownResponse,response); |
133 | } | 133 | } |
134 | case Data: { | 134 | case Data: { |
135 | if (response[0] == '2') { | 135 | if (response[0] == '2') { |
136 | *stream << "DATA\r\n"; | 136 | *stream << "DATA\r\n"; |
137 | status = Body; | 137 | status = Body; |
138 | emit updateStatus(tr("Sending: ") + mailPtr->subject); | 138 | emit updateStatus(tr("Sending: ") + mailPtr->subject); |
139 | 139 | ||
140 | } else errorHandlingWithMsg(ErrUnknownResponse,response); | 140 | } else errorHandlingWithMsg(ErrUnknownResponse,response); |
141 | break; | 141 | break; |
142 | } | 142 | } |
143 | case Body: { | 143 | case Body: { |
144 | if (response[0] == '3') { | 144 | if (response[0] == '3') { |
145 | *stream << mailPtr->body << "\r\n.\r\n"; | 145 | *stream << mailPtr->body << "\r\n.\r\n"; |
146 | mailPtr = mailList.next(); | 146 | mailPtr = mailList.next(); |
147 | if (mailPtr != NULL) { | 147 | if (mailPtr != NULL) { |
148 | status = From; | 148 | status = From; |
149 | } else { | 149 | } else { |
150 | status = Quit; | 150 | status = Quit; |
151 | } | 151 | } |
152 | } else errorHandlingWithMsg(ErrUnknownResponse,response); | 152 | } else errorHandlingWithMsg(ErrUnknownResponse,response); |
153 | break; | 153 | break; |
154 | } | 154 | } |
155 | case Quit: { | 155 | case Quit: { |
156 | if (response[0] == '2') { | 156 | if (response[0] == '2') { |
157 | *stream << "QUIT\r\n"; | 157 | *stream << "QUIT\r\n"; |
158 | status = Done; | 158 | status = Done; |
159 | QString temp; | 159 | QString temp; |
160 | temp.setNum(mailList.count()); | 160 | temp.setNum(mailList.count()); |
161 | emit updateStatus(tr("Sent ") + temp + tr(" messages")); | 161 | emit updateStatus(tr("Sent ") + temp + tr(" messages")); |
162 | emit mailSent(); | 162 | emit mailSent(); |
163 | mailList.clear(); | 163 | mailList.clear(); |
164 | sending = FALSE; | 164 | sending = FALSE; |
165 | socket->close(); | 165 | socket->close(); |
166 | } else errorHandlingWithMsg(ErrUnknownResponse,response); | 166 | } else errorHandlingWithMsg(ErrUnknownResponse,response); |
167 | break; | 167 | break; |
168 | } | 168 | } |
169 | } | 169 | } |
170 | } | 170 | } |
diff --git a/noncore/unsupported/mailit/viewatt.cpp b/noncore/unsupported/mailit/viewatt.cpp index 293e137..3515ba5 100644 --- a/noncore/unsupported/mailit/viewatt.cpp +++ b/noncore/unsupported/mailit/viewatt.cpp | |||
@@ -1,121 +1,121 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2001 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2001 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qt Palmtop Environment. | 4 | ** This file is part of Qt Palmtop Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | #include "resource.h" | 20 | #include <qpe/resource.h> |
21 | #include "viewatt.h" | 21 | #include "viewatt.h" |
22 | #include <qwhatsthis.h> | 22 | #include <qwhatsthis.h> |
23 | #include <qpe/applnk.h> | 23 | #include <qpe/applnk.h> |
24 | #include <qpe/mimetype.h> | 24 | #include <qpe/mimetype.h> |
25 | 25 | ||
26 | ViewAtt::ViewAtt(QWidget *parent, const char *name, WFlags f) | 26 | ViewAtt::ViewAtt(QWidget *parent, const char *name, WFlags f) |
27 | : QMainWindow(parent, name, f) | 27 | : QMainWindow(parent, name, f) |
28 | { | 28 | { |
29 | setCaption(tr("Exploring attatchments")); | 29 | setCaption(tr("Exploring attatchments")); |
30 | 30 | ||
31 | setToolBarsMovable( FALSE ); | 31 | setToolBarsMovable( FALSE ); |
32 | bar = new QToolBar(this); | 32 | bar = new QToolBar(this); |
33 | installButton = new QAction( tr( "Install" ), Resource::loadPixmap( "exec" ), QString::null, CTRL + Key_C, this, 0 ); | 33 | installButton = new QAction( tr( "Install" ), Resource::loadPixmap( "exec" ), QString::null, CTRL + Key_C, this, 0 ); |
34 | connect(installButton, SIGNAL(activated()), this, SLOT(install()) ); | 34 | connect(installButton, SIGNAL(activated()), this, SLOT(install()) ); |
35 | installButton->setWhatsThis(tr("Click here to install the attachment to your Documents")); | 35 | installButton->setWhatsThis(tr("Click here to install the attachment to your Documents")); |
36 | 36 | ||
37 | listView = new QListView(this, "AttView"); | 37 | listView = new QListView(this, "AttView"); |
38 | listView->addColumn( tr("Attatchment") ); | 38 | listView->addColumn( tr("Attatchment") ); |
39 | listView->addColumn( tr("Type") ); | 39 | listView->addColumn( tr("Type") ); |
40 | listView->addColumn( tr("Installed") ); | 40 | listView->addColumn( tr("Installed") ); |
41 | setCentralWidget(listView); | 41 | setCentralWidget(listView); |
42 | QWhatsThis::add(listView,QWidget::tr("This is an overview about all attachments in the mail")); | 42 | QWhatsThis::add(listView,QWidget::tr("This is an overview about all attachments in the mail")); |
43 | } | 43 | } |
44 | 44 | ||
45 | void ViewAtt::update(Email *mailIn, bool inbox) | 45 | void ViewAtt::update(Email *mailIn, bool inbox) |
46 | { | 46 | { |
47 | QListViewItem *item; | 47 | QListViewItem *item; |
48 | Enclosure *ePtr; | 48 | Enclosure *ePtr; |
49 | |||
50 | 49 | ||
51 | 50 | ||
51 | |||
52 | listView->clear(); | 52 | listView->clear(); |
53 | if (inbox) { | 53 | if (inbox) { |
54 | bar->clear(); | 54 | bar->clear(); |
55 | installButton->addTo( bar ); | 55 | installButton->addTo( bar ); |
56 | bar->show(); | 56 | bar->show(); |
57 | } else { | 57 | } else { |
58 | bar->hide(); | 58 | bar->hide(); |
59 | } | 59 | } |
60 | 60 | ||
61 | mail = mailIn; | 61 | mail = mailIn; |
62 | for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { | 62 | for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { |
63 | 63 | ||
64 | QString isInstalled = tr("No"); | 64 | QString isInstalled = tr("No"); |
65 | if (ePtr->installed) | 65 | if (ePtr->installed) |
66 | isInstalled = tr("Yes"); | 66 | isInstalled = tr("Yes"); |
67 | item = new QListViewItem(listView, ePtr->originalName, ePtr->contentType, isInstalled); | 67 | item = new QListViewItem(listView, ePtr->originalName, ePtr->contentType, isInstalled); |
68 | 68 | ||
69 | const QString& mtypeDef=(const QString&) ePtr->contentType+"/"+ePtr->contentAttribute; | 69 | const QString& mtypeDef=(const QString&) ePtr->contentType+"/"+ePtr->contentAttribute; |
70 | 70 | ||
71 | MimeType mt(mtypeDef); | 71 | MimeType mt(mtypeDef); |
72 | 72 | ||
73 | item->setPixmap(0, mt.pixmap()); | 73 | item->setPixmap(0, mt.pixmap()); |
74 | 74 | ||
75 | /* | 75 | /* |
76 | if (ePtr->contentType == "TEXT") { | 76 | if (ePtr->contentType == "TEXT") { |
77 | actions = new QAction( tr("View"), Resource::loadPixmap("TextEditor"), QString::null, CTRL + Key_C, this, 0); | 77 | actions = new QAction( tr("View"), Resource::loadPixmap("TextEditor"), QString::null, CTRL + Key_C, this, 0); |
78 | actions->addTo(bar); | 78 | actions->addTo(bar); |
79 | } | 79 | } |
80 | if (ePtr->contentType == "AUDIO") { | 80 | if (ePtr->contentType == "AUDIO") { |
81 | actions = new QAction( tr("Play"), Resource::loadPixmap("SoundPlayer"), QString::null, CTRL + Key_C, this, 0); | 81 | actions = new QAction( tr("Play"), Resource::loadPixmap("SoundPlayer"), QString::null, CTRL + Key_C, this, 0); |
82 | actions->addTo(bar); | 82 | actions->addTo(bar); |
83 | item->setPixmap(0, Resource::loadPixmap("play")); | 83 | item->setPixmap(0, Resource::loadPixmap("play")); |
84 | } | 84 | } |
85 | if (ePtr->contentType == "IMAGE") { | 85 | if (ePtr->contentType == "IMAGE") { |
86 | actions = new QAction( tr("Show"), Resource::loadPixmap("pixmap"), QString::null, CTRL + Key_C, this, 0); | 86 | actions = new QAction( tr("Show"), Resource::loadPixmap("pixmap"), QString::null, CTRL + Key_C, this, 0); |
87 | actions->addTo(bar); | 87 | actions->addTo(bar); |
88 | item->setPixmap(0, Resource::loadPixmap("pixmap")); | 88 | item->setPixmap(0, Resource::loadPixmap("pixmap")); |
89 | }*/ | 89 | }*/ |
90 | } | 90 | } |
91 | } | 91 | } |
92 | 92 | ||
93 | void ViewAtt::install() | 93 | void ViewAtt::install() |
94 | { | 94 | { |
95 | Enclosure *ePtr, *selPtr; | 95 | Enclosure *ePtr, *selPtr; |
96 | QListViewItem *item; | 96 | QListViewItem *item; |
97 | QString filename; | 97 | QString filename; |
98 | DocLnk d; | 98 | DocLnk d; |
99 | 99 | ||
100 | item = listView->selectedItem(); | 100 | item = listView->selectedItem(); |
101 | if (item != NULL) { | 101 | if (item != NULL) { |
102 | filename = item->text(0); | 102 | filename = item->text(0); |
103 | selPtr = NULL; | 103 | selPtr = NULL; |
104 | for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { | 104 | for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { |
105 | if (ePtr->originalName == filename) | 105 | if (ePtr->originalName == filename) |
106 | selPtr = ePtr; | 106 | selPtr = ePtr; |
107 | } | 107 | } |
108 | 108 | ||
109 | if (selPtr == NULL) { | 109 | if (selPtr == NULL) { |
110 | qWarning("Internal error, file is not installed to documents"); | 110 | qWarning("Internal error, file is not installed to documents"); |
111 | return; | 111 | return; |
112 | } | 112 | } |
113 | 113 | ||
114 | d.setName(selPtr->originalName); | 114 | d.setName(selPtr->originalName); |
115 | d.setFile(selPtr->path + selPtr->name); | 115 | d.setFile(selPtr->path + selPtr->name); |
116 | d.setType(selPtr->contentType + "/" + selPtr->contentAttribute); | 116 | d.setType(selPtr->contentType + "/" + selPtr->contentAttribute); |
117 | d.writeLink(); | 117 | d.writeLink(); |
118 | selPtr->installed = TRUE; | 118 | selPtr->installed = TRUE; |
119 | item->setText(2, tr("Yes")); | 119 | item->setText(2, tr("Yes")); |
120 | } | 120 | } |
121 | } | 121 | } |