[pkg-kde-commits] rev 2778 - trunk/packages/kdenetwork/debian/patches

Christopher Martin chrsmrtn at costa.debian.org
Sat Jan 7 21:59:27 UTC 2006


Author: chrsmrtn
Date: 2006-01-07 21:59:25 +0000 (Sat, 07 Jan 2006)
New Revision: 2778

Added:
   trunk/packages/kdenetwork/debian/patches/01_kdenetwork_branch_r495340.diff
Log:
kdenetwork branch pull.


Added: trunk/packages/kdenetwork/debian/patches/01_kdenetwork_branch_r495340.diff
===================================================================
--- trunk/packages/kdenetwork/debian/patches/01_kdenetwork_branch_r495340.diff	2006-01-07 21:55:45 UTC (rev 2777)
+++ trunk/packages/kdenetwork/debian/patches/01_kdenetwork_branch_r495340.diff	2006-01-07 21:59:25 UTC (rev 2778)
@@ -0,0 +1,3744 @@
+#DPATCHLEVEL=0
+--- kpf/kpfapplet.desktop	(revision 488948)
++++ kpf/kpfapplet.desktop	(revision 495340)
+@@ -73,6 +73,7 @@
+ Comment[eu]=Sarean zehar fitxtegiak partekatzea errazten duen web-zerbitzari txiki bat
+ Comment[fr]=Un petit serveur web permettant de partager facilement des fichiers sur le réseau
+ Comment[gl]=Un pequeno servidor web que fai doada a compartición de ficheiros por rede
++Comment[hu]=Mini webkiszolgáló egyszerű fájlmegosztáshoz
+ Comment[is]=Lítill vefþjónn sem auðveldar deilingu af skrám yfir netið
+ Comment[it]=Un piccolo server web che permette di condividere dei file attraverso la rete in modo semplice
+ Comment[ja]=簡単にネットワーク上でファイルを共有するための小さなウェブサーバー
+--- krdc/rdp/rdphostpref.cpp	(revision 488948)
++++ krdc/rdp/rdphostpref.cpp	(revision 495340)
+@@ -29,8 +29,8 @@
+ 	m_height(600),
+ 	m_colorDepth(8),
+ 	m_layout("en-us"),
+-	m_useKWallet(true),
+-	m_askOnConnect(true)
++	m_askOnConnect(true),
++	m_useKWallet(true)
+ {
+ }
+ 
+@@ -93,6 +93,7 @@
+ 	m_config->deleteEntry(p+"colorDepth");
+ 	m_config->deleteEntry(p+"layout");
+ 	m_config->deleteEntry(p+"askOnConnect");
++	m_config->deleteEntry(p+"useKWallet");
+ }
+ 
+ void RdpHostPref::setDefaults()
+--- kdnssd/ioslave/invitation.protocol	(revision 488948)
++++ kdnssd/ioslave/invitation.protocol	(revision 495340)
+@@ -24,6 +24,7 @@
+ Description[eu]=SD gonbidapenak
+ Description[fr]=Invitations SD
+ Description[gl]=Invitacións SD
++Description[hu]=SD meghívók
+ Description[is]=SD boð
+ Description[it]=Inviti SD
+ Description[ja]=SD招待
+--- kopete/plugins/nowlistening/nowlisteningplugin.cpp	(revision 488948)
++++ kopete/plugins/nowlistening/nowlisteningplugin.cpp	(revision 495340)
+@@ -53,12 +53,12 @@
+ class NowListeningPlugin::Private
+ {
+ public:
+-	Private() : m_mediaPlayerList(0L), m_currentMediaPlayer(0L), m_client(0L), m_currentChatSession(0L), m_currentMetaContact(0L), 
+-				m_musicSentTo(0L), advertTimer(0L)
++	Private() : m_currentMediaPlayer(0L), m_client(0L), m_currentChatSession(0L), m_currentMetaContact(0L), 
++				advertTimer(0L)
+ 	{}
+ 
+ 	// abstracted media player interfaces
+-	QPtrList<NLMediaPlayer> *m_mediaPlayerList;
++	QPtrList<NLMediaPlayer> m_mediaPlayerList;
+ 	NLMediaPlayer *m_currentMediaPlayer;
+ 
+ 	// Needed for DCOP interprocess communication
+@@ -68,7 +68,7 @@
+ 
+ 	// Used when using automatic advertising to know who has already gotten
+ 	// the music information
+-	QStringList *m_musicSentTo;
++	QStringList m_musicSentTo;
+ 
+ 	// Used when advertising to status message.
+ 	QTimer *advertTimer;
+@@ -108,16 +108,15 @@
+ 	d->m_client = kapp->dcopClient(); //new DCOPClient();
+ 
+ 	// set up known media players
+-	d->m_mediaPlayerList = new QPtrList<NLMediaPlayer>;
+-	d->m_mediaPlayerList->setAutoDelete( true );
+-	d->m_mediaPlayerList->append( new NLKscd( d->m_client ) );
+-	d->m_mediaPlayerList->append( new NLNoatun( d->m_client ) );
+-	d->m_mediaPlayerList->append( new NLJuk( d->m_client ) );
+-	d->m_mediaPlayerList->append( new NLamaroK( d->m_client ) );
+-	d->m_mediaPlayerList->append( new NLKaffeine( d->m_client ) );
++	d->m_mediaPlayerList.setAutoDelete( true );
++	d->m_mediaPlayerList.append( new NLKscd( d->m_client ) );
++	d->m_mediaPlayerList.append( new NLNoatun( d->m_client ) );
++	d->m_mediaPlayerList.append( new NLJuk( d->m_client ) );
++	d->m_mediaPlayerList.append( new NLamaroK( d->m_client ) );
++	d->m_mediaPlayerList.append( new NLKaffeine( d->m_client ) );
+ 
+ #if defined Q_WS_X11 && !defined K_WS_QTONLY && HAVE_XMMS
+-	d->m_mediaPlayerList->append( new NLXmms() );
++	d->m_mediaPlayerList.append( new NLXmms() );
+ #endif
+ 
+ 	// User has selected a specific mediaPlayer so update the currentMediaPlayer pointer.
+@@ -126,8 +125,6 @@
+ 		updateCurrentMediaPlayer();
+ 	}
+ 
+-	d->m_musicSentTo = new QStringList();
+-
+ 	// watch for '/media' getting typed
+ 	Kopete::CommandHandler::commandHandler()->registerCommand(
+ 		this,
+@@ -207,12 +204,12 @@
+ 	for( Kopete::Contact *c = dest.first() ; c ; c = dest.next() )
+ 	{
+ 		const QString& cId = c->contactId();
+-		if( 0 == d->m_musicSentTo->contains( cId ) )
++		if( 0 == d->m_musicSentTo.contains( cId ) )
+ 		{
+ 			mustSendAnyway = true;
+ 
+ 			// The contact will get the music information so we put it in the list.
+-			d->m_musicSentTo->push_back( cId );
++			d->m_musicSentTo.push_back( cId );
+ 		}
+ 	}
+ 
+@@ -230,10 +227,10 @@
+ 		// rebuild the list of contacts the latest information was sent to.
+ 		if( newTrack )
+ 		{
+-			d->m_musicSentTo->clear();
++			d->m_musicSentTo.clear();
+ 			for( Kopete::Contact *c = dest.first() ; c ; c = dest.next() )
+ 			{
+-				d->m_musicSentTo->push_back( c->contactId() );
++				d->m_musicSentTo.push_back( c->contactId() );
+ 			}
+ 		}
+ 	}
+@@ -282,7 +279,7 @@
+ 				}
+ 				else
+ 				{
+-					for ( NLMediaPlayer* i = d->m_mediaPlayerList->first(); i; i = d->m_mediaPlayerList->next() )
++					for ( NLMediaPlayer* i = d->m_mediaPlayerList.first(); i; i = d->m_mediaPlayerList.next() )
+ 					{
+ 						if( i->playing() )
+ 						{
+@@ -319,7 +316,7 @@
+ 	}
+ 	else
+ 	{
+-		for ( NLMediaPlayer* i = d->m_mediaPlayerList->first(); i; i = d->m_mediaPlayerList->next() )
++		for ( NLMediaPlayer* i = d->m_mediaPlayerList.first(); i; i = d->m_mediaPlayerList.next() )
+ 		{
+ 			buildTrackMessage(message, i, update);
+ 		}
+@@ -358,7 +355,7 @@
+ 	}
+ 	else
+ 	{
+-		for ( NLMediaPlayer* i = d->m_mediaPlayerList->first(); i; i = d->m_mediaPlayerList->next() )
++		for ( NLMediaPlayer* i = d->m_mediaPlayerList.first(); i; i = d->m_mediaPlayerList.next() )
+ 		{
+ 			i->update();
+ 			if( i->newTrack() )
+@@ -476,7 +473,7 @@
+ {
+ 	kdDebug(14307) << k_funcinfo << "Update current media player (single mode)" << endl;
+ 
+-	d->m_currentMediaPlayer = d->m_mediaPlayerList->at( NowListeningConfig::self()->selectedMediaPlayer() );
++	d->m_currentMediaPlayer = d->m_mediaPlayerList.at( NowListeningConfig::self()->selectedMediaPlayer() );
+ }
+ 
+ void NowListeningPlugin::slotSettingsChanged()
+--- kopete/plugins/smpppdcs/Changelog.smpppdcs	(revision 488948)
++++ kopete/plugins/smpppdcs/Changelog.smpppdcs	(revision 495340)
+@@ -15,6 +15,16 @@
+ Changelog
+ =========
+ 
++0.75 (2006/01/01)
++* use of KSocketStream instead of deprecated KExtendedSocket
++* progressbar while searching for an smpppd on the local network
++* automatically found smpppd server is resolved via DNS
++* Fixed Bug 111369: better detection of SMPPPD and no more freeze of Kopete
++
++0.74 (2005/12/27)
++* minor bugfixes
++* disable netstat in config if the binary cannot be found
++
+ 0.72 (2005/09/07)
+ * internal refactoring to provide online status
+ 
+--- kopete/plugins/smpppdcs/detector.h	(revision 488948)
++++ kopete/plugins/smpppdcs/detector.h	(revision 495340)
+@@ -1,9 +1,9 @@
+ /*
+     detector.h
+  
+-    Copyright (c) 2004-2005 by Heiko Schaefer        <heiko at rangun.de>
++    Copyright (c) 2004-2006 by Heiko Schaefer        <heiko at rangun.de>
+  
+-    Kopete    (c) 2002-2005 by the Kopete developers <kopete-devel at kde.org>
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
+  
+     *************************************************************************
+     *                                                                       *
+@@ -26,10 +26,13 @@
+ 
+ #define SMPPPDCS_CONFIG_GROUP "SMPPPDCS Plugin"
+ 
++namespace KNetwork {
++class KStreamSocket;
++};
++
+ class KProcess;
+ class DCOPClient;
+ class IConnector;
+-class KExtendedSocket;
+ 
+ /**
+  * @brief Detector to find out if there is a connection to the internet.
+@@ -44,10 +47,10 @@
+  */
+ 
+ class Detector : protected QObject {
+-	Q_OBJECT
++    Q_OBJECT
+ 
+-	Detector(const Detector&);
+-	Detector& operator=(const Detector&);
++    Detector(const Detector&);
++    Detector& operator=(const Detector&);
+ 
+     /**
+      * @brief Enumerates the different states of communication with the smpppd
+@@ -68,86 +71,85 @@
+     };
+ 
+ public:
+-	/**
+-	 * @brief Creates an <code>Detector</code> instance.
+-	 *
+-	 * @param connector A connector to send feedback to the calling object
+-	 */
+-	Detector(IConnector * connector);
++    /**
++     * @brief Creates an <code>Detector</code> instance.
++     *
++     * @param connector A connector to send feedback to the calling object
++     */
++    Detector(IConnector * connector);
+ 
+-	/**
+-	 * @brief Destroys an <code>Detector</code> instance.
+-	 *
+-	 */
+-	virtual ~Detector();
++    /**
++     * @brief Destroys an <code>Detector</code> instance.
++     *
++     */
++    virtual ~Detector();
+ 
+-	/**
+-	 * @brief Use netstat to get the status of an internet connection.
+-	 *
+-	 * Calls IConnector::setConnectedStatus of the IConnector given in
+-	 * the constructor.
+-	 *
+-	 * @see IConnector
+-	 *
+-	 */
+-	virtual void netstatCheckStatus();
++    /**
++     * @brief Use netstat to get the status of an internet connection.
++     *
++     * Calls IConnector::setConnectedStatus of the IConnector given in
++     * the constructor.
++     *
++     * @see IConnector
++     *
++     */
++    virtual void netstatCheckStatus();
+ 
+ #ifdef USE_SMPPPD
+-	/**
+-	 * @brief Use the smpppd to get the status of an internet connection.
+-	 *
+-	 * Calls IConnector::setConnectedStatus of the IConnector given in
+-	 * the constructor.
+-	 *
+-	 * @see IConnector
+-	 *
+-	 */
+-    	virtual void smpppdCheckStatus();
++    /**
++     * @brief Use the smpppd to get the status of an internet connection.
++     *
++     * Calls IConnector::setConnectedStatus of the IConnector given in
++     * the constructor.
++     *
++     * @see IConnector
++     *
++     */
++    virtual void smpppdCheckStatus();
+ #endif
+ 
+-signals:
+-	void retryRequested();
+-
+ private:
+ #ifdef USE_SMPPPD
+-	void connectToSMPPPD();
+-	QStringList readSMPPPD();
+-	void writeSMPPPD(const char * cmd);
++    void connectToSMPPPD();
++    void disconnectFromSMPPPD();
++    QStringList readSMPPPD();
++    void writeSMPPPD(const char * cmd);
+ #endif
+ 
+-	/**
+-	* @brief Makes an response for an challenge
+-	*
+-	* If the smpppd requests an authorization, it sends an challenge.
+-	* The password has to be appended to this challenge and the m5sum
+-	* in hex-display has to get responded to the smpppd.
+-	*
+-	* @param chex the challenge in hex display
+-	* @param password the passwort to authenticate
+-	* @return the reponse for the smpppd
+-	*/
+-	QString make_response(const QString& chex, const QString& password) const;
++    /**
++    * @brief Makes an response for an challenge
++    *
++    * If the smpppd requests an authorization, it sends an challenge.
++    * The password has to be appended to this challenge and the m5sum
++    * in hex-display has to get responded to the smpppd.
++    *
++    * @param chex the challenge in hex display
++    * @param password the passwort to authenticate
++    * @return the reponse for the smpppd
++    */
++    QString make_response(const QString& chex, const QString& password) const;
+ 
+ private slots:
+     // Original cs-plugin code
+-    void slotProcessStdout( KProcess *process, char *buffer, int len );
++    void slotProcessStdout(KProcess *process, char *buffer, int len);
+ 
+     /**
+      * Notify when the netstat process has exited
+      */
+-    void slotProcessExited( KProcess *process );
++    void slotProcessExited(KProcess *process);
+ 
+ private:
+ #ifdef USE_SMPPPD
+-	CommunicationState m_comState;
+-	DCOPClient        *m_client;
+-	static QCString    m_kinternetApp;
+-	KExtendedSocket   *m_sock;
+-	QStringList        m_ifcfgs;
++
++    CommunicationState       m_comState;
++    DCOPClient              *m_client;
++    static QCString          m_kinternetApp;
++	KNetwork::KStreamSocket *m_sock;
++    QStringList              m_ifcfgs;
+ #endif
+ 
+-	IConnector        *m_connector;
+-	KProcess          *m_process;
++    IConnector        *m_connector;
++    KProcess          *m_process;
+ };
+ 
+ #endif
+--- kopete/plugins/smpppdcs/config/smpppdcspreferences.h	(revision 488948)
++++ kopete/plugins/smpppdcs/config/smpppdcspreferences.h	(revision 495340)
+@@ -1,9 +1,9 @@
+ /*
+     smpppdcspreferences.h
+  
+-    Copyright (c) 2004-2005 by Heiko Schaefer        <heiko at rangun.de>
++    Copyright (c) 2004-2006 by Heiko Schaefer        <heiko at rangun.de>
+  
+-    Kopete    (c) 2002-2005 by the Kopete developers <kopete-devel at kde.org>
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
+  
+     *************************************************************************
+     *                                                                       *
+--- kopete/plugins/smpppdcs/config/smpppdcsprefsimpl.h	(revision 488948)
++++ kopete/plugins/smpppdcs/config/smpppdcsprefsimpl.h	(revision 495340)
+@@ -1,9 +1,9 @@
+ /*
+     smpppdcsprefsimpl.h
+  
+-    Copyright (c) 2004-2005 by Heiko Schaefer        <heiko at rangun.de>
++    Copyright (c) 2004-2006 by Heiko Schaefer        <heiko at rangun.de>
+  
+-    Kopete    (c) 2002-2005 by the Kopete developers <kopete-devel at kde.org>
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
+  
+     *************************************************************************
+     *                                                                       *
+@@ -17,12 +17,16 @@
+ #ifndef SMPPPDCSPREFSIMPL_H
+ #define SMPPPDCSPREFSIMPL_H
+ 
+-#include <klineedit.h>
++#include <qgroupbox.h>
+ 
++#include <kprogress.h>
++
+ #include "smpppdcsprefs.h"
+ 
++class SMPPPDSearcher;
++
+ /**
+- at author Heiko Schaefer <heiko at rangun.de>
++ at author Heiko Sch&auml;fer <heiko at rangun.de>
+ */
+ class SMPPPDCSPrefs : public SMPPPDCSPrefsBase 
+ {
+@@ -36,13 +40,35 @@
+     SMPPPDCSPrefs(QWidget* parent, const char* name = 0, WFlags fl = 0);
+     ~SMPPPDCSPrefs();
+ 
++signals:
++	void foundSMPPPD(bool found);
++	
+ protected slots:
+     void enableSMPPPDSettings();
+     void disableSMPPPDSettings();
+     void determineCSType();
+     void smpppdFound(const QString & host);
+     void smpppdNotFound();
++	void scanStarted(uint total);
++	void scanProgress(uint cur);
++	void scanFinished();
++	void cancelScanning();
+ 
++private:
++	KProgressDialog * m_scanProgressDlg;
++	SMPPPDSearcher  * m_curSearcher;
+ };
+ 
++inline void SMPPPDCSPrefs::enableSMPPPDSettings() {
++	smpppdPrefs->setEnabled(true);
++}
++
++inline void SMPPPDCSPrefs::disableSMPPPDSettings() {
++	smpppdPrefs->setEnabled(false);
++}
++
++inline void SMPPPDCSPrefs::scanFinished() {
++	m_scanProgressDlg->hide();
++}
++
+ #endif
+--- kopete/plugins/smpppdcs/config/smpppdlocationwidget.cpp	(revision 0)
++++ kopete/plugins/smpppdcs/config/smpppdlocationwidget.cpp	(revision 495340)
+@@ -0,0 +1,31 @@
++/*
++    smpppdlocationwidget.cpp
++
++    Copyright (c) 2004-2006 by Heiko Schaefer        <heiko at rangun.de>
++
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
++
++    *************************************************************************
++    *                                                                       *
++    * This program is free software; you can redistribute it and/or modify  *
++    * it under the terms of the GNU General Public License as published by  *
++    * the Free Software Foundation; version 2 of the License.               *
++    *                                                                       *
++    *************************************************************************
++*/
++
++#include <klineedit.h>
++
++#include "smpppdlocationwidget.h"
++
++SMPPPDLocationWidget::SMPPPDLocationWidget(QWidget* parent, const char* name, WFlags fl)
++ : SMPPPDLocationWidgetBase(parent, name, fl) {}
++
++SMPPPDLocationWidget::~SMPPPDLocationWidget() {}
++
++void SMPPPDLocationWidget::setServer(const QString& serv)
++{
++    server->setText(serv);
++}
++
++#include "smpppdlocationwidget.moc"
+--- kopete/plugins/smpppdcs/config/smpppdsearcher.cpp	(revision 488948)
++++ kopete/plugins/smpppdcs/config/smpppdsearcher.cpp	(revision 495340)
+@@ -1,9 +1,9 @@
+ /*
+     smpppdsearcher.h
+  
+-    Copyright (c) 2004-2005 by Heiko Schaefer        <heiko at rangun.de>
++    Copyright (c) 2004-2006 by Heiko Schaefer        <heiko at rangun.de>
+  
+-    Kopete    (c) 2002-2005 by the Kopete developers <kopete-devel at kde.org>
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
+  
+     *************************************************************************
+     *                                                                       *
+@@ -14,26 +14,21 @@
+     *************************************************************************
+ */
+ 
+-#include <qstringlist.h>
+ #include <qregexp.h>
+ #include <qfile.h>
+ 
+-#include <kextendedsocket.h>
++#include <kstreamsocket.h>
+ #include <kprocess.h>
+ #include <kdebug.h>
+ 
+ #include "smpppdsearcher.h"
+ 
+ SMPPPDSearcher::SMPPPDSearcher()
+-        : m_procIfconfig(NULL),
+-        m_procNetstat(NULL),
+-m_sock(NULL) {
++        : m_cancelSearchNow(FALSE),
++        m_procIfconfig(NULL),
++m_procNetstat(NULL) {}
+ 
+-    m_sock = new KExtendedSocket();
+-}
+-
+ SMPPPDSearcher::~SMPPPDSearcher() {
+-    delete m_sock;
+     delete m_procIfconfig;
+     delete m_procNetstat;
+ }
+@@ -42,6 +37,8 @@
+     \fn SMPPPDSearcher::searchNetwork() const
+  */
+ void SMPPPDSearcher::searchNetwork() {
++    kdDebug(14312) << k_funcinfo << endl;
++
+     // the first point to search is localhost
+     if(!scan("127.0.0.1", "255.0.0.0")) {
+ 
+@@ -65,6 +62,7 @@
+     \fn SMPPPDSearcher::slotStdoutReceived(KProcess * proc, char * buf, int len)
+  */
+ void SMPPPDSearcher::slotStdoutReceivedIfconfig(KProcess * /* proc */, char * buf, int len) {
++    kdDebug(14312) << k_funcinfo << endl;
+ 
+     QString myBuf = QString::fromLatin1(buf,len);
+     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})");
+@@ -81,6 +79,7 @@
+     emit smpppdNotFound();
+ }
+ void SMPPPDSearcher::slotStdoutReceivedNetstat(KProcess * /* proc */, char * buf, int len) {
++    kdDebug(14312) << k_funcinfo << endl;
+ 
+     QRegExp rexGW(".*\\n0.0.0.0[ ]*([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}).*");
+     QString myBuf = QString::fromLatin1(buf,len);
+@@ -108,49 +107,68 @@
+  */
+ bool SMPPPDSearcher::scan(const QString& ip, const QString& mask) {
+     kdDebug(14312) << k_funcinfo << "Scanning " << ip << "/" << mask << "..." << endl;
++	
++	if(ip == "127.0.0.1") { // if localhost, we only scan this one host
++		if(scanIP(ip)) {
++			return true;
++		}
++		
++		return false;
++	}
+ 
+-    if(ip == "127.0.0.1") { // localhost
+-        // we need only to check the existence of the socket file
+-        if(QFile::exists("/var/run/smpppd/control")) {
+-            emit smpppdFound("localhost");
+-            return true;
+-        }
+-    } else { // other interfaces
++    uint min_range = 0;
++    uint max_range = 255;
+ 
+-        uint min_range = 0;
+-        uint max_range = 255;
++    // calculate ip range (only last mask entry)
++    QRegExp lastRex("([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})");
++    if(lastRex.exactMatch(ip)) {
+ 
+-        // calculate ip range (only last mask entry)
+-        QRegExp lastRex("([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})");
+-        if(lastRex.exactMatch(ip)) {
++        uint lastWordIP = lastRex.cap(4).toUInt();
+ 
+-            uint lastWordIP = lastRex.cap(4).toUInt();
++        QStringList ipToks;
++        for(int i = 1; i < 5; i++) {
++            ipToks.push_back(lastRex.cap(i));
++        }
+ 
+-            QStringList ipToks;
+-            for(int i = 1; i < 5; i++) {
+-                ipToks.push_back(lastRex.cap(i));
++        if(lastRex.exactMatch(mask)) {
++            uint lastWordMask = lastRex.cap(4).toUInt();
++
++            if(lastWordMask == 0) {
++                kdDebug(14312) << k_funcinfo << "IP-Range: " << ipToks[0] << "." << ipToks[1] << "." <<  ipToks[2] << ".0 - " << ipToks[0] << "." << ipToks[1] << "." << ipToks[2] << ".255" << endl;
++                max_range = 255;
++            } else if(lastWordMask == 255) {
++                min_range = max_range = lastWordIP;
++            } else {
++                kdDebug(14312) << k_funcinfo << "IP-Range: " << ipToks[0] << "." << ipToks[1] << "." <<  ipToks[2] << ".0 - " << ipToks[0] << "." << ipToks[1] << "." << ipToks[2] << "." << lastWordMask << endl;
++                max_range = lastWordMask;
+             }
++        }
+ 
+-            if(lastRex.exactMatch(mask)) {
+-                uint lastWordMask = lastRex.cap(4).toUInt();
+-
+-                if(lastWordMask == 0) {
+-                    kdDebug(14312) << k_funcinfo << "IP-Range: " << ipToks[0] << "." << ipToks[1] << "." <<  ipToks[2] << ".0 - " << ipToks[0] << "." << ipToks[1] << "." << ipToks[2] << ".255" << endl;
+-                    max_range = 255;
+-                } else if(lastWordMask == 255) {
+-                    min_range = max_range = lastWordIP;
+-                } else {
+-                    kdDebug(14312) << k_funcinfo << "IP-Range: " << ipToks[0] << "." << ipToks[1] << "." <<  ipToks[2] << ".0 - " << ipToks[0] << "." << ipToks[1] << "." << ipToks[2] << "." << lastWordMask << endl;
+-                    max_range = lastWordMask;
++        uint range = max_range - min_range;
++        m_cancelSearchNow = FALSE;
++        if(range > 1) {
++            emit scanStarted(max_range);
++        }
++        for(uint i = min_range; i <= max_range; i++) {
++            if(m_cancelSearchNow) {
++                if(range > 1) {
++                    emit scanFinished();
+                 }
++                break;
+             }
+-
+-            for(uint i = min_range; i <= max_range; i++) {
+-                if(scanIP(QString(ipToks[0] + "." + ipToks[1] + "." + ipToks[2] + "." + QString::number(i)))) {
+-                    return true;
++            if(range > 1) {
++                emit scanProgress(i);
++            }
++            if(scanIP(QString(ipToks[0] + "." + ipToks[1] + "." + ipToks[2] + "." + QString::number(i)))) {
++                if(range > 1) {
++                    emit scanFinished();
+                 }
++                return true;
+             }
+         }
++        if(range > 1) {
++            emit scanFinished();
++        }
+     }
+ 
+     return false;
+@@ -162,13 +180,15 @@
+ bool SMPPPDSearcher::scanIP(const QString& ip) {
+     kdDebug(14312) << k_funcinfo << "Now scanning " << ip << "..." << endl;
+ 
+-    m_sock->reset();
+-    m_sock->setTimeout(0,500);
+-    m_sock->setAddress(ip,3185);
++    KNetwork::KStreamSocket sock(ip, "3185");
++    sock.setBlocking(TRUE);
++    sock.setTimeout(500);
+ 
+-    if(!m_sock->connect()) {
++    if(sock.connect()) {
+         emit smpppdFound(ip);
+         return true;
++    } else {
++        kdDebug(14312) << k_funcinfo << "Socket Error: " << KNetwork::KStreamSocket::errorString(sock.error()) << endl;
+     }
+ 
+     return false;
+--- kopete/plugins/smpppdcs/config/smpppdcsprefs.ui	(revision 488948)
++++ kopete/plugins/smpppdcs/config/smpppdcsprefs.ui	(revision 495340)
+@@ -9,8 +9,8 @@
+         <rect>
+             <x>0</x>
+             <y>0</y>
+-            <width>454</width>
+-            <height>343</height>
++            <width>476</width>
++            <height>221</height>
+         </rect>
+     </property>
+     <property name="caption">
+@@ -35,19 +35,10 @@
+                     <property name="name">
+                         <cstring>unnamed</cstring>
+                     </property>
+-                    <property name="margin">
+-                        <number>6</number>
+-                    </property>
+-                    <property name="spacing">
+-                        <number>6</number>
+-                    </property>
+-                    <widget class="QButtonGroup">
++                    <widget class="QLayoutWidget">
+                         <property name="name">
+-                            <cstring>csMethod</cstring>
++                            <cstring>layout4</cstring>
+                         </property>
+-                        <property name="title">
+-                            <string>Method of Connection Status Detection</string>
+-                        </property>
+                         <vbox>
+                             <property name="name">
+                                 <cstring>unnamed</cstring>
+@@ -58,226 +49,134 @@
+                             <property name="spacing">
+                                 <number>6</number>
+                             </property>
+-                            <widget class="QRadioButton">
++                            <widget class="QButtonGroup">
+                                 <property name="name">
+-                                    <cstring>useNetstat</cstring>
++                                    <cstring>csMethod</cstring>
+                                 </property>
+-                                <property name="text">
+-                                    <string>&amp;netstat - Standard method of connection status detection</string>
++                                <property name="title">
++                                    <string>Method of Connection Status Detection</string>
+                                 </property>
+-                                <property name="checked">
+-                                    <bool>true</bool>
+-                                </property>
+-                                <property name="toolTip" stdset="0">
+-                                    <string>Uses the netstat command to find a gateway; suitable on dial-up computers</string>
+-                                </property>
+-                            </widget>
+-                            <widget class="QRadioButton">
+-                                <property name="name">
+-                                    <cstring>useSmpppd</cstring>
+-                                </property>
+-                                <property name="text">
+-                                    <string>s&amp;mpppd - Advanced method of connection status detection</string>
+-                                </property>
+-                                <property name="toolTip" stdset="0">
+-                                    <string>Uses the smpppd on a gateway; suitable for a computer in a private network</string>
+-                                </property>
+-                            </widget>
+-                            <widget class="QLayoutWidget">
+-                                <property name="name">
+-                                    <cstring>autoCSLayout</cstring>
+-                                </property>
+-                                <hbox>
++                                <vbox>
+                                     <property name="name">
+                                         <cstring>unnamed</cstring>
+                                     </property>
+-                                    <widget class="KPushButton">
++                                    <property name="margin">
++                                        <number>6</number>
++                                    </property>
++                                    <property name="spacing">
++                                        <number>6</number>
++                                    </property>
++                                    <widget class="QRadioButton">
+                                         <property name="name">
+-                                            <cstring>autoCSTest</cstring>
++                                            <cstring>useNetstat</cstring>
+                                         </property>
+                                         <property name="text">
+-                                            <string>Try to Detect &amp;Automatically</string>
++                                            <string>&amp;netstat - Standard method of connection status detection</string>
+                                         </property>
++                                        <property name="checked">
++                                            <bool>true</bool>
++                                        </property>
+                                         <property name="toolTip" stdset="0">
+-                                            <string>Tries to find an appropriate connection method</string>
++                                            <string>Uses the netstat command to find a gateway; suitable on dial-up computers</string>
+                                         </property>
+                                     </widget>
+-                                    <spacer>
++                                    <widget class="QRadioButton">
+                                         <property name="name">
+-                                            <cstring>spacer4</cstring>
++                                            <cstring>useSmpppd</cstring>
+                                         </property>
+-                                        <property name="orientation">
+-                                            <enum>Horizontal</enum>
++                                        <property name="text">
++                                            <string>smpppd - Ad&amp;vanced method of connection status detection</string>
+                                         </property>
+-                                        <property name="sizeType">
+-                                            <enum>Expanding</enum>
++                                        <property name="toolTip" stdset="0">
++                                            <string>Uses the smpppd on a gateway; suitable for a computer in a private network</string>
+                                         </property>
+-                                        <property name="sizeHint">
+-                                            <size>
+-                                                <width>341</width>
+-                                                <height>20</height>
+-                                            </size>
++                                    </widget>
++                                    <widget class="QLayoutWidget">
++                                        <property name="name">
++                                            <cstring>autoCSLayout</cstring>
+                                         </property>
+-                                    </spacer>
+-                                </hbox>
++                                        <hbox>
++                                            <property name="name">
++                                                <cstring>unnamed</cstring>
++                                            </property>
++                                            <widget class="KPushButton">
++                                                <property name="name">
++                                                    <cstring>autoCSTest</cstring>
++                                                </property>
++                                                <property name="text">
++                                                    <string>&amp;Try to Detect Automatically</string>
++                                                </property>
++                                                <property name="toolTip" stdset="0">
++                                                    <string>Tries to find an appropriate connection method</string>
++                                                </property>
++                                            </widget>
++                                            <spacer>
++                                                <property name="name">
++                                                    <cstring>spacer4</cstring>
++                                                </property>
++                                                <property name="orientation">
++                                                    <enum>Horizontal</enum>
++                                                </property>
++                                                <property name="sizeType">
++                                                    <enum>Expanding</enum>
++                                                </property>
++                                                <property name="sizeHint">
++                                                    <size>
++                                                        <width>341</width>
++                                                        <height>20</height>
++                                                    </size>
++                                                </property>
++                                            </spacer>
++                                        </hbox>
++                                    </widget>
++                                </vbox>
+                             </widget>
+-                        </vbox>
+-                    </widget>
+-                    <widget class="QGroupBox">
+-                        <property name="name">
+-                            <cstring>smpppdPrefs</cstring>
+-                        </property>
+-                        <property name="enabled">
+-                            <bool>false</bool>
+-                        </property>
+-                        <property name="title">
+-                            <string>Location of the SMPPPD</string>
+-                        </property>
+-                        <grid>
+-                            <property name="name">
+-                                <cstring>unnamed</cstring>
+-                            </property>
+-                            <property name="margin">
+-                                <number>6</number>
+-                            </property>
+-                            <property name="spacing">
+-                                <number>6</number>
+-                            </property>
+-                            <widget class="QLabel" row="0" column="0">
++                            <widget class="QGroupBox">
+                                 <property name="name">
+-                                    <cstring>textLabel1</cstring>
++                                    <cstring>smpppdPrefs</cstring>
+                                 </property>
+-                                <property name="text">
+-                                    <string>&amp;Server:</string>
++                                <property name="enabled">
++                                    <bool>false</bool>
+                                 </property>
+-                                <property name="buddy" stdset="0">
+-                                    <cstring>server</cstring>
++                                <property name="title">
++                                    <string>Location of the SMPPPD</string>
+                                 </property>
+-                            </widget>
+-                            <widget class="KLineEdit" row="5" column="0">
+-                                <property name="name">
+-                                    <cstring>Password</cstring>
+-                                </property>
+-                                <property name="cursor">
+-                                    <cursor>4</cursor>
+-                                </property>
+-                                <property name="echoMode">
+-                                    <enum>Password</enum>
+-                                </property>
+-                                <property name="toolTip" stdset="0">
+-                                    <string>The password to authenticate with the smpppd</string>
+-                                </property>
+-                            </widget>
+-                            <widget class="QLayoutWidget" row="3" column="0">
+-                                <property name="name">
+-                                    <cstring>layout14</cstring>
+-                                </property>
+-                                <hbox>
++                                <vbox>
+                                     <property name="name">
+                                         <cstring>unnamed</cstring>
+                                     </property>
+-                                    <widget class="KIntNumInput">
++                                    <property name="margin">
++                                        <number>6</number>
++                                    </property>
++                                    <property name="spacing">
++                                        <number>6</number>
++                                    </property>
++                                    <widget class="SMPPPDLocationWidget">
+                                         <property name="name">
+-                                            <cstring>port</cstring>
++                                            <cstring>SMPPPDLocation</cstring>
+                                         </property>
+-                                        <property name="cursor">
+-                                            <cursor>4</cursor>
+-                                        </property>
+-                                        <property name="value">
+-                                            <number>3185</number>
+-                                        </property>
+-                                        <property name="minValue">
+-                                            <number>0</number>
+-                                        </property>
+-                                        <property name="toolTip" stdset="0">
+-                                            <string>The port on which the SMPPPD is running on</string>
+-                                        </property>
+                                     </widget>
+-                                    <widget class="QLabel">
+-                                        <property name="name">
+-                                            <cstring>textLabel3</cstring>
+-                                        </property>
+-                                        <property name="text">
+-                                            <string>Default: 3185</string>
+-                                        </property>
+-                                    </widget>
+-                                    <spacer>
+-                                        <property name="name">
+-                                            <cstring>spacer15</cstring>
+-                                        </property>
+-                                        <property name="orientation">
+-                                            <enum>Horizontal</enum>
+-                                        </property>
+-                                        <property name="sizeType">
+-                                            <enum>Expanding</enum>
+-                                        </property>
+-                                        <property name="sizeHint">
+-                                            <size>
+-                                                <width>130</width>
+-                                                <height>20</height>
+-                                            </size>
+-                                        </property>
+-                                    </spacer>
+-                                </hbox>
++                                </vbox>
+                             </widget>
+-                            <widget class="KLineEdit" row="1" column="0">
++                            <spacer>
+                                 <property name="name">
+-                                    <cstring>server</cstring>
++                                    <cstring>spacer18</cstring>
+                                 </property>
+-                                <property name="cursor">
+-                                    <cursor>4</cursor>
++                                <property name="orientation">
++                                    <enum>Vertical</enum>
+                                 </property>
+-                                <property name="text">
+-                                    <string>localhost</string>
++                                <property name="sizeType">
++                                    <enum>Expanding</enum>
+                                 </property>
+-                                <property name="maxLength">
+-                                    <number>256</number>
++                                <property name="sizeHint">
++                                    <size>
++                                        <width>20</width>
++                                        <height>20</height>
++                                    </size>
+                                 </property>
+-                                <property name="toolTip" stdset="0">
+-                                    <string>The server on which the SMPPPD is running</string>
+-                                </property>
+-                            </widget>
+-                            <widget class="QLabel" row="4" column="0">
+-                                <property name="name">
+-                                    <cstring>m_passwordLabel</cstring>
+-                                </property>
+-                                <property name="text">
+-                                    <string>&amp;Password:</string>
+-                                </property>
+-                                <property name="buddy" stdset="0">
+-                                    <cstring>Password</cstring>
+-                                </property>
+-                            </widget>
+-                            <widget class="QLabel" row="2" column="0">
+-                                <property name="name">
+-                                    <cstring>textLabel2</cstring>
+-                                </property>
+-                                <property name="text">
+-                                    <string>P&amp;ort:</string>
+-                                </property>
+-                                <property name="buddy" stdset="0">
+-                                    <cstring>port</cstring>
+-                                </property>
+-                            </widget>
+-                        </grid>
++                            </spacer>
++                        </vbox>
+                     </widget>
+-                    <spacer>
+-                        <property name="name">
+-                            <cstring>spacer18</cstring>
+-                        </property>
+-                        <property name="orientation">
+-                            <enum>Vertical</enum>
+-                        </property>
+-                        <property name="sizeType">
+-                            <enum>Expanding</enum>
+-                        </property>
+-                        <property name="sizeHint">
+-                            <size>
+-                                <width>20</width>
+-                                <height>30</height>
+-                            </size>
+-                        </property>
+-                    </spacer>
+                 </vbox>
+             </widget>
+             <widget class="QWidget">
+@@ -285,7 +184,7 @@
+                     <cstring>tab</cstring>
+                 </property>
+                 <attribute name="title">
+-                    <string>&amp;Accounts</string>
++                    <string>Acco&amp;unts</string>
+                 </attribute>
+                 <vbox>
+                     <property name="name">
+@@ -347,24 +246,39 @@
+     </vbox>
+ </widget>
+ <customwidgets>
++    <customwidget>
++        <class>SMPPPDLocationWidget</class>
++        <header location="global">/usr/src/build/zxmpl18/kdesvn/kdenetwork/kopete/plugins/smpppdcs/config/smpppdlocationwidget.h</header>
++        <sizehint>
++            <width>16</width>
++            <height>16</height>
++        </sizehint>
++        <container>1</container>
++        <sizepolicy>
++            <hordata>5</hordata>
++            <verdata>5</verdata>
++            <horstretch>0</horstretch>
++            <verstretch>0</verstretch>
++        </sizepolicy>
++        <pixmap>image0</pixmap>
++    </customwidget>
+ </customwidgets>
++<images>
++    <image name="image0">
++        <data format="PNG" length="1125">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000042c49444154388db5954f6c14551cc73fefcd7476b65bdaae4bb78bb5502a14d404e4801c88182d1c4c2c693da847400f9c24c68b878684238660e2b1e01f12c19493012ef2478c814412d354a46017a8a564bb6da5bbedccee767776e63d0ffb073751d483bfe49799974c3eeffb7ebf37df9fd05a530b2184040cc0042420aaf9a4d0d554800f045a6b256ae0e1e1e1d6bebebe838ee31c48a7d39b5cd7fd075e251cc7617272f2ded8d8d819cff33e0316819259537aead4a9839d5dd6d1784f91f55b0a94830242088404d304292bef68a89f520802a598fecddaa04f1a876f5c250c7c0a64cdeac686e33807e23d45e6b297c8b877f1831542614550b6599835c83c2a81b6786a75134faf2f1169f12997350881d9021d0903e06de0745d3160a6d3e94dbd5b0a64dcbb94b5831d0e3375ab892b1772dcf9790528543f8dd0d367b36768153b5e31503a0f1aecb004580b44ffac58baae8b1714f0833c7638cc8dab303a320f4822ab4c7a37c69196203de3319d5ce1c4d13c733331dedc67a129a154fd128401ab0616d55a130ac3d42d93d1913940d13fd0c9ee0183685c60da01c5421bd72f7a8c8efccef9afd374267ad93d642365be0636a0d28ec7600941d9e6f23917f0e97f23ce5bef35d19ec863da0ed9059b2be70bec196c66dfa10ec0e49b338f7017258651bf95021035c595429bb0903248fe52a2b5b595dd7b4d945cc2340cdca536be389ee3f67886c5798f773fe8e0dac508c989659277a2180da4ca4ff07821058b8b251445d63d6b13ed1098a6417e39cac85197dbe31962ab9bd9f1f22a226d45366f6d0620fdb08c900d281af6110284b20085b414861d905d88f2e52739ee8cbb8022143259d3dd84691730aa2d52da441a8de0c6958068870022a41e9629ad3473fd3b8fdbe319dadb9b4924da994d2d716c7896fbe35152f78b48245d6b2da4507faf582be8eaf159b721cc837b05ae7debb1f79d08cb8b515edad942a22bc4b1c33eb3d34b1c797f06af90a72d16e2f96d9a74aa11dca8586b222d01af0fb60070f6c402d72f15d97f28c6f6d7027a5f5ce6c3233dc4e2ede496b278be4fff608cee8d3e1add806aeca51094cbb06397c1ecc328e746537c7e3ccdb5cb1136bf60635882d4d41c6ec6836ab37efa214f72208ed9f4d7cdd38ee310280542e38b1c43fb6de26b3672e1ec3cc99bcb246f66a938a3241ab3e91f7c861fbf77710b1e5e49915bae974203ba0e9e9c9cbc373d6d6d305a040a89c2a77f50b27d5782bbbf7acccf28349235dd16cf6dd374f7295e1de8a45c02d37499182b01cc0201a085d61a2144d8b2ac8fb6ed340e77240c4261890e04c250185262546d534a032154b59e0ad394e41c98182bf268ce6721ed9f064e0253356f6da2e24c1f030f783c15fe6da680af8021602bd051532ca9b8521488559f61aa86c29343578fbf0264a94c906c7d3409214c20043457a116ff6de6795578012889ff6b98fe016ea0ce1c6a2573410000000049454e44ae426082</data>
++    </image>
++</images>
+ <tabstops>
+     <tabstop>tabWidget</tabstop>
+     <tabstop>useNetstat</tabstop>
+     <tabstop>autoCSTest</tabstop>
+-    <tabstop>server</tabstop>
+-    <tabstop>port</tabstop>
+-    <tabstop>Password</tabstop>
+     <tabstop>useSmpppd</tabstop>
+     <tabstop>accountList</tabstop>
+ </tabstops>
+ <layoutdefaults spacing="0" margin="0"/>
+ <includehints>
+     <includehint>kpushbutton.h</includehint>
+-    <includehint>klineedit.h</includehint>
+-    <includehint>knuminput.h</includehint>
+-    <includehint>knuminput.h</includehint>
+-    <includehint>klineedit.h</includehint>
++    <includehint>smpppdlocationwidget.h</includehint>
+     <includehint>klistview.h</includehint>
+ </includehints>
+ </UI>
+--- kopete/plugins/smpppdcs/config/smpppdlocationui.ui	(revision 0)
++++ kopete/plugins/smpppdcs/config/smpppdlocationui.ui	(revision 495340)
+@@ -0,0 +1,149 @@
++<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
++<class>SMPPPDLocationWidgetBase</class>
++<widget class="QWidget">
++    <property name="name">
++        <cstring>SMPPPDLocationWidgetBase</cstring>
++    </property>
++    <property name="geometry">
++        <rect>
++            <x>0</x>
++            <y>0</y>
++            <width>365</width>
++            <height>167</height>
++        </rect>
++    </property>
++    <property name="caption">
++        <string>SMPPPDLocation</string>
++    </property>
++    <vbox>
++        <property name="name">
++            <cstring>unnamed</cstring>
++        </property>
++        <widget class="QLabel">
++            <property name="name">
++                <cstring>textLabel1</cstring>
++            </property>
++            <property name="text">
++                <string>Ser&amp;ver:</string>
++            </property>
++            <property name="buddy" stdset="0">
++                <cstring>server</cstring>
++            </property>
++        </widget>
++        <widget class="KLineEdit">
++            <property name="name">
++                <cstring>server</cstring>
++            </property>
++            <property name="cursor">
++                <cursor>4</cursor>
++            </property>
++            <property name="text">
++                <string>localhost</string>
++            </property>
++            <property name="maxLength">
++                <number>256</number>
++            </property>
++            <property name="toolTip" stdset="0">
++                <string>The server on which the SMPPPD is running</string>
++            </property>
++        </widget>
++        <widget class="QLabel">
++            <property name="name">
++                <cstring>textLabel2</cstring>
++            </property>
++            <property name="text">
++                <string>P&amp;ort:</string>
++            </property>
++            <property name="buddy" stdset="0">
++                <cstring>port</cstring>
++            </property>
++        </widget>
++        <widget class="QLayoutWidget">
++            <property name="name">
++                <cstring>layout14</cstring>
++            </property>
++            <hbox>
++                <property name="name">
++                    <cstring>unnamed</cstring>
++                </property>
++                <widget class="KIntNumInput">
++                    <property name="name">
++                        <cstring>port</cstring>
++                    </property>
++                    <property name="cursor">
++                        <cursor>4</cursor>
++                    </property>
++                    <property name="value">
++                        <number>3185</number>
++                    </property>
++                    <property name="minValue">
++                        <number>0</number>
++                    </property>
++                    <property name="toolTip" stdset="0">
++                        <string>The port on which the SMPPPD is running on</string>
++                    </property>
++                </widget>
++                <widget class="QLabel">
++                    <property name="name">
++                        <cstring>textLabel3</cstring>
++                    </property>
++                    <property name="text">
++                        <string>Default: 3185</string>
++                    </property>
++                </widget>
++                <spacer>
++                    <property name="name">
++                        <cstring>spacer15</cstring>
++                    </property>
++                    <property name="orientation">
++                        <enum>Horizontal</enum>
++                    </property>
++                    <property name="sizeType">
++                        <enum>Expanding</enum>
++                    </property>
++                    <property name="sizeHint">
++                        <size>
++                            <width>130</width>
++                            <height>20</height>
++                        </size>
++                    </property>
++                </spacer>
++            </hbox>
++        </widget>
++        <widget class="QLabel">
++            <property name="name">
++                <cstring>m_passwordLabel</cstring>
++            </property>
++            <property name="text">
++                <string>Pass&amp;word:</string>
++            </property>
++            <property name="buddy" stdset="0">
++                <cstring>Password</cstring>
++            </property>
++        </widget>
++        <widget class="KLineEdit">
++            <property name="name">
++                <cstring>Password</cstring>
++            </property>
++            <property name="cursor">
++                <cursor>4</cursor>
++            </property>
++            <property name="echoMode">
++                <enum>Password</enum>
++            </property>
++            <property name="toolTip" stdset="0">
++                <string>The password to authenticate with the smpppd</string>
++            </property>
++        </widget>
++    </vbox>
++</widget>
++<customwidgets>
++</customwidgets>
++<layoutdefaults spacing="6" margin="0"/>
++<includehints>
++    <includehint>klineedit.h</includehint>
++    <includehint>knuminput.h</includehint>
++    <includehint>knuminput.h</includehint>
++    <includehint>klineedit.h</includehint>
++</includehints>
++</UI>
+--- kopete/plugins/smpppdcs/config/smpppdlocationwidget.h	(revision 0)
++++ kopete/plugins/smpppdcs/config/smpppdlocationwidget.h	(revision 495340)
+@@ -0,0 +1,40 @@
++/*
++    smpppdlocationwidget.h
++
++    Copyright (c) 2004-2006 by Heiko Schaefer        <heiko at rangun.de>
++
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
++
++    *************************************************************************
++    *                                                                       *
++    * This program is free software; you can redistribute it and/or modify  *
++    * it under the terms of the GNU General Public License as published by  *
++    * the Free Software Foundation; version 2 of the License.               *
++    *                                                                       *
++    *************************************************************************
++*/
++
++#ifndef SMPPPDLOCATIONWIDGET_H
++#define SMPPPDLOCATIONWIDGET_H
++
++#include "smpppdlocationui.h"
++
++/**
++	@author Heiko Sch&auml;fer <heiko at rangun.de>
++*/
++class SMPPPDLocationWidget : public SMPPPDLocationWidgetBase
++{
++	Q_OBJECT
++
++	SMPPPDLocationWidget(const SMPPPDLocationWidget&);
++	SMPPPDLocationWidget& operator=(const SMPPPDLocationWidget&);
++
++public:
++    SMPPPDLocationWidget(QWidget* parent = 0, const char* name = 0, WFlags fl = 0);
++    ~SMPPPDLocationWidget();
++
++    void setServer(const QString& serv);
++
++};
++
++#endif
+--- kopete/plugins/smpppdcs/config/smpppdsearcher.h	(revision 488948)
++++ kopete/plugins/smpppdcs/config/smpppdsearcher.h	(revision 495340)
+@@ -1,9 +1,9 @@
+ /*
+     smpppdsearcher.h
+  
+-    Copyright (c) 2004-2005      by Heiko Schaefer        <heiko at rangun.de>
++    Copyright (c) 2004-2006 by Heiko Schaefer        <heiko at rangun.de>
+  
+-    Kopete    (c) 2002-2005 by the Kopete developers <kopete-devel at kde.org>
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
+  
+     *************************************************************************
+     *                                                                       *
+@@ -18,16 +18,15 @@
+ #ifndef SMPPPDSEARCHER_H
+ #define SMPPPDSEARCHER_H
+ 
+-#include <qobject.h>
++#include <kresolver.h>
+ 
+ class KProcess;
+-class KExtendedSocket;
+ 
+ /**
+  * @brief Searches a network for a smpppd
+  *
+  * @todo Use of the SLP to find the smpppd
+- * @author Heiko Schaefer <heiko at rangun.de>
++ * @author Heiko Sch&auml;fer <heiko at rangun.de>
+  */
+ class SMPPPDSearcher : public QObject {
+     Q_OBJECT
+@@ -52,6 +51,8 @@
+ 	 * @see smpppdNotFound
+      */
+     void searchNetwork();
++	
++	void cancelSearch();
+ 
+ protected:
+     /**
+@@ -86,16 +87,24 @@
+      * @brief No smpppd was found 
+      */
+     void smpppdNotFound();
++	
++	void scanStarted(uint total);
++	void scanProgress(uint cur);
++	void scanFinished();
+ 
+ protected slots:
+     void slotStdoutReceivedIfconfig(KProcess * proc, char * buf, int len);
+     void slotStdoutReceivedNetstat (KProcess * proc, char * buf, int len);
+ 
+ private:
+-    KProcess        * m_procIfconfig;
+-    KProcess        * m_procNetstat;
+-    KExtendedSocket * m_sock;
++	bool m_cancelSearchNow;
++    KProcess * m_procIfconfig;
++    KProcess * m_procNetstat;
+ };
+ 
++inline void SMPPPDSearcher::cancelSearch() {
++	m_cancelSearchNow = TRUE;
++}
++
+ #endif
+ 
+--- kopete/plugins/smpppdcs/config/Makefile.am	(revision 488948)
++++ kopete/plugins/smpppdcs/config/Makefile.am	(revision 495340)
+@@ -5,10 +5,10 @@
+ kde_module_LTLIBRARIES = kcm_kopete_smpppdcs.la
+ 
+ kcm_kopete_smpppdcs_la_SOURCES = smpppdcsprefs.ui smpppdcspreferences.cpp \
+-	smpppdsearcher.cpp smpppdcsprefsimpl.cpp
++	smpppdsearcher.cpp smpppdcsprefsimpl.cpp smpppdlocationui.ui smpppdlocationwidget.cpp
+ kcm_kopete_smpppdcs_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) $(all_libraries)
+ kcm_kopete_smpppdcs_la_LIBADD  = ../../../libkopete/libkopete.la $(LIB_KUTILS)
+ 
+ kcm_DATA = kopete_smpppdcs_config.desktop
+ kcmdir = $(kde_servicesdir)/kconfiguredialog
+-noinst_HEADERS = smpppdsearcher.h smpppdcsprefsimpl.h
++noinst_HEADERS = smpppdsearcher.h smpppdcsprefsimpl.h smpppdlocationwidget.h
+--- kopete/plugins/smpppdcs/config/smpppdcspreferences.cpp	(revision 488948)
++++ kopete/plugins/smpppdcs/config/smpppdcspreferences.cpp	(revision 495340)
+@@ -1,9 +1,9 @@
+ /*
+     smpppdcspreferences.cpp
+ 
+-    Copyright (c) 2004-2005 by Heiko Schaefer        <heiko at rangun.de>
++    Copyright (c) 2004-2006 by Heiko Schaefer        <heiko at rangun.de>
+ 
+-    Kopete    (c) 2002-2005 by the Kopete developers <kopete-devel at kde.org>
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
+ 
+     *************************************************************************
+     *                                                                       *
+--- kopete/plugins/smpppdcs/config/smpppdcsprefsimpl.cpp	(revision 488948)
++++ kopete/plugins/smpppdcs/config/smpppdcsprefsimpl.cpp	(revision 495340)
+@@ -1,9 +1,9 @@
+ /*
+     smpppdcsprefsimpl.cpp
+  
+-    Copyright (c) 2004      by Heiko Schaefer        <heiko at rangun.de>
++    Copyright (c) 2004-2006 by Heiko Schaefer        <heiko at rangun.de>
+  
+-    Kopete    (c) 2002-2004 by the Kopete developers <kopete-devel at kde.org>
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
+  
+     *************************************************************************
+     *                                                                       *
+@@ -14,64 +14,137 @@
+     *************************************************************************
+ */
+ 
+-#include <qlabel.h>
+-#include <qlayout.h>
+-#include <qcursor.h>
+-#include <qgroupbox.h>
++#include <arpa/inet.h>
++#include <netdb.h>
++
+ #include <qradiobutton.h>
+ 
++#include <kstandarddirs.h>
+ #include <kapplication.h>
+ #include <kpushbutton.h>
++#include <kresolver.h>
++#include <knuminput.h>
++#include <klocale.h>
+ #include <kdebug.h>
+ 
++#include "smpppdlocationwidget.h"
+ #include "smpppdcsprefsimpl.h"
+ #include "smpppdsearcher.h"
+ 
+ SMPPPDCSPrefs::SMPPPDCSPrefs(QWidget* parent, const char* name, WFlags fl)
+- : SMPPPDCSPrefsBase(parent, name, fl) {
+- 	
+-	// signals and slots connections
+-    connect( useNetstat, SIGNAL( toggled(bool) ), this, SLOT( disableSMPPPDSettings() ) );
+-    connect( useSmpppd, SIGNAL( toggled(bool) ), this, SLOT( enableSMPPPDSettings() ) );
+-    connect( autoCSTest, SIGNAL( clicked() ), this, SLOT( determineCSType() ) );
+-}
++        : SMPPPDCSPrefsBase(parent, name, fl), m_scanProgressDlg(NULL), m_curSearcher(NULL) {
+ 
+-SMPPPDCSPrefs::~SMPPPDCSPrefs() {}
++    // signals and slots connections
++    connect(useNetstat, SIGNAL(toggled(bool)), this, SLOT(disableSMPPPDSettings()));
++    connect(useSmpppd,  SIGNAL(toggled(bool)), this, SLOT(enableSMPPPDSettings()));
++    connect(autoCSTest, SIGNAL(clicked()),     this, SLOT(determineCSType()));
+ 
+-void SMPPPDCSPrefs::enableSMPPPDSettings() {
+-    smpppdPrefs->setEnabled(true);
++    // if netstat is NOT available, disable the option and set to SMPPPD
++    if(KStandardDirs::findExe("netstat") == QString::null) {
++        autoCSTest->setEnabled(FALSE);
++        useNetstat->setEnabled(FALSE);
++        useNetstat->setChecked(FALSE);
++        useSmpppd->setChecked(TRUE);
++    }
+ }
+ 
+-void SMPPPDCSPrefs::disableSMPPPDSettings() {
+-    smpppdPrefs->setEnabled(false);
++SMPPPDCSPrefs::~SMPPPDCSPrefs() {
++    delete m_scanProgressDlg;
+ }
+ 
+ void SMPPPDCSPrefs::determineCSType() {
+ 
+-	// while we search, we'll disable the button
+-	autoCSTest->setEnabled(false);
+-	qApp->processEvents();
+-	
++    // while we search, we'll disable the button
++    autoCSTest->setEnabled(false);
++    //kapp->processEvents();
++
+     /* broadcast network for a smpppd.
+        If one is available set to smpppd method */
+-	   
+-	SMPPPDSearcher searcher;
+-	connect(&searcher, SIGNAL(smpppdFound(const QString&)), this, SLOT(smpppdFound(const QString&)));
+-	connect(&searcher, SIGNAL(smpppdNotFound()), this, SLOT(smpppdNotFound()));
+-	searcher.searchNetwork();
++
++    SMPPPDSearcher searcher;
++    m_curSearcher = &searcher;
++
++    connect(&searcher, SIGNAL(smpppdFound(const QString&)), this, SLOT(smpppdFound(const QString&)));
++    connect(&searcher, SIGNAL(smpppdNotFound()), this, SLOT(smpppdNotFound()));
++    connect(&searcher, SIGNAL(scanStarted(uint)), this, SLOT(scanStarted(uint)));
++    connect(&searcher, SIGNAL(scanProgress(uint)), this, SLOT(scanProgress(uint)));
++    connect(&searcher, SIGNAL(scanFinished()), this, SLOT(scanFinished()));
++
++    searcher.searchNetwork();
++    m_curSearcher = NULL;
+ }
+ 
++void SMPPPDCSPrefs::scanStarted(uint total) {
++    kdDebug(14312) << k_funcinfo << "Scanning for a SMPPPD started. Will scan " << total << " IPs" << endl;
++
++    // setup the scanProgress Dialog
++    if(!m_scanProgressDlg) {
++        m_scanProgressDlg = new KProgressDialog(this, 0, i18n("Searching"), i18n("Searching for a SMPPPD on the local network..."), TRUE);
++        m_scanProgressDlg->setAutoClose(TRUE);
++        m_scanProgressDlg->setAllowCancel(TRUE);
++        m_scanProgressDlg->setMinimumDuration(2000);
++
++        connect(m_scanProgressDlg, SIGNAL(cancelClicked()), this, SLOT(cancelScanning()));
++    }
++    m_scanProgressDlg->progressBar()->setTotalSteps(total);
++    m_scanProgressDlg->progressBar()->setProgress(0);
++    m_scanProgressDlg->show();
++}
++
++void SMPPPDCSPrefs::scanProgress(uint cur) {
++    m_scanProgressDlg->progressBar()->setProgress(cur);
++    kapp->processEvents();
++}
++
++void SMPPPDCSPrefs::cancelScanning() {
++    kdDebug(14312) << k_funcinfo << endl;
++    Q_ASSERT(m_curSearcher);
++    m_curSearcher->cancelSearch();
++}
++
+ void SMPPPDCSPrefs::smpppdFound(const QString& host) {
+-	kdDebug(14312) << k_funcinfo << endl;
+-	server->setText(host);
+-	useSmpppd->setChecked(true);
+-	autoCSTest->setEnabled(true);
++    kdDebug(14312) << k_funcinfo << endl;
++
++    QString myHost = host;
++
++    // try to get the domain name
++    struct in_addr addr;
++    if(inet_aton(host.ascii(), &addr)) {
++        struct hostent * hostEnt = gethostbyaddr(&addr.s_addr, sizeof(addr.s_addr), AF_INET);
++        if(hostEnt) {
++            myHost = hostEnt->h_name;
++        } else {
++#ifndef NDEBUG
++            switch(h_errno) {
++            case HOST_NOT_FOUND:
++                kdDebug(14312) << k_funcinfo << "No such host is known in the database." << endl;
++                break;
++            case TRY_AGAIN:
++                kdDebug(14312) << k_funcinfo << "Couldn't contact DNS server." << endl;
++                break;
++            case NO_RECOVERY:
++                kdDebug(14312) << k_funcinfo << "A non-recoverable error occurred." << endl;
++                break;
++            case NO_ADDRESS:
++                kdDebug(14312) << k_funcinfo << "The host database contains an entry for the name, but it doesn't have an associated Internet address." << endl;
++                break;
++            }
++#endif
++
++        }
++    }
++
++    SMPPPDLocation->setServer(myHost);
++    useNetstat->setChecked(false);
++    useSmpppd->setChecked(true);
++    autoCSTest->setEnabled(true);
+ }
+ 
+ void SMPPPDCSPrefs::smpppdNotFound() {
+-	kdDebug(14312) << k_funcinfo << endl;
+-	useNetstat->setChecked(true);
+-	autoCSTest->setEnabled(true);
++    kdDebug(14312) << k_funcinfo << endl;
++    useNetstat->setChecked(true);
++    useSmpppd->setChecked(false);
++    autoCSTest->setEnabled(true);
+ }
+ 
+ #include "smpppdcsprefsimpl.moc"
+--- kopete/plugins/smpppdcs/onlineinquiry.cpp	(revision 488948)
++++ kopete/plugins/smpppdcs/onlineinquiry.cpp	(revision 495340)
+@@ -1,9 +1,9 @@
+ /*
+     onlineinquiry.cpp
+  
+-    Copyright (c) 2005      by Heiko Schaefer        <heiko at rangun.de>
++    Copyright (c) 2005-2006 by Heiko Schaefer        <heiko at rangun.de>
+  
+-    Kopete    (c) 2002-2005 by the Kopete developers <kopete-devel at kde.org>
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
+  
+     *************************************************************************
+     *                                                                       *
+@@ -17,25 +17,25 @@
+ #include "detector.h"
+ #include "onlineinquiry.h"
+ 
+-OnlineInquiry::OnlineInquiry() 
+- : m_detector(NULL), m_online(FALSE) {
+-	m_detector = new Detector(this);
++OnlineInquiry::OnlineInquiry()
++        : m_detector(NULL), m_online(FALSE) {
++    m_detector = new Detector(this);
+ }
+ 
+ OnlineInquiry::~OnlineInquiry() {
+-	delete m_detector;
++    delete m_detector;
+ }
+ 
+-bool OnlineInquiry::isOnline(bool useSMPPPD) { 
+-	if(useSMPPPD) {
+-		m_detector->smpppdCheckStatus();
+-	} else {
+-		m_detector->netstatCheckStatus();
+-	}
++bool OnlineInquiry::isOnline(bool useSMPPPD) {
++    if(useSMPPPD) {
++        m_detector->smpppdCheckStatus();
++    } else {
++        m_detector->netstatCheckStatus();
++    }
+ 
+-	return m_online; 
++    return m_online;
+ }
+ 
+-void OnlineInquiry::setConnectedStatus(bool newStatus) { 
+-	m_online = newStatus; 
++void OnlineInquiry::setConnectedStatus(bool newStatus) {
++    m_online = newStatus;
+ }
+--- kopete/plugins/smpppdcs/smpppdcsiface.h	(revision 488948)
++++ kopete/plugins/smpppdcs/smpppdcsiface.h	(revision 495340)
+@@ -1,9 +1,9 @@
+ /*
+     smpppdcsiface.h
+  
+-    Copyright (c) 2005      by Heiko Schaefer        <heiko at rangun.de>
++    Copyright (c) 2005-2006 by Heiko Schaefer        <heiko at rangun.de>
+  
+-    Kopete    (c) 2002-2005 by the Kopete developers <kopete-devel at kde.org>
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
+  
+     *************************************************************************
+     *                                                                       *
+@@ -19,6 +19,10 @@
+ 
+ #include <dcopobject.h>
+ 
++/**
++ * @author Heiko Sch&auml;fer <heiko at rangun.de>
++ */
++
+ class SMPPPDCSIFace : virtual public DCOPObject
+ {
+   K_DCOP
+--- kopete/plugins/smpppdcs/kopete_smpppdcs.desktop	(revision 488948)
++++ kopete/plugins/smpppdcs/kopete_smpppdcs.desktop	(revision 495340)
+@@ -8,7 +8,7 @@
+ X-KDE-PluginInfo-Author=Heiko Schäfer
+ X-KDE-PluginInfo-Email=heiko at rangun.de
+ X-KDE-PluginInfo-Name=kopete_smpppdcs
+-X-KDE-PluginInfo-Version=0.72
++X-KDE-PluginInfo-Version=0.75
+ X-KDE-PluginInfo-Website=http://www.rangun.de
+ X-KDE-PluginInfo-Category=Plugins
+ X-KDE-PluginInfo-Depends=
+--- kopete/plugins/smpppdcs/iconnector.h	(revision 488948)
++++ kopete/plugins/smpppdcs/iconnector.h	(revision 495340)
+@@ -1,9 +1,9 @@
+ /*
+     iconnector.h
+  
+-    Copyright (c) 2005      by Heiko Schaefer        <heiko at rangun.de>
++    Copyright (c) 2005-2006 by Heiko Schaefer        <heiko at rangun.de>
+  
+-    Kopete    (c) 2002-2005 by the Kopete developers <kopete-devel at kde.org>
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
+  
+     *************************************************************************
+     *                                                                       *
+--- kopete/plugins/smpppdcs/smpppdcsplugin.cpp	(revision 488948)
++++ kopete/plugins/smpppdcs/smpppdcsplugin.cpp	(revision 495340)
+@@ -3,9 +3,9 @@
+  
+     Copyright (c) 2002-2003 by Chris Howells         <howells at kde.org>
+     Copyright (c) 2003      by Martijn Klingens      <klingens at kde.org>
+-    Copyright (c) 2004-2005 by Heiko Schaefer        <heiko at rangun.de>
++    Copyright (c) 2004-2006 by Heiko Schaefer        <heiko at rangun.de>
+  
+-    Kopete    (c) 2002-2005 by the Kopete developers <kopete-devel at kde.org>
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
+  
+     *************************************************************************
+     *                                                                       *
+@@ -49,15 +49,12 @@
+ 
+     m_onlineInquiry = new OnlineInquiry();
+     m_detector      = new Detector(this);
+-    connect(m_detector, SIGNAL(retryRequested()), this, SLOT(slotCheckStatus()));
+ }
+ 
+ SMPPPDCSPlugin::~SMPPPDCSPlugin() {
+ 
+     kdDebug(14312) << k_funcinfo << endl;
+ 
+-    disconnect(m_detector, SIGNAL(retryRequested()), this, SLOT(slotCheckStatus()));
+-
+     delete m_timer;
+     delete m_detector;
+     delete m_onlineInquiry;
+--- kopete/plugins/smpppdcs/detector.cpp	(revision 488948)
++++ kopete/plugins/smpppdcs/detector.cpp	(revision 495340)
+@@ -1,10 +1,10 @@
+ /*
+     detector.cpp
+-
+-    Copyright (c) 2005      by Heiko Schaefer        <heiko at rangun.de>
+  
+-    Kopete    (c) 2002-2005 by the Kopete developers <kopete-devel at kde.org>
++    Copyright (c) 2005-2006 by Heiko Schaefer        <heiko at rangun.de>
+  
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
++ 
+     *************************************************************************
+     *                                                                       *
+     * This program is free software; you can redistribute it and/or modify  *
+@@ -20,9 +20,9 @@
+ #include <kglobal.h>
+ #include <kconfig.h>
+ #include <kprocess.h>
+-#include <kextsock.h>
+ #include <dcopclient.h>
+ #include <kapplication.h>
++#include <kstreamsocket.h>
+ 
+ #include <cstdlib>
+ #include <openssl/md5.h>
+@@ -32,33 +32,33 @@
+ 
+ QCString Detector::m_kinternetApp = "";
+ 
+-Detector::Detector(IConnector * connector) 
+- : m_comState(READY), m_client(NULL), m_sock(NULL), m_connector(connector), m_process(NULL) {}
++Detector::Detector(IConnector * connector)
++        : m_comState(READY), m_client(NULL), m_sock(NULL), m_connector(connector), m_process(NULL) {}
+ 
+ Detector::~Detector() {
+ 
+-	if(m_sock) {
+-		m_sock->flush();
+-		m_sock->closeNow();
+-	}
++    if(m_sock) {
++        m_sock->flush();
++        m_sock->close();
++    }
+ 
+-	delete m_process;
+-	delete m_sock;
++    delete m_process;
++    delete m_sock;
+ }
+ 
+-void Detector::slotProcessExited( KProcess *process ) {
+-    if ( process == m_process ) {
++void Detector::slotProcessExited(KProcess *process) {
++    if(process == m_process) {
+         delete m_process;
+         m_process = 0L;
+     }
+ }
+ 
+-void Detector::slotProcessStdout( KProcess *, char *buffer, int buflen ) {
++void Detector::slotProcessStdout(KProcess *, char *buffer, int buflen) {
+     // Look for a default gateway
+     kdDebug(14312) << k_funcinfo << endl;
+-    QString qsBuffer = QString::fromLatin1( buffer, buflen );
++    QString qsBuffer = QString::fromLatin1(buffer, buflen);
+     kdDebug(14312) << qsBuffer << endl;
+-    m_connector->setConnectedStatus( qsBuffer.contains( "default" ) );
++    m_connector->setConnectedStatus(qsBuffer.contains("default"));
+ }
+ 
+ /*!
+@@ -67,8 +67,8 @@
+ void Detector::netstatCheckStatus() {
+     kdDebug(14312) << k_funcinfo << endl;
+ 
+-    if ( m_process ) {
+-        kdWarning( 0 ) << k_funcinfo << "Previous netstat process is still running!" << endl
++    if(m_process) {
++        kdWarning(14312) << k_funcinfo << "Previous netstat process is still running!" << endl
+         << "Not starting new netstat. Perhaps your system is under heavy load?" << endl;
+ 
+         return;
+@@ -80,11 +80,11 @@
+     m_process = new KProcess;
+     *m_process << "netstat" << "-r";
+ 
+-    connect( m_process, SIGNAL( receivedStdout( KProcess *, char *, int ) ), this, SLOT( slotProcessStdout( KProcess *, char *, int ) ) );
+-    connect( m_process, SIGNAL( processExited( KProcess * ) ), this, SLOT( slotProcessExited( KProcess * ) ) );
++    connect(m_process, SIGNAL(receivedStdout(KProcess *, char *, int)), this, SLOT(slotProcessStdout( KProcess *, char *, int)));
++    connect(m_process, SIGNAL(processExited(KProcess *)), this, SLOT(slotProcessExited(KProcess *)));
+ 
+-    if ( !m_process->start( KProcess::NotifyOnExit, KProcess::Stdout ) ) {
+-        kdWarning( 0 ) << k_funcinfo << "Unable to start netstat process!" << endl;
++    if(!m_process->start(KProcess::NotifyOnExit, KProcess::Stdout)) {
++        kdWarning(14312) << k_funcinfo << "Unable to start netstat process!" << endl;
+ 
+         delete m_process;
+         m_process = 0L;
+@@ -96,56 +96,56 @@
+  */
+ void Detector::smpppdCheckStatus() {
+ 
+-	// get dcop client object and attach to it
+-	m_client = kapp->dcopClient();
+-	if(m_kinternetApp.isEmpty() && m_client && m_client->isAttached()) {
+-		// get all registered dcop apps and search for kinternet
+-		QCStringList apps = m_client->registeredApplications();
+-		QCStringList::iterator iter;
+-		for(iter = apps.begin(); iter != apps.end(); ++iter) {
+-			if((*iter).left(9) == "kinternet") {
+-				m_kinternetApp = *iter;
+-				break;
+-			}
+-		}
+-	}
++    // get dcop client object and attach to it
++    m_client = kapp->dcopClient();
++    if(m_kinternetApp.isEmpty() && m_client && m_client->isAttached()) {
++        // get all registered dcop apps and search for kinternet
++        QCStringList apps = m_client->registeredApplications();
++        QCStringList::iterator iter;
++        for(iter = apps.begin(); iter != apps.end(); ++iter) {
++            if((*iter).left(9) == "kinternet") {
++                m_kinternetApp = *iter;
++                break;
++            }
++        }
++    }
+ 
+     // we try to inquire an running kinternet
+-	if(!m_kinternetApp.isEmpty() && m_client) {
+-		QByteArray data, replyData;
+-		QCString replyType;
+-		QDataStream arg(data, IO_WriteOnly);
+-		
+-		kdDebug(14312) << k_funcinfo << "Start inquiring " << m_kinternetApp << " via DCOP" << endl;
+-		
+-		if(!m_client->call(m_kinternetApp, "KInternetIface", "isOnline()", data, replyType, replyData)) {
+-			kdDebug(14312) << k_funcinfo << "there was some error using DCOP." << endl;
+-		} else {
+-  			QDataStream reply(replyData, IO_ReadOnly);
+-  			if(replyType == "bool") {
+-    			bool result;
+-    			reply >> result;
+-    			m_connector->setConnectedStatus(result);
+-				return;
+-  			} else {
+-    			kdDebug(14312) << k_funcinfo << "isOnline() returned an unexpected type of reply!" << endl;
+-			}
+-		}
+-	}
++    if(!m_kinternetApp.isEmpty() && m_client) {
++        QByteArray data, replyData;
++        QCString replyType;
++        QDataStream arg(data, IO_WriteOnly);
+ 
++        kdDebug(14312) << k_funcinfo << "Start inquiring " << m_kinternetApp << " via DCOP" << endl;
++
++        if(!m_client->call(m_kinternetApp, "KInternetIface", "isOnline()", data, replyType, replyData)) {
++            kdDebug(14312) << k_funcinfo << "there was some error using DCOP." << endl;
++        } else {
++            QDataStream reply(replyData, IO_ReadOnly);
++            if(replyType == "bool") {
++                bool result;
++                reply >> result;
++                m_connector->setConnectedStatus(result);
++                return;
++            } else {
++                kdDebug(14312) << k_funcinfo << "isOnline() returned an unexpected type of reply!" << endl;
++            }
++        }
++    }
++
+     static KConfig *config = KGlobal::config();
+     config->setGroup(SMPPPDCS_CONFIG_GROUP);
+     QString pass = config->readEntry("Password", "").utf8();
+ 
+-    if(m_sock && 
+-	   m_sock->socketStatus() == KExtendedSocket::connected) {
++    if(m_sock &&
++            m_sock->state() == KNetwork::KStreamSocket::Connected) {
+ 
+         bool isConnected  = false;
+         QString challenge = "";
+         QRegExp ver("^SuSE Meta pppd \\(smpppd\\), Version (.*)$");
+ 
+         while(m_comState != STATUSIFCFG &&
+-              m_comState != UNSETTLED) {
++                m_comState != UNSETTLED) {
+             switch(m_comState) {
+             case READY: {
+ 
+@@ -203,9 +203,11 @@
+                             }
+ 
+                         } else {
++                            disconnectFromSMPPPD();
+                             kdDebug(14312) << k_funcinfo << "unexpected reply from smpppd" << endl;
+                         }
+                     } else {
++                        disconnectFromSMPPPD();
+                         kdDebug(14312) << k_funcinfo << "smpppd doesn't seem to understand me" << endl;
+                     }
+                     m_comState = LISTIFCFG;
+@@ -225,11 +227,13 @@
+                         }
+                     }
+ 
++#ifndef NDEBUG
+                     if(isConnected) {
+                         kdDebug(14312) << k_funcinfo << "we are CONNECTED to the internet" << endl;
+                     } else {
+                         kdDebug(14312) << k_funcinfo << "we are DISCONNECTED from the internet" << endl;
+                     }
++#endif
+ 
+                     m_comState = STATUSIFCFG;
+                 }
+@@ -243,54 +247,46 @@
+         if(m_comState != UNSETTLED) {
+             m_comState = SMPPPDSETTLED;
+             m_connector->setConnectedStatus(isConnected);
+-	
++
+         }
+ 
+     } else {
+-        kdDebug(14312) << k_funcinfo << "not connected to smpppd => I try again" << endl;
++        kdDebug(14312) << k_funcinfo << "not connected to smpppd => I'll try again later" << endl;
+         m_connector->setConnectedStatus(false);
+-	connectToSMPPPD();
+-	emit retryRequested();
++        connectToSMPPPD();
+     }
+ }
+ 
++void Detector::disconnectFromSMPPPD() {
++    kdDebug(14312) << k_funcinfo << endl;
++    delete m_sock;
++    m_sock = NULL;
++    m_comState = READY;
++}
++
+ /*!
+     \fn Detector::connectToSMPPPD()
+  */
+ void Detector::connectToSMPPPD() {
+ 
+     if(!m_sock ||
+-        m_sock->socketStatus() != KExtendedSocket::connected ||
+-        m_sock->socketStatus() != KExtendedSocket::connecting) {
++        m_sock->state() != KNetwork::KStreamSocket::Connected ||
++        m_sock->state() != KNetwork::KStreamSocket::Connecting) {
+ 
+         static KConfig *config = KGlobal::config();
+         config->setGroup(SMPPPDCS_CONFIG_GROUP);
+         unsigned int port = config->readUnsignedNumEntry("port", 3185);
+         QString    server = config->readEntry("server", "localhost").utf8();
+ 
+-        delete m_sock;
+-        m_sock = NULL;
+-        m_comState = READY;
+-        m_sock = new KExtendedSocket(server, port, KExtendedSocket::inetSocket);
++        disconnectFromSMPPPD();
++        m_sock = new KNetwork::KStreamSocket(server, QString::number(port));
++        m_sock->setBlocking(TRUE);
+ 
+-        kdDebug(14312) << k_funcinfo << "connect to smpppd \"" << server << ":" << port << "\"" << endl;
+-
+-        switch(m_sock->connect()) {
+-        case  0:
+-            kdDebug(14312) << k_funcinfo << "connected to smpppd \"" << server << ":" << port << "\"" << endl;
+-            break;
+-        case -1:
+-            kdDebug(14312) << k_funcinfo << "system error" << endl;
+-            break;
+-        case -2:
+-            kdDebug(14312) << k_funcinfo << "this socket cannot connect(); this is a passiveSocket" << endl;
+-            break;
+-        case -3:
+-            kdDebug(14312) << k_funcinfo << "connection timed out" << endl;
+-            break;
+-        default:
+-            kdDebug(14312) << k_funcinfo << "unknown error" << endl;
+-            break;
++        if(!m_sock->connect()) {
++            kdDebug(14312) << k_funcinfo << "Socket Error: " << KNetwork::KStreamSocket::errorString(m_sock->error()) << endl;
++        } else {
++            kdDebug(14312) << k_funcinfo << "Successfully connected to smpppd \"" << server << ":" << port << "\"" << endl;
++            smpppdCheckStatus();
+         }
+     }
+ }
+--- kopete/plugins/smpppdcs/onlineinquiry.h	(revision 488948)
++++ kopete/plugins/smpppdcs/onlineinquiry.h	(revision 495340)
+@@ -1,9 +1,9 @@
+ /*
+     onlineinquiry.h
+  
+-    Copyright (c) 2005      by Heiko Schaefer        <heiko at rangun.de>
++    Copyright (c) 2005-2006 by Heiko Schaefer        <heiko at rangun.de>
+  
+-    Kopete    (c) 2002-2005 by the Kopete developers <kopete-devel at kde.org>
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
+  
+     *************************************************************************
+     *                                                                       *
+@@ -21,6 +21,10 @@
+ 
+ class Detector;
+ 
++/**
++ * @author Heiko Sch&auml;fer <heiko at rangun.de>
++ */
++
+ class OnlineInquiry : public IConnector {
+ 	OnlineInquiry(const OnlineInquiry&);
+ 	OnlineInquiry& operator=(const OnlineInquiry&);
+--- kopete/plugins/smpppdcs/smpppdcsplugin.h	(revision 488948)
++++ kopete/plugins/smpppdcs/smpppdcsplugin.h	(revision 495340)
+@@ -3,9 +3,9 @@
+  
+     Copyright (c) 2002-2003 by Chris Howells         <howells at kde.org>
+     Copyright (c) 2003      by Martijn Klingens      <klingens at kde.org>
+-    Copyright (c) 2004-2005 by Heiko Schaefer        <heiko at rangun.de>
++    Copyright (c) 2004-2006 by Heiko Schaefer        <heiko at rangun.de>
+  
+-    Kopete    (c) 2002-2005 by the Kopete developers <kopete-devel at kde.org>
++    Kopete    (c) 2002-2006 by the Kopete developers <kopete-devel at kde.org>
+  
+     *************************************************************************
+     *                                                                       *
+--- kopete/plugins/history/historydialog.cpp	(revision 488948)
++++ kopete/plugins/history/historydialog.cpp	(revision 495340)
+@@ -452,7 +452,7 @@
+ 	mSearch->item = 0;
+ 	mSearch->foundPrevious = false;
+ 
+-	initProgressBar(i18n("Searching ..."), mMainWidget->dateListView->childCount() );
++	initProgressBar(i18n("Searching..."), mMainWidget->dateListView->childCount() );
+ 	mMainWidget->searchButton->setText(i18n("&Cancel"));
+ 
+ 	mSearch->item = static_cast<KListViewDateItem*>(mMainWidget->dateListView->firstChild());
+--- kopete/plugins/history/historyprefsui.ui	(revision 488948)
++++ kopete/plugins/history/historyprefsui.ui	(revision 495340)
+@@ -39,7 +39,7 @@
+                         <string>Number of messages per page:</string>
+                     </property>
+                     <property name="whatsThis" stdset="0">
+-                        <string>The number of message that are shown when borwsing history in the chat window</string>
++                        <string>The number of messages that are shown when browsing history in the chat window</string>
+                     </property>
+                 </widget>
+                 <widget class="KIntSpinBox" row="3" column="1">
+@@ -105,7 +105,7 @@
+                         <number>7</number>
+                     </property>
+                     <property name="whatsThis" stdset="0">
+-                        <string>This is the number of messages that will be added automatically in the what window when opening a new chat</string>
++                        <string>This is the number of messages that will be added automatically in the chat window when opening a new chat.</string>
+                     </property>
+                 </widget>
+                 <widget class="QLabel" row="1" column="0">
+@@ -119,7 +119,7 @@
+                         <cstring>Number_Auto_chatwindow</cstring>
+                     </property>
+                     <property name="whatsThis" stdset="0">
+-                        <string>This is the number of messages that will be added automatically in the what window when opening a new chat</string>
++                        <string>This is the number of messages that will be added automatically in the chat window when opening a new chat.</string>
+                     </property>
+                 </widget>
+                 <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="2">
+@@ -133,7 +133,7 @@
+                         <bool>true</bool>
+                     </property>
+                     <property name="whatsThis" stdset="0">
+-                        <string>When a new chat is open, automatically add the few last message you had with that contact.</string>
++                        <string>When a new chat is opened, automatically add the last few messages between you and that contact.</string>
+                     </property>
+                 </widget>
+             </grid>
+--- kopete/protocols/yahoo/kopete_yahoo.desktop	(revision 488948)
++++ kopete/protocols/yahoo/kopete_yahoo.desktop	(revision 495340)
+@@ -39,7 +39,7 @@
+ Comment[hi]=से जुड़ने का प्रोटोकॉल
+ Comment[hr]=Protokol za povezivanje na Yahoo
+ Comment[hu]=Protokoll a Yahoo-hoz való csatlakozáshoz
+-Comment[is]=Protocol til að tengjast Yahoo
++Comment[is]=Samskiptamáti til að tengjast Yahoo
+ Comment[it]=Protocollo per connessione a Yahoo
+ Comment[ja]=Yahooに接続するプロトコル
+ Comment[lt]=Protokolas prisijungimui prie Yahoo
+--- kopete/protocols/yahoo/kyahoo.cpp	(revision 488948)
++++ kopete/protocols/yahoo/kyahoo.cpp	(revision 495340)
+@@ -1105,7 +1105,7 @@
+ 	
+ 	if( written != read )
+ 	{
+-		kdDebug(14181) << k_funcinfo << "An error occured while sending the file: " << socket->error() << " transmitted: " << uploadData->transmitted << endl;
++		kdDebug(14181) << k_funcinfo << "An error occurred while sending the file: " << socket->error() << " transmitted: " << uploadData->transmitted << endl;
+ 		if( uploadData->reportSuccess )
+ 			KMessageBox::queuedMessageBox(Kopete::UI::Global::mainWidget(), KMessageBox::Error, i18n("An error occured while sending the file: %1").arg( socket->error() ) );
+ 		uploadData->file.close();
+--- kopete/protocols/yahoo/yahoocontact.cpp	(revision 488948)
++++ kopete/protocols/yahoo/yahoocontact.cpp	(revision 495340)
+@@ -499,7 +499,7 @@
+ 	{
+ 		KMessageBox::queuedMessageBox(
+ 			Kopete::UI::Global::mainWidget(), KMessageBox::Error,
+-			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/")
++			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/")
+                 );
+ 		return;
+ 	}
+--- kopete/protocols/yahoo/yahooaccount.cpp	(revision 488948)
++++ kopete/protocols/yahoo/yahooaccount.cpp	(revision 495340)
+@@ -681,7 +681,8 @@
+ 			kc->removeProperty( m_protocol->awayMessage );
+ 
+ 		if( newStatus != static_cast<YahooProtocol*>( m_protocol )->Offline &&
+-		    oldStatus == static_cast<YahooProtocol*>( m_protocol )->Offline && contact(who) != myself() )
++		    oldStatus == static_cast<YahooProtocol*>( m_protocol )->Offline && contact(who) != myself() &&
++		    myself()->onlineStatus() != m_protocol->Invisible )
+ 		{
+ 			m_session->requestBuddyIcon( who );		// Try to get Buddy Icon
+ 
+--- kopete/protocols/yahoo/ui/yahoowebcamdialog.cpp	(revision 488948)
++++ kopete/protocols/yahoo/ui/yahoowebcamdialog.cpp	(revision 495340)
+@@ -77,7 +77,7 @@
+ 	case 1:
+ 		closeReason = i18n( "%1 has stopped broadcasting" ).arg( contactName ); break;
+ 	case 2:
+-		closeReason = i18n( "%1 has cancelled viewing permission" ).arg( contactName ); break;
++		closeReason = i18n( "%1 has canceled viewing permission" ).arg( contactName ); break;
+ 	case 3:
+ 		closeReason = i18n( "%1 has declined permission to view webcam" ).arg( contactName ); break;
+ 	case 4:
+--- kopete/protocols/winpopup/kopete_wp.desktop	(revision 488948)
++++ kopete/protocols/winpopup/kopete_wp.desktop	(revision 495340)
+@@ -45,7 +45,7 @@
+ Comment[hi]=विंडोज़ विन-पॉपअप मैसेंजर भेजने का प्रोटोकॉल
+ Comment[hr]=Protokol za slanje Windows WinPopup poruka
+ Comment[hu]=Protokoll Windows felbukkanó üzenetek küldéséhez
+-Comment[is]=Protocol til að senda Windows WinPopup skeyti
++Comment[is]=Samskiptamáti til að senda Windows WinPopup skeyti
+ Comment[it]=Protocollo per inviare messaggi Windows WinPopup
+ Comment[ja]=WindowsのWinPopupメッセージを送るプロトコル
+ Comment[lt]=Protokolas Windows iššokančių žinučių siuntimui
+--- kopete/protocols/winpopup/config/kopete_wp_config.desktop	(revision 488948)
++++ kopete/protocols/winpopup/config/kopete_wp_config.desktop	(revision 495340)
+@@ -64,7 +64,7 @@
+ Comment[cs]=Odesílání Microsoft "WinPopup"
+ Comment[cy]=Negesydd Ffenestr "WinPopup" Microsoft
+ Comment[de]=Microsoft "WinPopup"-Nachrichtendienst
+-Comment[es]=Mensajería instantánea "WinPopup" de Microsoft
++Comment[es]=Mensajería instantánea «WinPopup» de Microsoft
+ Comment[et]=Microsofti "WinPopup" hüpik-teateaknad
+ Comment[eu]=Microsoft "WinPopup" leiho mezularia
+ Comment[fi]=Microsoft "WinPopup"-ikkunaviestin
+--- kopete/protocols/groupwise/kopete_groupwise.desktop	(revision 488948)
++++ kopete/protocols/groupwise/kopete_groupwise.desktop	(revision 495340)
+@@ -26,6 +26,7 @@
+ Comment[fi]=Novell GroupWise -viestijä
+ Comment[fr]=Messagerie GroupWise Novell
+ Comment[he]=תוכנת המסרים של נובל GroupWise
++Comment[is]=Novell GroupWise skilaboðaþjónustan
+ Comment[it]=Messaggistica per gruppi di Novell
+ Comment[ja]=Novell GroupWiseメッセンジャ
+ Comment[lt]=Novell GroupWise žinučių klientas
+--- kopete/protocols/jabber/libiris/iris/jabber/s5b.cpp	(revision 488948)
++++ kopete/protocols/jabber/libiris/iris/jabber/s5b.cpp	(revision 495340)
+@@ -18,6 +18,8 @@
+  *
+  */
+ 
++#include <config.h>
++
+ #include"s5b.h"
+ 
+ #include<qtimer.h>
+@@ -32,6 +34,9 @@
+ #ifdef Q_OS_WIN
+ # include <windows.h>
+ #else
++# ifdef HAVE_SYS_TYPES_H
++#  include <sys/types.h>
++# endif
+ # include <netinet/in.h>
+ #endif
+ 
+--- kopete/protocols/jabber/kioslave/jabberdisco.protocol	(revision 488948)
++++ kopete/protocols/jabber/kioslave/jabberdisco.protocol	(revision 495340)
+@@ -20,6 +20,7 @@
+ Description[eu]=Jabber aurkikuntza zerbitzureako KIO morroi bat
+ Description[fr]=Un module d'entrée / sortie pour la recherche de service Jabber
+ Description[gl]=Un KIO slave para Jabber Service Discovery
++Description[hu]=KDE-protokoll a Jabber szolgáltatáskereső használatához
+ Description[is]=kioslave fyrir Jabber þjónustu uppgötvun
+ Description[it]=Un KIO slave per il servizio di discovery per jabber
+ Description[ja]=Jabber Service Discovery のKIOスレーブ
+--- kopete/protocols/jabber/jabbercontact.cpp	(revision 488948)
++++ kopete/protocols/jabber/jabbercontact.cpp	(revision 495340)
+@@ -473,6 +473,10 @@
+ 	if ( task->success () )
+ 	{
+ 		setProperty ( protocol()->propLastSeen, QDateTime::currentDateTime().addSecs ( -task->seconds () ) );
++		if( !task->message().isEmpty() )
++		{
++			setProperty( protocol()->propAwayMessage, task->message() );
++		}
+ 	}
+ 
+ }
+--- kopete/protocols/jabber/jabberaccount.cpp	(revision 488948)
++++ kopete/protocols/jabber/jabberaccount.cpp	(revision 495340)
+@@ -99,6 +99,12 @@
+ 
+ 	m_jabberClient = 0L;
+ 
++	delete m_resourcePool;
++	m_resourcePool = 0L;
++
++	delete m_contactPool;
++	m_contactPool = 0L;
++
+ }
+ 
+ void JabberAccount::setS5BServerPort ( int port )
+--- kopete/protocols/jabber/ui/jabberregisteraccount.cpp	(revision 488948)
++++ kopete/protocols/jabber/ui/jabberregisteraccount.cpp	(revision 495340)
+@@ -81,7 +81,7 @@
+ 	mMainWidget->leServer->setText ( parent->mServer->text () );
+ 	mMainWidget->leJID->setText ( parent->mID->text () );
+ 	mMainWidget->lePassword->setText ( parent->mPass->password () );
+-	mMainWidget->lePasswordVerify->setText ( parent->mPass->password () );
++	//	mMainWidget->lePasswordVerify->setText ( parent->mPass->password () ); //BUG 114631
+ 	mMainWidget->sbPort->setValue ( parent->mPort->value () );
+ 	mMainWidget->cbUseSSL->setChecked ( parent->cbUseSSL->isChecked () );
+ 
+--- kopete/protocols/oscar/oscarlistnonservercontacts.cpp	(revision 488948)
++++ kopete/protocols/oscar/oscarlistnonservercontacts.cpp	(revision 495340)
+@@ -21,6 +21,7 @@
+ #include "oscarlistnonservercontacts.h"
+ #include "oscarlistcontactsbase.h"
+ #include <qstringlist.h>
++#include <qcheckbox.h>
+ #include <klocale.h>
+ 
+ OscarListNonServerContacts::OscarListNonServerContacts(QWidget* parent)
+@@ -49,6 +50,10 @@
+     return m_nonServerContacts;
+ }
+ 
++bool OscarListNonServerContacts::onlyShowOnce()
++{
++    return m_contactsList->doNotShowAgain->isChecked();
++}
+ 
+ 
+ void OscarListNonServerContacts::slotCancel()
+--- kopete/protocols/oscar/oscarlistnonservercontacts.h	(revision 488948)
++++ kopete/protocols/oscar/oscarlistnonservercontacts.h	(revision 495340)
+@@ -35,6 +35,8 @@
+     void addContacts( const QStringList& contactList );
+     QStringList nonServerContactList() const;
+ 
++    bool onlyShowOnce();
++
+ protected:
+     virtual void slotOk();
+     virtual void slotCancel();
+--- kopete/protocols/oscar/liboscar/userdetails.cpp	(revision 488948)
++++ kopete/protocols/oscar/liboscar/userdetails.cpp	(revision 495340)
+@@ -45,6 +45,16 @@
+ 	m_dcLastInfoUpdateTime = 0;
+ 	m_dcLastExtInfoUpdateTime = 0;
+ 	m_dcLastExtStatusUpdateTime = 0;
++	m_userClassSpecified = false;
++	m_memberSinceSpecified = false;
++	m_onlineSinceSpecified = false;
++	m_numSecondsOnlineSpecified = false;
++	m_idleTimeSpecified = false;
++	m_extendedStatusSpecified = false;
++	m_capabilitiesSpecified = false;
++	m_dcOutsideSpecified = false;
++	m_dcInsideSpecified = false;
++	m_iconSpecified = false;
+ }
+ 
+ 
+@@ -141,6 +151,7 @@
+ 			{
+ 			case 0x0001: //user class
+ 				m_userClass = b.getWord();
++				m_userClassSpecified = true;
+ #ifdef OSCAR_USERINFO_DEBUG
+ 				kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "User class is " << m_userClass << endl;
+ #endif
+@@ -148,12 +159,14 @@
+ 			case 0x0002: //member since
+ 			case 0x0005: //member since
+ 				m_memberSince.setTime_t( b.getDWord() );
++				m_memberSinceSpecified = true;
+ #ifdef OSCAR_USERINFO_DEBUG
+ 				kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Member since " << m_memberSince << endl;
+ #endif
+ 				break;
+ 			case 0x0003: //sigon time
+ 				m_onlineSince.setTime_t( b.getDWord() );
++				m_onlineSinceSpecified = true;
+ #ifdef OSCAR_USERINFO_DEBUG
+ 				kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Signed on at " << m_onlineSince << endl;
+ #endif
+@@ -161,17 +174,20 @@
+ 			case 0x0004: //idle time
+ 				m_idleTime = b.getWord() * 60;
+ #ifdef OSCAR_USERINFO_DEBUG
++				m_idleTimeSpecified = true;
+ 				kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Idle time is " << m_idleTime << endl;
+ #endif
+ 				break;
+ 			case 0x0006: //extended user status
+ 				m_extendedStatus = b.getDWord();
++				m_extendedStatusSpecified = true;
+ #ifdef OSCAR_USERINFO_DEBUG
+ 				kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Extended status is " << QString::number( m_extendedStatus, 16 ) << endl;
+ #endif
+                 break;
+ 			case 0x000A: //external IP address
+ 				m_dcOutsideIp = KNetwork::KIpAddress( ntohl( b.getDWord() ) );
++				m_dcOutsideSpecified = true;
+ #ifdef OSCAR_USERINFO_DEBUG
+ 				kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "External IP address is " << m_dcOutsideIp.toString() << endl;
+ #endif
+@@ -192,16 +208,19 @@
+ 				m_dcLastExtInfoUpdateTime = b.getDWord();
+ 				m_dcLastExtStatusUpdateTime = b.getDWord();
+ 				b.getWord(); //unknown.
++				m_dcInsideSpecified = true;
+ #ifdef OSCAR_USERINFO_DEBUG
+ 				kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Got DC info" << endl;
+ #endif
+ 				break;
+ 			case 0x000D: //capability info
+ 				m_capabilities = Oscar::parseCapabilities( b, m_clientVersion );
++				m_capabilitiesSpecified = true;
+ 				break;
+ 			case 0x0010:
+ 			case 0x000F: //online time
+ 				m_numSecondsOnline = b.getDWord();
++				m_numSecondsOnlineSpecified = true;
+ #ifdef OSCAR_USERINFO_DEBUG
+ 				kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Online for " << m_numSecondsOnline << endl;
+ #endif
+@@ -229,6 +248,7 @@
+ 						{
+ 							m_iconChecksumType = number;
+  							m_md5IconHash.duplicate( b.getBlock( length ), length );
++							m_iconSpecified = true;
+ #ifdef OSCAR_USERINFO_DEBUG
+ 							kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "checksum:" << m_md5IconHash << endl;
+ #endif
+@@ -273,7 +293,8 @@
+ 	}
+ 
+ 	//do client detection on fill
+-	detectClient();
++	if ( m_capabilitiesSpecified )
++		detectClient();
+ }
+ 
+ void UserDetails::detectClient()
+@@ -452,4 +473,73 @@
+ 	return capPresent;
+ }
+ 
++void UserDetails::merge( const UserDetails& ud )
++{
++	m_userId = ud.m_userId;
++	m_warningLevel = ud.m_warningLevel;
++	if ( ud.m_userClassSpecified )
++	{
++		m_userClass = ud.m_userClass;
++		m_userClassSpecified = true;
++	}
++	if ( ud.m_memberSinceSpecified )
++	{
++		m_memberSince = ud.m_memberSince;
++		m_memberSinceSpecified = true;
++	}
++	if ( ud.m_onlineSinceSpecified )
++	{
++		m_onlineSince = ud.m_onlineSince;
++		m_onlineSinceSpecified = true;
++	}
++	if ( ud.m_numSecondsOnlineSpecified )
++	{
++		m_numSecondsOnline = ud.m_numSecondsOnline;
++		m_numSecondsOnlineSpecified = true;
++	}
++	if ( ud.m_idleTimeSpecified )
++	{
++		m_idleTime = ud.m_idleTime;
++		m_idleTimeSpecified = true;
++	}
++	if ( ud.m_extendedStatusSpecified )
++	{
++		m_extendedStatus = ud.m_extendedStatus;
++		m_extendedStatusSpecified = true;
++	}
++	if ( ud.m_capabilitiesSpecified )
++	{
++		m_capabilities = ud.m_capabilities;
++		m_clientVersion = ud.m_clientVersion;
++		m_clientName = ud.m_clientName;
++		m_capabilitiesSpecified = true;
++	}
++	if ( ud.m_dcOutsideSpecified )
++	{
++		m_dcOutsideIp = ud.m_dcOutsideIp;
++		m_dcOutsideSpecified = true;
++	}
++	if ( ud.m_dcInsideSpecified )
++	{
++		m_dcInsideIp = ud.m_dcInsideIp;
++		m_dcPort = ud.m_dcPort;
++		m_dcType = ud.m_dcType;
++		m_dcProtoVersion = ud.m_dcProtoVersion;
++		m_dcAuthCookie = ud.m_dcAuthCookie;
++		m_dcWebFrontPort = ud.m_dcWebFrontPort;
++		m_dcClientFeatures = ud.m_dcClientFeatures;
++		m_dcLastInfoUpdateTime = ud.m_dcLastInfoUpdateTime;
++		m_dcLastExtInfoUpdateTime = ud.m_dcLastExtInfoUpdateTime;
++		m_dcLastExtStatusUpdateTime = ud.m_dcLastExtStatusUpdateTime;
++		m_dcInsideSpecified = true;
++	}
++	if ( ud.m_iconSpecified )
++	{
++		m_iconChecksumType = ud.m_iconChecksumType;
++		m_md5IconHash = ud.m_md5IconHash;
++		m_iconSpecified = true;
++	}
++	m_availableMessage = ud.m_availableMessage;
++}
++
+ //kate: tab-width 4; indent-mode csands;
+--- kopete/protocols/oscar/liboscar/coreprotocol.cpp	(revision 488948)
++++ kopete/protocols/oscar/liboscar/coreprotocol.cpp	(revision 495340)
+@@ -194,19 +194,19 @@
+ 		return bytesParsed;
+ 	}	
+ 	
+-	m_din = new QDataStream( wire, IO_ReadOnly );
++	QDataStream din( wire, IO_ReadOnly );
+ 	
+ 	// look at first four bytes and decide what to do with the chunk
+-	if ( okToProceed() )
++	if ( okToProceed( din ) )
+ 	{
+-		*m_din >> flapStart;
++		din >> flapStart;
+ 		QByteArray packet;
+ 		packet.duplicate( wire );
+ 		if ( flapStart == 0x2A )
+ 		{
+-			*m_din >> flapChannel;
+-			*m_din >> flapLength; //discard the first one it's not really the flap length
+-			*m_din >> flapLength;
++			din >> flapChannel;
++			din >> flapLength; //discard the first one it's not really the flap length
++			din >> flapLength;
+ 			if ( wire.size() < flapLength )
+ 			{
+ 				kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo 
+@@ -231,8 +231,8 @@
+ 			
+ 			if ( flapChannel == 2 )
+ 			{
+-				*m_din >> s1;
+-				*m_din >> s2;
++				din >> s1;
++				din >> s2;
+ 				
+ 				Transfer * t = m_snacProtocol->parse( packet, bytesParsed );
+ 				if ( t )
+@@ -256,7 +256,6 @@
+ 		}
+ 		
+ 	}
+-	delete m_din;
+ 	return bytesParsed;
+ }
+ 
+@@ -270,19 +269,16 @@
+ 	kdDebug(OSCAR_RAW_DEBUG) << out.data() << endl;
+ }
+ 
+-bool CoreProtocol::okToProceed()
++bool CoreProtocol::okToProceed( const QDataStream &din )
+ {
+-	if ( m_din )
++	if ( din.atEnd() )
+ 	{
+-		if ( m_din->atEnd() )
+-		{
+-			m_state = NeedMore;
+-			kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Server message ended prematurely!" << endl;
+-		}
+-		else
+-			return true;
++		m_state = NeedMore;
++		kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Server message ended prematurely!" << endl;
++		return false;
+ 	}
+-	return false;
++	else
++		return true;
+ }
+ 
+ #include "coreprotocol.moc"
+--- kopete/protocols/oscar/liboscar/coreprotocol.h	(revision 488948)
++++ kopete/protocols/oscar/liboscar/coreprotocol.h	(revision 495340)
+@@ -87,7 +87,7 @@
+ 	/**
+ 	 * Check that there is data to read, and set the protocol's state if there isn't any.
+ 	 */
+-	bool okToProceed();
++	bool okToProceed( const QDataStream &din );
+ 	/**
+ 	 * Convert incoming wire data into a Transfer object and queue it
+ 	 * @return number of bytes from the input that were parsed into a Transfer
+@@ -96,7 +96,6 @@
+ 
+ private:
+ 	QByteArray m_in;	// buffer containing unprocessed bytes we received
+-	QDataStream* m_din; // contains the packet currently being parsed
+ 	int m_error;
+ 	Transfer* m_inTransfer; // the transfer that is being received
+ 	int m_state;		// represents the protocol's overall state
+--- kopete/protocols/oscar/liboscar/client.cpp	(revision 488948)
++++ kopete/protocols/oscar/liboscar/client.cpp	(revision 495340)
+@@ -485,8 +485,8 @@
+ 		if ( msg.hasProperty( Oscar::Message::AutoResponse ) )
+ 		{
+ 			// we got a response to a status message request.
+-			kdDebug( OSCAR_RAW_DEBUG ) << k_funcinfo << "Received an away message: " << msg.text() << endl;
+-			emit receivedAwayMessage( msg.sender(), msg.text() );
++			kdDebug( OSCAR_RAW_DEBUG ) << k_funcinfo << "Received an away message." << endl;
++			emit receivedAwayMessage( msg );
+ 		}
+ 	}
+ 	else
+--- kopete/protocols/oscar/liboscar/offlinemessagestask.cpp	(revision 488948)
++++ kopete/protocols/oscar/liboscar/offlinemessagestask.cpp	(revision 495340)
+@@ -127,7 +127,12 @@
+ 	time = time.addSecs( tz );
+ 	
+ 	QDateTime hackyTime( date, time );
+-	Oscar::Message message( msg.data(), type, flags, hackyTime );
++	Oscar::Message message;
++	message.setType( type );
++	message.addProperty( flags );
++	message.addProperty( Oscar::Message::NotDecoded );
++	message.setTextArray( msg );
++	message.setTimestamp( hackyTime );
+ 	message.setSender( QString::number( senderUin ) );
+ 	message.setReceiver( QString::number( receiverUin ) );
+ 	
+--- kopete/protocols/oscar/liboscar/client.h	(revision 488948)
++++ kopete/protocols/oscar/liboscar/client.h	(revision 495340)
+@@ -375,6 +375,7 @@
+ 
+ 	void receivedProfile( const QString& contact, const QString& profile );
+ 	void receivedAwayMessage( const QString& contact, const QString& message );
++	void receivedAwayMessage( const Oscar::Message& message );
+ 	void receivedUserInfo( const QString& contact, const UserDetails& details );
+ 
+ 	/** We warned a user */
+--- kopete/protocols/oscar/liboscar/userdetails.h	(revision 488948)
++++ kopete/protocols/oscar/liboscar/userdetails.h	(revision 495340)
+@@ -55,11 +55,28 @@
+ 	 * It only updates what's available.
+ 	 */
+ 	void fill( Buffer* buffer );
++
++	/**
++	 * Merge only those data from another UserDetails
++	 * which are marked as specified.
++	 */
++	void merge( const UserDetails& ud );
++
++	bool userClassSpecified() const { return m_userClassSpecified; }
++	bool memberSinceSpecified() const { return m_memberSinceSpecified; }
++	bool onlineSinceSpecified() const { return m_onlineSinceSpecified; }
++	bool numSecondsOnlineSpecified() const { return m_numSecondsOnlineSpecified; }
++	bool idleTimeSpecified() const { return m_idleTimeSpecified; }
++	bool extendedStatusSpecified() const { return m_extendedStatusSpecified; }
++	bool capabilitiesSpecified() const { return m_capabilitiesSpecified; }
++	bool dcOutsideSpecified() const { return m_dcOutsideSpecified; }
++	bool dcInsideSpecified() const { return m_dcInsideSpecified; }
++	bool iconSpecified() const { return m_iconSpecified; }
+ private:
+ 	//! Do client detection 
+ 	void detectClient();
+-	
+ 
++
+ private:
+ 	QString m_userId; /// the screename/uin of the contact
+ 	int m_warningLevel; /// the warning level of the contact
+@@ -87,6 +104,17 @@
+ 	QByteArray m_md5IconHash; /// Buddy Icon MD5 Hash - TLV 0x1D
+ 	QString m_availableMessage; /// Message a person can have when available - TLV 0x0D
+ 	
++	bool m_userClassSpecified;
++	bool m_memberSinceSpecified;
++	bool m_onlineSinceSpecified;
++	bool m_numSecondsOnlineSpecified;
++	bool m_idleTimeSpecified;
++	bool m_extendedStatusSpecified;
++	bool m_capabilitiesSpecified;
++	bool m_dcOutsideSpecified;
++	bool m_dcInsideSpecified;
++	bool m_iconSpecified;
++	
+ };
+ 
+ #endif 
+--- kopete/protocols/oscar/liboscar/messagereceivertask.cpp	(revision 488948)
++++ kopete/protocols/oscar/liboscar/messagereceivertask.cpp	(revision 495340)
+@@ -407,7 +407,30 @@
+ 
+ 		kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Message type is: " << messageType << endl;
+ 		
+-		msg->setText( b->getLELNTS() );
++		QCString msgtext( b->getLELNTS() );
++		int prop = Oscar::Message::NotDecoded;
++		if ( messageType == 0x01 )
++		{
++			int fgcolor = b->getLEDWord();
++			int bgcolor = b->getLEDWord();
++			
++			while ( b->length() >= 4 )
++			{
++				int capLength = b->getLEDWord();
++				if ( b->length() < capLength )
++					break;
++	
++				QByteArray cap( b->getBlock( capLength ) );
++				if ( qstrncmp ( cap.data(), "{0946134E-4C7F-11D1-8222-444553540000}", capLength ) == 0 )
++					prop = Oscar::Message::UCS2;
++			}
++		}
++
++		msg->addProperty( prop );
++		if ( prop == Oscar::Message::UCS2 )
++			msg->setText( QString::fromUtf8( msgtext ) );
++		else
++			msg->setTextArray( msgtext );
+ 		
+ 		if ( ( messageType & 0xF0 ) == 0xE0 ) // check higher byte for value E -> status message request
+ 			msg->addProperty( Oscar::Message::StatusMessageRequest );
+--- kopete/protocols/oscar/oscarcontact.cpp	(revision 488948)
++++ kopete/protocols/oscar/oscarcontact.cpp	(revision 495340)
+@@ -178,41 +178,41 @@
+ 	setProperty( Kopete::Global::Properties::self()->onlineSince(), details.onlineSinceTime() );
+ 	setIdleTime( details.idleTime() );
+ 	m_warningLevel = details.warningLevel();
+-	m_details = details;
++	m_details.merge( details );
+ 	
+ 	QStringList capList;
+ 	// Append client name and version in case we found one
+-	if ( details.userClass() & 0x0080 /* WIRELESS */ )
++	if ( m_details.userClass() & 0x0080 /* WIRELESS */ )
+ 		capList << i18n( "Mobile AIM Client" );
+ 	else
+ 	{
+-		if ( !details.clientName().isEmpty() )
++		if ( !m_details.clientName().isEmpty() )
+ 		{
+ 			capList << i18n( "Translators: client name and version",
+-			                "%1").arg( details.clientName() );
++			                "%1").arg( m_details.clientName() );
+ 		}
+ 	}
+ 	
+ 	// and now for some general informative capabilities
+-	if ( details.hasCap( CAP_BUDDYICON ) )
++	if ( m_details.hasCap( CAP_BUDDYICON ) )
+ 		capList << i18n( "Buddy icons" );
+-	if ( details.hasCap( CAP_UTF8 ) )
++	if ( m_details.hasCap( CAP_UTF8 ) )
+ 		capList << i18n( "UTF-8" );
+-	if ( details.hasCap( CAP_RTFMSGS ) )
++	if ( m_details.hasCap( CAP_RTFMSGS ) )
+ 		capList << i18n( "Rich text messages" );
+-	if ( details.hasCap( CAP_CHAT ) )
++	if ( m_details.hasCap( CAP_CHAT ) )
+ 		capList << i18n( "Group chat" );
+-	if ( details.hasCap( CAP_VOICE ) )
++	if ( m_details.hasCap( CAP_VOICE ) )
+ 		capList << i18n( "Voice chat" );
+-	if ( details.hasCap( CAP_IMIMAGE ) )
++	if ( m_details.hasCap( CAP_IMIMAGE ) )
+ 		capList << i18n( "DirectIM/IMImage" );
+-	if ( details.hasCap( CAP_SENDBUDDYLIST ) )
++	if ( m_details.hasCap( CAP_SENDBUDDYLIST ) )
+ 		capList << i18n( "Send buddy list" );
+-	if ( details.hasCap( CAP_SENDFILE ) )
++	if ( m_details.hasCap( CAP_SENDFILE ) )
+ 		capList << i18n( "File transfers" );
+-	if ( details.hasCap( CAP_GAMES ) || details.hasCap( CAP_GAMES2 ) )
++	if ( m_details.hasCap( CAP_GAMES ) || m_details.hasCap( CAP_GAMES2 ) )
+ 		capList << i18n( "Games" );
+-	if ( details.hasCap( CAP_TRILLIAN ) )
++	if ( m_details.hasCap( CAP_TRILLIAN ) )
+ 		capList << i18n( "Trillian user" );
+ 	
+ 	m_clientFeatures = capList.join( ", " );
+--- kopete/protocols/oscar/oscaraccount.cpp	(revision 488948)
++++ kopete/protocols/oscar/oscaraccount.cpp	(revision 495340)
+@@ -255,7 +255,8 @@
+     }
+     kdDebug(OSCAR_GEN_DEBUG) << k_funcinfo << "the following contacts are not on the server side list"
+                              << nonServerContactList << endl;
+-    if ( !nonServerContactList.isEmpty() )
++	bool showMissingContactsDialog = configGroup()->readBoolEntry(QString::fromLatin1("ShowMissingContactsDialog"), true);
++    if ( !nonServerContactList.isEmpty() && showMissingContactsDialog )
+     {
+         d->olnscDialog = new OscarListNonServerContacts( Kopete::UI::Global::mainWidget() );
+         QObject::connect( d->olnscDialog, SIGNAL( closing() ),
+@@ -322,6 +323,10 @@
+ 
+     }
+ 
++	bool showOnce = d->olnscDialog->onlyShowOnce();
++	configGroup()->writeEntry( QString::fromLatin1("ShowMissingContactsDialog") , !showOnce);
++	configGroup()->sync();
++	
+     d->olnscDialog->delayedDestruct();
+     d->olnscDialog = 0L;
+ }
+--- kopete/protocols/oscar/oscarlistcontactsbase.ui	(revision 488948)
++++ kopete/protocols/oscar/oscarlistcontactsbase.ui	(revision 495340)
+@@ -8,15 +8,15 @@
+         <rect>
+             <x>0</x>
+             <y>0</y>
+-            <width>459</width>
+-            <height>266</height>
++            <width>478</width>
++            <height>361</height>
+         </rect>
+     </property>
+-    <grid>
++    <vbox>
+         <property name="name">
+             <cstring>unnamed</cstring>
+         </property>
+-        <widget class="QLabel" row="0" column="0">
++        <widget class="QLabel">
+             <property name="name">
+                 <cstring>textLabel1</cstring>
+             </property>
+@@ -24,12 +24,26 @@
+                 <string>The following contacts are not on your contact list. Would you like to add them?</string>
+             </property>
+         </widget>
+-        <widget class="QListBox" row="1" column="0">
++        <widget class="QListBox">
+             <property name="name">
+                 <cstring>notServerContacts</cstring>
+             </property>
++            <property name="frameShape">
++                <enum>StyledPanel</enum>
++            </property>
++            <property name="frameShadow">
++                <enum>Sunken</enum>
++            </property>
+         </widget>
+-    </grid>
++        <widget class="QCheckBox">
++            <property name="name">
++                <cstring>doNotShowAgain</cstring>
++            </property>
++            <property name="text">
++                <string>Do &amp;not ask again</string>
++            </property>
++        </widget>
++    </vbox>
+ </widget>
+ <layoutdefaults spacing="6" margin="11"/>
+ </UI>
+--- kopete/protocols/oscar/icq/icqprotocol.cpp	(revision 488948)
++++ kopete/protocols/oscar/icq/icqprotocol.cpp	(revision 495340)
+@@ -641,7 +641,7 @@
+ 	mInterests.insert(142, i18n("Health and beauty"));
+ 	mInterests.insert(143, i18n("Media"));
+ 	mInterests.insert(144, i18n("Household products"));
+-	mInterests.insert(145, i18n("Mail order catalogue"));
++	mInterests.insert(145, i18n("Mail order catalog"));
+ 	mInterests.insert(146, i18n("Business services"));
+ 	mInterests.insert(147, i18n("Audio and visual"));
+ 	mInterests.insert(148, i18n("Sporting and athletic"));
+--- kopete/protocols/oscar/icq/icqcontact.cpp	(revision 488948)
++++ kopete/protocols/oscar/icq/icqcontact.cpp	(revision 495340)
+@@ -75,6 +75,8 @@
+ 	                  this, SLOT( userInfoUpdated( const QString&, const UserDetails& ) ) );
+ 	QObject::connect( mAccount->engine(), SIGNAL( receivedAwayMessage( const QString&, const QString& ) ),
+ 	                  this, SLOT( receivedStatusMessage( const QString&, const QString& ) ) );
++	QObject::connect( mAccount->engine(), SIGNAL( receivedAwayMessage( const Oscar::Message& ) ),
++	                  this, SLOT( receivedStatusMessage( const Oscar::Message& ) ) );
+ 	QObject::connect( this, SIGNAL( featuresUpdated() ), this, SLOT( updateFeatures() ) );
+ 
+ }
+@@ -147,15 +149,21 @@
+ 	}
+ 		
+ 
+-	if ( details.dcExternalIp().isUnspecified() )
+-		removeProperty( mProtocol->ipAddress );
+-	else
+-		setProperty( mProtocol->ipAddress, details.dcExternalIp().toString() );
++	if ( details.dcOutsideSpecified() )
++	{
++		if ( details.dcExternalIp().isUnspecified() )
++			removeProperty( mProtocol->ipAddress );
++		else
++			setProperty( mProtocol->ipAddress, details.dcExternalIp().toString() );
++	}
+ 
+-	if ( details.clientName().isEmpty() )
+-		removeProperty( mProtocol->clientFeatures );
+-	else
+-		setProperty( mProtocol->clientFeatures, details.clientName() );
++	if ( details.capabilitiesSpecified() )
++	{
++		if ( details.clientName().isEmpty() )
++			removeProperty( mProtocol->clientFeatures );
++		else
++			setProperty( mProtocol->clientFeatures, details.clientName() );
++	}
+ 
+ 	OscarContact::userInfoUpdated( contact, details );
+ }
+@@ -338,6 +346,25 @@
+ 		removeProperty( mProtocol->awayMessage );
+ }
+ 
++void ICQContact::receivedStatusMessage( const Oscar::Message &message )
++{
++	if ( Oscar::normalize( message.sender() ) != Oscar::normalize( contactId() ) )
++		return;
++	
++	//decode message
++    QTextCodec* codec = QTextCodec::codecForMib( this->property( "contactEncoding" ).value().toInt() );
++	
++	QString realText = message.text();
++	if ( message.properties() & Oscar::Message::NotDecoded )
++		realText = codec->toUnicode( message.textArray() );
++	
++	
++	if ( !realText.isEmpty() )
++		setProperty( mProtocol->awayMessage, realText );
++	else
++		removeProperty( mProtocol->awayMessage );
++}
++
+ void ICQContact::slotSendMsg( Kopete::Message& msg, Kopete::ChatSession* session )
+ {
+ 	//Why is this unused?
+--- kopete/protocols/oscar/icq/ui/icqsearchbase.ui	(revision 488948)
++++ kopete/protocols/oscar/icq/ui/icqsearchbase.ui	(revision 495340)
+@@ -101,7 +101,7 @@
+                 <string></string>
+             </property>
+             <property name="whatsThis" stdset="0">
+-                <string>Show informations about the selected contact</string>
++                <string>Show information about the selected contact</string>
+             </property>
+         </widget>
+         <spacer row="0" column="1">
+--- kopete/protocols/oscar/icq/icqcontact.h	(revision 488948)
++++ kopete/protocols/oscar/icq/icqcontact.h	(revision 495340)
+@@ -134,6 +134,7 @@
+     void changeEncodingDialogClosed( int );
+ 
+ 	void receivedStatusMessage( const QString &contact, const QString &message );
++	void receivedStatusMessage( const Oscar::Message &message );
+ 
+ //void slotCloseAwayMessageDialog();
+ 	//void slotReadAwayMessage();
+--- kopete/protocols/msn/dispatcher.cpp	(revision 488948)
++++ kopete/protocols/msn/dispatcher.cpp	(revision 495340)
+@@ -139,7 +139,7 @@
+ 	writer << (Q_INT32)1;
+ 	// Write the file name in utf-16 to the stream.
+ 	QTextStream ts(header, IO_WriteOnly);
+-	ts.setEncoding(QTextStream::Unicode);
++	ts.setEncoding(QTextStream::RawUnicode);
+ 	ts.device()->at(20);
+ 	ts << path.section('/', -1);
+ 	// NOTE Background Sharing base64 [540..569]
+--- kopete/protocols/msn/outgoingtransfer.cpp	(revision 488948)
++++ kopete/protocols/msn/outgoingtransfer.cpp	(revision 495340)
+@@ -200,7 +200,7 @@
+ 			if(m_transfer)
+ 			{
+ 				// Inform the user of the file transfer cancelation.
+-				m_transfer->slotError(KIO::ERR_ABORTED, i18n("File transfer cancelled."));
++				m_transfer->slotError(KIO::ERR_ABORTED, i18n("File transfer canceled."));
+ 			}
+ 		}
+ 		// Dispose of this transfer context.
+@@ -307,7 +307,7 @@
+ 		if(m_transfer)
+ 		{
+ 			// Inform the user of the file transfer cancelation.
+-			m_transfer->slotError(KIO::ERR_ABORTED, i18n("File transfer cancelled."));
++			m_transfer->slotError(KIO::ERR_ABORTED, i18n("File transfer canceled."));
+ 		}
+ 
+ 		if(m_file && m_file->isOpen()){
+--- kopete/protocols/msn/msnchatsession.cpp	(revision 488948)
++++ kopete/protocols/msn/msnchatsession.cpp	(revision 495340)
+@@ -84,7 +84,7 @@
+ 	m_actionNudge=new KAction( i18n( "Send Nudge" ), 0, this, SLOT(slotSendNudge() ), actionCollection(), "msnSendNudge" ) ;
+ 	m_actionNudge->setEnabled(false);
+ #if MSN_WEBCAM
+-	m_actionWebcamReceive=new KAction( i18n( "Invite to Receive User Webcam" ), 0, this, SLOT(slotWebcamReceive() ), actionCollection(), "msnWebcamReceive" ) ;
++	m_actionWebcamReceive=new KAction( i18n( "View Contact's Webcam" ), 0, this, SLOT(slotWebcamReceive() ), actionCollection(), "msnWebcamReceive" ) ;
+ 	m_actionWebcamReceive->setEnabled(false);
+ 	m_actionWebcamSend=new KAction( i18n( "Send Webcam" ), 0, this, SLOT(slotWebcamSend() ), actionCollection(), "msnWebcamSend" ) ;
+ #endif
+@@ -639,7 +639,7 @@
+ {
+ 	// FIXME: When nudge is the first received message, you can't see your own message you send before the others send you a message.
+ 	//        Ok, this is only with chat window style which use "Parse All Message" flag.
+-	QString nudgeBody = i18n( "You have received a nudge!" );
++	QString nudgeBody = i18n( "You have received a nudge." );
+ 	Kopete::Message msg = Kopete::Message(myself(), members(), nudgeBody, Kopete::Message::Internal, Kopete::Message::PlainText );
+ 	appendMessage( msg );
+ 	// Emit the nudge/buzz notification (configured by user).
+--- kopete/protocols/msn/ui/msneditaccountui.ui	(revision 488948)
++++ kopete/protocols/msn/ui/msneditaccountui.ui	(revision 495340)
+@@ -274,7 +274,7 @@
+                                             <string>&lt;qt&gt;&lt;p&gt;Indicate when Kopete will download the display pictures of contacts&lt;/p&gt;
+ &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;
+ &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;
+-&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>
++&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>
+                                         </property>
+                                     </widget>
+                                     <widget class="QComboBox">
+@@ -311,7 +311,7 @@
+                                             <string>&lt;qt&gt;&lt;p&gt;Indicate when Kopete will download the pictures of contacts&lt;/p&gt;
+ &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;
+ &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;
+-&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>
++&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>
+                                         </property>
+                                     </widget>
+                                 </hbox>
+@@ -375,7 +375,7 @@
+                                     <bool>true</bool>
+                                 </property>
+                                 <property name="toolTip" stdset="0">
+-                                    <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>
++                                    <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>
+                                 </property>
+                                 <property name="whatsThis" stdset="0">
+                                     <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>
+@@ -472,7 +472,7 @@
+                                     <cstring>textLabel1_5</cstring>
+                                 </property>
+                                 <property name="text">
+-                                    <string>There is also privacy options in the "Contacts" tab</string>
++                                    <string>There are also privacy options in the "Contacts" tab</string>
+                                 </property>
+                                 <property name="alignment">
+                                     <set>WordBreak|AlignCenter</set>
+@@ -1242,7 +1242,7 @@
+                                             <string>S&amp;pecify a port for incoming webcam connection:</string>
+                                         </property>
+                                         <property name="whatsThis" stdset="0">
+-                                            <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>
++                                            <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>
+                                         </property>
+                                     </widget>
+                                     <widget class="QSpinBox">
+@@ -1262,8 +1262,7 @@
+                                             <number>6891</number>
+                                         </property>
+                                         <property name="whatsThis" stdset="0">
+-                                            <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>
++                                            <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>
+                                         </property>
+                                     </widget>
+                                 </hbox>
+--- kopete/kopete/eventsrc	(revision 488948)
++++ kopete/kopete/eventsrc	(revision 495340)
+@@ -972,6 +972,7 @@
+ Name[fr]=Erreur de connexion
+ Name[ga]=Earráid Naisc
+ Name[gl]=Erro de Conexión
++Name[hu]=Csatlakozási hiba
+ Name[is]=Villa í tengingu
+ Name[it]=Errore di connessione
+ Name[nb]=Koblingsfeil
+@@ -1001,6 +1002,7 @@
+ Comment[eu]=Errore bat gertatu da konexioan
+ Comment[fr]=Une erreur de connexion est apparue
+ Comment[gl]=Ocorreu un erro na conexión
++Comment[hu]=Hiba történt csatlakozás közben
+ Comment[is]=Villa kom upp þegar reynt var að tengjast
+ Comment[it]=Si è verificato un errore di connessione
+ Comment[nb]=Det har oppstått en feil ved tilkobling
+@@ -1033,6 +1035,7 @@
+ Name[eu]=Konexioa galdu da
+ Name[fr]=Connexion perdue
+ Name[gl]=Conexión Perdida
++Name[hu]=A kapcsolat megszakadt
+ Name[is]=Tengingu tapað
+ Name[it]=Connessione chiusa
+ Name[nb]=Tilkobling mistet
+@@ -1050,36 +1053,18 @@
+ Name[uk]=З'єднання втрачено
+ Name[uz]=Уланиш узилди
+ Name[zh_CN]=连接已丢失
+-Comment=The connection have been lost
+-Comment[bg]=Връзката е прекъсната
+-Comment[ca]=S'ha perdut la connexió
+-Comment[cs]=Spojení bylo ztraceno
++Comment=The connection has been lost
+ Comment[da]=Forbindelsen er gået tabt
+-Comment[de]=Die Verbindung wurde unterbrochen
+ Comment[el]=Η σύνδεση έκλεισε
+-Comment[en_GB]=The connection has been lost
+-Comment[es]=La conexión se perdió
++Comment[es]=Se perdió la conexión
+ Comment[et]=Ühendus kadus
+-Comment[eu]=Konexioa galdu da
+ Comment[fr]=La connexion a été perdue
+-Comment[gl]=Perdeuse a conexión
+-Comment[is]=Tengingin tapaðist
+-Comment[it]=La connessione è stata chiusa
+-Comment[nb]=Tilkoblingen er mistet
++Comment[hu]=A kapcsolat megszakadt
+ Comment[nl]=De verbinding is verbroken
+-Comment[nn]=Samband er stengt
+-Comment[pl]=Połączenie zostało stracone
+ Comment[pt]=A ligação foi-se abaixo
+-Comment[pt_BR]=A conexão foi perdida
+-Comment[ru]=Соединение было утеряно
+-Comment[sl]=Povezava je bila prekinjena
+-Comment[sr]=Веза је изгубљена
+-Comment[sr at Latn]=Veza je izgubljena
++Comment[pt_BR]=A ligação foi-se abaixo
+ Comment[sv]=Anslutningen har förlorats
+-Comment[tr]=Bağlantı kesildi
+ Comment[uk]=З'єднання було втрачено
+-Comment[uz]=Ўрнатилган алоқа узилди
+-Comment[zh_CN]=连接已丢失
+ default_presentation=16
+ 
+ [cannot_connect]
+@@ -1096,6 +1081,7 @@
+ Name[fr]=Impossible de se connecter
+ Name[ga]=Ní Féidir Nasc a Dhéanamh
+ Name[gl]=Non se pode conectar
++Name[hu]=Nem sikerült csatlakozni
+ Name[is]=Get ekki tengst
+ Name[it]=Impossibile connettersi
+ Name[nb]=Kan ikke koble til
+@@ -1125,6 +1111,7 @@
+ Comment[eu]=Kopete-k ezin du zerbitzuarekin konektatu
+ Comment[fr]=Kopete ne peut pas se connecter à ce service
+ Comment[gl]=Kopete non pode conectar co servicio
++Comment[hu]=A Kopete nem tudott csatlakozni a szolgáltatóhoz
+ Comment[is]=Kopete gat ekki tengst þjónustunni
+ Comment[it]=Kopete non è in grado di connettersi al servizio
+ Comment[nb]=Kopete kan ikke koble til tjenesten
+@@ -1157,6 +1144,7 @@
+ Name[fr]=Problèmes réseaux
+ Name[ga]=Fadhbanna Líonra
+ Name[gl]=Problemas na rede
++Name[hu]=Hálózati hibák
+ Name[is]=Netvandamál
+ Name[it]=Problemi di rete
+ Name[nb]=Nettverksproblemer
+@@ -1186,6 +1174,7 @@
+ Comment[eu]=Sareak arazoak ditu
+ Comment[fr]=Le réseau rencontre des problèmes
+ Comment[gl]=A rede está experimentando problemas
++Comment[hu]=Hiba lépett fel a hálózaton
+ Comment[is]=Það er vandamál með netið
+ Comment[it]=Ci sono dei problemi di rete
+ Comment[ja]=ネットワークは問題を抱えています
+@@ -1217,6 +1206,7 @@
+ Name[eu]=Zerbitzariaren barne-errorea
+ Name[fr]=Erreur interne du serveur
+ Name[gl]=Erro Interno do Servidor
++Name[hu]=Belső kiszolgálóhiba
+ Name[is]=Innri villa í þjóni
+ Name[it]=Errore interno del server
+ Name[ja]=内部サーバーエラー
+@@ -1234,37 +1224,18 @@
+ Name[tr]=Sunucu İç Hatası
+ Name[uk]=Внутрішня помилка сервера
+ Name[zh_CN]=服务器内部错误
+-Comment=An service internal error has occurred
+-Comment[bg]=Вътрешна грешка на сървъра
+-Comment[ca]=Hi ha hagut un error intern del servei
+-Comment[cs]=Nastala interní chyba na serveru
++Comment=A service internal error has occurred
+ Comment[da]=En intern fejl for tjenesten er opstået
+-Comment[de]=Bei diesem Dienst ist ein interner Serverfehler aufgetreten.
+ Comment[el]=Παρουσιάστηκε ένα εσωτερικό σφάλμα της υπηρεσίας
+-Comment[en_GB]=A service internal error has occurred
+ Comment[es]=Ocurrió un error interno en el servicio
+ Comment[et]=Tekkis teenuse sisemine viga
+-Comment[eu]=Zerbitzuaren barne-errore bat gertatu da
+-Comment[fr]=Une erreur interne du serveur s'est produite
+-Comment[gl]=Ocorreu un erro interno do servicio
+-Comment[is]=Innri villa í þjónustu hefur átt sér stað
+-Comment[it]=Si è verificato un errore interno del servizio
+-Comment[ja]=サービス内部エラーが発生しました
+-Comment[nb]=Det har oppstått en intern feil ved tjenesten
++Comment[fr]=Une erreur interne au service s'est produite
++Comment[hu]=Belső hiba történt a szolgáltatásban
+ Comment[nl]=Er deed zich een interne fout op de server voor
+-Comment[nn]=Det har skjedd ein feil internt i tenesta
+-Comment[pl]=Wystąpił błąd wewnętrzny usługi
+ Comment[pt]=Ocorreu um erro interno do serviço
+ Comment[pt_BR]=Ocorreu um erro interno do serviço
+-Comment[ru]=В службе возникла внутренняя ошибка
+-Comment[sl]=Prišlo je do notranje napake pri storitvi
+-Comment[sr]=Дошло јо до интерне грешке сервера
+-Comment[sr at Latn]=Došlo jo do interne greške servera
+ Comment[sv]=Ett internt fel har inträffat i tjänsten
+-Comment[tr]=Servis İç Hatası meydana geldi
+ Comment[uk]=Трапилась внутрішня помилка служби
+-Comment[uz]=Хизматда ички хато рўй берди
+-Comment[zh_CN]=发生了服务内部错误
+ default_presentation=2
+ 
+ [buzz_nudge]
+@@ -1278,6 +1249,7 @@
+ Name[et]=Mõmin/müks
+ Name[eu]=Burrumbada/Ukondokada
+ Name[fr]=Vibration
++Name[hu]=Figyelemfelhívó
+ Name[is]=Ýta við
+ Name[it]=Buzz/Trillo
+ Name[pl]=Pobudka/kuksaniec
+@@ -1300,6 +1272,7 @@
+ Comment[et]=Kontakt müksas sind.
+ Comment[eu]=Kontaktu batek burrumbada/ukondokada bat bidali dizu.
+ Comment[fr]=Un contact vous a envoyé une vibration.
++Comment[hu]=Egy partner figyelemfelhívó üzenetet küldött.
+ Comment[is]=Notandi hefur ýtt við þér.
+ Comment[it]=Un contatto ti ha inviato un buzz/trillo.
+ Comment[nb]=En kontakt har sendt deg en buzz/nudge
+--- kopete/kopete/config/appearance/appearanceconfig_emoticons.ui	(revision 488948)
++++ kopete/kopete/config/appearance/appearanceconfig_emoticons.ui	(revision 495340)
+@@ -41,7 +41,7 @@
+                 <bool>true</bool>
+             </property>
+             <property name="whatsThis" stdset="0">
+-                <string>If this is checked, only emoticon that are separated from the text with spaces will be shown as image</string>
++                <string>If this is checked, only emoticons that are separated from the text by spaces will be shown as images.</string>
+             </property>
+         </widget>
+         <widget class="QLabel">
+@@ -106,7 +106,7 @@
+                         <string>&amp;Get New Themes...</string>
+                     </property>
+                     <property name="whatsThis" stdset="0">
+-                        <string>Download emoticon theme on internet</string>
++                        <string>Download emoticon theme from the Internet</string>
+                     </property>
+                 </widget>
+                 <widget class="QPushButton">
+--- kopete/kopete/config/appearance/appearanceconfig.cpp	(revision 488948)
++++ kopete/kopete/config/appearance/appearanceconfig.cpp	(revision 495340)
+@@ -707,7 +707,7 @@
+ 			"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ 			"<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">\n"
+ 			"<xsl:output method=\"html\"/>\n"
+-			"<xsl:template match=\"message\">\n\n\n\n</xsl:template>\n</xsl:stylesheet>"  ) );
++			"<xsl:template match=\"message\">\n\n\n\n</xsl:template>\n</xsl:stylesheet>"  ) )
+ 	{
+ 		KRun::runURL( KURL(locateLocal("appdata", QString::fromLatin1("styles/%1.xsl").arg( styleName ) )) , "text/plain");
+ 		currentStyle = QString::null; //force to update preview;
+--- kopete/kopete/config/behavior/behaviorconfig_events.ui	(revision 488948)
++++ kopete/kopete/config/behavior/behaviorconfig_events.ui	(revision 495340)
+@@ -83,7 +83,7 @@
+                                 <string>Left mouse click on flashing system tray opens message instead of restoring/minimizing contact list</string>
+                             </property>
+                             <property name="whatsThis" stdset="0">
+-                                <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>
++                                <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>
+                             </property>
+                         </widget>
+                     </hbox>
+@@ -226,7 +226,7 @@
+                         <string>Switch to the desktop which contains the chat window for the sender when opening his/her message</string>
+                     </property>
+                     <property name="whatsThis" stdset="0">
+-                        <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>
++                        <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>
+                     </property>
+                 </widget>
+                 <widget class="QCheckBox">
+--- kopete/kopete/config/behavior/behaviorconfig_general.ui	(revision 488948)
++++ kopete/kopete/config/behavior/behaviorconfig_general.ui	(revision 495340)
+@@ -85,7 +85,7 @@
+                         <string>Use a message queue instead of instantly opening a chat window on incoming messages</string>
+                     </property>
+                     <property name="whatsThis" stdset="0">
+-                        <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>
++                        <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>
+                     </property>
+                 </widget>
+                 <widget class="QLayoutWidget">
+@@ -127,7 +127,7 @@
+                                 <string>Also add unread messages to queue</string>
+                             </property>
+                             <property name="whatsThis" stdset="0">
+-                                <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>
++                                <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>
+                             </property>
+                         </widget>
+                     </hbox>
+--- kopete/kopete/config/avdevice/kopete_avdeviceconfig.desktop	(revision 488948)
++++ kopete/kopete/config/avdevice/kopete_avdeviceconfig.desktop	(revision 495340)
+@@ -26,6 +26,7 @@
+ Name[fr]=Périphériques
+ Name[ga]=Gléasanna
+ Name[gl]=Dispositivos
++Name[hu]=Eszközök
+ Name[id]=Divais
+ Name[is]=Tæki
+ Name[it]=Periferiche
+@@ -65,6 +66,7 @@
+ Comment[eu]=Hemen Kopete-ren bideo eta audio ezarpenak ezar ditzakezu
+ Comment[fr]=Vous pouvez modifier ici la configuration des périphériques audio et vidéo de Kopete
+ Comment[gl]=Aquí podes modificar as opcións dos dispositivos de video e audio de Kopete
++Comment[hu]=Itt lehet módosítani a Kopete video- és hangbeállításait
+ Comment[is]=Hér getur þú breytt vídeó- og hljóðtæki stillingum Kopete
+ Comment[it]=Qui puoi modificare le impostazioni audio e video di Kopete
+ Comment[nb]=Her kan du endre innstillinger for lyd og bilde i Kopete
+--- kopete/kopete/config/identity/kopeteidentityconfig.cpp	(revision 488948)
++++ kopete/kopete/config/identity/kopeteidentityconfig.cpp	(revision 495340)
+@@ -147,8 +147,6 @@
+ 	connect(d->m_view->lineNickname, SIGNAL(textChanged(const QString& )), this, SLOT(slotSettingsChanged()));
+ 	connect(d->m_view->comboNameContact, SIGNAL(activated(int )), this, SLOT(slotSettingsChanged()));
+ 	connect(d->m_view->comboPhotoContact, SIGNAL(activated(int )), this, SLOT(slotEnableAndDisableWidgets()));
+-
+-	connect(this, SIGNAL(changed(bool)), this, SLOT(slotSettingsChanged()));
+ }
+ 
+ KopeteIdentityConfig::~KopeteIdentityConfig()
+--- kopete/kopete/config/identity/kopete_identityconfig.desktop	(revision 488948)
++++ kopete/kopete/config/identity/kopete_identityconfig.desktop	(revision 495340)
+@@ -25,6 +25,7 @@
+ Name[fr]=Identité
+ Name[ga]=Aitheantas
+ Name[gl]=Indentidade
++Name[hu]=Azonosító
+ Name[is]=Auðkenni
+ Name[it]=Identità
+ Name[lt]=Tapatybė
+@@ -56,6 +57,7 @@
+ Comment[fr]=Vous pouvez gérer ici votre identité principale
+ Comment[ga]=Tig Leat d'Aitheantas a Láimhseáil Anseo
+ Comment[gl]=Aquí podes xestionar a súa identidade global
++Comment[hu]=Itt lehet kezelni a globális azonosítókat
+ Comment[is]=Hér geturðu haldið utan um víðværa auðkennið þitt
+ Comment[it]=Qui puoi gestire la tua identità globale
+ Comment[nb]=Her kan du behandle din globale identitet
+--- kopete/kopete/chatwindow/chatview.cpp	(revision 488948)
++++ kopete/kopete/chatwindow/chatview.cpp	(revision 495340)
+@@ -884,7 +884,7 @@
+ 	{
+ 		Kopete::ContactPtrList members = m_manager->members();
+ 		Kopete::Contact *contact = members.first();
+-		if ( contact && contact->canAcceptFiles() );
++		if ( contact && contact->canAcceptFiles() )
+ 			event->accept();
+ 	}
+ 	else
+--- kopete/kopete/chatwindow/emoticonselector.cpp	(revision 488948)
++++ kopete/kopete/chatwindow/emoticonselector.cpp	(revision 495340)
+@@ -47,7 +47,7 @@
+     // Some of the custom icons are rather large
+     // so lets limit them to a maximum size for this display panel
+     //
+-    if (p.width() > 32 or p.height() > 32)
++    if (p.width() > 32 || p.height() > 32)
+         p.resize(32, 32);
+ 	setMinimumSize(p.size());
+ }
+--- kopete/kopete/kopeteeditglobalidentitywidget.cpp	(revision 488948)
++++ kopete/kopete/kopeteeditglobalidentitywidget.cpp	(revision 495340)
+@@ -98,8 +98,9 @@
+ 	// Update the picture (change the size of it)
+ 	d->iconSize = size;
+ 	d->labelPicture->setMinimumSize(QSize(d->iconSize, d->iconSize));
+-	d->labelPicture->setMaximumSize(QSize(d->iconSize, d->iconSize));	
+-	d->labelPicture->setPixmap(QPixmap(d->myself->photo().smoothScale(d->iconSize, d->iconSize, QImage::ScaleMin)));
++	d->labelPicture->setMaximumSize(QSize(d->iconSize, d->iconSize));
++	if( !d->myself->photo().isNull() )
++		d->labelPicture->setPixmap(QPixmap(d->myself->photo().smoothScale(d->iconSize, d->iconSize, QImage::ScaleMin)));
+ }
+ 
+ void KopeteEditGlobalIdentityWidget::iconSizeChanged()
+@@ -112,8 +113,9 @@
+ 		// Update the picture (change the size of it)
+ 		d->iconSize = tb->iconSize();
+ 		d->labelPicture->setMinimumSize(QSize(d->iconSize, d->iconSize));
+-		d->labelPicture->setMaximumSize(QSize(d->iconSize, d->iconSize));	
+-		d->labelPicture->setPixmap(QPixmap(d->myself->photo().smoothScale(d->iconSize, d->iconSize, QImage::ScaleMin)));
++		d->labelPicture->setMaximumSize(QSize(d->iconSize, d->iconSize));
++		if( !d->myself->photo().isNull() )	
++			d->labelPicture->setPixmap(QPixmap(d->myself->photo().smoothScale(d->iconSize, d->iconSize, QImage::ScaleMin)));
+ 	}
+ }
+ 
+@@ -145,8 +147,11 @@
+ 	if(key == Kopete::Global::Properties::self()->photo().key())
+ 	{
+ 		// Update the picture and the tooltip
+-		d->labelPicture->setPixmap(QPixmap(d->myself->photo().smoothScale(d->iconSize, d->iconSize, QImage::ScaleMin)));
+-		QToolTip::add(d->labelPicture, "<qt><img src=\""+ value.toString() +"\"></qt>");
++		if( !d->myself->photo().isNull() )
++		{
++			d->labelPicture->setPixmap(QPixmap(d->myself->photo().smoothScale(d->iconSize, d->iconSize, QImage::ScaleMin)));
++			QToolTip::add(d->labelPicture, "<qt><img src=\""+ value.toString() +"\"></qt>");
++		}
+ 	}
+ 	else if(key == Kopete::Global::Properties::self()->nickName().key())
+ 	{
+--- kopete/configure.in.in	(revision 488948)
++++ kopete/configure.in.in	(revision 495340)
+@@ -16,7 +16,8 @@
+ 
+ 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'
+ 
+-AC_ARG_ENABLE(smpppd, [  --enable-smpppd       enable support for smpppd],
++AC_ARG_ENABLE(smpppd,
++[AC_HELP_STRING([--enable-smpppd], [enable support for the SuSE Meta PPP Daemon (smpppd) (default is NO)])],
+ [
+   if test $enableval = yes; then
+     AC_DEFINE(USE_SMPPPD, 1, [enable support for the smpppd])
+--- kopete/libkopete/kopeteutils.cpp	(revision 488948)
++++ kopete/libkopete/kopeteutils.cpp	(revision 495340)
+@@ -36,12 +36,12 @@
+ #include "kopeteuiglobal.h"
+ 
+ static const QString notifyConnectionLost_DefaultMessage = i18n("You have been disconnected.");
+-static const QString notifyConnectionLost_DefaultCaption = i18n("Connection Lost.");
+-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.");
++static const QString notifyConnectionLost_DefaultCaption = i18n("Connection Lost");
++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.");
+ 
+ static const QString notifyCannotConnect_DefaultMessage = i18n("Can't connect with the instant messaging server or peers.");
+ static const QString notifyCannotConnect_DefaultCaption = i18n("Can't connect.");
+-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.");
++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.");
+ 
+ namespace Kopete
+ {
+--- kopete/libkopete/kopetechatsession.cpp	(revision 488948)
++++ kopete/libkopete/kopetechatsession.cpp	(revision 495340)
+@@ -261,7 +261,7 @@
+ 
+ void Kopete::ChatSession::emitNudgeNotification()
+ {
+-	KNotification::event( QString::fromLatin1("buzz_nudge"), i18n("A contact send you a buzz/nudge.!") );
++	KNotification::event( QString::fromLatin1("buzz_nudge"), i18n("A contact sent you a buzz/nudge.") );
+ }
+ 
+ void Kopete::ChatSession::appendMessage( Kopete::Message &msg )
+--- kopete/libkopete/kopetecontactlist.cpp	(revision 488948)
++++ kopete/libkopete/kopetecontactlist.cpp	(revision 495340)
+@@ -299,12 +299,8 @@
+ 
+ void ContactList::loadGlobalIdentity()
+ {
+-	bool useGlobalIdentity;
+-
+-	useGlobalIdentity = Kopete::Config::enableGlobalIdentity();
+- 
+  	// Apply the global identity
+-	if(useGlobalIdentity)
++	if(Kopete::Config::enableGlobalIdentity())
+  	{
+ 		connect(myself(), SIGNAL(displayNameChanged(const QString&, const QString&)), this, SLOT(slotDisplayNameChanged()));
+ 		connect(myself(), SIGNAL(photoChanged()), this, SLOT(slotPhotoChanged()));
+@@ -447,7 +443,8 @@
+ 				Kopete::ContactList::self()->addGroup( group );
+ 			}
+ 		}
+-		else if( element.tagName() == QString::fromLatin1("myself-meta-contact") )
++		// Only load myself metacontact information when Global Identity is enabled.
++		else if( element.tagName() == QString::fromLatin1("myself-meta-contact") && Kopete::Config::enableGlobalIdentity() )
+ 		{
+ 			if( !myself()->fromXML( element ) )
+ 			{
+@@ -901,9 +898,12 @@
+ 			doc.documentElement().appendChild( doc.importNode( m->toXML(), true ) );
+ 
+ 	// Save myself metacontact information
+-	QDomElement myselfElement = myself()->toXML(true); // Save minimal information.
+-	myselfElement.setTagName( QString::fromLatin1("myself-meta-contact") );
+-	doc.documentElement().appendChild( doc.importNode( myselfElement, true ) );
++	if( Kopete::Config::enableGlobalIdentity() )
++	{
++		QDomElement myselfElement = myself()->toXML(true); // Save minimal information.
++		myselfElement.setTagName( QString::fromLatin1("myself-meta-contact") );
++		doc.documentElement().appendChild( doc.importNode( myselfElement, true ) );
++	}
+ 
+ 	return doc;
+ }
+--- kopete/libkopete/kopetemetacontact.cpp	(revision 488948)
++++ kopete/libkopete/kopetemetacontact.cpp	(revision 495340)
+@@ -193,12 +193,6 @@
+ 	}
+ 	else
+ 	{
+-		// if the contact was a source of property data, clean
+-		if (displayNameSourceContact() == c)
+-			setDisplayNameSourceContact(0L);
+-		if (photoSourceContact() == c)
+-			setPhotoSourceContact(0L);
+-
+ 		// must check before removing, or will always be false
+ 		bool wasTrackingName = ( !displayNameSourceContact() && (displayNameSource() == SourceContact) );
+ 		bool wasTrackingPhoto = ( !photoSourceContact() && (photoSource() == SourceContact) );
+@@ -206,7 +200,14 @@
+ 		QString currDisplayName = displayName();
+ 
+ 		d->contacts.remove( c );
++		
++		// if the contact was a source of property data, clean
++		if (displayNameSourceContact() == c)
++			setDisplayNameSourceContact(0L);
++		if (photoSourceContact() == c)
++			setPhotoSourceContact(0L);
+ 
++
+ 		if ( wasTrackingName )
+ 		{
+ 			// Oh! this contact was the source for the metacontact's name
+@@ -611,10 +612,22 @@
+ 	}
+ 	else if ( source == SourceContact )
+ 	{
++		if ( d->displayNameSourceContact==0 )
++		{
++			if( d->contacts.count() >= 1 )
++			{// don't call setDisplayNameSource , or there will probably be an infinite loop
++				d->displayNameSourceContact=d->contacts.first();
++//				kdDebug( 14010 ) << k_funcinfo << " setting displayname source for " << metaContactId()  << endl;
++			}
++		}
+ 		if ( displayNameSourceContact() != 0L )
+ 		{
+ 			return nameFromContact(displayNameSourceContact());
+ 		}
++		else
++		{
++//			kdDebug( 14010 ) << k_funcinfo << " source == SourceContact , but there is no displayNameSourceContact for contact " << metaContactId() << endl;
++		}
+ 	}
+ 	return d->displayName;
+ }
+@@ -942,7 +955,6 @@
+ 	// set contact source metadata
+ 	if (displayNameSourceContact())
+ 	{
+-		//kdDebug(14010) << k_funcinfo << "serializing name source " << nameFromContact(displayNameSourceContact()) << endl;
+ 		QDomElement contactNameSource = metaContact.createElement( QString::fromUtf8("contact-source") );
+ 		contactNameSource.setAttribute( NSCID_ELEM, displayNameSourceContact()->contactId() );
+ 		contactNameSource.setAttribute( NSPID_ELEM, displayNameSourceContact()->protocol()->pluginId() );
+--- kopete/libkopete/kopeteawayaction.h	(revision 488948)
++++ kopete/libkopete/kopeteawayaction.h	(revision 495340)
+@@ -61,6 +61,11 @@
+ 				   const KShortcut &cut, const QObject *receiver, const char *slot,
+ 				   QObject *parent, const char *name = 0);
+ 
++		/**
++	 	 * Destructor.
++	 	 */
++		~AwayAction();
++
+ 	signals:
+ 		/**
+ 		* @brief Emits when the user selects an away message
+--- kopete/libkopete/kopeteaccount.cpp	(revision 488948)
++++ kopete/libkopete/kopeteaccount.cpp	(revision 495340)
+@@ -123,7 +123,7 @@
+ 	}
+ 	if(reason== OtherClient)
+ 	{
+-		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."));
++		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."));
+ 	}
+ }
+ 
+--- kopete/libkopete/kopeteawayaction.cpp	(revision 488948)
++++ kopete/libkopete/kopeteawayaction.cpp	(revision 495340)
+@@ -68,6 +68,11 @@
+ 	slotAwayChanged();
+ }
+ 
++AwayAction::~AwayAction()
++{
++	delete d;
++}
++
+ void AwayAction::slotAwayChanged()
+ {
+ 	QStringList awayMessages = Kopete::Away::getInstance()->getMessages();
+--- kopete/libkopete/ui/kopetefileconfirmdialog.cpp	(revision 488948)
++++ kopete/libkopete/ui/kopetefileconfirmdialog.cpp	(revision 495340)
+@@ -42,7 +42,7 @@
+ 	m_view=new FileConfirmBase(this, "FileConfirmView");
+ 	m_view->m_from->setText( info.contact()->metaContact()->displayName() + QString::fromLatin1( " <" ) +
+ 			info.contact()->contactId() + QString::fromLatin1( "> " ) );
+-	m_view->m_size->setText( KGlobal::locale()->formatNumber( long( info.size() ) ) );
++	m_view->m_size->setText( KGlobal::locale()->formatNumber( long( info.size() ), 0 ) );
+ 	m_view->m_description->setText( description );
+ 	m_view->m_filename->setText( info.file() );
+ 	
+@@ -52,7 +52,7 @@
+ 
+ 	setMainWidget(m_view);
+ 
+-	connect(m_view->cmdBrowse, SIGNAL(pressed()), this, SLOT(slotBrowsePressed()));
++	connect(m_view->cmdBrowse, SIGNAL(clicked()), this, SLOT(slotBrowsePressed()));
+ }
+ 
+ KopeteFileConfirmDialog::~KopeteFileConfirmDialog()
+--- kopete/libkopete/ui/kopetelistviewitem.cpp	(revision 488948)
++++ kopete/libkopete/ui/kopetelistviewitem.cpp	(revision 495340)
+@@ -647,6 +647,7 @@
+ 
+ DisplayNameComponent::~DisplayNameComponent()
+ {
++	delete d;
+ }
+ 
+ void DisplayNameComponent::layout( const QRect &rect )
+--- knewsticker/knewsticker-standalone.desktop	(revision 488948)
++++ knewsticker/knewsticker-standalone.desktop	(revision 495340)
+@@ -45,7 +45,7 @@
+ GenericName[he]=צג חדשות
+ GenericName[hi]=न्यूज टिकर
+ GenericName[hr]=Ticker sa novostima
+-GenericName[hu]=RSS hírmegjelenítő
++GenericName[hu]=RSS hírbejelentő
+ GenericName[id]=Ticker Berita
+ GenericName[is]=Fréttastrimill
+ GenericName[it]=Ticker notizie
+--- knewsticker/knewsticker.desktop	(revision 488948)
++++ knewsticker/knewsticker.desktop	(revision 495340)
+@@ -55,6 +55,7 @@
+ Comment[eu]=RDF berri-markatzailea
+ Comment[fr]=Défilement de nouvelles RDF
+ Comment[gl]=Un visor de novas RDF deslizante
++Comment[hu]=Hírbejelentő RSS hírforrásokhoz
+ Comment[is]=Skrunandi RDF fréttastrimill
+ Comment[it]=Un ticker notizie RDF a scorrimento
+ Comment[nb]=En rullende RDF nyhetstelegraf
+--- kget/kget_download.desktop	(revision 488948)
++++ kget/kget_download.desktop	(revision 495340)
+@@ -21,6 +21,7 @@
+ Name[fr]=Télécharger avec KGet
+ Name[ga]=Íosluchtaigh le KGet
+ Name[gl]=Descargar con KGet
++Name[hu]=Letöltés a KGettel
+ Name[is]=Sækja með KGet
+ Name[it]=Scarica con KGet
+ Name[ja]=KGetでダウンロード
+--- kget/main.cpp	(revision 488948)
++++ kget/main.cpp	(revision 495340)
+@@ -165,10 +165,21 @@
+                 kmain->addTransferEx( KURL::fromPathOrURL( txt ),
+                                       KURL());
+         }
+-        else if(args->count()==2)
+-            kmain->addTransferEx( KURL::fromPathOrURL( args->arg(0) ),
+-                                  KURL::fromPathOrURL( args->arg(1) ));
+-
++        else if(args->count()>=2)
++		{
++			KURL::List urls;
++			QString dest;
++			for( int i=0; i < args->count(); ++i){
++				urls.append(KURL::fromPathOrURL( args->arg(i)));
++			}
++			if ( args->count()==2 & urls.last().protocol() == "file" )
++			{
++				dest=urls.last().path();
++				kmain->addTransferEx( urls.first(), dest );
++			}
++			else
++				kmain->addTransfers( urls, dest );
++		}
+         args->clear();
+ 
+ #ifdef _DEBUG
+--- kget/eventsrc	(revision 488948)
++++ kget/eventsrc	(revision 495340)
+@@ -14,6 +14,7 @@
+ Name[eu]=DeskargaGehituta
+ Name[fr]=Transfert ajouté
+ Name[gl]=TransferenciaEngadida
++Name[hu]=ÁtvittHozzáadva
+ Name[is]=Færslu bætt við
+ Name[it]=Aggiunto trasferimento
+ Name[nl]=OverdrachtToegevoegd
+@@ -38,6 +39,7 @@
+ Comment[eu]=Deskarga berri bat gehitu da
+ Comment[fr]=Un nouveau téléchargement a été ajouté
+ Comment[gl]=Engadiuse unha nova descarga
++Comment[hu]=Új letöltés lett megadva
+ Comment[is]=Nýju niðurhali hefur verið bætt við
+ Comment[it]=È stato aggiunto un nuovo scaricamento
+ Comment[nb]=En ny nedlasting er lagt til
+@@ -68,6 +70,7 @@
+ Name[eu]=DeskargaHasita
+ Name[fr]=Téléchargement démarré
+ Name[gl]=DescargaComezada
++Name[hu]=LetöltésKezdődött
+ Name[is]=Niðurhal sett í gang
+ Name[it]=Scaricamento avviato
+ Name[nb]=NedlastingStartet
+@@ -93,6 +96,7 @@
+ Comment[eu]=Deskarga hasi da
+ Comment[fr]=Téléchargement démarré
+ Comment[gl]=Comezou a descarga
++Comment[hu]=Letöltés kezdődött
+ Comment[is]=Byrjað á niðurhali
+ Comment[it]=Scaricamento avviato
+ Comment[nb]=Nedlasting startet
+@@ -124,6 +128,7 @@
+ Name[eu]=DeskargaAmaituta
+ Name[fr]=Téléchargement terminé
+ Name[gl]=DescargaRematada
++Name[hu]=LetöltésBefejezve
+ Name[is]=Niðurhali lokið
+ Name[it]=Scaricamento completato
+ Name[nb]=NedlastingFerdig
+@@ -151,6 +156,7 @@
+ Comment[eu]=Deskarga amaitu da
+ Comment[fr]=Téléchargement terminé
+ Comment[gl]=Rematou a descarga
++Comment[hu]=Egy letöltés befejeződött
+ Comment[is]=Niðurhali lokið
+ Comment[it]=Scaricamento completato
+ Comment[nb]=Nedlasting ferdig
+@@ -181,6 +187,7 @@
+ Name[et]=Kõik allalaadimised lõpetatud
+ Name[eu]=GehituDeskargakAmaituta
+ Name[fr]=Téléchargements ajoutés terminés
++Name[hu]=FelvettLetöltésBefejeződött
+ Name[is]=Lokið að bæta við niðurhölum
+ Name[it]=Aggiunti scaricamenti completati
+ Name[ja]=ダウンロード追加完了
+@@ -206,6 +213,7 @@
+ Comment[eu]=Deskarga guztiak amaituta
+ Comment[fr]=Tous les téléchargements sont terminés
+ Comment[gl]=Tódalas descargar están rematadas
++Comment[hu]=Minden letöltés befejeződött
+ Comment[is]=Öllum niðurhölum lokið
+ Comment[it]=Tutti gli scaricamenti completati
+ Comment[nb]=Alle nedlastinger ferdig
+--- filesharing/advanced/kcm_sambaconf/kcmsambaconf.desktop	(revision 488948)
++++ filesharing/advanced/kcm_sambaconf/kcmsambaconf.desktop	(revision 495340)
+@@ -27,6 +27,7 @@
+ Comment[eu]=Microsoft Windows-en partekatzeak konfiguratzeko modulu bat
+ Comment[fr]=Un module permettant de configurer les partages Microsoft Windows
+ Comment[gl]=Un módulo para configurar comparticións con Microsoft Windows
++Comment[hu]=Beállítómodul Microsoft Windows-os megosztásokhoz
+ Comment[is]=Eining til að stilla sameignir fyrir Microsoft Windows
+ Comment[it]=Un modulo per configurare le condivisioni per Microsoft Windows
+ Comment[ja]=Microsoft Windowsとの共有設定
+@@ -54,6 +55,7 @@
+ Keywords[fr]=KcmSambaConf,kcmsambaconf,samba,windows,partage
+ Keywords[gl]=KcmSambaConf,kcmsambaconf,samba,widows,compartir
+ Keywords[he]=KcmSambaConf,kcmsambaconf,samba,windows,share, סמבה, חלונות, שיתוף, שיתופי חלונות
++Keywords[hu]=KcmSambaConf,kcmsambaconf,samba,windows,megosztás
+ Keywords[is]=KcmSambaConf,kcmsambaconf,samba,windows,sameign
+ Keywords[it]=KcmSambaConf,kcmsambaconf,samba,windows,condivisione
+ Keywords[nb]=KcmSambaConf,kcmsambaconf,samba,windows,delt,ressurs
+--- wifi/kcmwifi/configcrypto.ui	(revision 488948)
++++ wifi/kcmwifi/configcrypto.ui	(revision 495340)
+@@ -95,7 +95,7 @@
+                         </sizepolicy>
+                     </property>
+                     <property name="text">
+-                        <string>&lt;font color="#ff0000"&gt;unrecognised&lt;/font&gt;</string>
++                        <string>&lt;font color="#ff0000"&gt;unrecognized&lt;/font&gt;</string>
+                     </property>
+                     <property name="textFormat">
+                         <enum>RichText</enum>
+--- ksirc/eventsrc	(revision 488948)
++++ ksirc/eventsrc	(revision 495340)
+@@ -245,6 +245,7 @@
+ Name[fr]=Bip reçu
+ Name[ga]=Fuarthas bíp
+ Name[gl]=Recibiuse unha badalada
++Name[hu]=Csipogás érkezett
+ Name[is]=Hljóðmerki móttekið
+ Name[it]=Ricevuto un bip
+ Name[nb]=Tut mottat
+@@ -273,6 +274,7 @@
+ Comment[eu]=Bip bat jaso da zerbitzaritik
+ Comment[fr]=Un bip a été reçu du serveur
+ Comment[gl]=Recibiuse unha badalada dende o servidor
++Comment[hu]=Csipogás érkezett a kiszolgálóról
+ Comment[is]=Hljóðmerki hefur verið móttekið frá þjóninum
+ Comment[it]=È stato ricevuto un bip dal server
+ Comment[nb]=Et tut er mottatt fra tjeneren
+--- dcoprss/rssservice.desktop	(revision 488948)
++++ dcoprss/rssservice.desktop	(revision 495340)
+@@ -34,7 +34,7 @@
+ Comment[de]=RSS DCOP-Dienste
+ Comment[el]=Υπηρεσίες RSS DCOP
+ Comment[es]=Servicios RSS de dcop
+-Comment[et]=RSS DCOP teenused
++Comment[et]=RSS DCOP-teenused
+ Comment[eu]=RSS DCOP zerbitzuak
+ Comment[fi]=RSS-DCOP-palvelut
+ Comment[fr]=Services DCOP RSS




More information about the pkg-kde-commits mailing list