/[pkg-kde]/tags/packages/kdenetwork/kdenetwork-3.5.0-3/debian/patches/01_kdenetwork_branch_r495340.diff
ViewVC logotype

Contents of /tags/packages/kdenetwork/kdenetwork-3.5.0-3/debian/patches/01_kdenetwork_branch_r495340.diff

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2781 - (show annotations) (download)
Sat Jan 7 23:36:53 2006 UTC (7 years, 4 months ago) by chrsmrtn
File size: 156608 byte(s)
Tagging kdenetwork.
1 #DPATCHLEVEL=0
2 --- kpf/kpfapplet.desktop (revision 488948)
3 +++ kpf/kpfapplet.desktop (revision 495340)
4 @@ -73,6 +73,7 @@
5 Comment[eu]=Sarean zehar fitxtegiak partekatzea errazten duen web-zerbitzari txiki bat
6 Comment[fr]=Un petit serveur web permettant de partager facilement des fichiers sur le réseau
7 Comment[gl]=Un pequeno servidor web que fai doada a compartición de ficheiros por rede
8 +Comment[hu]=Mini webkiszolgáló egyszerű fájlmegosztáshoz
9 Comment[is]=Lítill vefþjónn sem auðveldar deilingu af skrám yfir netið
10 Comment[it]=Un piccolo server web che permette di condividere dei file attraverso la rete in modo semplice
11 Comment[ja]=簡単にネットワーク上でファイルを共有するための小さなウェブサーバー
12 --- krdc/rdp/rdphostpref.cpp (revision 488948)
13 +++ krdc/rdp/rdphostpref.cpp (revision 495340)
14 @@ -29,8 +29,8 @@
15 m_height(600),
16 m_colorDepth(8),
17 m_layout("en-us"),
18 - m_useKWallet(true),
19 - m_askOnConnect(true)
20 + m_askOnConnect(true),
21 + m_useKWallet(true)
22 {
23 }
24
25 @@ -93,6 +93,7 @@
26 m_config->deleteEntry(p+"colorDepth");
27 m_config->deleteEntry(p+"layout");
28 m_config->deleteEntry(p+"askOnConnect");
29 + m_config->deleteEntry(p+"useKWallet");
30 }
31
32 void RdpHostPref::setDefaults()
33 --- kdnssd/ioslave/invitation.protocol (revision 488948)
34 +++ kdnssd/ioslave/invitation.protocol (revision 495340)
35 @@ -24,6 +24,7 @@
36 Description[eu]=SD gonbidapenak
37 Description[fr]=Invitations SD
38 Description[gl]=Invitacións SD
39 +Description[hu]=SD meghívók
40 Description[is]=SD boð
41 Description[it]=Inviti SD
42 Description[ja]=SD招待
43 --- kopete/plugins/nowlistening/nowlisteningplugin.cpp (revision 488948)
44 +++ kopete/plugins/nowlistening/nowlisteningplugin.cpp (revision 495340)
45 @@ -53,12 +53,12 @@
46 class NowListeningPlugin::Private
47 {
48 public:
49 - Private() : m_mediaPlayerList(0L), m_currentMediaPlayer(0L), m_client(0L), m_currentChatSession(0L), m_currentMetaContact(0L),
50 - m_musicSentTo(0L), advertTimer(0L)
51 + Private() : m_currentMediaPlayer(0L), m_client(0L), m_currentChatSession(0L), m_currentMetaContact(0L),
52 + advertTimer(0L)
53 {}
54
55 // abstracted media player interfaces
56 - QPtrList<NLMediaPlayer> *m_mediaPlayerList;
57 + QPtrList<NLMediaPlayer> m_mediaPlayerList;
58 NLMediaPlayer *m_currentMediaPlayer;
59
60 // Needed for DCOP interprocess communication
61 @@ -68,7 +68,7 @@
62
63 // Used when using automatic advertising to know who has already gotten
64 // the music information
65 - QStringList *m_musicSentTo;
66 + QStringList m_musicSentTo;
67
68 // Used when advertising to status message.
69 QTimer *advertTimer;
70 @@ -108,16 +108,15 @@
71 d->m_client = kapp->dcopClient(); //new DCOPClient();
72
73 // set up known media players
74 - d->m_mediaPlayerList = new QPtrList<NLMediaPlayer>;
75 - d->m_mediaPlayerList->setAutoDelete( true );
76 - d->m_mediaPlayerList->append( new NLKscd( d->m_client ) );
77 - d->m_mediaPlayerList->append( new NLNoatun( d->m_client ) );
78 - d->m_mediaPlayerList->append( new NLJuk( d->m_client ) );
79 - d->m_mediaPlayerList->append( new NLamaroK( d->m_client ) );
80 - d->m_mediaPlayerList->append( new NLKaffeine( d->m_client ) );
81 + d->m_mediaPlayerList.setAutoDelete( true );
82 + d->m_mediaPlayerList.append( new NLKscd( d->m_client ) );
83 + d->m_mediaPlayerList.append( new NLNoatun( d->m_client ) );
84 + d->m_mediaPlayerList.append( new NLJuk( d->m_client ) );
85 + d->m_mediaPlayerList.append( new NLamaroK( d->m_client ) );
86 + d->m_mediaPlayerList.append( new NLKaffeine( d->m_client ) );
87
88 #if defined Q_WS_X11 && !defined K_WS_QTONLY && HAVE_XMMS
89 - d->m_mediaPlayerList->append( new NLXmms() );
90 + d->m_mediaPlayerList.append( new NLXmms() );
91 #endif
92
93 // User has selected a specific mediaPlayer so update the currentMediaPlayer pointer.
94 @@ -126,8 +125,6 @@
95 updateCurrentMediaPlayer();
96 }
97
98 - d->m_musicSentTo = new QStringList();
99 -
100 // watch for '/media' getting typed
101 Kopete::CommandHandler::commandHandler()->registerCommand(
102 this,
103 @@ -207,12 +204,12 @@
104 for( Kopete::Contact *c = dest.first() ; c ; c = dest.next() )
105 {
106 const QString& cId = c->contactId();
107 - if( 0 == d->m_musicSentTo->contains( cId ) )
108 + if( 0 == d->m_musicSentTo.contains( cId ) )
109 {
110 mustSendAnyway = true;
111
112 // The contact will get the music information so we put it in the list.
113 - d->m_musicSentTo->push_back( cId );
114 + d->m_musicSentTo.push_back( cId );
115 }
116 }
117
118 @@ -230,10 +227,10 @@
119 // rebuild the list of contacts the latest information was sent to.
120 if( newTrack )
121 {
122 - d->m_musicSentTo->clear();
123 + d->m_musicSentTo.clear();
124 for( Kopete::Contact *c = dest.first() ; c ; c = dest.next() )
125 {
126 - d->m_musicSentTo->push_back( c->contactId() );
127 + d->m_musicSentTo.push_back( c->contactId() );
128 }
129 }
130 }
131 @@ -282,7 +279,7 @@
132 }
133 else
134 {
135 - for ( NLMediaPlayer* i = d->m_mediaPlayerList->first(); i; i = d->m_mediaPlayerList->next() )
136 + for ( NLMediaPlayer* i = d->m_mediaPlayerList.first(); i; i = d->m_mediaPlayerList.next() )
137 {
138 if( i->playing() )
139 {
140 @@ -319,7 +316,7 @@
141 }
142 else
143 {
144 - for ( NLMediaPlayer* i = d->m_mediaPlayerList->first(); i; i = d->m_mediaPlayerList->next() )
145 + for ( NLMediaPlayer* i = d->m_mediaPlayerList.first(); i; i = d->m_mediaPlayerList.next() )
146 {
147 buildTrackMessage(message, i, update);
148 }
149 @@ -358,7 +355,7 @@
150 }
151 else
152 {
153 - for ( NLMediaPlayer* i = d->m_mediaPlayerList->first(); i; i = d->m_mediaPlayerList->next() )
154 + for ( NLMediaPlayer* i = d->m_mediaPlayerList.first(); i; i = d->m_mediaPlayerList.next() )
155 {
156 i->update();
157 if( i->newTrack() )
158 @@ -476,7 +473,7 @@
159 {
160 kdDebug(14307) << k_funcinfo << "Update current media player (single mode)" << endl;
161
162 - d->m_currentMediaPlayer = d->m_mediaPlayerList->at( NowListeningConfig::self()->selectedMediaPlayer() );
163 + d->m_currentMediaPlayer = d->m_mediaPlayerList.at( NowListeningConfig::self()->selectedMediaPlayer() );
164 }
165
166 void NowListeningPlugin::slotSettingsChanged()
167 --- kopete/plugins/smpppdcs/Changelog.smpppdcs (revision 488948)
168 +++ kopete/plugins/smpppdcs/Changelog.smpppdcs (revision 495340)
169 @@ -15,6 +15,16 @@
170 Changelog
171 =========
172
173 +0.75 (2006/01/01)
174 +* use of KSocketStream instead of deprecated KExtendedSocket
175 +* progressbar while searching for an smpppd on the local network
176 +* automatically found smpppd server is resolved via DNS
177 +* Fixed Bug 111369: better detection of SMPPPD and no more freeze of Kopete
178 +
179 +0.74 (2005/12/27)
180 +* minor bugfixes
181 +* disable netstat in config if the binary cannot be found
182 +
183 0.72 (2005/09/07)
184 * internal refactoring to provide online status
185
186 --- kopete/plugins/smpppdcs/detector.h (revision 488948)
187 +++ kopete/plugins/smpppdcs/detector.h (revision 495340)
188 @@ -1,9 +1,9 @@
189 /*
190 detector.h
191
192 - Copyright (c) 2004-2005 by Heiko Schaefer <heiko@rangun.de>
193 + Copyright (c) 2004-2006 by Heiko Schaefer <heiko@rangun.de>
194
195 - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
196 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
197
198 *************************************************************************
199 * *
200 @@ -26,10 +26,13 @@
201
202 #define SMPPPDCS_CONFIG_GROUP "SMPPPDCS Plugin"
203
204 +namespace KNetwork {
205 +class KStreamSocket;
206 +};
207 +
208 class KProcess;
209 class DCOPClient;
210 class IConnector;
211 -class KExtendedSocket;
212
213 /**
214 * @brief Detector to find out if there is a connection to the internet.
215 @@ -44,10 +47,10 @@
216 */
217
218 class Detector : protected QObject {
219 - Q_OBJECT
220 + Q_OBJECT
221
222 - Detector(const Detector&);
223 - Detector& operator=(const Detector&);
224 + Detector(const Detector&);
225 + Detector& operator=(const Detector&);
226
227 /**
228 * @brief Enumerates the different states of communication with the smpppd
229 @@ -68,86 +71,85 @@
230 };
231
232 public:
233 - /**
234 - * @brief Creates an <code>Detector</code> instance.
235 - *
236 - * @param connector A connector to send feedback to the calling object
237 - */
238 - Detector(IConnector * connector);
239 + /**
240 + * @brief Creates an <code>Detector</code> instance.
241 + *
242 + * @param connector A connector to send feedback to the calling object
243 + */
244 + Detector(IConnector * connector);
245
246 - /**
247 - * @brief Destroys an <code>Detector</code> instance.
248 - *
249 - */
250 - virtual ~Detector();
251 + /**
252 + * @brief Destroys an <code>Detector</code> instance.
253 + *
254 + */
255 + virtual ~Detector();
256
257 - /**
258 - * @brief Use netstat to get the status of an internet connection.
259 - *
260 - * Calls IConnector::setConnectedStatus of the IConnector given in
261 - * the constructor.
262 - *
263 - * @see IConnector
264 - *
265 - */
266 - virtual void netstatCheckStatus();
267 + /**
268 + * @brief Use netstat to get the status of an internet connection.
269 + *
270 + * Calls IConnector::setConnectedStatus of the IConnector given in
271 + * the constructor.
272 + *
273 + * @see IConnector
274 + *
275 + */
276 + virtual void netstatCheckStatus();
277
278 #ifdef USE_SMPPPD
279 - /**
280 - * @brief Use the smpppd to get the status of an internet connection.
281 - *
282 - * Calls IConnector::setConnectedStatus of the IConnector given in
283 - * the constructor.
284 - *
285 - * @see IConnector
286 - *
287 - */
288 - virtual void smpppdCheckStatus();
289 + /**
290 + * @brief Use the smpppd to get the status of an internet connection.
291 + *
292 + * Calls IConnector::setConnectedStatus of the IConnector given in
293 + * the constructor.
294 + *
295 + * @see IConnector
296 + *
297 + */
298 + virtual void smpppdCheckStatus();
299 #endif
300
301 -signals:
302 - void retryRequested();
303 -
304 private:
305 #ifdef USE_SMPPPD
306 - void connectToSMPPPD();
307 - QStringList readSMPPPD();
308 - void writeSMPPPD(const char * cmd);
309 + void connectToSMPPPD();
310 + void disconnectFromSMPPPD();
311 + QStringList readSMPPPD();
312 + void writeSMPPPD(const char * cmd);
313 #endif
314
315 - /**
316 - * @brief Makes an response for an challenge
317 - *
318 - * If the smpppd requests an authorization, it sends an challenge.
319 - * The password has to be appended to this challenge and the m5sum
320 - * in hex-display has to get responded to the smpppd.
321 - *
322 - * @param chex the challenge in hex display
323 - * @param password the passwort to authenticate
324 - * @return the reponse for the smpppd
325 - */
326 - QString make_response(const QString& chex, const QString& password) const;
327 + /**
328 + * @brief Makes an response for an challenge
329 + *
330 + * If the smpppd requests an authorization, it sends an challenge.
331 + * The password has to be appended to this challenge and the m5sum
332 + * in hex-display has to get responded to the smpppd.
333 + *
334 + * @param chex the challenge in hex display
335 + * @param password the passwort to authenticate
336 + * @return the reponse for the smpppd
337 + */
338 + QString make_response(const QString& chex, const QString& password) const;
339
340 private slots:
341 // Original cs-plugin code
342 - void slotProcessStdout( KProcess *process, char *buffer, int len );
343 + void slotProcessStdout(KProcess *process, char *buffer, int len);
344
345 /**
346 * Notify when the netstat process has exited
347 */
348 - void slotProcessExited( KProcess *process );
349 + void slotProcessExited(KProcess *process);
350
351 private:
352 #ifdef USE_SMPPPD
353 - CommunicationState m_comState;
354 - DCOPClient *m_client;
355 - static QCString m_kinternetApp;
356 - KExtendedSocket *m_sock;
357 - QStringList m_ifcfgs;
358 +
359 + CommunicationState m_comState;
360 + DCOPClient *m_client;
361 + static QCString m_kinternetApp;
362 + KNetwork::KStreamSocket *m_sock;
363 + QStringList m_ifcfgs;
364 #endif
365
366 - IConnector *m_connector;
367 - KProcess *m_process;
368 + IConnector *m_connector;
369 + KProcess *m_process;
370 };
371
372 #endif
373 --- kopete/plugins/smpppdcs/config/smpppdcspreferences.h (revision 488948)
374 +++ kopete/plugins/smpppdcs/config/smpppdcspreferences.h (revision 495340)
375 @@ -1,9 +1,9 @@
376 /*
377 smpppdcspreferences.h
378
379 - Copyright (c) 2004-2005 by Heiko Schaefer <heiko@rangun.de>
380 + Copyright (c) 2004-2006 by Heiko Schaefer <heiko@rangun.de>
381
382 - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
383 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
384
385 *************************************************************************
386 * *
387 --- kopete/plugins/smpppdcs/config/smpppdcsprefsimpl.h (revision 488948)
388 +++ kopete/plugins/smpppdcs/config/smpppdcsprefsimpl.h (revision 495340)
389 @@ -1,9 +1,9 @@
390 /*
391 smpppdcsprefsimpl.h
392
393 - Copyright (c) 2004-2005 by Heiko Schaefer <heiko@rangun.de>
394 + Copyright (c) 2004-2006 by Heiko Schaefer <heiko@rangun.de>
395
396 - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
397 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
398
399 *************************************************************************
400 * *
401 @@ -17,12 +17,16 @@
402 #ifndef SMPPPDCSPREFSIMPL_H
403 #define SMPPPDCSPREFSIMPL_H
404
405 -#include <klineedit.h>
406 +#include <qgroupbox.h>
407
408 +#include <kprogress.h>
409 +
410 #include "smpppdcsprefs.h"
411
412 +class SMPPPDSearcher;
413 +
414 /**
415 -@author Heiko Schaefer <heiko@rangun.de>
416 +@author Heiko Sch&auml;fer <heiko@rangun.de>
417 */
418 class SMPPPDCSPrefs : public SMPPPDCSPrefsBase
419 {
420 @@ -36,13 +40,35 @@
421 SMPPPDCSPrefs(QWidget* parent, const char* name = 0, WFlags fl = 0);
422 ~SMPPPDCSPrefs();
423
424 +signals:
425 + void foundSMPPPD(bool found);
426 +
427 protected slots:
428 void enableSMPPPDSettings();
429 void disableSMPPPDSettings();
430 void determineCSType();
431 void smpppdFound(const QString & host);
432 void smpppdNotFound();
433 + void scanStarted(uint total);
434 + void scanProgress(uint cur);
435 + void scanFinished();
436 + void cancelScanning();
437
438 +private:
439 + KProgressDialog * m_scanProgressDlg;
440 + SMPPPDSearcher * m_curSearcher;
441 };
442
443 +inline void SMPPPDCSPrefs::enableSMPPPDSettings() {
444 + smpppdPrefs->setEnabled(true);
445 +}
446 +
447 +inline void SMPPPDCSPrefs::disableSMPPPDSettings() {
448 + smpppdPrefs->setEnabled(false);
449 +}
450 +
451 +inline void SMPPPDCSPrefs::scanFinished() {
452 + m_scanProgressDlg->hide();
453 +}
454 +
455 #endif
456 --- kopete/plugins/smpppdcs/config/smpppdlocationwidget.cpp (revision 0)
457 +++ kopete/plugins/smpppdcs/config/smpppdlocationwidget.cpp (revision 495340)
458 @@ -0,0 +1,31 @@
459 +/*
460 + smpppdlocationwidget.cpp
461 +
462 + Copyright (c) 2004-2006 by Heiko Schaefer <heiko@rangun.de>
463 +
464 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
465 +
466 + *************************************************************************
467 + * *
468 + * This program is free software; you can redistribute it and/or modify *
469 + * it under the terms of the GNU General Public License as published by *
470 + * the Free Software Foundation; version 2 of the License. *
471 + * *
472 + *************************************************************************
473 +*/
474 +
475 +#include <klineedit.h>
476 +
477 +#include "smpppdlocationwidget.h"
478 +
479 +SMPPPDLocationWidget::SMPPPDLocationWidget(QWidget* parent, const char* name, WFlags fl)
480 + : SMPPPDLocationWidgetBase(parent, name, fl) {}
481 +
482 +SMPPPDLocationWidget::~SMPPPDLocationWidget() {}
483 +
484 +void SMPPPDLocationWidget::setServer(const QString& serv)
485 +{
486 + server->setText(serv);
487 +}
488 +
489 +#include "smpppdlocationwidget.moc"
490 --- kopete/plugins/smpppdcs/config/smpppdsearcher.cpp (revision 488948)
491 +++ kopete/plugins/smpppdcs/config/smpppdsearcher.cpp (revision 495340)
492 @@ -1,9 +1,9 @@
493 /*
494 smpppdsearcher.h
495
496 - Copyright (c) 2004-2005 by Heiko Schaefer <heiko@rangun.de>
497 + Copyright (c) 2004-2006 by Heiko Schaefer <heiko@rangun.de>
498
499 - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
500 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
501
502 *************************************************************************
503 * *
504 @@ -14,26 +14,21 @@
505 *************************************************************************
506 */
507
508 -#include <qstringlist.h>
509 #include <qregexp.h>
510 #include <qfile.h>
511
512 -#include <kextendedsocket.h>
513 +#include <kstreamsocket.h>
514 #include <kprocess.h>
515 #include <kdebug.h>
516
517 #include "smpppdsearcher.h"
518
519 SMPPPDSearcher::SMPPPDSearcher()
520 - : m_procIfconfig(NULL),
521 - m_procNetstat(NULL),
522 -m_sock(NULL) {
523 + : m_cancelSearchNow(FALSE),
524 + m_procIfconfig(NULL),
525 +m_procNetstat(NULL) {}
526
527 - m_sock = new KExtendedSocket();
528 -}
529 -
530 SMPPPDSearcher::~SMPPPDSearcher() {
531 - delete m_sock;
532 delete m_procIfconfig;
533 delete m_procNetstat;
534 }
535 @@ -42,6 +37,8 @@
536 \fn SMPPPDSearcher::searchNetwork() const
537 */
538 void SMPPPDSearcher::searchNetwork() {
539 + kdDebug(14312) << k_funcinfo << endl;
540 +
541 // the first point to search is localhost
542 if(!scan("127.0.0.1", "255.0.0.0")) {
543
544 @@ -65,6 +62,7 @@
545 \fn SMPPPDSearcher::slotStdoutReceived(KProcess * proc, char * buf, int len)
546 */
547 void SMPPPDSearcher::slotStdoutReceivedIfconfig(KProcess * /* proc */, char * buf, int len) {
548 + kdDebug(14312) << k_funcinfo << endl;
549
550 QString myBuf = QString::fromLatin1(buf,len);
551 QRegExp rex("^[ ]{10}.*inet addr:([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}).*Mask:([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3})");
552 @@ -81,6 +79,7 @@
553 emit smpppdNotFound();
554 }
555 void SMPPPDSearcher::slotStdoutReceivedNetstat(KProcess * /* proc */, char * buf, int len) {
556 + kdDebug(14312) << k_funcinfo << endl;
557
558 QRegExp rexGW(".*\\n0.0.0.0[ ]*([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}).*");
559 QString myBuf = QString::fromLatin1(buf,len);
560 @@ -108,49 +107,68 @@
561 */
562 bool SMPPPDSearcher::scan(const QString& ip, const QString& mask) {
563 kdDebug(14312) << k_funcinfo << "Scanning " << ip << "/" << mask << "..." << endl;
564 +
565 + if(ip == "127.0.0.1") { // if localhost, we only scan this one host
566 + if(scanIP(ip)) {
567 + return true;
568 + }
569 +
570 + return false;
571 + }
572
573 - if(ip == "127.0.0.1") { // localhost
574 - // we need only to check the existence of the socket file
575 - if(QFile::exists("/var/run/smpppd/control")) {
576 - emit smpppdFound("localhost");
577 - return true;
578 - }
579 - } else { // other interfaces
580 + uint min_range = 0;
581 + uint max_range = 255;
582
583 - uint min_range = 0;
584 - uint max_range = 255;
585 + // calculate ip range (only last mask entry)
586 + QRegExp lastRex("([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})");
587 + if(lastRex.exactMatch(ip)) {
588
589 - // calculate ip range (only last mask entry)
590 - QRegExp lastRex("([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})");
591 - if(lastRex.exactMatch(ip)) {
592 + uint lastWordIP = lastRex.cap(4).toUInt();
593
594 - uint lastWordIP = lastRex.cap(4).toUInt();
595 + QStringList ipToks;
596 + for(int i = 1; i < 5; i++) {
597 + ipToks.push_back(lastRex.cap(i));
598 + }
599
600 - QStringList ipToks;
601 - for(int i = 1; i < 5; i++) {
602 - ipToks.push_back(lastRex.cap(i));
603 + if(lastRex.exactMatch(mask)) {
604 + uint lastWordMask = lastRex.cap(4).toUInt();
605 +
606 + if(lastWordMask == 0) {
607 + kdDebug(14312) << k_funcinfo << "IP-Range: " << ipToks[0] << "." << ipToks[1] << "." << ipToks[2] << ".0 - " << ipToks[0] << "." << ipToks[1] << "." << ipToks[2] << ".255" << endl;
608 + max_range = 255;
609 + } else if(lastWordMask == 255) {
610 + min_range = max_range = lastWordIP;
611 + } else {
612 + kdDebug(14312) << k_funcinfo << "IP-Range: " << ipToks[0] << "." << ipToks[1] << "." << ipToks[2] << ".0 - " << ipToks[0] << "." << ipToks[1] << "." << ipToks[2] << "." << lastWordMask << endl;
613 + max_range = lastWordMask;
614 }
615 + }
616
617 - if(lastRex.exactMatch(mask)) {
618 - uint lastWordMask = lastRex.cap(4).toUInt();
619 -
620 - if(lastWordMask == 0) {
621 - kdDebug(14312) << k_funcinfo << "IP-Range: " << ipToks[0] << "." << ipToks[1] << "." << ipToks[2] << ".0 - " << ipToks[0] << "." << ipToks[1] << "." << ipToks[2] << ".255" << endl;
622 - max_range = 255;
623 - } else if(lastWordMask == 255) {
624 - min_range = max_range = lastWordIP;
625 - } else {
626 - kdDebug(14312) << k_funcinfo << "IP-Range: " << ipToks[0] << "." << ipToks[1] << "." << ipToks[2] << ".0 - " << ipToks[0] << "." << ipToks[1] << "." << ipToks[2] << "." << lastWordMask << endl;
627 - max_range = lastWordMask;
628 + uint range = max_range - min_range;
629 + m_cancelSearchNow = FALSE;
630 + if(range > 1) {
631 + emit scanStarted(max_range);
632 + }
633 + for(uint i = min_range; i <= max_range; i++) {
634 + if(m_cancelSearchNow) {
635 + if(range > 1) {
636 + emit scanFinished();
637 }
638 + break;
639 }
640 -
641 - for(uint i = min_range; i <= max_range; i++) {
642 - if(scanIP(QString(ipToks[0] + "." + ipToks[1] + "." + ipToks[2] + "." + QString::number(i)))) {
643 - return true;
644 + if(range > 1) {
645 + emit scanProgress(i);
646 + }
647 + if(scanIP(QString(ipToks[0] + "." + ipToks[1] + "." + ipToks[2] + "." + QString::number(i)))) {
648 + if(range > 1) {
649 + emit scanFinished();
650 }
651 + return true;
652 }
653 }
654 + if(range > 1) {
655 + emit scanFinished();
656 + }
657 }
658
659 return false;
660 @@ -162,13 +180,15 @@
661 bool SMPPPDSearcher::scanIP(const QString& ip) {
662 kdDebug(14312) << k_funcinfo << "Now scanning " << ip << "..." << endl;
663
664 - m_sock->reset();
665 - m_sock->setTimeout(0,500);
666 - m_sock->setAddress(ip,3185);
667 + KNetwork::KStreamSocket sock(ip, "3185");
668 + sock.setBlocking(TRUE);
669 + sock.setTimeout(500);
670
671 - if(!m_sock->connect()) {
672 + if(sock.connect()) {
673 emit smpppdFound(ip);
674 return true;
675 + } else {
676 + kdDebug(14312) << k_funcinfo << "Socket Error: " << KNetwork::KStreamSocket::errorString(sock.error()) << endl;
677 }
678
679 return false;
680 --- kopete/plugins/smpppdcs/config/smpppdcsprefs.ui (revision 488948)
681 +++ kopete/plugins/smpppdcs/config/smpppdcsprefs.ui (revision 495340)
682 @@ -9,8 +9,8 @@
683 <rect>
684 <x>0</x>
685 <y>0</y>
686 - <width>454</width>
687 - <height>343</height>
688 + <width>476</width>
689 + <height>221</height>
690 </rect>
691 </property>
692 <property name="caption">
693 @@ -35,19 +35,10 @@
694 <property name="name">
695 <cstring>unnamed</cstring>
696 </property>
697 - <property name="margin">
698 - <number>6</number>
699 - </property>
700 - <property name="spacing">
701 - <number>6</number>
702 - </property>
703 - <widget class="QButtonGroup">
704 + <widget class="QLayoutWidget">
705 <property name="name">
706 - <cstring>csMethod</cstring>
707 + <cstring>layout4</cstring>
708 </property>
709 - <property name="title">
710 - <string>Method of Connection Status Detection</string>
711 - </property>
712 <vbox>
713 <property name="name">
714 <cstring>unnamed</cstring>
715 @@ -58,226 +49,134 @@
716 <property name="spacing">
717 <number>6</number>
718 </property>
719 - <widget class="QRadioButton">
720 + <widget class="QButtonGroup">
721 <property name="name">
722 - <cstring>useNetstat</cstring>
723 + <cstring>csMethod</cstring>
724 </property>
725 - <property name="text">
726 - <string>&amp;netstat - Standard method of connection status detection</string>
727 + <property name="title">
728 + <string>Method of Connection Status Detection</string>
729 </property>
730 - <property name="checked">
731 - <bool>true</bool>
732 - </property>
733 - <property name="toolTip" stdset="0">
734 - <string>Uses the netstat command to find a gateway; suitable on dial-up computers</string>
735 - </property>
736 - </widget>
737 - <widget class="QRadioButton">
738 - <property name="name">
739 - <cstring>useSmpppd</cstring>
740 - </property>
741 - <property name="text">
742 - <string>s&amp;mpppd - Advanced method of connection status detection</string>
743 - </property>
744 - <property name="toolTip" stdset="0">
745 - <string>Uses the smpppd on a gateway; suitable for a computer in a private network</string>
746 - </property>
747 - </widget>
748 - <widget class="QLayoutWidget">
749 - <property name="name">
750 - <cstring>autoCSLayout</cstring>
751 - </property>
752 - <hbox>
753 + <vbox>
754 <property name="name">
755 <cstring>unnamed</cstring>
756 </property>
757 - <widget class="KPushButton">
758 + <property name="margin">
759 + <number>6</number>
760 + </property>
761 + <property name="spacing">
762 + <number>6</number>
763 + </property>
764 + <widget class="QRadioButton">
765 <property name="name">
766 - <cstring>autoCSTest</cstring>
767 + <cstring>useNetstat</cstring>
768 </property>
769 <property name="text">
770 - <string>Try to Detect &amp;Automatically</string>
771 + <string>&amp;netstat - Standard method of connection status detection</string>
772 </property>
773 + <property name="checked">
774 + <bool>true</bool>
775 + </property>
776 <property name="toolTip" stdset="0">
777 - <string>Tries to find an appropriate connection method</string>
778 + <string>Uses the netstat command to find a gateway; suitable on dial-up computers</string>
779 </property>
780 </widget>
781 - <spacer>
782 + <widget class="QRadioButton">
783 <property name="name">
784 - <cstring>spacer4</cstring>
785 + <cstring>useSmpppd</cstring>
786 </property>
787 - <property name="orientation">
788 - <enum>Horizontal</enum>
789 + <property name="text">
790 + <string>smpppd - Ad&amp;vanced method of connection status detection</string>
791 </property>
792 - <property name="sizeType">
793 - <enum>Expanding</enum>
794 + <property name="toolTip" stdset="0">
795 + <string>Uses the smpppd on a gateway; suitable for a computer in a private network</string>
796 </property>
797 - <property name="sizeHint">
798 - <size>
799 - <width>341</width>
800 - <height>20</height>
801 - </size>
802 + </widget>
803 + <widget class="QLayoutWidget">
804 + <property name="name">
805 + <cstring>autoCSLayout</cstring>
806 </property>
807 - </spacer>
808 - </hbox>
809 + <hbox>
810 + <property name="name">
811 + <cstring>unnamed</cstring>
812 + </property>
813 + <widget class="KPushButton">
814 + <property name="name">
815 + <cstring>autoCSTest</cstring>
816 + </property>
817 + <property name="text">
818 + <string>&amp;Try to Detect Automatically</string>
819 + </property>
820 + <property name="toolTip" stdset="0">
821 + <string>Tries to find an appropriate connection method</string>
822 + </property>
823 + </widget>
824 + <spacer>
825 + <property name="name">
826 + <cstring>spacer4</cstring>
827 + </property>
828 + <property name="orientation">
829 + <enum>Horizontal</enum>
830 + </property>
831 + <property name="sizeType">
832 + <enum>Expanding</enum>
833 + </property>
834 + <property name="sizeHint">
835 + <size>
836 + <width>341</width>
837 + <height>20</height>
838 + </size>
839 + </property>
840 + </spacer>
841 + </hbox>
842 + </widget>
843 + </vbox>
844 </widget>
845 - </vbox>
846 - </widget>
847 - <widget class="QGroupBox">
848 - <property name="name">
849 - <cstring>smpppdPrefs</cstring>
850 - </property>
851 - <property name="enabled">
852 - <bool>false</bool>
853 - </property>
854 - <property name="title">
855 - <string>Location of the SMPPPD</string>
856 - </property>
857 - <grid>
858 - <property name="name">
859 - <cstring>unnamed</cstring>
860 - </property>
861 - <property name="margin">
862 - <number>6</number>
863 - </property>
864 - <property name="spacing">
865 - <number>6</number>
866 - </property>
867 - <widget class="QLabel" row="0" column="0">
868 + <widget class="QGroupBox">
869 <property name="name">
870 - <cstring>textLabel1</cstring>
871 + <cstring>smpppdPrefs</cstring>
872 </property>
873 - <property name="text">
874 - <string>&amp;Server:</string>
875 + <property name="enabled">
876 + <bool>false</bool>
877 </property>
878 - <property name="buddy" stdset="0">
879 - <cstring>server</cstring>
880 + <property name="title">
881 + <string>Location of the SMPPPD</string>
882 </property>
883 - </widget>
884 - <widget class="KLineEdit" row="5" column="0">
885 - <property name="name">
886 - <cstring>Password</cstring>
887 - </property>
888 - <property name="cursor">
889 - <cursor>4</cursor>
890 - </property>
891 - <property name="echoMode">
892 - <enum>Password</enum>
893 - </property>
894 - <property name="toolTip" stdset="0">
895 - <string>The password to authenticate with the smpppd</string>
896 - </property>
897 - </widget>
898 - <widget class="QLayoutWidget" row="3" column="0">
899 - <property name="name">
900 - <cstring>layout14</cstring>
901 - </property>
902 - <hbox>
903 + <vbox>
904 <property name="name">
905 <cstring>unnamed</cstring>
906 </property>
907 - <widget class="KIntNumInput">
908 + <property name="margin">
909 + <number>6</number>
910 + </property>
911 + <property name="spacing">
912 + <number>6</number>
913 + </property>
914 + <widget class="SMPPPDLocationWidget">
915 <property name="name">
916 - <cstring>port</cstring>
917 + <cstring>SMPPPDLocation</cstring>
918 </property>
919 - <property name="cursor">
920 - <cursor>4</cursor>
921 - </property>
922 - <property name="value">
923 - <number>3185</number>
924 - </property>
925 - <property name="minValue">
926 - <number>0</number>
927 - </property>
928 - <property name="toolTip" stdset="0">
929 - <string>The port on which the SMPPPD is running on</string>
930 - </property>
931 </widget>
932 - <widget class="QLabel">
933 - <property name="name">
934 - <cstring>textLabel3</cstring>
935 - </property>
936 - <property name="text">
937 - <string>Default: 3185</string>
938 - </property>
939 - </widget>
940 - <spacer>
941 - <property name="name">
942 - <cstring>spacer15</cstring>
943 - </property>
944 - <property name="orientation">
945 - <enum>Horizontal</enum>
946 - </property>
947 - <property name="sizeType">
948 - <enum>Expanding</enum>
949 - </property>
950 - <property name="sizeHint">
951 - <size>
952 - <width>130</width>
953 - <height>20</height>
954 - </size>
955 - </property>
956 - </spacer>
957 - </hbox>
958 + </vbox>
959 </widget>
960 - <widget class="KLineEdit" row="1" column="0">
961 + <spacer>
962 <property name="name">
963 - <cstring>server</cstring>
964 + <cstring>spacer18</cstring>
965 </property>
966 - <property name="cursor">
967 - <cursor>4</cursor>
968 + <property name="orientation">
969 + <enum>Vertical</enum>
970 </property>
971 - <property name="text">
972 - <string>localhost</string>
973 + <property name="sizeType">
974 + <enum>Expanding</enum>
975 </property>
976 - <property name="maxLength">
977 - <number>256</number>
978 + <property name="sizeHint">
979 + <size>
980 + <width>20</width>
981 + <height>20</height>
982 + </size>
983 </property>
984 - <property name="toolTip" stdset="0">
985 - <string>The server on which the SMPPPD is running</string>
986 - </property>
987 - </widget>
988 - <widget class="QLabel" row="4" column="0">
989 - <property name="name">
990 - <cstring>m_passwordLabel</cstring>
991 - </property>
992 - <property name="text">
993 - <string>&amp;Password:</string>
994 - </property>
995 - <property name="buddy" stdset="0">
996 - <cstring>Password</cstring>
997 - </property>
998 - </widget>
999 - <widget class="QLabel" row="2" column="0">
1000 - <property name="name">
1001 - <cstring>textLabel2</cstring>
1002 - </property>
1003 - <property name="text">
1004 - <string>P&amp;ort:</string>
1005 - </property>
1006 - <property name="buddy" stdset="0">
1007 - <cstring>port</cstring>
1008 - </property>
1009 - </widget>
1010 - </grid>
1011 + </spacer>
1012 + </vbox>
1013 </widget>
1014 - <spacer>
1015 - <property name="name">
1016 - <cstring>spacer18</cstring>
1017 - </property>
1018 - <property name="orientation">
1019 - <enum>Vertical</enum>
1020 - </property>
1021 - <property name="sizeType">
1022 - <enum>Expanding</enum>
1023 - </property>
1024 - <property name="sizeHint">
1025 - <size>
1026 - <width>20</width>
1027 - <height>30</height>
1028 - </size>
1029 - </property>
1030 - </spacer>
1031 </vbox>
1032 </widget>
1033 <widget class="QWidget">
1034 @@ -285,7 +184,7 @@
1035 <cstring>tab</cstring>
1036 </property>
1037 <attribute name="title">
1038 - <string>&amp;Accounts</string>
1039 + <string>Acco&amp;unts</string>
1040 </attribute>
1041 <vbox>
1042 <property name="name">
1043 @@ -347,24 +246,39 @@
1044 </vbox>
1045 </widget>
1046 <customwidgets>
1047 + <customwidget>
1048 + <class>SMPPPDLocationWidget</class>
1049 + <header location="global">/usr/src/build/zxmpl18/kdesvn/kdenetwork/kopete/plugins/smpppdcs/config/smpppdlocationwidget.h</header>
1050 + <sizehint>
1051 + <width>16</width>
1052 + <height>16</height>
1053 + </sizehint>
1054 + <container>1</container>
1055 + <sizepolicy>
1056 + <hordata>5</hordata>
1057 + <verdata>5</verdata>
1058 + <horstretch>0</horstretch>
1059 + <verstretch>0</verstretch>
1060 + </sizepolicy>
1061 + <pixmap>image0</pixmap>
1062 + </customwidget>
1063 </customwidgets>
1064 +<images>
1065 + <image name="image0">
1066 + <data format="PNG" length="1125">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000042c49444154388db5954f6c14551cc73fefcd7476b65bdaae4bb78bb5502a14d404e4801c88182d1c4c2c693da847400f9c24c68b878684238660e2b1e01f12c19493012ef2478c814412d354a46017a8a564bb6da5bbedccee767776e63d0ffb073751d483bfe49799974c3eeffb7ebf37df9fd05a530b2184040cc0042420aaf9a4d0d554800f045a6b256ae0e1e1e1d6bebebe838ee31c48a7d39b5cd7fd075e251cc7617272f2ded8d8d819cff33e0316819259537aead4a9839d5dd6d1784f91f55b0a94830242088404d304292bef68a89f520802a598fecddaa04f1a876f5c250c7c0a64cdeac686e33807e23d45e6b297c8b877f1831542614550b6599835c83c2a81b6786a75134faf2f1169f12997350881d9021d0903e06de0745d3160a6d3e94dbd5b0a64dcbb94b5831d0e3375ab892b1772dcf9790528543f8dd0d367b36768153b5e31503a0f1aecb004580b44ffac58baae8b1714f0833c7638cc8dab303a320f4822ab4c7a37c69196203de3319d5ce1c4d13c733331dedc67a129a154fd128401ab0616d55a130ac3d42d93d1913940d13fd0c9ee0183685c60da01c5421bd72f7a8c8efccef9afd374267ad93d642365be0636a0d28ec7600941d9e6f23917f0e97f23ce5bef35d19ec863da0ed9059b2be70bec196c66dfa10ec0e49b338f7017258651bf95021035c595429bb0903248fe52a2b5b595dd7b4d945cc2340cdca536be389ee3f67886c5798f773fe8e0dac508c989659277a2180da4ca4ff07821058b8b251445d63d6b13ed1098a6417e39cac85197dbe31962ab9bd9f1f22a226d45366f6d0620fdb08c900d281af6110284b20085b414861d905d88f2e52739ee8cbb8022143259d3dd84691730aa2d52da441a8de0c6958068870022a41e9629ad3473fd3b8fdbe319dadb9b4924da994d2d716c7896fbe35152f78b48245d6b2da4507faf582be8eaf159b721cc837b05ae7debb1f79d08cb8b515edad942a22bc4b1c33eb3d34b1c797f06af90a72d16e2f96d9a74aa11dca8586b222d01af0fb60070f6c402d72f15d97f28c6f6d7027a5f5ce6c3233dc4e2ede496b278be4fff608cee8d3e1add806aeca51094cbb06397c1ecc328e746537c7e3ccdb5cb1136bf60635882d4d41c6ec6836ab37efa214f72208ed9f4d7cdd38ee310280542e38b1c43fb6de26b3672e1ec3cc99bcb246f66a938a3241ab3e91f7c861fbf77710b1e5e49915bae974203ba0e9e9c9cbc373d6d6d305a040a89c2a77f50b27d5782bbbf7acccf28349235dd16cf6dd374f7295e1de8a45c02d37499182b01cc0201a085d61a2144d8b2ac8fb6ed340e77240c4261890e04c250185262546d534a032154b59e0ad394e41c98182bf268ce6721ed9f064e0253356f6da2e24c1f030f783c15fe6da680af8021602bd051532ca9b8521488559f61aa86c29343578fbf0264a94c906c7d3409214c20043457a116ff6de6795578012889ff6b98fe016ea0ce1c6a2573410000000049454e44ae426082</data>
1067 + </image>
1068 +</images>
1069 <tabstops>
1070 <tabstop>tabWidget</tabstop>
1071 <tabstop>useNetstat</tabstop>
1072 <tabstop>autoCSTest</tabstop>
1073 - <tabstop>server</tabstop>
1074 - <tabstop>port</tabstop>
1075 - <tabstop>Password</tabstop>
1076 <tabstop>useSmpppd</tabstop>
1077 <tabstop>accountList</tabstop>
1078 </tabstops>
1079 <layoutdefaults spacing="0" margin="0"/>
1080 <includehints>
1081 <includehint>kpushbutton.h</includehint>
1082 - <includehint>klineedit.h</includehint>
1083 - <includehint>knuminput.h</includehint>
1084 - <includehint>knuminput.h</includehint>
1085 - <includehint>klineedit.h</includehint>
1086 + <includehint>smpppdlocationwidget.h</includehint>
1087 <includehint>klistview.h</includehint>
1088 </includehints>
1089 </UI>
1090 --- kopete/plugins/smpppdcs/config/smpppdlocationui.ui (revision 0)
1091 +++ kopete/plugins/smpppdcs/config/smpppdlocationui.ui (revision 495340)
1092 @@ -0,0 +1,149 @@
1093 +<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
1094 +<class>SMPPPDLocationWidgetBase</class>
1095 +<widget class="QWidget">
1096 + <property name="name">
1097 + <cstring>SMPPPDLocationWidgetBase</cstring>
1098 + </property>
1099 + <property name="geometry">
1100 + <rect>
1101 + <x>0</x>
1102 + <y>0</y>
1103 + <width>365</width>
1104 + <height>167</height>
1105 + </rect>
1106 + </property>
1107 + <property name="caption">
1108 + <string>SMPPPDLocation</string>
1109 + </property>
1110 + <vbox>
1111 + <property name="name">
1112 + <cstring>unnamed</cstring>
1113 + </property>
1114 + <widget class="QLabel">
1115 + <property name="name">
1116 + <cstring>textLabel1</cstring>
1117 + </property>
1118 + <property name="text">
1119 + <string>Ser&amp;ver:</string>
1120 + </property>
1121 + <property name="buddy" stdset="0">
1122 + <cstring>server</cstring>
1123 + </property>
1124 + </widget>
1125 + <widget class="KLineEdit">
1126 + <property name="name">
1127 + <cstring>server</cstring>
1128 + </property>
1129 + <property name="cursor">
1130 + <cursor>4</cursor>
1131 + </property>
1132 + <property name="text">
1133 + <string>localhost</string>
1134 + </property>
1135 + <property name="maxLength">
1136 + <number>256</number>
1137 + </property>
1138 + <property name="toolTip" stdset="0">
1139 + <string>The server on which the SMPPPD is running</string>
1140 + </property>
1141 + </widget>
1142 + <widget class="QLabel">
1143 + <property name="name">
1144 + <cstring>textLabel2</cstring>
1145 + </property>
1146 + <property name="text">
1147 + <string>P&amp;ort:</string>
1148 + </property>
1149 + <property name="buddy" stdset="0">
1150 + <cstring>port</cstring>
1151 + </property>
1152 + </widget>
1153 + <widget class="QLayoutWidget">
1154 + <property name="name">
1155 + <cstring>layout14</cstring>
1156 + </property>
1157 + <hbox>
1158 + <property name="name">
1159 + <cstring>unnamed</cstring>
1160 + </property>
1161 + <widget class="KIntNumInput">
1162 + <property name="name">
1163 + <cstring>port</cstring>
1164 + </property>
1165 + <property name="cursor">
1166 + <cursor>4</cursor>
1167 + </property>
1168 + <property name="value">
1169 + <number>3185</number>
1170 + </property>
1171 + <property name="minValue">
1172 + <number>0</number>
1173 + </property>
1174 + <property name="toolTip" stdset="0">
1175 + <string>The port on which the SMPPPD is running on</string>
1176 + </property>
1177 + </widget>
1178 + <widget class="QLabel">
1179 + <property name="name">
1180 + <cstring>textLabel3</cstring>
1181 + </property>
1182 + <property name="text">
1183 + <string>Default: 3185</string>
1184 + </property>
1185 + </widget>
1186 + <spacer>
1187 + <property name="name">
1188 + <cstring>spacer15</cstring>
1189 + </property>
1190 + <property name="orientation">
1191 + <enum>Horizontal</enum>
1192 + </property>
1193 + <property name="sizeType">
1194 + <enum>Expanding</enum>
1195 + </property>
1196 + <property name="sizeHint">
1197 + <size>
1198 + <width>130</width>
1199 + <height>20</height>
1200 + </size>
1201 + </property>
1202 + </spacer>
1203 + </hbox>
1204 + </widget>
1205 + <widget class="QLabel">
1206 + <property name="name">
1207 + <cstring>m_passwordLabel</cstring>
1208 + </property>
1209 + <property name="text">
1210 + <string>Pass&amp;word:</string>
1211 + </property>
1212 + <property name="buddy" stdset="0">
1213 + <cstring>Password</cstring>
1214 + </property>
1215 + </widget>
1216 + <widget class="KLineEdit">
1217 + <property name="name">
1218 + <cstring>Password</cstring>
1219 + </property>
1220 + <property name="cursor">
1221 + <cursor>4</cursor>
1222 + </property>
1223 + <property name="echoMode">
1224 + <enum>Password</enum>
1225 + </property>
1226 + <property name="toolTip" stdset="0">
1227 + <string>The password to authenticate with the smpppd</string>
1228 + </property>
1229 + </widget>
1230 + </vbox>
1231 +</widget>
1232 +<customwidgets>
1233 +</customwidgets>
1234 +<layoutdefaults spacing="6" margin="0"/>
1235 +<includehints>
1236 + <includehint>klineedit.h</includehint>
1237 + <includehint>knuminput.h</includehint>
1238 + <includehint>knuminput.h</includehint>
1239 + <includehint>klineedit.h</includehint>
1240 +</includehints>
1241 +</UI>
1242 --- kopete/plugins/smpppdcs/config/smpppdlocationwidget.h (revision 0)
1243 +++ kopete/plugins/smpppdcs/config/smpppdlocationwidget.h (revision 495340)
1244 @@ -0,0 +1,40 @@
1245 +/*
1246 + smpppdlocationwidget.h
1247 +
1248 + Copyright (c) 2004-2006 by Heiko Schaefer <heiko@rangun.de>
1249 +
1250 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
1251 +
1252 + *************************************************************************
1253 + * *
1254 + * This program is free software; you can redistribute it and/or modify *
1255 + * it under the terms of the GNU General Public License as published by *
1256 + * the Free Software Foundation; version 2 of the License. *
1257 + * *
1258 + *************************************************************************
1259 +*/
1260 +
1261 +#ifndef SMPPPDLOCATIONWIDGET_H
1262 +#define SMPPPDLOCATIONWIDGET_H
1263 +
1264 +#include "smpppdlocationui.h"
1265 +
1266 +/**
1267 + @author Heiko Sch&auml;fer <heiko@rangun.de>
1268 +*/
1269 +class SMPPPDLocationWidget : public SMPPPDLocationWidgetBase
1270 +{
1271 + Q_OBJECT
1272 +
1273 + SMPPPDLocationWidget(const SMPPPDLocationWidget&);
1274 + SMPPPDLocationWidget& operator=(const SMPPPDLocationWidget&);
1275 +
1276 +public:
1277 + SMPPPDLocationWidget(QWidget* parent = 0, const char* name = 0, WFlags fl = 0);
1278 + ~SMPPPDLocationWidget();
1279 +
1280 + void setServer(const QString& serv);
1281 +
1282 +};
1283 +
1284 +#endif
1285 --- kopete/plugins/smpppdcs/config/smpppdsearcher.h (revision 488948)
1286 +++ kopete/plugins/smpppdcs/config/smpppdsearcher.h (revision 495340)
1287 @@ -1,9 +1,9 @@
1288 /*
1289 smpppdsearcher.h
1290
1291 - Copyright (c) 2004-2005 by Heiko Schaefer <heiko@rangun.de>
1292 + Copyright (c) 2004-2006 by Heiko Schaefer <heiko@rangun.de>
1293
1294 - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
1295 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
1296
1297 *************************************************************************
1298 * *
1299 @@ -18,16 +18,15 @@
1300 #ifndef SMPPPDSEARCHER_H
1301 #define SMPPPDSEARCHER_H
1302
1303 -#include <qobject.h>
1304 +#include <kresolver.h>
1305
1306 class KProcess;
1307 -class KExtendedSocket;
1308
1309 /**
1310 * @brief Searches a network for a smpppd
1311 *
1312 * @todo Use of the SLP to find the smpppd
1313 - * @author Heiko Schaefer <heiko@rangun.de>
1314 + * @author Heiko Sch&auml;fer <heiko@rangun.de>
1315 */
1316 class SMPPPDSearcher : public QObject {
1317 Q_OBJECT
1318 @@ -52,6 +51,8 @@
1319 * @see smpppdNotFound
1320 */
1321 void searchNetwork();
1322 +
1323 + void cancelSearch();
1324
1325 protected:
1326 /**
1327 @@ -86,16 +87,24 @@
1328 * @brief No smpppd was found
1329 */
1330 void smpppdNotFound();
1331 +
1332 + void scanStarted(uint total);
1333 + void scanProgress(uint cur);
1334 + void scanFinished();
1335
1336 protected slots:
1337 void slotStdoutReceivedIfconfig(KProcess * proc, char * buf, int len);
1338 void slotStdoutReceivedNetstat (KProcess * proc, char * buf, int len);
1339
1340 private:
1341 - KProcess * m_procIfconfig;
1342 - KProcess * m_procNetstat;
1343 - KExtendedSocket * m_sock;
1344 + bool m_cancelSearchNow;
1345 + KProcess * m_procIfconfig;
1346 + KProcess * m_procNetstat;
1347 };
1348
1349 +inline void SMPPPDSearcher::cancelSearch() {
1350 + m_cancelSearchNow = TRUE;
1351 +}
1352 +
1353 #endif
1354
1355 --- kopete/plugins/smpppdcs/config/Makefile.am (revision 488948)
1356 +++ kopete/plugins/smpppdcs/config/Makefile.am (revision 495340)
1357 @@ -5,10 +5,10 @@
1358 kde_module_LTLIBRARIES = kcm_kopete_smpppdcs.la
1359
1360 kcm_kopete_smpppdcs_la_SOURCES = smpppdcsprefs.ui smpppdcspreferences.cpp \
1361 - smpppdsearcher.cpp smpppdcsprefsimpl.cpp
1362 + smpppdsearcher.cpp smpppdcsprefsimpl.cpp smpppdlocationui.ui smpppdlocationwidget.cpp
1363 kcm_kopete_smpppdcs_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) $(all_libraries)
1364 kcm_kopete_smpppdcs_la_LIBADD = ../../../libkopete/libkopete.la $(LIB_KUTILS)
1365
1366 kcm_DATA = kopete_smpppdcs_config.desktop
1367 kcmdir = $(kde_servicesdir)/kconfiguredialog
1368 -noinst_HEADERS = smpppdsearcher.h smpppdcsprefsimpl.h
1369 +noinst_HEADERS = smpppdsearcher.h smpppdcsprefsimpl.h smpppdlocationwidget.h
1370 --- kopete/plugins/smpppdcs/config/smpppdcspreferences.cpp (revision 488948)
1371 +++ kopete/plugins/smpppdcs/config/smpppdcspreferences.cpp (revision 495340)
1372 @@ -1,9 +1,9 @@
1373 /*
1374 smpppdcspreferences.cpp
1375
1376 - Copyright (c) 2004-2005 by Heiko Schaefer <heiko@rangun.de>
1377 + Copyright (c) 2004-2006 by Heiko Schaefer <heiko@rangun.de>
1378
1379 - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
1380 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
1381
1382 *************************************************************************
1383 * *
1384 --- kopete/plugins/smpppdcs/config/smpppdcsprefsimpl.cpp (revision 488948)
1385 +++ kopete/plugins/smpppdcs/config/smpppdcsprefsimpl.cpp (revision 495340)
1386 @@ -1,9 +1,9 @@
1387 /*
1388 smpppdcsprefsimpl.cpp
1389
1390 - Copyright (c) 2004 by Heiko Schaefer <heiko@rangun.de>
1391 + Copyright (c) 2004-2006 by Heiko Schaefer <heiko@rangun.de>
1392
1393 - Kopete (c) 2002-2004 by the Kopete developers <kopete-devel@kde.org>
1394 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
1395
1396 *************************************************************************
1397 * *
1398 @@ -14,64 +14,137 @@
1399 *************************************************************************
1400 */
1401
1402 -#include <qlabel.h>
1403 -#include <qlayout.h>
1404 -#include <qcursor.h>
1405 -#include <qgroupbox.h>
1406 +#include <arpa/inet.h>
1407 +#include <netdb.h>
1408 +
1409 #include <qradiobutton.h>
1410
1411 +#include <kstandarddirs.h>
1412 #include <kapplication.h>
1413 #include <kpushbutton.h>
1414 +#include <kresolver.h>
1415 +#include <knuminput.h>
1416 +#include <klocale.h>
1417 #include <kdebug.h>
1418
1419 +#include "smpppdlocationwidget.h"
1420 #include "smpppdcsprefsimpl.h"
1421 #include "smpppdsearcher.h"
1422
1423 SMPPPDCSPrefs::SMPPPDCSPrefs(QWidget* parent, const char* name, WFlags fl)
1424 - : SMPPPDCSPrefsBase(parent, name, fl) {
1425 -
1426 - // signals and slots connections
1427 - connect( useNetstat, SIGNAL( toggled(bool) ), this, SLOT( disableSMPPPDSettings() ) );
1428 - connect( useSmpppd, SIGNAL( toggled(bool) ), this, SLOT( enableSMPPPDSettings() ) );
1429 - connect( autoCSTest, SIGNAL( clicked() ), this, SLOT( determineCSType() ) );
1430 -}
1431 + : SMPPPDCSPrefsBase(parent, name, fl), m_scanProgressDlg(NULL), m_curSearcher(NULL) {
1432
1433 -SMPPPDCSPrefs::~SMPPPDCSPrefs() {}
1434 + // signals and slots connections
1435 + connect(useNetstat, SIGNAL(toggled(bool)), this, SLOT(disableSMPPPDSettings()));
1436 + connect(useSmpppd, SIGNAL(toggled(bool)), this, SLOT(enableSMPPPDSettings()));
1437 + connect(autoCSTest, SIGNAL(clicked()), this, SLOT(determineCSType()));
1438
1439 -void SMPPPDCSPrefs::enableSMPPPDSettings() {
1440 - smpppdPrefs->setEnabled(true);
1441 + // if netstat is NOT available, disable the option and set to SMPPPD
1442 + if(KStandardDirs::findExe("netstat") == QString::null) {
1443 + autoCSTest->setEnabled(FALSE);
1444 + useNetstat->setEnabled(FALSE);
1445 + useNetstat->setChecked(FALSE);
1446 + useSmpppd->setChecked(TRUE);
1447 + }
1448 }
1449
1450 -void SMPPPDCSPrefs::disableSMPPPDSettings() {
1451 - smpppdPrefs->setEnabled(false);
1452 +SMPPPDCSPrefs::~SMPPPDCSPrefs() {
1453 + delete m_scanProgressDlg;
1454 }
1455
1456 void SMPPPDCSPrefs::determineCSType() {
1457
1458 - // while we search, we'll disable the button
1459 - autoCSTest->setEnabled(false);
1460 - qApp->processEvents();
1461 -
1462 + // while we search, we'll disable the button
1463 + autoCSTest->setEnabled(false);
1464 + //kapp->processEvents();
1465 +
1466 /* broadcast network for a smpppd.
1467 If one is available set to smpppd method */
1468 -
1469 - SMPPPDSearcher searcher;
1470 - connect(&searcher, SIGNAL(smpppdFound(const QString&)), this, SLOT(smpppdFound(const QString&)));
1471 - connect(&searcher, SIGNAL(smpppdNotFound()), this, SLOT(smpppdNotFound()));
1472 - searcher.searchNetwork();
1473 +
1474 + SMPPPDSearcher searcher;
1475 + m_curSearcher = &searcher;
1476 +
1477 + connect(&searcher, SIGNAL(smpppdFound(const QString&)), this, SLOT(smpppdFound(const QString&)));
1478 + connect(&searcher, SIGNAL(smpppdNotFound()), this, SLOT(smpppdNotFound()));
1479 + connect(&searcher, SIGNAL(scanStarted(uint)), this, SLOT(scanStarted(uint)));
1480 + connect(&searcher, SIGNAL(scanProgress(uint)), this, SLOT(scanProgress(uint)));
1481 + connect(&searcher, SIGNAL(scanFinished()), this, SLOT(scanFinished()));
1482 +
1483 + searcher.searchNetwork();
1484 + m_curSearcher = NULL;
1485 }
1486
1487 +void SMPPPDCSPrefs::scanStarted(uint total) {
1488 + kdDebug(14312) << k_funcinfo << "Scanning for a SMPPPD started. Will scan " << total << " IPs" << endl;
1489 +
1490 + // setup the scanProgress Dialog
1491 + if(!m_scanProgressDlg) {
1492 + m_scanProgressDlg = new KProgressDialog(this, 0, i18n("Searching"), i18n("Searching for a SMPPPD on the local network..."), TRUE);
1493 + m_scanProgressDlg->setAutoClose(TRUE);
1494 + m_scanProgressDlg->setAllowCancel(TRUE);
1495 + m_scanProgressDlg->setMinimumDuration(2000);
1496 +
1497 + connect(m_scanProgressDlg, SIGNAL(cancelClicked()), this, SLOT(cancelScanning()));
1498 + }
1499 + m_scanProgressDlg->progressBar()->setTotalSteps(total);
1500 + m_scanProgressDlg->progressBar()->setProgress(0);
1501 + m_scanProgressDlg->show();
1502 +}
1503 +
1504 +void SMPPPDCSPrefs::scanProgress(uint cur) {
1505 + m_scanProgressDlg->progressBar()->setProgress(cur);
1506 + kapp->processEvents();
1507 +}
1508 +
1509 +void SMPPPDCSPrefs::cancelScanning() {
1510 + kdDebug(14312) << k_funcinfo << endl;
1511 + Q_ASSERT(m_curSearcher);
1512 + m_curSearcher->cancelSearch();
1513 +}
1514 +
1515 void SMPPPDCSPrefs::smpppdFound(const QString& host) {
1516 - kdDebug(14312) << k_funcinfo << endl;
1517 - server->setText(host);
1518 - useSmpppd->setChecked(true);
1519 - autoCSTest->setEnabled(true);
1520 + kdDebug(14312) << k_funcinfo << endl;
1521 +
1522 + QString myHost = host;
1523 +
1524 + // try to get the domain name
1525 + struct in_addr addr;
1526 + if(inet_aton(host.ascii(), &addr)) {
1527 + struct hostent * hostEnt = gethostbyaddr(&addr.s_addr, sizeof(addr.s_addr), AF_INET);
1528 + if(hostEnt) {
1529 + myHost = hostEnt->h_name;
1530 + } else {
1531 +#ifndef NDEBUG
1532 + switch(h_errno) {
1533 + case HOST_NOT_FOUND:
1534 + kdDebug(14312) << k_funcinfo << "No such host is known in the database." << endl;
1535 + break;
1536 + case TRY_AGAIN:
1537 + kdDebug(14312) << k_funcinfo << "Couldn't contact DNS server." << endl;
1538 + break;
1539 + case NO_RECOVERY:
1540 + kdDebug(14312) << k_funcinfo << "A non-recoverable error occurred." << endl;
1541 + break;
1542 + case NO_ADDRESS:
1543 + kdDebug(14312) << k_funcinfo << "The host database contains an entry for the name, but it doesn't have an associated Internet address." << endl;
1544 + break;
1545 + }
1546 +#endif
1547 +
1548 + }
1549 + }
1550 +
1551 + SMPPPDLocation->setServer(myHost);
1552 + useNetstat->setChecked(false);
1553 + useSmpppd->setChecked(true);
1554 + autoCSTest->setEnabled(true);
1555 }
1556
1557 void SMPPPDCSPrefs::smpppdNotFound() {
1558 - kdDebug(14312) << k_funcinfo << endl;
1559 - useNetstat->setChecked(true);
1560 - autoCSTest->setEnabled(true);
1561 + kdDebug(14312) << k_funcinfo << endl;
1562 + useNetstat->setChecked(true);
1563 + useSmpppd->setChecked(false);
1564 + autoCSTest->setEnabled(true);
1565 }
1566
1567 #include "smpppdcsprefsimpl.moc"
1568 --- kopete/plugins/smpppdcs/onlineinquiry.cpp (revision 488948)
1569 +++ kopete/plugins/smpppdcs/onlineinquiry.cpp (revision 495340)
1570 @@ -1,9 +1,9 @@
1571 /*
1572 onlineinquiry.cpp
1573
1574 - Copyright (c) 2005 by Heiko Schaefer <heiko@rangun.de>
1575 + Copyright (c) 2005-2006 by Heiko Schaefer <heiko@rangun.de>
1576
1577 - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
1578 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
1579
1580 *************************************************************************
1581 * *
1582 @@ -17,25 +17,25 @@
1583 #include "detector.h"
1584 #include "onlineinquiry.h"
1585
1586 -OnlineInquiry::OnlineInquiry()
1587 - : m_detector(NULL), m_online(FALSE) {
1588 - m_detector = new Detector(this);
1589 +OnlineInquiry::OnlineInquiry()
1590 + : m_detector(NULL), m_online(FALSE) {
1591 + m_detector = new Detector(this);
1592 }
1593
1594 OnlineInquiry::~OnlineInquiry() {
1595 - delete m_detector;
1596 + delete m_detector;
1597 }
1598
1599 -bool OnlineInquiry::isOnline(bool useSMPPPD) {
1600 - if(useSMPPPD) {
1601 - m_detector->smpppdCheckStatus();
1602 - } else {
1603 - m_detector->netstatCheckStatus();
1604 - }
1605 +bool OnlineInquiry::isOnline(bool useSMPPPD) {
1606 + if(useSMPPPD) {
1607 + m_detector->smpppdCheckStatus();
1608 + } else {
1609 + m_detector->netstatCheckStatus();
1610 + }
1611
1612 - return m_online;
1613 + return m_online;
1614 }
1615
1616 -void OnlineInquiry::setConnectedStatus(bool newStatus) {
1617 - m_online = newStatus;
1618 +void OnlineInquiry::setConnectedStatus(bool newStatus) {
1619 + m_online = newStatus;
1620 }
1621 --- kopete/plugins/smpppdcs/smpppdcsiface.h (revision 488948)
1622 +++ kopete/plugins/smpppdcs/smpppdcsiface.h (revision 495340)
1623 @@ -1,9 +1,9 @@
1624 /*
1625 smpppdcsiface.h
1626
1627 - Copyright (c) 2005 by Heiko Schaefer <heiko@rangun.de>
1628 + Copyright (c) 2005-2006 by Heiko Schaefer <heiko@rangun.de>
1629
1630 - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
1631 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
1632
1633 *************************************************************************
1634 * *
1635 @@ -19,6 +19,10 @@
1636
1637 #include <dcopobject.h>
1638
1639 +/**
1640 + * @author Heiko Sch&auml;fer <heiko@rangun.de>
1641 + */
1642 +
1643 class SMPPPDCSIFace : virtual public DCOPObject
1644 {
1645 K_DCOP
1646 --- kopete/plugins/smpppdcs/kopete_smpppdcs.desktop (revision 488948)
1647 +++ kopete/plugins/smpppdcs/kopete_smpppdcs.desktop (revision 495340)
1648 @@ -8,7 +8,7 @@
1649 X-KDE-PluginInfo-Author=Heiko Schäfer
1650 X-KDE-PluginInfo-Email=heiko@rangun.de
1651 X-KDE-PluginInfo-Name=kopete_smpppdcs
1652 -X-KDE-PluginInfo-Version=0.72
1653 +X-KDE-PluginInfo-Version=0.75
1654 X-KDE-PluginInfo-Website=http://www.rangun.de
1655 X-KDE-PluginInfo-Category=Plugins
1656 X-KDE-PluginInfo-Depends=
1657 --- kopete/plugins/smpppdcs/iconnector.h (revision 488948)
1658 +++ kopete/plugins/smpppdcs/iconnector.h (revision 495340)
1659 @@ -1,9 +1,9 @@
1660 /*
1661 iconnector.h
1662
1663 - Copyright (c) 2005 by Heiko Schaefer <heiko@rangun.de>
1664 + Copyright (c) 2005-2006 by Heiko Schaefer <heiko@rangun.de>
1665
1666 - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
1667 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
1668
1669 *************************************************************************
1670 * *
1671 --- kopete/plugins/smpppdcs/smpppdcsplugin.cpp (revision 488948)
1672 +++ kopete/plugins/smpppdcs/smpppdcsplugin.cpp (revision 495340)
1673 @@ -3,9 +3,9 @@
1674
1675 Copyright (c) 2002-2003 by Chris Howells <howells@kde.org>
1676 Copyright (c) 2003 by Martijn Klingens <klingens@kde.org>
1677 - Copyright (c) 2004-2005 by Heiko Schaefer <heiko@rangun.de>
1678 + Copyright (c) 2004-2006 by Heiko Schaefer <heiko@rangun.de>
1679
1680 - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
1681 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
1682
1683 *************************************************************************
1684 * *
1685 @@ -49,15 +49,12 @@
1686
1687 m_onlineInquiry = new OnlineInquiry();
1688 m_detector = new Detector(this);
1689 - connect(m_detector, SIGNAL(retryRequested()), this, SLOT(slotCheckStatus()));
1690 }
1691
1692 SMPPPDCSPlugin::~SMPPPDCSPlugin() {
1693
1694 kdDebug(14312) << k_funcinfo << endl;
1695
1696 - disconnect(m_detector, SIGNAL(retryRequested()), this, SLOT(slotCheckStatus()));
1697 -
1698 delete m_timer;
1699 delete m_detector;
1700 delete m_onlineInquiry;
1701 --- kopete/plugins/smpppdcs/detector.cpp (revision 488948)
1702 +++ kopete/plugins/smpppdcs/detector.cpp (revision 495340)
1703 @@ -1,10 +1,10 @@
1704 /*
1705 detector.cpp
1706 -
1707 - Copyright (c) 2005 by Heiko Schaefer <heiko@rangun.de>
1708
1709 - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
1710 + Copyright (c) 2005-2006 by Heiko Schaefer <heiko@rangun.de>
1711
1712 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
1713 +
1714 *************************************************************************
1715 * *
1716 * This program is free software; you can redistribute it and/or modify *
1717 @@ -20,9 +20,9 @@
1718 #include <kglobal.h>
1719 #include <kconfig.h>
1720 #include <kprocess.h>
1721 -#include <kextsock.h>
1722 #include <dcopclient.h>
1723 #include <kapplication.h>
1724 +#include <kstreamsocket.h>
1725
1726 #include <cstdlib>
1727 #include <openssl/md5.h>
1728 @@ -32,33 +32,33 @@
1729
1730 QCString Detector::m_kinternetApp = "";
1731
1732 -Detector::Detector(IConnector * connector)
1733 - : m_comState(READY), m_client(NULL), m_sock(NULL), m_connector(connector), m_process(NULL) {}
1734 +Detector::Detector(IConnector * connector)
1735 + : m_comState(READY), m_client(NULL), m_sock(NULL), m_connector(connector), m_process(NULL) {}
1736
1737 Detector::~Detector() {
1738
1739 - if(m_sock) {
1740 - m_sock->flush();
1741 - m_sock->closeNow();
1742 - }
1743 + if(m_sock) {
1744 + m_sock->flush();
1745 + m_sock->close();
1746 + }
1747
1748 - delete m_process;
1749 - delete m_sock;
1750 + delete m_process;
1751 + delete m_sock;
1752 }
1753
1754 -void Detector::slotProcessExited( KProcess *process ) {
1755 - if ( process == m_process ) {
1756 +void Detector::slotProcessExited(KProcess *process) {
1757 + if(process == m_process) {
1758 delete m_process;
1759 m_process = 0L;
1760 }
1761 }
1762
1763 -void Detector::slotProcessStdout( KProcess *, char *buffer, int buflen ) {
1764 +void Detector::slotProcessStdout(KProcess *, char *buffer, int buflen) {
1765 // Look for a default gateway
1766 kdDebug(14312) << k_funcinfo << endl;
1767 - QString qsBuffer = QString::fromLatin1( buffer, buflen );
1768 + QString qsBuffer = QString::fromLatin1(buffer, buflen);
1769 kdDebug(14312) << qsBuffer << endl;
1770 - m_connector->setConnectedStatus( qsBuffer.contains( "default" ) );
1771 + m_connector->setConnectedStatus(qsBuffer.contains("default"));
1772 }
1773
1774 /*!
1775 @@ -67,8 +67,8 @@
1776 void Detector::netstatCheckStatus() {
1777 kdDebug(14312) << k_funcinfo << endl;
1778
1779 - if ( m_process ) {
1780 - kdWarning( 0 ) << k_funcinfo << "Previous netstat process is still running!" << endl
1781 + if(m_process) {
1782 + kdWarning(14312) << k_funcinfo << "Previous netstat process is still running!" << endl
1783 << "Not starting new netstat. Perhaps your system is under heavy load?" << endl;
1784
1785 return;
1786 @@ -80,11 +80,11 @@
1787 m_process = new KProcess;
1788 *m_process << "netstat" << "-r";
1789
1790 - connect( m_process, SIGNAL( receivedStdout( KProcess *, char *, int ) ), this, SLOT( slotProcessStdout( KProcess *, char *, int ) ) );
1791 - connect( m_process, SIGNAL( processExited( KProcess * ) ), this, SLOT( slotProcessExited( KProcess * ) ) );
1792 + connect(m_process, SIGNAL(receivedStdout(KProcess *, char *, int)), this, SLOT(slotProcessStdout( KProcess *, char *, int)));
1793 + connect(m_process, SIGNAL(processExited(KProcess *)), this, SLOT(slotProcessExited(KProcess *)));
1794
1795 - if ( !m_process->start( KProcess::NotifyOnExit, KProcess::Stdout ) ) {
1796 - kdWarning( 0 ) << k_funcinfo << "Unable to start netstat process!" << endl;
1797 + if(!m_process->start(KProcess::NotifyOnExit, KProcess::Stdout)) {
1798 + kdWarning(14312) << k_funcinfo << "Unable to start netstat process!" << endl;
1799
1800 delete m_process;
1801 m_process = 0L;
1802 @@ -96,56 +96,56 @@
1803 */
1804 void Detector::smpppdCheckStatus() {
1805
1806 - // get dcop client object and attach to it
1807 - m_client = kapp->dcopClient();
1808 - if(m_kinternetApp.isEmpty() && m_client && m_client->isAttached()) {
1809 - // get all registered dcop apps and search for kinternet
1810 - QCStringList apps = m_client->registeredApplications();
1811 - QCStringList::iterator iter;
1812 - for(iter = apps.begin(); iter != apps.end(); ++iter) {
1813 - if((*iter).left(9) == "kinternet") {
1814 - m_kinternetApp = *iter;
1815 - break;
1816 - }
1817 - }
1818 - }
1819 + // get dcop client object and attach to it
1820 + m_client = kapp->dcopClient();
1821 + if(m_kinternetApp.isEmpty() && m_client && m_client->isAttached()) {
1822 + // get all registered dcop apps and search for kinternet
1823 + QCStringList apps = m_client->registeredApplications();
1824 + QCStringList::iterator iter;
1825 + for(iter = apps.begin(); iter != apps.end(); ++iter) {
1826 + if((*iter).left(9) == "kinternet") {
1827 + m_kinternetApp = *iter;
1828 + break;
1829 + }
1830 + }
1831 + }
1832
1833 // we try to inquire an running kinternet
1834 - if(!m_kinternetApp.isEmpty() && m_client) {
1835 - QByteArray data, replyData;
1836 - QCString replyType;
1837 - QDataStream arg(data, IO_WriteOnly);
1838 -
1839 - kdDebug(14312) << k_funcinfo << "Start inquiring " << m_kinternetApp << " via DCOP" << endl;
1840 -
1841 - if(!m_client->call(m_kinternetApp, "KInternetIface", "isOnline()", data, replyType, replyData)) {
1842 - kdDebug(14312) << k_funcinfo << "there was some error using DCOP." << endl;
1843 - } else {
1844 - QDataStream reply(replyData, IO_ReadOnly);
1845 - if(replyType == "bool") {
1846 - bool result;
1847 - reply >> result;
1848 - m_connector->setConnectedStatus(result);
1849 - return;
1850 - } else {
1851 - kdDebug(14312) << k_funcinfo << "isOnline() returned an unexpected type of reply!" << endl;
1852 - }
1853 - }
1854 - }
1855 + if(!m_kinternetApp.isEmpty() && m_client) {
1856 + QByteArray data, replyData;
1857 + QCString replyType;
1858 + QDataStream arg(data, IO_WriteOnly);
1859
1860 + kdDebug(14312) << k_funcinfo << "Start inquiring " << m_kinternetApp << " via DCOP" << endl;
1861 +
1862 + if(!m_client->call(m_kinternetApp, "KInternetIface", "isOnline()", data, replyType, replyData)) {
1863 + kdDebug(14312) << k_funcinfo << "there was some error using DCOP." << endl;
1864 + } else {
1865 + QDataStream reply(replyData, IO_ReadOnly);
1866 + if(replyType == "bool") {
1867 + bool result;
1868 + reply >> result;
1869 + m_connector->setConnectedStatus(result);
1870 + return;
1871 + } else {
1872 + kdDebug(14312) << k_funcinfo << "isOnline() returned an unexpected type of reply!" << endl;
1873 + }
1874 + }
1875 + }
1876 +
1877 static KConfig *config = KGlobal::config();
1878 config->setGroup(SMPPPDCS_CONFIG_GROUP);
1879 QString pass = config->readEntry("Password", "").utf8();
1880
1881 - if(m_sock &&
1882 - m_sock->socketStatus() == KExtendedSocket::connected) {
1883 + if(m_sock &&
1884 + m_sock->state() == KNetwork::KStreamSocket::Connected) {
1885
1886 bool isConnected = false;
1887 QString challenge = "";
1888 QRegExp ver("^SuSE Meta pppd \\(smpppd\\), Version (.*)$");
1889
1890 while(m_comState != STATUSIFCFG &&
1891 - m_comState != UNSETTLED) {
1892 + m_comState != UNSETTLED) {
1893 switch(m_comState) {
1894 case READY: {
1895
1896 @@ -203,9 +203,11 @@
1897 }
1898
1899 } else {
1900 + disconnectFromSMPPPD();
1901 kdDebug(14312) << k_funcinfo << "unexpected reply from smpppd" << endl;
1902 }
1903 } else {
1904 + disconnectFromSMPPPD();
1905 kdDebug(14312) << k_funcinfo << "smpppd doesn't seem to understand me" << endl;
1906 }
1907 m_comState = LISTIFCFG;
1908 @@ -225,11 +227,13 @@
1909 }
1910 }
1911
1912 +#ifndef NDEBUG
1913 if(isConnected) {
1914 kdDebug(14312) << k_funcinfo << "we are CONNECTED to the internet" << endl;
1915 } else {
1916 kdDebug(14312) << k_funcinfo << "we are DISCONNECTED from the internet" << endl;
1917 }
1918 +#endif
1919
1920 m_comState = STATUSIFCFG;
1921 }
1922 @@ -243,54 +247,46 @@
1923 if(m_comState != UNSETTLED) {
1924 m_comState = SMPPPDSETTLED;
1925 m_connector->setConnectedStatus(isConnected);
1926 -
1927 +
1928 }
1929
1930 } else {
1931 - kdDebug(14312) << k_funcinfo << "not connected to smpppd => I try again" << endl;
1932 + kdDebug(14312) << k_funcinfo << "not connected to smpppd => I'll try again later" << endl;
1933 m_connector->setConnectedStatus(false);
1934 - connectToSMPPPD();
1935 - emit retryRequested();
1936 + connectToSMPPPD();
1937 }
1938 }
1939
1940 +void Detector::disconnectFromSMPPPD() {
1941 + kdDebug(14312) << k_funcinfo << endl;
1942 + delete m_sock;
1943 + m_sock = NULL;
1944 + m_comState = READY;
1945 +}
1946 +
1947 /*!
1948 \fn Detector::connectToSMPPPD()
1949 */
1950 void Detector::connectToSMPPPD() {
1951
1952 if(!m_sock ||
1953 - m_sock->socketStatus() != KExtendedSocket::connected ||
1954 - m_sock->socketStatus() != KExtendedSocket::connecting) {
1955 + m_sock->state() != KNetwork::KStreamSocket::Connected ||
1956 + m_sock->state() != KNetwork::KStreamSocket::Connecting) {
1957
1958 static KConfig *config = KGlobal::config();
1959 config->setGroup(SMPPPDCS_CONFIG_GROUP);
1960 unsigned int port = config->readUnsignedNumEntry("port", 3185);
1961 QString server = config->readEntry("server", "localhost").utf8();
1962
1963 - delete m_sock;
1964 - m_sock = NULL;
1965 - m_comState = READY;
1966 - m_sock = new KExtendedSocket(server, port, KExtendedSocket::inetSocket);
1967 + disconnectFromSMPPPD();
1968 + m_sock = new KNetwork::KStreamSocket(server, QString::number(port));
1969 + m_sock->setBlocking(TRUE);
1970
1971 - kdDebug(14312) << k_funcinfo << "connect to smpppd \"" << server << ":" << port << "\"" << endl;
1972 -
1973 - switch(m_sock->connect()) {
1974 - case 0:
1975 - kdDebug(14312) << k_funcinfo << "connected to smpppd \"" << server << ":" << port << "\"" << endl;
1976 - break;
1977 - case -1:
1978 - kdDebug(14312) << k_funcinfo << "system error" << endl;
1979 - break;
1980 - case -2:
1981 - kdDebug(14312) << k_funcinfo << "this socket cannot connect(); this is a passiveSocket" << endl;
1982 - break;
1983 - case -3:
1984 - kdDebug(14312) << k_funcinfo << "connection timed out" << endl;
1985 - break;
1986 - default:
1987 - kdDebug(14312) << k_funcinfo << "unknown error" << endl;
1988 - break;
1989 + if(!m_sock->connect()) {
1990 + kdDebug(14312) << k_funcinfo << "Socket Error: " << KNetwork::KStreamSocket::errorString(m_sock->error()) << endl;
1991 + } else {
1992 + kdDebug(14312) << k_funcinfo << "Successfully connected to smpppd \"" << server << ":" << port << "\"" << endl;
1993 + smpppdCheckStatus();
1994 }
1995 }
1996 }
1997 --- kopete/plugins/smpppdcs/onlineinquiry.h (revision 488948)
1998 +++ kopete/plugins/smpppdcs/onlineinquiry.h (revision 495340)
1999 @@ -1,9 +1,9 @@
2000 /*
2001 onlineinquiry.h
2002
2003 - Copyright (c) 2005 by Heiko Schaefer <heiko@rangun.de>
2004 + Copyright (c) 2005-2006 by Heiko Schaefer <heiko@rangun.de>
2005
2006 - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
2007 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
2008
2009 *************************************************************************
2010 * *
2011 @@ -21,6 +21,10 @@
2012
2013 class Detector;
2014
2015 +/**
2016 + * @author Heiko Sch&auml;fer <heiko@rangun.de>
2017 + */
2018 +
2019 class OnlineInquiry : public IConnector {
2020 OnlineInquiry(const OnlineInquiry&);
2021 OnlineInquiry& operator=(const OnlineInquiry&);
2022 --- kopete/plugins/smpppdcs/smpppdcsplugin.h (revision 488948)
2023 +++ kopete/plugins/smpppdcs/smpppdcsplugin.h (revision 495340)
2024 @@ -3,9 +3,9 @@
2025
2026 Copyright (c) 2002-2003 by Chris Howells <howells@kde.org>
2027 Copyright (c) 2003 by Martijn Klingens <klingens@kde.org>
2028 - Copyright (c) 2004-2005 by Heiko Schaefer <heiko@rangun.de>
2029 + Copyright (c) 2004-2006 by Heiko Schaefer <heiko@rangun.de>
2030
2031 - Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
2032 + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org>
2033
2034 *************************************************************************
2035 * *
2036 --- kopete/plugins/history/historydialog.cpp (revision 488948)
2037 +++ kopete/plugins/history/historydialog.cpp (revision 495340)
2038 @@ -452,7 +452,7 @@
2039 mSearch->item = 0;
2040 mSearch->foundPrevious = false;
2041
2042 - initProgressBar(i18n("Searching ..."), mMainWidget->dateListView->childCount() );
2043 + initProgressBar(i18n("Searching..."), mMainWidget->dateListView->childCount() );
2044 mMainWidget->searchButton->setText(i18n("&Cancel"));
2045
2046 mSearch->item = static_cast<KListViewDateItem*>(mMainWidget->dateListView->firstChild());
2047 --- kopete/plugins/history/historyprefsui.ui (revision 488948)
2048 +++ kopete/plugins/history/historyprefsui.ui (revision 495340)
2049 @@ -39,7 +39,7 @@
2050 <string>Number of messages per page:</string>
2051 </property>
2052 <property name="whatsThis" stdset="0">
2053 - <string>The number of message that are shown when borwsing history in the chat window</string>
2054 + <string>The number of messages that are shown when browsing history in the chat window</string>
2055 </property>
2056 </widget>
2057 <widget class="KIntSpinBox" row="3" column="1">
2058 @@ -105,7 +105,7 @@
2059 <number>7</number>
2060 </property>
2061 <property name="whatsThis" stdset="0">
2062 - <string>This is the number of messages that will be added automatically in the what window when opening a new chat</string>
2063 + <string>This is the number of messages that will be added automatically in the chat window when opening a new chat.</string>
2064 </property>
2065 </widget>
2066 <widget class="QLabel" row="1" column="0">
2067 @@ -119,7 +119,7 @@
2068 <cstring>Number_Auto_chatwindow</cstring>
2069 </property>
2070 <property name="whatsThis" stdset="0">
2071 - <string>This is the number of messages that will be added automatically in the what window when opening a new chat</string>
2072 + <string>This is the number of messages that will be added automatically in the chat window when opening a new chat.</string>
2073 </property>
2074 </widget>
2075 <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="2">
2076 @@ -133,7 +133,7 @@
2077 <bool>true</bool>
2078 </property>
2079 <property name="whatsThis" stdset="0">
2080 - <string>When a new chat is open, automatically add the few last message you had with that contact.</string>
2081 + <string>When a new chat is opened, automatically add the last few messages between you and that contact.</string>
2082 </property>
2083 </widget>
2084 </grid>
2085 --- kopete/protocols/yahoo/kopete_yahoo.desktop (revision 488948)
2086 +++ kopete/protocols/yahoo/kopete_yahoo.desktop (revision 495340)
2087 @@ -39,7 +39,7 @@
2088 Comment[hi]=से जुड़ने का प्रोटोकॉल
2089 Comment[hr]=Protokol za povezivanje na Yahoo
2090 Comment[hu]=Protokoll a Yahoo-hoz való csatlakozáshoz
2091 -Comment[is]=Protocol til að tengjast Yahoo
2092 +Comment[is]=Samskiptamáti til að tengjast Yahoo
2093 Comment[it]=Protocollo per connessione a Yahoo
2094 Comment[ja]=Yahooに接続するプロトコル
2095 Comment[lt]=Protokolas prisijungimui prie Yahoo
2096 --- kopete/protocols/yahoo/kyahoo.cpp (revision 488948)
2097 +++ kopete/protocols/yahoo/kyahoo.cpp (revision 495340)
2098 @@ -1105,7 +1105,7 @@
2099
2100 if( written != read )
2101 {
2102 - kdDebug(14181) << k_funcinfo << "An error occured while sending the file: " << socket->error() << " transmitted: " << uploadData->transmitted << endl;
2103 + kdDebug(14181) << k_funcinfo << "An error occurred while sending the file: " << socket->error() << " transmitted: " << uploadData->transmitted << endl;
2104 if( uploadData->reportSuccess )
2105 KMessageBox::queuedMessageBox(Kopete::UI::Global::mainWidget(), KMessageBox::Error, i18n("An error occured while sending the file: %1").arg( socket->error() ) );
2106 uploadData->file.close();
2107 --- kopete/protocols/yahoo/yahoocontact.cpp (revision 488948)
2108 +++ kopete/protocols/yahoo/yahoocontact.cpp (revision 495340)
2109 @@ -499,7 +499,7 @@
2110 {
2111 KMessageBox::queuedMessageBox(
2112 Kopete::UI::Global::mainWidget(), KMessageBox::Error,
2113 - i18n("I cannot find the jasper image convert program.\njasper is required to render the yahoo webcam images.\nPlease go to %1").arg( "http://www.ece.uvic.ca/~mdadams/jasper/")
2114 + i18n("Jasper image conversion program not found.\njasper is required to render the Yahoo webcam images.\nPlease go to %1").arg( "http://www.ece.uvic.ca/~mdadams/jasper/")
2115 );
2116 return;
2117 }
2118 --- kopete/protocols/yahoo/yahooaccount.cpp (revision 488948)
2119 +++ kopete/protocols/yahoo/yahooaccount.cpp (revision 495340)
2120 @@ -681,7 +681,8 @@
2121 kc->removeProperty( m_protocol->awayMessage );
2122
2123 if( newStatus != static_cast<YahooProtocol*>( m_protocol )->Offline &&
2124 - oldStatus == static_cast<YahooProtocol*>( m_protocol )->Offline && contact(who) != myself() )
2125 + oldStatus == static_cast<YahooProtocol*>( m_protocol )->Offline && contact(who) != myself() &&
2126 + myself()->onlineStatus() != m_protocol->Invisible )
2127 {
2128 m_session->requestBuddyIcon( who ); // Try to get Buddy Icon
2129
2130 --- kopete/protocols/yahoo/ui/yahoowebcamdialog.cpp (revision 488948)
2131 +++ kopete/protocols/yahoo/ui/yahoowebcamdialog.cpp (revision 495340)
2132 @@ -77,7 +77,7 @@
2133 case 1:
2134 closeReason = i18n( "%1 has stopped broadcasting" ).arg( contactName ); break;
2135 case 2:
2136 - closeReason = i18n( "%1 has cancelled viewing permission" ).arg( contactName ); break;
2137 + closeReason = i18n( "%1 has canceled viewing permission" ).arg( contactName ); break;
2138 case 3:
2139 closeReason = i18n( "%1 has declined permission to view webcam" ).arg( contactName ); break;
2140 case 4:
2141 --- kopete/protocols/winpopup/kopete_wp.desktop (revision 488948)
2142 +++ kopete/protocols/winpopup/kopete_wp.desktop (revision 495340)
2143 @@ -45,7 +45,7 @@
2144 Comment[hi]=विंडोज़ विन-पॉपअप मैसेंजर भेजने का प्रोटोकॉल
2145 Comment[hr]=Protokol za slanje Windows WinPopup poruka
2146 Comment[hu]=Protokoll Windows felbukkanó üzenetek küldéséhez
2147 -Comment[is]=Protocol til að senda Windows WinPopup skeyti
2148 +Comment[is]=Samskiptamáti til að senda Windows WinPopup skeyti
2149 Comment[it]=Protocollo per inviare messaggi Windows WinPopup
2150 Comment[ja]=WindowsのWinPopupメッセージを送るプロトコル
2151 Comment[lt]=Protokolas Windows iššokančių žinučių siuntimui
2152 --- kopete/protocols/winpopup/config/kopete_wp_config.desktop (revision 488948)
2153 +++ kopete/protocols/winpopup/config/kopete_wp_config.desktop (revision 495340)
2154 @@ -64,7 +64,7 @@
2155 Comment[cs]=Odesílání Microsoft "WinPopup"
2156 Comment[cy]=Negesydd Ffenestr "WinPopup" Microsoft
2157 Comment[de]=Microsoft "WinPopup"-Nachrichtendienst
2158 -Comment[es]=Mensajería instantánea "WinPopup" de Microsoft
2159 +Comment[es]=Mensajería instantánea «WinPopup» de Microsoft
2160 Comment[et]=Microsofti "WinPopup" hüpik-teateaknad
2161 Comment[eu]=Microsoft "WinPopup" leiho mezularia
2162 Comment[fi]=Microsoft "WinPopup"-ikkunaviestin
2163 --- kopete/protocols/groupwise/kopete_groupwise.desktop (revision 488948)
2164 +++ kopete/protocols/groupwise/kopete_groupwise.desktop (revision 495340)
2165 @@ -26,6 +26,7 @@
2166 Comment[fi]=Novell GroupWise -viestijä
2167 Comment[fr]=Messagerie GroupWise Novell
2168 Comment[he]=תוכנת המסרים של נובל GroupWise
2169 +Comment[is]=Novell GroupWise skilaboðaþjónustan
2170 Comment[it]=Messaggistica per gruppi di Novell
2171 Comment[ja]=Novell GroupWiseメッセンジャ
2172 Comment[lt]=Novell GroupWise žinučių klientas
2173 --- kopete/protocols/jabber/libiris/iris/jabber/s5b.cpp (revision 488948)
2174 +++ kopete/protocols/jabber/libiris/iris/jabber/s5b.cpp (revision 495340)
2175 @@ -18,6 +18,8 @@
2176 *
2177 */
2178
2179 +#include <config.h>
2180 +
2181 #include"s5b.h"
2182
2183 #include<qtimer.h>
2184 @@ -32,6 +34,9 @@
2185 #ifdef Q_OS_WIN
2186 # include <windows.h>
2187 #else
2188 +# ifdef HAVE_SYS_TYPES_H
2189 +# include <sys/types.h>
2190 +# endif
2191 # include <netinet/in.h>
2192 #endif
2193
2194 --- kopete/protocols/jabber/kioslave/jabberdisco.protocol (revision 488948)
2195 +++ kopete/protocols/jabber/kioslave/jabberdisco.protocol (revision 495340)
2196 @@ -20,6 +20,7 @@
2197 Description[eu]=Jabber aurkikuntza zerbitzureako KIO morroi bat
2198 Description[fr]=Un module d'entrée / sortie pour la recherche de service Jabber
2199 Description[gl]=Un KIO slave para Jabber Service Discovery
2200 +Description[hu]=KDE-protokoll a Jabber szolgáltatáskereső használatához
2201 Description[is]=kioslave fyrir Jabber þjónustu uppgötvun
2202 Description[it]=Un KIO slave per il servizio di discovery per jabber
2203 Description[ja]=Jabber Service Discovery のKIOスレーブ
2204 --- kopete/protocols/jabber/jabbercontact.cpp (revision 488948)
2205 +++ kopete/protocols/jabber/jabbercontact.cpp (revision 495340)
2206 @@ -473,6 +473,10 @@
2207 if ( task->success () )
2208 {
2209 setProperty ( protocol()->propLastSeen, QDateTime::currentDateTime().addSecs ( -task->seconds () ) );
2210 + if( !task->message().isEmpty() )
2211 + {
2212 + setProperty( protocol()->propAwayMessage, task->message() );
2213 + }
2214 }
2215
2216 }
2217 --- kopete/protocols/jabber/jabberaccount.cpp (revision 488948)
2218 +++ kopete/protocols/jabber/jabberaccount.cpp (revision 495340)
2219 @@ -99,6 +99,12 @@
2220
2221 m_jabberClient = 0L;
2222
2223 + delete m_resourcePool;
2224 + m_resourcePool = 0L;
2225 +
2226 + delete m_contactPool;
2227 + m_contactPool = 0L;
2228 +
2229 }
2230
2231 void JabberAccount::setS5BServerPort ( int port )
2232 --- kopete/protocols/jabber/ui/jabberregisteraccount.cpp (revision 488948)
2233 +++ kopete/protocols/jabber/ui/jabberregisteraccount.cpp (revision 495340)
2234 @@ -81,7 +81,7 @@
2235 mMainWidget->leServer->setText ( parent->mServer->text () );
2236 mMainWidget->leJID->setText ( parent->mID->text () );
2237 mMainWidget->lePassword->setText ( parent->mPass->password () );
2238 - mMainWidget->lePasswordVerify->setText ( parent->mPass->password () );
2239 + // mMainWidget->lePasswordVerify->setText ( parent->mPass->password () ); //BUG 114631
2240 mMainWidget->sbPort->setValue ( parent->mPort->value () );
2241 mMainWidget->cbUseSSL->setChecked ( parent->cbUseSSL->isChecked () );
2242
2243 --- kopete/protocols/oscar/oscarlistnonservercontacts.cpp (revision 488948)
2244 +++ kopete/protocols/oscar/oscarlistnonservercontacts.cpp (revision 495340)
2245 @@ -21,6 +21,7 @@
2246 #include "oscarlistnonservercontacts.h"
2247 #include "oscarlistcontactsbase.h"
2248 #include <qstringlist.h>
2249 +#include <qcheckbox.h>
2250 #include <klocale.h>
2251
2252 OscarListNonServerContacts::OscarListNonServerContacts(QWidget* parent)
2253 @@ -49,6 +50,10 @@
2254 return m_nonServerContacts;
2255 }
2256
2257 +bool OscarListNonServerContacts::onlyShowOnce()
2258 +{
2259 + return m_contactsList->doNotShowAgain->isChecked();
2260 +}
2261
2262
2263 void OscarListNonServerContacts::slotCancel()
2264 --- kopete/protocols/oscar/oscarlistnonservercontacts.h (revision 488948)
2265 +++ kopete/protocols/oscar/oscarlistnonservercontacts.h (revision 495340)
2266 @@ -35,6 +35,8 @@
2267 void addContacts( const QStringList& contactList );
2268 QStringList nonServerContactList() const;
2269
2270 + bool onlyShowOnce();
2271 +
2272 protected:
2273 virtual void slotOk();
2274 virtual void slotCancel();
2275 --- kopete/protocols/oscar/liboscar/userdetails.cpp (revision 488948)
2276 +++ kopete/protocols/oscar/liboscar/userdetails.cpp (revision 495340)
2277 @@ -45,6 +45,16 @@
2278 m_dcLastInfoUpdateTime = 0;
2279 m_dcLastExtInfoUpdateTime = 0;
2280 m_dcLastExtStatusUpdateTime = 0;
2281 + m_userClassSpecified = false;
2282 + m_memberSinceSpecified = false;
2283 + m_onlineSinceSpecified = false;
2284 + m_numSecondsOnlineSpecified = false;
2285 + m_idleTimeSpecified = false;
2286 + m_extendedStatusSpecified = false;
2287 + m_capabilitiesSpecified = false;
2288 + m_dcOutsideSpecified = false;
2289 + m_dcInsideSpecified = false;
2290 + m_iconSpecified = false;
2291 }
2292
2293
2294 @@ -141,6 +151,7 @@
2295 {
2296 case 0x0001: //user class
2297 m_userClass = b.getWord();
2298 + m_userClassSpecified = true;
2299 #ifdef OSCAR_USERINFO_DEBUG
2300 kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "User class is " << m_userClass << endl;
2301 #endif
2302 @@ -148,12 +159,14 @@
2303 case 0x0002: //member since
2304 case 0x0005: //member since
2305 m_memberSince.setTime_t( b.getDWord() );
2306 + m_memberSinceSpecified = true;
2307 #ifdef OSCAR_USERINFO_DEBUG
2308 kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Member since " << m_memberSince << endl;
2309 #endif
2310 break;
2311 case 0x0003: //sigon time
2312 m_onlineSince.setTime_t( b.getDWord() );
2313 + m_onlineSinceSpecified = true;
2314 #ifdef OSCAR_USERINFO_DEBUG
2315 kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Signed on at " << m_onlineSince << endl;
2316 #endif
2317 @@ -161,17 +174,20 @@
2318 case 0x0004: //idle time
2319 m_idleTime = b.getWord() * 60;
2320 #ifdef OSCAR_USERINFO_DEBUG
2321 + m_idleTimeSpecified = true;
2322 kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Idle time is " << m_idleTime << endl;
2323 #endif
2324 break;
2325 case 0x0006: //extended user status
2326 m_extendedStatus = b.getDWord();
2327 + m_extendedStatusSpecified = true;
2328 #ifdef OSCAR_USERINFO_DEBUG
2329 kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Extended status is " << QString::number( m_extendedStatus, 16 ) << endl;
2330 #endif
2331 break;
2332 case 0x000A: //external IP address
2333 m_dcOutsideIp = KNetwork::KIpAddress( ntohl( b.getDWord() ) );
2334 + m_dcOutsideSpecified = true;
2335 #ifdef OSCAR_USERINFO_DEBUG
2336 kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "External IP address is " << m_dcOutsideIp.toString() << endl;
2337 #endif
2338 @@ -192,16 +208,19 @@
2339 m_dcLastExtInfoUpdateTime = b.getDWord();
2340 m_dcLastExtStatusUpdateTime = b.getDWord();
2341 b.getWord(); //unknown.
2342 + m_dcInsideSpecified = true;
2343 #ifdef OSCAR_USERINFO_DEBUG
2344 kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Got DC info" << endl;
2345 #endif
2346 break;
2347 case 0x000D: //capability info
2348 m_capabilities = Oscar::parseCapabilities( b, m_clientVersion );
2349 + m_capabilitiesSpecified = true;
2350 break;
2351 case 0x0010:
2352 case 0x000F: //online time
2353 m_numSecondsOnline = b.getDWord();
2354 + m_numSecondsOnlineSpecified = true;
2355 #ifdef OSCAR_USERINFO_DEBUG
2356 kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Online for " << m_numSecondsOnline << endl;
2357 #endif
2358 @@ -229,6 +248,7 @@
2359 {
2360 m_iconChecksumType = number;
2361 m_md5IconHash.duplicate( b.getBlock( length ), length );
2362 + m_iconSpecified = true;
2363 #ifdef OSCAR_USERINFO_DEBUG
2364 kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "checksum:" << m_md5IconHash << endl;
2365 #endif
2366 @@ -273,7 +293,8 @@
2367 }
2368
2369 //do client detection on fill
2370 - detectClient();
2371 + if ( m_capabilitiesSpecified )
2372 + detectClient();
2373 }
2374
2375 void UserDetails::detectClient()
2376 @@ -452,4 +473,73 @@
2377 return capPresent;
2378 }
2379
2380 +void UserDetails::merge( const UserDetails& ud )
2381 +{
2382 + m_userId = ud.m_userId;
2383 + m_warningLevel = ud.m_warningLevel;
2384 + if ( ud.m_userClassSpecified )
2385 + {
2386 + m_userClass = ud.m_userClass;
2387 + m_userClassSpecified = true;
2388 + }
2389 + if ( ud.m_memberSinceSpecified )
2390 + {
2391 + m_memberSince = ud.m_memberSince;
2392 + m_memberSinceSpecified = true;
2393 + }
2394 + if ( ud.m_onlineSinceSpecified )
2395 + {
2396 + m_onlineSince = ud.m_onlineSince;
2397 + m_onlineSinceSpecified = true;
2398 + }
2399 + if ( ud.m_numSecondsOnlineSpecified )
2400 + {
2401 + m_numSecondsOnline = ud.m_numSecondsOnline;
2402 + m_numSecondsOnlineSpecified = true;
2403 + }
2404 + if ( ud.m_idleTimeSpecified )
2405 + {
2406 + m_idleTime = ud.m_idleTime;
2407 + m_idleTimeSpecified = true;
2408 + }
2409 + if ( ud.m_extendedStatusSpecified )
2410 + {
2411 + m_extendedStatus = ud.m_extendedStatus;
2412 + m_extendedStatusSpecified = true;
2413 + }
2414 + if ( ud.m_capabilitiesSpecified )
2415 + {
2416 + m_capabilities = ud.m_capabilities;
2417 + m_clientVersion = ud.m_clientVersion;
2418 + m_clientName = ud.m_clientName;
2419 + m_capabilitiesSpecified = true;
2420 + }
2421 + if ( ud.m_dcOutsideSpecified )
2422 + {
2423 + m_dcOutsideIp = ud.m_dcOutsideIp;
2424 + m_dcOutsideSpecified = true;
2425 + }
2426 + if ( ud.m_dcInsideSpecified )
2427 + {
2428 + m_dcInsideIp = ud.m_dcInsideIp;
2429 + m_dcPort = ud.m_dcPort;
2430 + m_dcType = ud.m_dcType;
2431 + m_dcProtoVersion = ud.m_dcProtoVersion;
2432 + m_dcAuthCookie = ud.m_dcAuthCookie;
2433 + m_dcWebFrontPort = ud.m_dcWebFrontPort;
2434 + m_dcClientFeatures = ud.m_dcClientFeatures;
2435 + m_dcLastInfoUpdateTime = ud.m_dcLastInfoUpdateTime;
2436 + m_dcLastExtInfoUpdateTime = ud.m_dcLastExtInfoUpdateTime;
2437 + m_dcLastExtStatusUpdateTime = ud.m_dcLastExtStatusUpdateTime;
2438 + m_dcInsideSpecified = true;
2439 + }
2440 + if ( ud.m_iconSpecified )
2441 + {
2442 + m_iconChecksumType = ud.m_iconChecksumType;
2443 + m_md5IconHash = ud.m_md5IconHash;
2444 + m_iconSpecified = true;
2445 + }
2446 + m_availableMessage = ud.m_availableMessage;
2447 +}
2448 +
2449 //kate: tab-width 4; indent-mode csands;
2450 --- kopete/protocols/oscar/liboscar/coreprotocol.cpp (revision 488948)
2451 +++ kopete/protocols/oscar/liboscar/coreprotocol.cpp (revision 495340)
2452 @@ -194,19 +194,19 @@
2453 return bytesParsed;
2454 }
2455
2456 - m_din = new QDataStream( wire, IO_ReadOnly );
2457 + QDataStream din( wire, IO_ReadOnly );
2458
2459 // look at first four bytes and decide what to do with the chunk
2460 - if ( okToProceed() )
2461 + if ( okToProceed( din ) )
2462 {
2463 - *m_din >> flapStart;
2464 + din >> flapStart;
2465 QByteArray packet;
2466 packet.duplicate( wire );
2467 if ( flapStart == 0x2A )
2468 {
2469 - *m_din >> flapChannel;
2470 - *m_din >> flapLength; //discard the first one it's not really the flap length
2471 - *m_din >> flapLength;
2472 + din >> flapChannel;
2473 + din >> flapLength; //discard the first one it's not really the flap length
2474 + din >> flapLength;
2475 if ( wire.size() < flapLength )
2476 {
2477 kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo
2478 @@ -231,8 +231,8 @@
2479
2480 if ( flapChannel == 2 )
2481 {
2482 - *m_din >> s1;
2483 - *m_din >> s2;
2484 + din >> s1;
2485 + din >> s2;
2486
2487 Transfer * t = m_snacProtocol->parse( packet, bytesParsed );
2488 if ( t )
2489 @@ -256,7 +256,6 @@
2490 }
2491
2492 }
2493 - delete m_din;
2494 return bytesParsed;
2495 }
2496
2497 @@ -270,19 +269,16 @@
2498 kdDebug(OSCAR_RAW_DEBUG) << out.data() << endl;
2499 }
2500
2501 -bool CoreProtocol::okToProceed()
2502 +bool CoreProtocol::okToProceed( const QDataStream &din )
2503 {
2504 - if ( m_din )
2505 + if ( din.atEnd() )
2506 {
2507 - if ( m_din->atEnd() )
2508 - {
2509 - m_state = NeedMore;
2510 - kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Server message ended prematurely!" << endl;
2511 - }
2512 - else
2513 - return true;
2514 + m_state = NeedMore;
2515 + kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Server message ended prematurely!" << endl;
2516 + return false;
2517 }
2518 - return false;
2519 + else
2520 + return true;
2521 }
2522
2523 #include "coreprotocol.moc"
2524 --- kopete/protocols/oscar/liboscar/coreprotocol.h (revision 488948)
2525 +++ kopete/protocols/oscar/liboscar/coreprotocol.h (revision 495340)
2526 @@ -87,7 +87,7 @@
2527 /**
2528 * Check that there is data to read, and set the protocol's state if there isn't any.
2529 */
2530 - bool okToProceed();
2531 + bool okToProceed( const QDataStream &din );
2532 /**
2533 * Convert incoming wire data into a Transfer object and queue it
2534 * @return number of bytes from the input that were parsed into a Transfer
2535 @@ -96,7 +96,6 @@
2536
2537 private:
2538 QByteArray m_in; // buffer containing unprocessed bytes we received
2539 - QDataStream* m_din; // contains the packet currently being parsed
2540 int m_error;
2541 Transfer* m_inTransfer; // the transfer that is being received
2542 int m_state; // represents the protocol's overall state
2543 --- kopete/protocols/oscar/liboscar/client.cpp (revision 488948)
2544 +++ kopete/protocols/oscar/liboscar/client.cpp (revision 495340)
2545 @@ -485,8 +485,8 @@
2546 if ( msg.hasProperty( Oscar::Message::AutoResponse ) )
2547 {
2548 // we got a response to a status message request.
2549 - kdDebug( OSCAR_RAW_DEBUG ) << k_funcinfo << "Received an away message: " << msg.text() << endl;
2550 - emit receivedAwayMessage( msg.sender(), msg.text() );
2551 + kdDebug( OSCAR_RAW_DEBUG ) << k_funcinfo << "Received an away message." << endl;
2552 + emit receivedAwayMessage( msg );
2553 }
2554 }
2555 else
2556 --- kopete/protocols/oscar/liboscar/offlinemessagestask.cpp (revision 488948)
2557 +++ kopete/protocols/oscar/liboscar/offlinemessagestask.cpp (revision 495340)
2558 @@ -127,7 +127,12 @@
2559 time = time.addSecs( tz );
2560
2561 QDateTime hackyTime( date, time );
2562 - Oscar::Message message( msg.data(), type, flags, hackyTime );
2563 + Oscar::Message message;
2564 + message.setType( type );
2565 + message.addProperty( flags );
2566 + message.addProperty( Oscar::Message::NotDecoded );
2567 + message.setTextArray( msg );
2568 + message.setTimestamp( hackyTime );
2569 message.setSender( QString::number( senderUin ) );
2570 message.setReceiver( QString::number( receiverUin ) );
2571
2572 --- kopete/protocols/oscar/liboscar/client.h (revision 488948)
2573 +++ kopete/protocols/oscar/liboscar/client.h (revision 495340)
2574 @@ -375,6 +375,7 @@
2575
2576 void receivedProfile( const QString& contact, const QString& profile );
2577 void receivedAwayMessage( const QString& contact, const QString& message );
2578 + void receivedAwayMessage( const Oscar::Message& message );
2579 void receivedUserInfo( const QString& contact, const UserDetails& details );
2580
2581 /** We warned a user */
2582 --- kopete/protocols/oscar/liboscar/userdetails.h (revision 488948)
2583 +++ kopete/protocols/oscar/liboscar/userdetails.h (revision 495340)
2584 @@ -55,11 +55,28 @@
2585 * It only updates what's available.
2586 */
2587 void fill( Buffer* buffer );
2588 +
2589 + /**
2590 + * Merge only those data from another UserDetails
2591 + * which are marked as specified.
2592 + */
2593 + void merge( const UserDetails& ud );
2594 +
2595 + bool userClassSpecified() const { return m_userClassSpecified; }
2596 + bool memberSinceSpecified() const { return m_memberSinceSpecified; }
2597 + bool onlineSinceSpecified() const { return m_onlineSinceSpecified; }
2598 + bool numSecondsOnlineSpecified() const { return m_numSecondsOnlineSpecified; }
2599 + bool idleTimeSpecified() const { return m_idleTimeSpecified; }
2600 + bool extendedStatusSpecified() const { return m_extendedStatusSpecified; }
2601 + bool capabilitiesSpecified() const { return m_capabilitiesSpecified; }
2602 + bool dcOutsideSpecified() const { return m_dcOutsideSpecified; }
2603 + bool dcInsideSpecified() const { return m_dcInsideSpecified; }
2604 + bool iconSpecified() const { return m_iconSpecified; }
2605 private:
2606 //! Do client detection
2607 void detectClient();
2608 -
2609
2610 +
2611 private:
2612 QString m_userId; /// the screename/uin of the contact
2613 int m_warningLevel; /// the warning level of the contact
2614 @@ -87,6 +104,17 @@
2615 QByteArray m_md5IconHash; /// Buddy Icon MD5 Hash - TLV 0x1D
2616 QString m_availableMessage; /// Message a person can have when available - TLV 0x0D
2617
2618 + bool m_userClassSpecified;
2619 + bool m_memberSinceSpecified;
2620 + bool m_onlineSinceSpecified;
2621 + bool m_numSecondsOnlineSpecified;
2622 + bool m_idleTimeSpecified;
2623 + bool m_extendedStatusSpecified;
2624 + bool m_capabilitiesSpecified;
2625 + bool m_dcOutsideSpecified;
2626 + bool m_dcInsideSpecified;
2627 + bool m_iconSpecified;
2628 +
2629 };
2630
2631 #endif
2632 --- kopete/protocols/oscar/liboscar/messagereceivertask.cpp (revision 488948)
2633 +++ kopete/protocols/oscar/liboscar/messagereceivertask.cpp (revision 495340)
2634 @@ -407,7 +407,30 @@
2635
2636 kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Message type is: " << messageType << endl;
2637
2638 - msg->setText( b->getLELNTS() );
2639 + QCString msgtext( b->getLELNTS() );
2640 + int prop = Oscar::Message::NotDecoded;
2641 + if ( messageType == 0x01 )
2642 + {
2643 + int fgcolor = b->getLEDWord();
2644 + int bgcolor = b->getLEDWord();
2645 +
2646 + while ( b->length() >= 4 )
2647 + {
2648 + int capLength = b->getLEDWord();
2649 + if ( b->length() < capLength )
2650 + break;
2651 +
2652 + QByteArray cap( b->getBlock( capLength ) );
2653 + if ( qstrncmp ( cap.data(), "{0946134E-4C7F-11D1-8222-444553540000}", capLength ) == 0 )
2654 + prop = Oscar::Message::UCS2;
2655 + }
2656 + }
2657 +
2658 + msg->addProperty( prop );
2659 + if ( prop == Oscar::Message::UCS2 )
2660 + msg->setText( QString::fromUtf8( msgtext ) );
2661 + else
2662 + msg->setTextArray( msgtext );
2663
2664 if ( ( messageType & 0xF0 ) == 0xE0 ) // check higher byte for value E -> status message request
2665 msg->addProperty( Oscar::Message::StatusMessageRequest );
2666 --- kopete/protocols/oscar/oscarcontact.cpp (revision 488948)
2667 +++ kopete/protocols/oscar/oscarcontact.cpp (revision 495340)
2668 @@ -178,41 +178,41 @@
2669 setProperty( Kopete::Global::Properties::self()->onlineSince(), details.onlineSinceTime() );
2670 setIdleTime( details.idleTime() );
2671 m_warningLevel = details.warningLevel();
2672 - m_details = details;
2673 + m_details.merge( details );
2674
2675 QStringList capList;
2676 // Append client name and version in case we found one
2677 - if ( details.userClass() & 0x0080 /* WIRELESS */ )
2678 + if ( m_details.userClass() & 0x0080 /* WIRELESS */ )
2679 capList << i18n( "Mobile AIM Client" );
2680 else
2681 {
2682 - if ( !details.clientName().isEmpty() )
2683 + if ( !m_details.clientName().isEmpty() )
2684 {
2685 capList << i18n( "Translators: client name and version",
2686 - "%1").arg( details.clientName() );
2687 + "%1").arg( m_details.clientName() );
2688 }
2689 }
2690
2691 // and now for some general informative capabilities
2692 - if ( details.hasCap( CAP_BUDDYICON ) )
2693 + if ( m_details.hasCap( CAP_BUDDYICON ) )
2694 capList << i18n( "Buddy icons" );
2695 - if ( details.hasCap( CAP_UTF8 ) )
2696 + if ( m_details.hasCap( CAP_UTF8 ) )
2697 capList << i18n( "UTF-8" );
2698 - if ( details.hasCap( CAP_RTFMSGS ) )
2699 + if ( m_details.hasCap( CAP_RTFMSGS ) )
2700 capList << i18n( "Rich text messages" );
2701 - if ( details.hasCap( CAP_CHAT ) )
2702 + if ( m_details.hasCap( CAP_CHAT ) )
2703 capList << i18n( "Group chat" );
2704 - if ( details.hasCap( CAP_VOICE ) )
2705 + if ( m_details.hasCap( CAP_VOICE ) )
2706 capList << i18n( "Voice chat" );
2707 - if ( details.hasCap( CAP_IMIMAGE ) )
2708 + if ( m_details.hasCap( CAP_IMIMAGE ) )
2709 capList << i18n( "DirectIM/IMImage" );
2710 - if ( details.hasCap( CAP_SENDBUDDYLIST ) )
2711 + if ( m_details.hasCap( CAP_SENDBUDDYLIST ) )
2712 capList << i18n( "Send buddy list" );
2713 - if ( details.hasCap( CAP_SENDFILE ) )
2714 + if ( m_details.hasCap( CAP_SENDFILE ) )
2715 capList << i18n( "File transfers" );
2716 - if ( details.hasCap( CAP_GAMES ) || details.hasCap( CAP_GAMES2 ) )
2717 + if ( m_details.hasCap( CAP_GAMES ) || m_details.hasCap( CAP_GAMES2 ) )
2718 capList << i18n( "Games" );
2719 - if ( details.hasCap( CAP_TRILLIAN ) )
2720 + if ( m_details.hasCap( CAP_TRILLIAN ) )
2721 capList << i18n( "Trillian user" );
2722
2723 m_clientFeatures = capList.join( ", " );
2724 --- kopete/protocols/oscar/oscaraccount.cpp (revision 488948)
2725 +++ kopete/protocols/oscar/oscaraccount.cpp (revision 495340)
2726 @@ -255,7 +255,8 @@
2727 }
2728 kdDebug(OSCAR_GEN_DEBUG) << k_funcinfo << "the following contacts are not on the server side list"
2729 << nonServerContactList << endl;
2730 - if ( !nonServerContactList.isEmpty() )
2731 + bool showMissingContactsDialog = configGroup()->readBoolEntry(QString::fromLatin1("ShowMissingContactsDialog"), true);
2732 + if ( !nonServerContactList.isEmpty() && showMissingContactsDialog )
2733 {
2734 d->olnscDialog = new OscarListNonServerContacts( Kopete::UI::Global::mainWidget() );
2735 QObject::connect( d->olnscDialog, SIGNAL( closing() ),
2736 @@ -322,6 +323,10 @@
2737
2738 }
2739
2740 + bool showOnce = d->olnscDialog->onlyShowOnce();
2741 + configGroup()->writeEntry( QString::fromLatin1("ShowMissingContactsDialog") , !showOnce);
2742 + configGroup()->sync();
2743 +
2744 d->olnscDialog->delayedDestruct();
2745 d->olnscDialog = 0L;
2746 }
2747 --- kopete/protocols/oscar/oscarlistcontactsbase.ui (revision 488948)
2748 +++ kopete/protocols/oscar/oscarlistcontactsbase.ui (revision 495340)
2749 @@ -8,15 +8,15 @@
2750 <rect>
2751 <x>0</x>
2752 <y>0</y>
2753 - <width>459</width>
2754 - <height>266</height>
2755 + <width>478</width>
2756 + <height>361</height>
2757 </rect>
2758 </property>
2759 - <grid>
2760 + <vbox>
2761 <property name="name">
2762 <cstring>unnamed</cstring>
2763 </property>
2764 - <widget class="QLabel" row="0" column="0">
2765 + <widget class="QLabel">
2766 <property name="name">
2767 <cstring>textLabel1</cstring>
2768 </property>
2769 @@ -24,12 +24,26 @@
2770 <string>The following contacts are not on your contact list. Would you like to add them?</string>
2771 </property>
2772 </widget>
2773 - <widget class="QListBox" row="1" column="0">
2774 + <widget class="QListBox">
2775 <property name="name">
2776 <cstring>notServerContacts</cstring>
2777 </property>
2778 + <property name="frameShape">
2779 + <enum>StyledPanel</enum>
2780 + </property>
2781 + <property name="frameShadow">
2782 + <enum>Sunken</enum>
2783 + </property>
2784 </widget>
2785 - </grid>
2786 + <widget class="QCheckBox">
2787 + <property name="name">
2788 + <cstring>doNotShowAgain</cstring>
2789 + </property>
2790 + <property name="text">
2791 + <string>Do &amp;not ask again</string>
2792 + </property>
2793 + </widget>
2794 + </vbox>
2795 </widget>
2796 <layoutdefaults spacing="6" margin="11"/>
2797 </UI>
2798 --- kopete/protocols/oscar/icq/icqprotocol.cpp (revision 488948)
2799 +++ kopete/protocols/oscar/icq/icqprotocol.cpp (revision 495340)
2800 @@ -641,7 +641,7 @@
2801 mInterests.insert(142, i18n("Health and beauty"));
2802 mInterests.insert(143, i18n("Media"));
2803 mInterests.insert(144, i18n("Household products"));
2804 - mInterests.insert(145, i18n("Mail order catalogue"));
2805 + mInterests.insert(145, i18n("Mail order catalog"));
2806 mInterests.insert(146, i18n("Business services"));
2807 mInterests.insert(147, i18n("Audio and visual"));
2808 mInterests.insert(148, i18n("Sporting and athletic"));
2809 --- kopete/protocols/oscar/icq/icqcontact.cpp (revision 488948)
2810 +++ kopete/protocols/oscar/icq/icqcontact.cpp (revision 495340)
2811 @@ -75,6 +75,8 @@
2812 this, SLOT( userInfoUpdated( const QString&, const UserDetails& ) ) );
2813 QObject::connect( mAccount->engine(), SIGNAL( receivedAwayMessage( const QString&, const QString& ) ),
2814 this, SLOT( receivedStatusMessage( const QString&, const QString& ) ) );
2815 + QObject::connect( mAccount->engine(), SIGNAL( receivedAwayMessage( const Oscar::Message& ) ),
2816 + this, SLOT( receivedStatusMessage( const Oscar::Message& ) ) );
2817 QObject::connect( this, SIGNAL( featuresUpdated() ), this, SLOT( updateFeatures() ) );
2818
2819 }
2820 @@ -147,15 +149,21 @@
2821 }
2822
2823
2824 - if ( details.dcExternalIp().isUnspecified() )
2825 - removeProperty( mProtocol->ipAddress );
2826 - else
2827 - setProperty( mProtocol->ipAddress, details.dcExternalIp().toString() );
2828 + if ( details.dcOutsideSpecified() )
2829 + {
2830 + if ( details.dcExternalIp().isUnspecified() )
2831 + removeProperty( mProtocol->ipAddress );
2832 + else
2833 + setProperty( mProtocol->ipAddress, details.dcExternalIp().toString() );
2834 + }
2835
2836 - if ( details.clientName().isEmpty() )
2837 - removeProperty( mProtocol->clientFeatures );
2838 - else
2839 - setProperty( mProtocol->clientFeatures, details.clientName() );
2840 + if ( details.capabilitiesSpecified() )
2841 + {
2842 + if ( details.clientName().isEmpty() )
2843 + removeProperty( mProtocol->clientFeatures );
2844 + else
2845 + setProperty( mProtocol->clientFeatures, details.clientName() );
2846 + }
2847
2848 OscarContact::userInfoUpdated( contact, details );
2849 }
2850 @@ -338,6 +346,25 @@
2851 removeProperty( mProtocol->awayMessage );
2852 }
2853
2854 +void ICQContact::receivedStatusMessage( const Oscar::Message &message )
2855 +{
2856 + if ( Oscar::normalize( message.sender() ) != Oscar::normalize( contactId() ) )
2857 + return;
2858 +
2859 + //decode message
2860 + QTextCodec* codec = QTextCodec::codecForMib( this->property( "contactEncoding" ).value().toInt() );
2861 +
2862 + QString realText = message.text();
2863 + if ( message.properties() & Oscar::Message::NotDecoded )
2864 + realText = codec->toUnicode( message.textArray() );
2865 +
2866 +
2867 + if ( !realText.isEmpty() )
2868 + setProperty( mProtocol->awayMessage, realText );
2869 + else
2870 + removeProperty( mProtocol->awayMessage );
2871 +}
2872 +
2873 void ICQContact::slotSendMsg( Kopete::Message& msg, Kopete::ChatSession* session )
2874 {
2875 //Why is this unused?
2876 --- kopete/protocols/oscar/icq/ui/icqsearchbase.ui (revision 488948)
2877 +++ kopete/protocols/oscar/icq/ui/icqsearchbase.ui (revision 495340)
2878 @@ -101,7 +101,7 @@
2879 <string></string>
2880 </property>
2881 <property name="whatsThis" stdset="0">
2882 - <string>Show informations about the selected contact</string>
2883 + <string>Show information about the selected contact</string>
2884 </property>
2885 </widget>
2886 <spacer row="0" column="1">
2887 --- kopete/protocols/oscar/icq/icqcontact.h (revision 488948)
2888 +++ kopete/protocols/oscar/icq/icqcontact.h (revision 495340)
2889 @@ -134,6 +134,7 @@
2890 void changeEncodingDialogClosed( int );
2891
2892 void receivedStatusMessage( const QString &contact, const QString &message );
2893 + void receivedStatusMessage( const Oscar::Message &message );
2894
2895 //void slotCloseAwayMessageDialog();
2896 //void slotReadAwayMessage();
2897 --- kopete/protocols/msn/dispatcher.cpp (revision 488948)
2898 +++ kopete/protocols/msn/dispatcher.cpp (revision 495340)
2899 @@ -139,7 +139,7 @@
2900 writer << (Q_INT32)1;
2901 // Write the file name in utf-16 to the stream.
2902 QTextStream ts(header, IO_WriteOnly);
2903 - ts.setEncoding(QTextStream::Unicode);
2904 + ts.setEncoding(QTextStream::RawUnicode);
2905 ts.device()->at(20);
2906 ts << path.section('/', -1);
2907 // NOTE Background Sharing base64 [540..569]
2908 --- kopete/protocols/msn/outgoingtransfer.cpp (revision 488948)
2909 +++ kopete/protocols/msn/outgoingtransfer.cpp (revision 495340)
2910 @@ -200,7 +200,7 @@
2911 if(m_transfer)
2912 {
2913 // Inform the user of the file transfer cancelation.
2914 - m_transfer->slotError(KIO::ERR_ABORTED, i18n("File transfer cancelled."));
2915 + m_transfer->slotError(KIO::ERR_ABORTED, i18n("File transfer canceled."));
2916 }
2917 }
2918 // Dispose of this transfer context.
2919 @@ -307,7 +307,7 @@
2920 if(m_transfer)
2921 {
2922 // Inform the user of the file transfer cancelation.
2923 - m_transfer->slotError(KIO::ERR_ABORTED, i18n("File transfer cancelled."));
2924 + m_transfer->slotError(KIO::ERR_ABORTED, i18n("File transfer canceled."));
2925 }
2926
2927 if(m_file && m_file->isOpen()){
2928 --- kopete/protocols/msn/msnchatsession.cpp (revision 488948)
2929 +++ kopete/protocols/msn/msnchatsession.cpp (revision 495340)
2930 @@ -84,7 +84,7 @@
2931 m_actionNudge=new KAction( i18n( "Send Nudge" ), 0, this, SLOT(slotSendNudge() ), actionCollection(), "msnSendNudge" ) ;
2932 m_actionNudge->setEnabled(false);
2933 #if MSN_WEBCAM
2934 - m_actionWebcamReceive=new KAction( i18n( "Invite to Receive User Webcam" ), 0, this, SLOT(slotWebcamReceive() ), actionCollection(), "msnWebcamReceive" ) ;
2935 + m_actionWebcamReceive=new KAction( i18n( "View Contact's Webcam" ), 0, this, SLOT(slotWebcamReceive() ), actionCollection(), "msnWebcamReceive" ) ;
2936 m_actionWebcamReceive->setEnabled(false);
2937 m_actionWebcamSend=new KAction( i18n( "Send Webcam" ), 0, this, SLOT(slotWebcamSend() ), actionCollection(), "msnWebcamSend" ) ;
2938 #endif
2939 @@ -639,7 +639,7 @@
2940 {
2941 // FIXME: When nudge is the first received message, you can't see your own message you send before the others send you a message.
2942 // Ok, this is only with chat window style which use "Parse All Message" flag.
2943 - QString nudgeBody = i18n( "You have received a nudge!" );
2944 + QString nudgeBody = i18n( "You have received a nudge." );
2945 Kopete::Message msg = Kopete::Message(myself(), members(), nudgeBody, Kopete::Message::Internal, Kopete::Message::PlainText );
2946 appendMessage( msg );
2947 // Emit the nudge/buzz notification (configured by user).
2948 --- kopete/protocols/msn/ui/msneditaccountui.ui (revision 488948)
2949 +++ kopete/protocols/msn/ui/msneditaccountui.ui (revision 495340)
2950 @@ -274,7 +274,7 @@
2951 <string>&lt;qt&gt;&lt;p&gt;Indicate when Kopete will download the display pictures of contacts&lt;/p&gt;
2952 &lt;dl&gt;&lt;dt&gt;Only manually&lt;/dt&gt;&lt;dd&gt;The picture is not downloaded automatically. It is only downloaded when the user requests it&lt;/dd&gt;
2953 &lt;dt&gt;When a chat is open&lt;/dt&gt;&lt;dd&gt;The picture is downloaded when a conversation socket is opened, i.e. when you open a chat window&lt;/dd&gt;
2954 -&lt;dt&gt;Automatically&lt;/dt&gt;&lt;dd&gt;Always try to download the picture if the contact has one. &lt;b&gt;Note :&lt;/b&gt; this will open a socket, and let know the user you are downloading their picture.&lt;/dd&gt;&lt;/dl&gt;</string>
2955 +&lt;dt&gt;Automatically&lt;/dt&gt;&lt;dd&gt;Always try to download the picture if the contact has one. &lt;b&gt;Note:&lt;/b&gt; this will open a socket, and let the user know you are downloading their picture.&lt;/dd&gt;&lt;/dl&gt;</string>
2956 </property>
2957 </widget>
2958 <widget class="QComboBox">
2959 @@ -311,7 +311,7 @@
2960 <string>&lt;qt&gt;&lt;p&gt;Indicate when Kopete will download the pictures of contacts&lt;/p&gt;
2961 &lt;dl&gt;&lt;dt&gt;Only manually&lt;/dt&gt;&lt;dd&gt;The picture is not downloaded automatically. It is only downloaded when the user requests it&lt;/dd&gt;
2962 &lt;dt&gt;When a chat is open&lt;/dt&gt;&lt;dd&gt;The picture is downloaded when a conversation socket is opened, i.e. when you open a chat window&lt;/dd&gt;
2963 -&lt;dt&gt;Automatically&lt;/dt&gt;&lt;dd&gt;Always try to download the picture if the contact has one. &lt;b&gt;Note :&lt;/b&gt; this will open a socket, and let know the user you are downloading their picture.&lt;/dd&gt;&lt;/dl&gt;</string>
2964 +&lt;dt&gt;Automatically&lt;/dt&gt;&lt;dd&gt;Always try to download the picture if the contact has one. &lt;b&gt;Note:&lt;/b&gt; this will open a socket, and let the user know you are downloading their picture.&lt;/dd&gt;&lt;/dl&gt;</string>
2965 </property>
2966 </widget>
2967 </hbox>
2968 @@ -375,7 +375,7 @@
2969 <bool>true</bool>
2970 </property>
2971 <property name="toolTip" stdset="0">
2972 - <string>&lt;qt&gt;Make it possible to your contacts to detect if you are using Kopete.&lt;br&gt;We recommend to leave this checked&lt;/qt&gt;</string>
2973 + <string>&lt;qt&gt;Make it possible for your contacts to detect if you are using Kopete.&lt;br&gt;We recommend leaving this checked.&lt;/qt&gt;</string>
2974 </property>
2975 <property name="whatsThis" stdset="0">
2976 <string>Third party MSN clients, such as Kopete, give users the ability to let other third party clients guess which client they are using. We recommend leaving this checkbox checked.</string>
2977 @@ -472,7 +472,7 @@
2978 <cstring>textLabel1_5</cstring>
2979 </property>
2980 <property name="text">
2981 - <string>There is also privacy options in the "Contacts" tab</string>
2982 + <string>There are also privacy options in the "Contacts" tab</string>
2983 </property>
2984 <property name="alignment">
2985 <set>WordBreak|AlignCenter</set>
2986 @@ -1242,7 +1242,7 @@
2987 <string>S&amp;pecify a port for incoming webcam connection:</string>
2988 </property>
2989 <property name="whatsThis" stdset="0">
2990 - <string>If you are behind a firewall, you may specify a port to use for the incoming connection, and configure your firewall to accept connections on this port. Incoming connections are used for the webcam. If you don't specify yourself a port, the operating system will choose an available port for you. It is recommended to leave the checkbox unchecked.</string>
2991 + <string>If you are behind a firewall, you may specify a port to use for the incoming connection, and configure your firewall to accept connections on this port. Incoming connections are used for the webcam. If you don't specify a port yourself, the operating system will choose an available port for you. It is recommended to leave the checkbox unchecked.</string>
2992 </property>
2993 </widget>
2994 <widget class="QSpinBox">
2995 @@ -1262,8 +1262,7 @@
2996 <number>6891</number>
2997 </property>
2998 <property name="whatsThis" stdset="0">
2999 - <string>If you are behind a firewall, you may specify a port to use for the incoming connection, and configure your firewall to
3000 - accept connections on this port. Incoming connections are used for the webcam. If you don't specify yourself a port, the operating system will choose an available port for you. It is recommended to leave the checkbox unchecked.</string>
3001 + <string>If you are behind a firewall, you may specify a port to use for the incoming connection, and configure your firewall to accept connections on this port. Incoming connections are used for the webcam. If you don't specify a port yourself, the operating system will choose an available port for you. It is recommended to leave the checkbox unchecked.</string>
3002 </property>
3003 </widget>
3004 </hbox>
3005 --- kopete/kopete/eventsrc (revision 488948)
3006 +++ kopete/kopete/eventsrc (revision 495340)
3007 @@ -972,6 +972,7 @@
3008 Name[fr]=Erreur de connexion
3009 Name[ga]=Earráid Naisc
3010 Name[gl]=Erro de Conexión
3011 +Name[hu]=Csatlakozási hiba
3012 Name[is]=Villa í tengingu
3013 Name[it]=Errore di connessione
3014 Name[nb]=Koblingsfeil
3015 @@ -1001,6 +1002,7 @@
3016 Comment[eu]=Errore bat gertatu da konexioan
3017 Comment[fr]=Une erreur de connexion est apparue
3018 Comment[gl]=Ocorreu un erro na conexión
3019 +Comment[hu]=Hiba történt csatlakozás közben
3020 Comment[is]=Villa kom upp þegar reynt var að tengjast
3021 Comment[it]=Si è verificato un errore di connessione
3022 Comment[nb]=Det har oppstått en feil ved tilkobling
3023 @@ -1033,6 +1035,7 @@
3024 Name[eu]=Konexioa galdu da
3025 Name[fr]=Connexion perdue
3026 Name[gl]=Conexión Perdida
3027 +Name[hu]=A kapcsolat megszakadt
3028 Name[is]=Tengingu tapað
3029 Name[it]=Connessione chiusa
3030 Name[nb]=Tilkobling mistet
3031 @@ -1050,36 +1053,18 @@
3032 Name[uk]=З'єднання втрачено
3033 Name[uz]=Уланиш узилди
3034 Name[zh_CN]=连接已丢失
3035 -Comment=The connection have been lost
3036 -Comment[bg]=Връзката е прекъсната
3037 -Comment[ca]=S'ha perdut la connexió
3038 -Comment[cs]=Spojení bylo ztraceno
3039 +Comment=The connection has been lost
3040 Comment[da]=Forbindelsen er gået tabt
3041 -Comment[de]=Die Verbindung wurde unterbrochen
3042 Comment[el]=Η σύνδεση έκλεισε
3043 -Comment[en_GB]=The connection has been lost
3044 -Comment[es]=La conexión se perdió
3045 +Comment[es]=Se perdió la conexión
3046 Comment[et]=Ühendus kadus
3047 -Comment[eu]=Konexioa galdu da
3048 Comment[fr]=La connexion a été perdue
3049 -Comment[gl]=Perdeuse a conexión
3050 -Comment[is]=Tengingin tapaðist
3051 -Comment[it]=La connessione è stata chiusa
3052 -Comment[nb]=Tilkoblingen er mistet
3053 +Comment[hu]=A kapcsolat megszakadt
3054 Comment[nl]=De verbinding is verbroken
3055 -Comment[nn]=Samband er stengt
3056 -Comment[pl]=Połączenie zostało stracone
3057 Comment[pt]=A ligação foi-se abaixo
3058 -Comment[pt_BR]=A conexão foi perdida
3059 -Comment[ru]=Соединение было утеряно
3060 -Comment[sl]=Povezava je bila prekinjena
3061 -Comment[sr]=Веза је изгубљена
3062 -Comment[sr@Latn]=Veza je izgubljena
3063 +Comment[pt_BR]=A ligação foi-se abaixo
3064 Comment[sv]=Anslutningen har förlorats
3065 -Comment[tr]=Bağlantı kesildi
3066 Comment[uk]=З'єднання було втрачено
3067 -Comment[uz]=Ўрнатилган алоқа узилди
3068 -Comment[zh_CN]=连接已丢失
3069 default_presentation=16
3070
3071 [cannot_connect]
3072 @@ -1096,6 +1081,7 @@
3073 Name[fr]=Impossible de se connecter
3074 Name[ga]=Ní Féidir Nasc a Dhéanamh
3075 Name[gl]=Non se pode conectar
3076 +Name[hu]=Nem sikerült csatlakozni
3077 Name[is]=Get ekki tengst
3078 Name[it]=Impossibile connettersi
3079 Name[nb]=Kan ikke koble til
3080 @@ -1125,6 +1111,7 @@
3081 Comment[eu]=Kopete-k ezin du zerbitzuarekin konektatu
3082 Comment[fr]=Kopete ne peut pas se connecter à ce service
3083 Comment[gl]=Kopete non pode conectar co servicio
3084 +Comment[hu]=A Kopete nem tudott csatlakozni a szolgáltatóhoz
3085 Comment[is]=Kopete gat ekki tengst þjónustunni
3086 Comment[it]=Kopete non è in grado di connettersi al servizio
3087 Comment[nb]=Kopete kan ikke koble til tjenesten
3088 @@ -1157,6 +1144,7 @@
3089 Name[fr]=Problèmes réseaux
3090 Name[ga]=Fadhbanna Líonra
3091 Name[gl]=Problemas na rede
3092 +Name[hu]=Hálózati hibák
3093 Name[is]=Netvandamál
3094 Name[it]=Problemi di rete
3095 Name[nb]=Nettverksproblemer
3096 @@ -1186,6 +1174,7 @@
3097 Comment[eu]=Sareak arazoak ditu
3098 Comment[fr]=Le réseau rencontre des problèmes
3099 Comment[gl]=A rede está experimentando problemas
3100 +Comment[hu]=Hiba lépett fel a hálózaton
3101 Comment[is]=Það er vandamál með netið
3102 Comment[it]=Ci sono dei problemi di rete
3103 Comment[ja]=ネットワークは問題を抱えています
3104 @@ -1217,6 +1206,7 @@
3105 Name[eu]=Zerbitzariaren barne-errorea
3106 Name[fr]=Erreur interne du serveur
3107 Name[gl]=Erro Interno do Servidor
3108 +Name[hu]=Belső kiszolgálóhiba
3109 Name[is]=Innri villa í þjóni
3110 Name[it]=Errore interno del server
3111 Name[ja]=内部サーバーエラー
3112 @@ -1234,37 +1224,18 @@
3113 Name[tr]=Sunucu İç Hatası
3114 Name[uk]=Внутрішня помилка сервера
3115 Name[zh_CN]=服务器内部错误
3116 -Comment=An service internal error has occurred
3117 -Comment[bg]=Вътрешна грешка на сървъра
3118 -Comment[ca]=Hi ha hagut un error intern del servei
3119 -Comment[cs]=Nastala interní chyba na serveru
3120 +Comment=A service internal error has occurred
3121 Comment[da]=En intern fejl for tjenesten er opstået
3122 -Comment[de]=Bei diesem Dienst ist ein interner Serverfehler aufgetreten.
3123 Comment[el]=Παρουσιάστηκε ένα εσωτερικό σφάλμα της υπηρεσίας
3124 -Comment[en_GB]=A service internal error has occurred
3125 Comment[es]=Ocurrió un error interno en el servicio
3126 Comment[et]=Tekkis teenuse sisemine viga
3127 -Comment[eu]=Zerbitzuaren barne-errore bat gertatu da
3128 -Comment[fr]=Une erreur interne du serveur s'est produite
3129 -Comment[gl]=Ocorreu un erro interno do servicio
3130 -Comment[is]=Innri villa í þjónustu hefur átt sér stað
3131 -Comment[it]=Si è verificato un errore interno del servizio
3132 -Comment[ja]=サービス内部エラーが発生しました
3133 -Comment[nb]=Det har oppstått en intern feil ved tjenesten
3134 +Comment[fr]=Une erreur interne au service s'est produite
3135 +Comment[hu]=Belső hiba történt a szolgáltatásban
3136 Comment[nl]=Er deed zich een interne fout op de server voor
3137 -Comment[nn]=Det har skjedd ein feil internt i tenesta
3138 -Comment[pl]=Wystąpił błąd wewnętrzny usługi
3139 Comment[pt]=Ocorreu um erro interno do serviço
3140 Comment[pt_BR]=Ocorreu um erro interno do serviço
3141 -Comment[ru]=В службе возникла внутренняя ошибка
3142 -Comment[sl]=Prišlo je do notranje napake pri storitvi
3143 -Comment[sr]=Дошло јо до интерне грешке сервера
3144 -Comment[sr@Latn]=Došlo jo do interne greške servera
3145 Comment[sv]=Ett internt fel har inträffat i tjänsten
3146 -Comment[tr]=Servis İç Hatası meydana geldi
3147 Comment[uk]=Трапилась внутрішня помилка служби
3148 -Comment[uz]=Хизматда ички хато рўй берди
3149 -Comment[zh_CN]=发生了服务内部错误
3150 default_presentation=2
3151
3152 [buzz_nudge]
3153 @@ -1278,6 +1249,7 @@
3154 Name[et]=Mõmin/müks
3155 Name[eu]=Burrumbada/Ukondokada
3156 Name[fr]=Vibration
3157 +Name[hu]=Figyelemfelhívó
3158 Name[is]=Ýta við
3159 Name[it]=Buzz/Trillo
3160 Name[pl]=Pobudka/kuksaniec
3161 @@ -1300,6 +1272,7 @@
3162 Comment[et]=Kontakt müksas sind.
3163 Comment[eu]=Kontaktu batek burrumbada/ukondokada bat bidali dizu.
3164 Comment[fr]=Un contact vous a envoyé une vibration.
3165 +Comment[hu]=Egy partner figyelemfelhívó üzenetet küldött.
3166 Comment[is]=Notandi hefur ýtt við þér.
3167 Comment[it]=Un contatto ti ha inviato un buzz/trillo.
3168 Comment[nb]=En kontakt har sendt deg en buzz/nudge
3169 --- kopete/kopete/config/appearance/appearanceconfig_emoticons.ui (revision 488948)
3170 +++ kopete/kopete/config/appearance/appearanceconfig_emoticons.ui (revision 495340)
3171 @@ -41,7 +41,7 @@
3172 <bool>true</bool>
3173 </property>
3174 <property name="whatsThis" stdset="0">
3175 - <string>If this is checked, only emoticon that are separated from the text with spaces will be shown as image</string>
3176 + <string>If this is checked, only emoticons that are separated from the text by spaces will be shown as images.</string>
3177 </property>
3178 </widget>
3179 <widget class="QLabel">
3180 @@ -106,7 +106,7 @@
3181 <string>&amp;Get New Themes...</string>
3182 </property>
3183 <property name="whatsThis" stdset="0">
3184 - <string>Download emoticon theme on internet</string>
3185 + <string>Download emoticon theme from the Internet</string>
3186 </property>
3187 </widget>
3188 <widget class="QPushButton">
3189 --- kopete/kopete/config/appearance/appearanceconfig.cpp (revision 488948)
3190 +++ kopete/kopete/config/appearance/appearanceconfig.cpp (revision 495340)
3191 @@ -707,7 +707,7 @@
3192 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
3193 "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">\n"
3194 "<xsl:output method=\"html\"/>\n"
3195 - "<xsl:template match=\"message\">\n\n\n\n</xsl:template>\n</xsl:stylesheet>" ) );
3196 + "<xsl:template match=\"message\">\n\n\n\n</xsl:template>\n</xsl:stylesheet>" ) )
3197 {
3198 KRun::runURL( KURL(locateLocal("appdata", QString::fromLatin1("styles/%1.xsl").arg( styleName ) )) , "text/plain");
3199 currentStyle = QString::null; //force to update preview;
3200 --- kopete/kopete/config/behavior/behaviorconfig_events.ui (revision 488948)
3201 +++ kopete/kopete/config/behavior/behaviorconfig_events.ui (revision 495340)
3202 @@ -83,7 +83,7 @@
3203 <string>Left mouse click on flashing system tray opens message instead of restoring/minimizing contact list</string>
3204 </property>
3205 <property name="whatsThis" stdset="0">
3206 - <string>A left mouse click on the flashing system tray opens the incoming message instead of restoring/minimizing the contact list (e.g. to check who sent messages). A middle click always opens this message.</string>
3207 + <string>A left mouse click on the flashing system tray icon opens the incoming message instead of restoring/minimizing the contact list (e.g. to check who is sending messages). A middle click always opens this message.</string>
3208 </property>
3209 </widget>
3210 </hbox>
3211 @@ -226,7 +226,7 @@
3212 <string>Switch to the desktop which contains the chat window for the sender when opening his/her message</string>
3213 </property>
3214 <property name="whatsThis" stdset="0">
3215 - <string>If there is already a chat window opened for the sender of the message opening his/her message will cause a switch to the desktop which contains this chat window.</string>
3216 + <string>If there is already a chat window open for the sender of the message, opening his/her message will cause a switch to the desktop which contains this chat window.</string>
3217 </property>
3218 </widget>
3219 <widget class="QCheckBox">
3220 --- kopete/kopete/config/behavior/behaviorconfig_general.ui (revision 488948)
3221 +++ kopete/kopete/config/behavior/behaviorconfig_general.ui (revision 495340)
3222 @@ -85,7 +85,7 @@
3223 <string>Use a message queue instead of instantly opening a chat window on incoming messages</string>
3224 </property>
3225 <property name="whatsThis" stdset="0">
3226 - <string>Use a message for new incoming messages. New messages are messages that cannot be displayed in an already open chat window. Only queued messages triggers notification via bubble and flashing tray.</string>
3227 + <string>Use a message for new incoming messages. New messages are messages that cannot be displayed in an already open chat window. Only queued messages trigger notification via bubble and flashing tray icon.</string>
3228 </property>
3229 </widget>
3230 <widget class="QLayoutWidget">
3231 @@ -127,7 +127,7 @@
3232 <string>Also add unread messages to queue</string>
3233 </property>
3234 <property name="whatsThis" stdset="0">
3235 - <string>Unread messages are messages that will be displayed in an already opened but inactive chat window. Only incoming queued messages triggers notification via bubble and flashing tray. With this option disabled only new incoming messages are queued, i.e. messages that cannot be displayed in an already open chat window.</string>
3236 + <string>Unread messages are messages that will be displayed in an already opened but inactive chat window. Only incoming queued messages trigger notification via bubble and flashing tray icon. With this option disabled only new incoming messages are queued, i.e. messages that cannot be displayed in an already open chat window.</string>
3237 </property>
3238 </widget>
3239 </hbox>
3240 --- kopete/kopete/config/avdevice/kopete_avdeviceconfig.desktop (revision 488948)
3241 +++ kopete/kopete/config/avdevice/kopete_avdeviceconfig.desktop (revision 495340)
3242 @@ -26,6 +26,7 @@
3243 Name[fr]=Périphériques
3244 Name[ga]=Gléasanna
3245 Name[gl]=Dispositivos
3246 +Name[hu]=Eszközök
3247 Name[id]=Divais
3248 Name[is]=Tæki
3249 Name[it]=Periferiche
3250 @@ -65,6 +66,7 @@
3251 Comment[eu]=Hemen Kopete-ren bideo eta audio ezarpenak ezar ditzakezu
3252 Comment[fr]=Vous pouvez modifier ici la configuration des périphériques audio et vidéo de Kopete
3253 Comment[gl]=Aquí podes modificar as opcións dos dispositivos de video e audio de Kopete
3254 +Comment[hu]=Itt lehet módosítani a Kopete video- és hangbeállításait
3255 Comment[is]=Hér getur þú breytt vídeó- og hljóðtæki stillingum Kopete
3256 Comment[it]=Qui puoi modificare le impostazioni audio e video di Kopete
3257 Comment[nb]=Her kan du endre innstillinger for lyd og bilde i Kopete
3258 --- kopete/kopete/config/identity/kopeteidentityconfig.cpp (revision 488948)
3259 +++ kopete/kopete/config/identity/kopeteidentityconfig.cpp (revision 495340)
3260 @@ -147,8 +147,6 @@
3261 connect(d->m_view->lineNickname, SIGNAL(textChanged(const QString& )), this, SLOT(slotSettingsChanged()));
3262 connect(d->m_view->comboNameContact, SIGNAL(activated(int )), this, SLOT(slotSettingsChanged()));
3263 connect(d->m_view->comboPhotoContact, SIGNAL(activated(int )), this, SLOT(slotEnableAndDisableWidgets()));
3264 -
3265 - connect(this, SIGNAL(changed(bool)), this, SLOT(slotSettingsChanged()));
3266 }
3267
3268 KopeteIdentityConfig::~KopeteIdentityConfig()
3269 --- kopete/kopete/config/identity/kopete_identityconfig.desktop (revision 488948)
3270 +++ kopete/kopete/config/identity/kopete_identityconfig.desktop (revision 495340)
3271 @@ -25,6 +25,7 @@
3272 Name[fr]=Identité
3273 Name[ga]=Aitheantas
3274 Name[gl]=Indentidade
3275 +Name[hu]=Azonosító
3276 Name[is]=Auðkenni
3277 Name[it]=Identità
3278 Name[lt]=Tapatybė
3279 @@ -56,6 +57,7 @@
3280 Comment[fr]=Vous pouvez gérer ici votre identité principale
3281 Comment[ga]=Tig Leat d'Aitheantas a Láimhseáil Anseo
3282 Comment[gl]=Aquí podes xestionar a súa identidade global
3283 +Comment[hu]=Itt lehet kezelni a globális azonosítókat
3284 Comment[is]=Hér geturðu haldið utan um víðværa auðkennið þitt
3285 Comment[it]=Qui puoi gestire la tua identità globale
3286 Comment[nb]=Her kan du behandle din globale identitet
3287 --- kopete/kopete/chatwindow/chatview.cpp (revision 488948)
3288 +++ kopete/kopete/chatwindow/chatview.cpp (revision 495340)
3289 @@ -884,7 +884,7 @@
3290 {
3291 Kopete::ContactPtrList members = m_manager->members();
3292 Kopete::Contact *contact = members.first();
3293 - if ( contact && contact->canAcceptFiles() );
3294 + if ( contact && contact->canAcceptFiles() )
3295 event->accept();
3296 }
3297 else
3298 --- kopete/kopete/chatwindow/emoticonselector.cpp (revision 488948)
3299 +++ kopete/kopete/chatwindow/emoticonselector.cpp (revision 495340)
3300 @@ -47,7 +47,7 @@
3301 // Some of the custom icons are rather large
3302 // so lets limit them to a maximum size for this display panel
3303 //
3304 - if (p.width() > 32 or p.height() > 32)
3305 + if (p.width() > 32 || p.height() > 32)
3306 p.resize(32, 32);
3307 setMinimumSize(p.size());
3308 }
3309 --- kopete/kopete/kopeteeditglobalidentitywidget.cpp (revision 488948)
3310 +++ kopete/kopete/kopeteeditglobalidentitywidget.cpp (revision 495340)
3311 @@ -98,8 +98,9 @@
3312 // Update the picture (change the size of it)
3313 d->iconSize = size;
3314 d->labelPicture->setMinimumSize(QSize(d->iconSize, d->iconSize));
3315 - d->labelPicture->setMaximumSize(QSize(d->iconSize, d->iconSize));
3316 - d->labelPicture->setPixmap(QPixmap(d->myself->photo().smoothScale(d->iconSize, d->iconSize, QImage::ScaleMin)));
3317 + d->labelPicture->setMaximumSize(QSize(d->iconSize, d->iconSize));
3318 + if( !d->myself->photo().isNull() )
3319 + d->labelPicture->setPixmap(QPixmap(d->myself->photo().smoothScale(d->iconSize, d->iconSize, QImage::ScaleMin)));
3320 }
3321
3322 void KopeteEditGlobalIdentityWidget::iconSizeChanged()
3323 @@ -112,8 +113,9 @@
3324 // Update the picture (change the size of it)
3325 d->iconSize = tb->iconSize();
3326 d->labelPicture->setMinimumSize(QSize(d->iconSize, d->iconSize));
3327 - d->labelPicture->setMaximumSize(QSize(d->iconSize, d->iconSize));
3328 - d->labelPicture->setPixmap(QPixmap(d->myself->photo().smoothScale(d->iconSize, d->iconSize, QImage::ScaleMin)));
3329 + d->labelPicture->setMaximumSize(QSize(d->iconSize, d->iconSize));
3330 + if( !d->myself->photo().isNull() )
3331 + d->labelPicture->setPixmap(QPixmap(d->myself->photo().smoothScale(d->iconSize, d->iconSize, QImage::ScaleMin)));
3332 }
3333 }
3334
3335 @@ -145,8 +147,11 @@
3336 if(key == Kopete::Global::Properties::self()->photo().key())
3337 {
3338 // Update the picture and the tooltip
3339 - d->labelPicture->setPixmap(QPixmap(d->myself->photo().smoothScale(d->iconSize, d->iconSize, QImage::ScaleMin)));
3340 - QToolTip::add(d->labelPicture, "<qt><img src=\""+ value.toString() +"\"></qt>");
3341 + if( !d->myself->photo().isNull() )
3342 + {
3343 + d->labelPicture->setPixmap(QPixmap(d->myself->photo().smoothScale(d->iconSize, d->iconSize, QImage::ScaleMin)));
3344 + QToolTip::add(d->labelPicture, "<qt><img src=\""+ value.toString() +"\"></qt>");
3345 + }
3346 }
3347 else if(key == Kopete::Global::Properties::self()->nickName().key())
3348 {
3349 --- kopete/configure.in.in (revision 488948)
3350 +++ kopete/configure.in.in (revision 495340)
3351 @@ -16,7 +16,8 @@
3352
3353 KOPETE_INCLUDES='-I$(top_srcdir)/kopete/libkopete -I$(top_builddir)/kopete/libkopete -I$(top_srcdir)/kopete/libkopete/avdevice -I$(top_srcdir)/kopete/libkopete/ui -I$(top_builddir)/kopete/libkopete/ui'
3354
3355 -AC_ARG_ENABLE(smpppd, [ --enable-smpppd enable support for smpppd],
3356 +AC_ARG_ENABLE(smpppd,
3357 +[AC_HELP_STRING([--enable-smpppd], [enable support for the SuSE Meta PPP Daemon (smpppd) (default is NO)])],
3358 [
3359 if test $enableval = yes; then
3360 AC_DEFINE(USE_SMPPPD, 1, [enable support for the smpppd])
3361 --- kopete/libkopete/kopeteutils.cpp (revision 488948)
3362 +++ kopete/libkopete/kopeteutils.cpp (revision 495340)
3363 @@ -36,12 +36,12 @@
3364 #include "kopeteuiglobal.h"
3365
3366 static const QString notifyConnectionLost_DefaultMessage = i18n("You have been disconnected.");
3367 -static const QString notifyConnectionLost_DefaultCaption = i18n("Connection Lost.");
3368 -static const QString notifyConnectionLost_DefaultExplanation = i18n("Kopete lost the channel used to talk to the instant messaging system.\nThis can be either your internet access went down, , the service is experiencing problems, or the service disconnected you because you tried to connect with the same account from another location. Try connecting again later.");
3369 +static const QString notifyConnectionLost_DefaultCaption = i18n("Connection Lost");
3370 +static const QString notifyConnectionLost_DefaultExplanation = i18n("Kopete lost the channel used to talk to the instant messaging system.\nThis can be because your Internet connection went down, the service is experiencing problems, or the service disconnected you because you tried to connect using the same account from another location. Try connecting again later.");
3371
3372 static const QString notifyCannotConnect_DefaultMessage = i18n("Can't connect with the instant messaging server or peers.");
3373 static const QString notifyCannotConnect_DefaultCaption = i18n("Can't connect.");
3374 -static const QString notifyCannotConnect_DefaultExplanation = i18n("This means Kopete can't reach the instant messaging server or peers.\nThis can be either your internet access is down or the server is experiencing problems. Try connecting again later.");
3375 +static const QString notifyCannotConnect_DefaultExplanation = i18n("This means Kopete can't reach the instant messaging server or peers.\nThis can be either your Internet access is down or the server is experiencing problems. Try connecting again later.");
3376
3377 namespace Kopete
3378 {
3379 --- kopete/libkopete/kopetechatsession.cpp (revision 488948)
3380 +++ kopete/libkopete/kopetechatsession.cpp (revision 495340)
3381 @@ -261,7 +261,7 @@
3382
3383 void Kopete::ChatSession::emitNudgeNotification()
3384 {
3385 - KNotification::event( QString::fromLatin1("buzz_nudge"), i18n("A contact send you a buzz/nudge.!") );
3386 + KNotification::event( QString::fromLatin1("buzz_nudge"), i18n("A contact sent you a buzz/nudge.") );
3387 }
3388
3389 void Kopete::ChatSession::appendMessage( Kopete::Message &msg )
3390 --- kopete/libkopete/kopetecontactlist.cpp (revision 488948)
3391 +++ kopete/libkopete/kopetecontactlist.cpp (revision 495340)
3392 @@ -299,12 +299,8 @@
3393
3394 void ContactList::loadGlobalIdentity()
3395 {
3396 - bool useGlobalIdentity;
3397 -
3398 - useGlobalIdentity = Kopete::Config::enableGlobalIdentity();
3399 -
3400 // Apply the global identity
3401 - if(useGlobalIdentity)
3402 + if(Kopete::Config::enableGlobalIdentity())
3403 {
3404 connect(myself(), SIGNAL(displayNameChanged(const QString&, const QString&)), this, SLOT(slotDisplayNameChanged()));
3405 connect(myself(), SIGNAL(photoChanged()), this, SLOT(slotPhotoChanged()));
3406 @@ -447,7 +443,8 @@
3407 Kopete::ContactList::self()->addGroup( group );
3408 }
3409 }
3410 - else if( element.tagName() == QString::fromLatin1("myself-meta-contact") )
3411 + // Only load myself metacontact information when Global Identity is enabled.
3412 + else if( element.tagName() == QString::fromLatin1("myself-meta-contact") && Kopete::Config::enableGlobalIdentity() )
3413 {
3414 if( !myself()->fromXML( element ) )
3415 {
3416 @@ -901,9 +898,12 @@
3417 doc.documentElement().appendChild( doc.importNode( m->toXML(), true ) );
3418
3419 // Save myself metacontact information
3420 - QDomElement myselfElement = myself()->toXML(true); // Save minimal information.
3421 - myselfElement.setTagName( QString::fromLatin1("myself-meta-contact") );
3422 - doc.documentElement().appendChild( doc.importNode( myselfElement, true ) );
3423 + if( Kopete::Config::enableGlobalIdentity() )
3424 + {
3425 + QDomElement myselfElement = myself()->toXML(true); // Save minimal information.
3426 + myselfElement.setTagName( QString::fromLatin1("myself-meta-contact") );
3427 + doc.documentElement().appendChild( doc.importNode( myselfElement, true ) );
3428 + }
3429
3430 return doc;
3431 }
3432 --- kopete/libkopete/kopetemetacontact.cpp (revision 488948)
3433 +++ kopete/libkopete/kopetemetacontact.cpp (revision 495340)
3434 @@ -193,12 +193,6 @@
3435 }
3436 else
3437 {
3438 - // if the contact was a source of property data, clean
3439 - if (displayNameSourceContact() == c)
3440 - setDisplayNameSourceContact(0L);
3441 - if (photoSourceContact() == c)
3442 - setPhotoSourceContact(0L);
3443 -
3444 // must check before removing, or will always be false
3445 bool wasTrackingName = ( !displayNameSourceContact() && (displayNameSource() == SourceContact) );
3446 bool wasTrackingPhoto = ( !photoSourceContact() && (photoSource() == SourceContact) );
3447 @@ -206,7 +200,14 @@
3448 QString currDisplayName = displayName();
3449
3450 d->contacts.remove( c );
3451 +
3452 + // if the contact was a source of property data, clean
3453 + if (displayNameSourceContact() == c)
3454 + setDisplayNameSourceContact(0L);
3455 + if (photoSourceContact() == c)
3456 + setPhotoSourceContact(0L);
3457
3458 +
3459 if ( wasTrackingName )
3460 {
3461 // Oh! this contact was the source for the metacontact's name
3462 @@ -611,10 +612,22 @@
3463 }
3464 else if ( source == SourceContact )
3465 {
3466 + if ( d->displayNameSourceContact==0 )
3467 + {
3468 + if( d->contacts.count() >= 1 )
3469 + {// don't call setDisplayNameSource , or there will probably be an infinite loop
3470 + d->displayNameSourceContact=d->contacts.first();
3471 +// kdDebug( 14010 ) << k_funcinfo << " setting displayname source for " << metaContactId() << endl;
3472 + }
3473 + }
3474 if ( displayNameSourceContact() != 0L )
3475 {
3476 return nameFromContact(displayNameSourceContact());
3477 }
3478 + else
3479 + {
3480 +// kdDebug( 14010 ) << k_funcinfo << " source == SourceContact , but there is no displayNameSourceContact for contact " << metaContactId() << endl;
3481 + }
3482 }
3483 return d->displayName;
3484 }
3485 @@ -942,7 +955,6 @@
3486 // set contact source metadata
3487 if (displayNameSourceContact())
3488 {
3489 - //kdDebug(14010) << k_funcinfo << "serializing name source " << nameFromContact(displayNameSourceContact()) << endl;
3490 QDomElement contactNameSource = metaContact.createElement( QString::fromUtf8("contact-source") );
3491 contactNameSource.setAttribute( NSCID_ELEM, displayNameSourceContact()->contactId() );
3492 contactNameSource.setAttribute( NSPID_ELEM, displayNameSourceContact()->protocol()->pluginId() );
3493 --- kopete/libkopete/kopeteawayaction.h (revision 488948)
3494 +++ kopete/libkopete/kopeteawayaction.h (revision 495340)
3495 @@ -61,6 +61,11 @@
3496 const KShortcut &cut, const QObject *receiver, const char *slot,
3497 QObject *parent, const char *name = 0);
3498
3499 + /**
3500 + * Destructor.
3501 + */
3502 + ~AwayAction();
3503 +
3504 signals:
3505 /**
3506 * @brief Emits when the user selects an away message
3507 --- kopete/libkopete/kopeteaccount.cpp (revision 488948)
3508 +++ kopete/libkopete/kopeteaccount.cpp (revision 495340)
3509 @@ -123,7 +123,7 @@
3510 }
3511 if(reason== OtherClient)
3512 {
3513 - Kopete::Utils::notifyConnectionLost(this, i18n("You have been disconnected"), i18n( "You have connected from another client or computer to the account '%1'" ).arg(d->id), i18n("Most proprietary Instant Messaging services does not allow you to connect from more than one location. Check that nobody is using you account without your permission. If you need a service that supports connection from various locations at the same time, use the Jabber protocol."));
3514 + Kopete::Utils::notifyConnectionLost(this, i18n("You have been disconnected"), i18n( "You have connected from another client or computer to the account '%1'" ).arg(d->id), i18n("Most proprietary Instant Messaging services do not allow you to connect from more than one location. Check that nobody is using your account without your permission. If you need a service that supports connection from various locations at the same time, use the Jabber protocol."));
3515 }
3516 }
3517
3518 --- kopete/libkopete/kopeteawayaction.cpp (revision 488948)
3519 +++ kopete/libkopete/kopeteawayaction.cpp (revision 495340)
3520 @@ -68,6 +68,11 @@
3521 slotAwayChanged();
3522 }
3523
3524 +AwayAction::~AwayAction()
3525 +{
3526 + delete d;
3527 +}
3528 +
3529 void AwayAction::slotAwayChanged()
3530 {
3531 QStringList awayMessages = Kopete::Away::getInstance()->getMessages();
3532 --- kopete/libkopete/ui/kopetefileconfirmdialog.cpp (revision 488948)
3533 +++ kopete/libkopete/ui/kopetefileconfirmdialog.cpp (revision 495340)
3534 @@ -42,7 +42,7 @@
3535 m_view=new FileConfirmBase(this, "FileConfirmView");
3536 m_view->m_from->setText( info.contact()->metaContact()->displayName() + QString::fromLatin1( " <" ) +
3537 info.contact()->contactId() + QString::fromLatin1( "> " ) );
3538 - m_view->m_size->setText( KGlobal::locale()->formatNumber( long( info.size() ) ) );
3539 + m_view->m_size->setText( KGlobal::locale()->formatNumber( long( info.size() ), 0 ) );
3540 m_view->m_description->setText( description );
3541 m_view->m_filename->setText( info.file() );
3542
3543 @@ -52,7 +52,7 @@
3544
3545 setMainWidget(m_view);
3546
3547 - connect(m_view->cmdBrowse, SIGNAL(pressed()), this, SLOT(slotBrowsePressed()));
3548 + connect(m_view->cmdBrowse, SIGNAL(clicked()), this, SLOT(slotBrowsePressed()));
3549 }
3550
3551 KopeteFileConfirmDialog::~KopeteFileConfirmDialog()
3552 --- kopete/libkopete/ui/kopetelistviewitem.cpp (revision 488948)
3553 +++ kopete/libkopete/ui/kopetelistviewitem.cpp (revision 495340)
3554 @@ -647,6 +647,7 @@
3555
3556 DisplayNameComponent::~DisplayNameComponent()
3557 {
3558 + delete d;
3559 }
3560
3561 void DisplayNameComponent::layout( const QRect &rect )
3562 --- knewsticker/knewsticker-standalone.desktop (revision 488948)
3563 +++ knewsticker/knewsticker-standalone.desktop (revision 495340)
3564 @@ -45,7 +45,7 @@
3565 GenericName[he]=צג חדשות
3566 GenericName[hi]=न्यूज टिकर
3567 GenericName[hr]=Ticker sa novostima
3568 -GenericName[hu]=RSS hírmegjelenítő
3569 +GenericName[hu]=RSS hírbejelentő
3570 GenericName[id]=Ticker Berita
3571 GenericName[is]=Fréttastrimill
3572 GenericName[it]=Ticker notizie
3573 --- knewsticker/knewsticker.desktop (revision 488948)
3574 +++ knewsticker/knewsticker.desktop (revision 495340)
3575 @@ -55,6 +55,7 @@
3576 Comment[eu]=RDF berri-markatzailea
3577 Comment[fr]=Défilement de nouvelles RDF
3578 Comment[gl]=Un visor de novas RDF deslizante
3579 +Comment[hu]=Hírbejelentő RSS hírforrásokhoz
3580 Comment[is]=Skrunandi RDF fréttastrimill
3581 Comment[it]=Un ticker notizie RDF a scorrimento
3582 Comment[nb]=En rullende RDF nyhetstelegraf
3583 --- kget/kget_download.desktop (revision 488948)
3584 +++ kget/kget_download.desktop (revision 495340)
3585 @@ -21,6 +21,7 @@
3586 Name[fr]=Télécharger avec KGet
3587 Name[ga]=Íosluchtaigh le KGet
3588 Name[gl]=Descargar con KGet
3589 +Name[hu]=Letöltés a KGettel
3590 Name[is]=Sækja með KGet
3591 Name[it]=Scarica con KGet
3592 Name[ja]=KGetでダウンロード
3593 --- kget/main.cpp (revision 488948)
3594 +++ kget/main.cpp (revision 495340)
3595 @@ -165,10 +165,21 @@
3596 kmain->addTransferEx( KURL::fromPathOrURL( txt ),
3597 KURL());
3598 }
3599 - else if(args->count()==2)
3600 - kmain->addTransferEx( KURL::fromPathOrURL( args->arg(0) ),
3601 - KURL::fromPathOrURL( args->arg(1) ));
3602 -
3603 + else if(args->count()>=2)
3604 + {
3605 + KURL::List urls;
3606 + QString dest;
3607 + for( int i=0; i < args->count(); ++i){
3608 + urls.append(KURL::fromPathOrURL( args->arg(i)));
3609 + }
3610 + if ( args->count()==2 & urls.last().protocol() == "file" )
3611 + {
3612 + dest=urls.last().path();
3613 + kmain->addTransferEx( urls.first(), dest );
3614 + }
3615 + else
3616 + kmain->addTransfers( urls, dest );
3617 + }
3618 args->clear();
3619
3620 #ifdef _DEBUG
3621 --- kget/eventsrc (revision 488948)
3622 +++ kget/eventsrc (revision 495340)
3623 @@ -14,6 +14,7 @@
3624 Name[eu]=DeskargaGehituta
3625 Name[fr]=Transfert ajouté
3626 Name[gl]=TransferenciaEngadida
3627 +Name[hu]=ÁtvittHozzáadva
3628 Name[is]=Færslu bætt við
3629 Name[it]=Aggiunto trasferimento
3630 Name[nl]=OverdrachtToegevoegd
3631 @@ -38,6 +39,7 @@
3632 Comment[eu]=Deskarga berri bat gehitu da
3633 Comment[fr]=Un nouveau téléchargement a été ajouté
3634 Comment[gl]=Engadiuse unha nova descarga
3635 +Comment[hu]=Új letöltés lett megadva
3636 Comment[is]=Nýju niðurhali hefur verið bætt við
3637 Comment[it]=È stato aggiunto un nuovo scaricamento
3638 Comment[nb]=En ny nedlasting er lagt til
3639 @@ -68,6 +70,7 @@
3640 Name[eu]=DeskargaHasita
3641 Name[fr]=Téléchargement démarré
3642 Name[gl]=DescargaComezada
3643 +Name[hu]=LetöltésKezdődött
3644 Name[is]=Niðurhal sett í gang
3645 Name[it]=Scaricamento avviato
3646 Name[nb]=NedlastingStartet
3647 @@ -93,6 +96,7 @@
3648 Comment[eu]=Deskarga hasi da
3649 Comment[fr]=Téléchargement démarré
3650 Comment[gl]=Comezou a descarga
3651 +Comment[hu]=Letöltés kezdődött
3652 Comment[is]=Byrjað á niðurhali
3653 Comment[it]=Scaricamento avviato
3654 Comment[nb]=Nedlasting startet
3655 @@ -124,6 +128,7 @@
3656 Name[eu]=DeskargaAmaituta
3657 Name[fr]=Téléchargement terminé
3658 Name[gl]=DescargaRematada
3659 +Name[hu]=LetöltésBefejezve
3660 Name[is]=Niðurhali lokið
3661 Name[it]=Scaricamento completato
3662 Name[nb]=NedlastingFerdig
3663 @@ -151,6 +156,7 @@
3664 Comment[eu]=Deskarga amaitu da
3665 Comment[fr]=Téléchargement terminé
3666 Comment[gl]=Rematou a descarga
3667 +Comment[hu]=Egy letöltés befejeződött
3668 Comment[is]=Niðurhali lokið
3669 Comment[it]=Scaricamento completato
3670 Comment[nb]=Nedlasting ferdig
3671 @@ -181,6 +187,7 @@
3672 Name[et]=Kõik allalaadimised lõpetatud
3673 Name[eu]=GehituDeskargakAmaituta
3674 Name[fr]=Téléchargements ajoutés terminés
3675 +Name[hu]=FelvettLetöltésBefejeződött
3676 Name[is]=Lokið að bæta við niðurhölum
3677 Name[it]=Aggiunti scaricamenti completati
3678 Name[ja]=ダウンロード追加完了
3679 @@ -206,6 +213,7 @@
3680 Comment[eu]=Deskarga guztiak amaituta
3681 Comment[fr]=Tous les téléchargements sont terminés
3682 Comment[gl]=Tódalas descargar están rematadas
3683 +Comment[hu]=Minden letöltés befejeződött
3684 Comment[is]=Öllum niðurhölum lokið
3685 Comment[it]=Tutti gli scaricamenti completati
3686 Comment[nb]=Alle nedlastinger ferdig
3687 --- filesharing/advanced/kcm_sambaconf/kcmsambaconf.desktop (revision 488948)
3688 +++ filesharing/advanced/kcm_sambaconf/kcmsambaconf.desktop (revision 495340)
3689 @@ -27,6 +27,7 @@
3690 Comment[eu]=Microsoft Windows-en partekatzeak konfiguratzeko modulu bat
3691 Comment[fr]=Un module permettant de configurer les partages Microsoft Windows
3692 Comment[gl]=Un módulo para configurar comparticións con Microsoft Windows
3693 +Comment[hu]=Beállítómodul Microsoft Windows-os megosztásokhoz
3694 Comment[is]=Eining til að stilla sameignir fyrir Microsoft Windows
3695 Comment[it]=Un modulo per configurare le condivisioni per Microsoft Windows
3696 Comment[ja]=Microsoft Windowsとの共有設定
3697 @@ -54,6 +55,7 @@
3698 Keywords[fr]=KcmSambaConf,kcmsambaconf,samba,windows,partage
3699 Keywords[gl]=KcmSambaConf,kcmsambaconf,samba,widows,compartir
3700 Keywords[he]=KcmSambaConf,kcmsambaconf,samba,windows,share, סמבה, חלונות, שיתוף, שיתופי חלונות
3701 +Keywords[hu]=KcmSambaConf,kcmsambaconf,samba,windows,megosztás
3702 Keywords[is]=KcmSambaConf,kcmsambaconf,samba,windows,sameign
3703 Keywords[it]=KcmSambaConf,kcmsambaconf,samba,windows,condivisione
3704 Keywords[nb]=KcmSambaConf,kcmsambaconf,samba,windows,delt,ressurs
3705 --- wifi/kcmwifi/configcrypto.ui (revision 488948)
3706 +++ wifi/kcmwifi/configcrypto.ui (revision 495340)
3707 @@ -95,7 +95,7 @@
3708 </sizepolicy>
3709 </property>
3710 <property name="text">
3711 - <string>&lt;font color="#ff0000"&gt;unrecognised&lt;/font&gt;</string>
3712 + <string>&lt;font color="#ff0000"&gt;unrecognized&lt;/font&gt;</string>
3713 </property>
3714 <property name="textFormat">
3715 <enum>RichText</enum>
3716 --- ksirc/eventsrc (revision 488948)
3717 +++ ksirc/eventsrc (revision 495340)
3718 @@ -245,6 +245,7 @@
3719 Name[fr]=Bip reçu
3720 Name[ga]=Fuarthas bíp
3721 Name[gl]=Recibiuse unha badalada
3722 +Name[hu]=Csipogás érkezett
3723 Name[is]=Hljóðmerki móttekið
3724 Name[it]=Ricevuto un bip
3725 Name[nb]=Tut mottat
3726 @@ -273,6 +274,7 @@
3727 Comment[eu]=Bip bat jaso da zerbitzaritik
3728 Comment[fr]=Un bip a été reçu du serveur
3729 Comment[gl]=Recibiuse unha badalada dende o servidor
3730 +Comment[hu]=Csipogás érkezett a kiszolgálóról
3731 Comment[is]=Hljóðmerki hefur verið móttekið frá þjóninum
3732 Comment[it]=È stato ricevuto un bip dal server
3733 Comment[nb]=Et tut er mottatt fra tjeneren
3734 --- dcoprss/rssservice.desktop (revision 488948)
3735 +++ dcoprss/rssservice.desktop (revision 495340)
3736 @@ -34,7 +34,7 @@
3737 Comment[de]=RSS DCOP-Dienste
3738 Comment[el]=Υπηρεσίες RSS DCOP
3739 Comment[es]=Servicios RSS de dcop
3740 -Comment[et]=RSS DCOP teenused
3741 +Comment[et]=RSS DCOP-teenused
3742 Comment[eu]=RSS DCOP zerbitzuak
3743 Comment[fi]=RSS-DCOP-palvelut
3744 Comment[fr]=Services DCOP RSS

  ViewVC Help
Powered by ViewVC 1.1.5