rev 8050 - in branches/kde4/packages/kdenetwork/debian: . patches

Ana Beatriz Guerrero López ana at alioth.debian.org
Thu Nov 22 21:50:09 UTC 2007


Author: ana
Date: 2007-11-22 21:50:09 +0000 (Thu, 22 Nov 2007)
New Revision: 8050

Added:
   branches/kde4/packages/kdenetwork/debian/patches/
   branches/kde4/packages/kdenetwork/debian/patches/01_kdenetwork_branch_r740225.diff
   branches/kde4/packages/kdenetwork/debian/patches/series
Log:
pull branch for kdenetwork (only way to get it building)


Added: branches/kde4/packages/kdenetwork/debian/patches/01_kdenetwork_branch_r740225.diff
===================================================================
--- branches/kde4/packages/kdenetwork/debian/patches/01_kdenetwork_branch_r740225.diff	                        (rev 0)
+++ branches/kde4/packages/kdenetwork/debian/patches/01_kdenetwork_branch_r740225.diff	2007-11-22 21:50:09 UTC (rev 8050)
@@ -0,0 +1,11644 @@
+--- krdc/hostpreferences.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ krdc/hostpreferences.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -119,7 +119,7 @@
+ 
+     QFile file(m_filename);
+     if (!file.open(QFile::WriteOnly | QFile::Text)) {
+-        kWarning(5010) << "Cannot write " << m_filename << ". " << file.errorString() << endl;
++        kWarning(5010) << "Cannot write " << m_filename << ". " << file.errorString();
+         return false;
+     }
+ 
+@@ -195,7 +195,10 @@
+     KTitleWidget *titleWidget = new KTitleWidget(dialog);
+     titleWidget->setText(i18n("Host Configuration"));
+     titleWidget->setPixmap(KIcon("krdc"));
++    layout->addWidget(titleWidget);
+ 
++    layout->addWidget(widget);
++
+     showAgainCheckBox = new QCheckBox(mainWidget);
+     showAgainCheckBox->setText(i18n("Show this dialog again for this host"));
+     showAgainCheckBox->setChecked(showConfigAgain());
+@@ -204,8 +207,6 @@
+     walletSupportCheckBox->setText(i18n("Remember password (KWallet)"));
+     walletSupportCheckBox->setChecked(walletSupport());
+ 
+-    layout->addWidget(titleWidget);
+-    layout->addWidget(widget);
+     layout->addWidget(showAgainCheckBox);
+     layout->addWidget(walletSupportCheckBox);
+     layout->addStretch(1);
+--- krdc/rdp/rdppreferences.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ krdc/rdp/rdppreferences.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,27 @@
+ <ui version="4.0" >
+  <class>RdpPreferences</class>
+  <widget class="QWidget" name="RdpPreferences" >
++  <property name="geometry" >
++   <rect>
++    <x>0</x>
++    <y>0</y>
++    <width>446</width>
++    <height>282</height>
++   </rect>
++  </property>
+   <layout class="QVBoxLayout" >
++   <property name="leftMargin" >
++    <number>0</number>
++   </property>
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
+    <item>
+     <widget class="QGroupBox" name="connectionGroupBox" >
+      <property name="title" >
+@@ -9,16 +29,23 @@
+      </property>
+      <layout class="QGridLayout" >
+       <item row="0" column="0" >
+-       <widget class="QLabel" name="resolutionLabel" >
+-        <property name="text" >
+-         <string>Desktop &amp;resolution:</string>
+-        </property>
+-        <property name="buddy" >
+-         <cstring>resolutionComboBox</cstring>
+-        </property>
+-       </widget>
++       <layout class="QVBoxLayout" >
++        <item>
++         <widget class="QLabel" name="resolutionLabel" >
++          <property name="text" >
++           <string>Desktop &amp;resolution:</string>
++          </property>
++          <property name="buddy" >
++           <cstring>resolutionComboBox</cstring>
++          </property>
++         </widget>
++        </item>
++        <item>
++         <widget class="QLabel" name="resolutionDummyLabel" />
++        </item>
++       </layout>
+       </item>
+-      <item rowspan="2" row="0" column="1" >
++      <item row="0" column="1" >
+        <layout class="QVBoxLayout" >
+         <item>
+          <widget class="QComboBox" name="resolutionComboBox" >
+@@ -142,32 +169,16 @@
+        </layout>
+       </item>
+       <item row="1" column="0" >
+-       <spacer>
+-        <property name="orientation" >
+-         <enum>Qt::Horizontal</enum>
+-        </property>
+-        <property name="sizeType" >
+-         <enum>QSizePolicy::Expanding</enum>
+-        </property>
+-        <property name="sizeHint" >
+-         <size>
+-          <width>70</width>
+-          <height>0</height>
+-         </size>
+-        </property>
+-       </spacer>
+-      </item>
+-      <item row="2" column="0" >
+        <widget class="QLabel" name="colorDepthLabel" >
+         <property name="text" >
+          <string>Color &amp;depth:</string>
+         </property>
+         <property name="buddy" >
+-         <cstring>kcfg_KeyboardLayout</cstring>
++         <cstring>kcfg_ColorDepth</cstring>
+         </property>
+        </widget>
+       </item>
+-      <item row="2" column="1" >
++      <item row="1" column="1" >
+        <widget class="QComboBox" name="kcfg_ColorDepth" >
+         <property name="minimumSize" >
+          <size>
+@@ -192,7 +203,7 @@
+         </item>
+        </widget>
+       </item>
+-      <item row="3" column="0" >
++      <item row="2" column="0" >
+        <widget class="QLabel" name="layoutLabel" >
+         <property name="text" >
+          <string>&amp;Keyboard layout:</string>
+@@ -202,7 +213,7 @@
+         </property>
+        </widget>
+       </item>
+-      <item row="3" column="1" >
++      <item row="2" column="1" >
+        <widget class="QComboBox" name="kcfg_KeyboardLayout" >
+         <property name="minimumSize" >
+          <size>
+@@ -403,7 +414,17 @@
+         </item>
+        </widget>
+       </item>
+-      <item row="4" column="1" >
++      <item row="3" column="0" >
++       <widget class="QLabel" name="soudLabel" >
++        <property name="text" >
++         <string>Sound:</string>
++        </property>
++        <property name="buddy" >
++         <cstring>kcfg_Sound</cstring>
++        </property>
++       </widget>
++      </item>
++      <item row="3" column="1" >
+        <widget class="QComboBox" name="kcfg_Sound" >
+         <item>
+          <property name="text" >
+@@ -422,13 +443,6 @@
+         </item>
+        </widget>
+       </item>
+-      <item row="4" column="0" >
+-       <widget class="QLabel" name="soudLabel" >
+-        <property name="text" >
+-         <string>Sound:</string>
+-        </property>
+-       </widget>
+-      </item>
+      </layout>
+     </widget>
+    </item>
+@@ -449,6 +463,9 @@
+         <property name="text" >
+          <string>Extra options:</string>
+         </property>
++        <property name="buddy" >
++         <cstring>kcfg_ExtraOptions</cstring>
++        </property>
+        </widget>
+       </item>
+       <item row="0" column="1" >
+@@ -477,7 +494,7 @@
+      </property>
+      <property name="sizeHint" >
+       <size>
+-       <width>20</width>
++       <width>428</width>
+        <height>16</height>
+       </size>
+      </property>
+--- krdc/vnc/vncpreferences.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ krdc/vnc/vncpreferences.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,27 @@
+ <ui version="4.0" >
+  <class>VncPreferences</class>
+  <widget class="QWidget" name="VncPreferences" >
++  <property name="geometry" >
++   <rect>
++    <x>0</x>
++    <y>0</y>
++    <width>429</width>
++    <height>115</height>
++   </rect>
++  </property>
+   <layout class="QVBoxLayout" >
++   <property name="leftMargin" >
++    <number>0</number>
++   </property>
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
+    <item>
+     <widget class="QGroupBox" name="vncGroupBox" >
+      <property name="title" >
+@@ -13,6 +33,9 @@
+         <property name="text" >
+          <string>Connection type:</string>
+         </property>
++        <property name="buddy" >
++         <cstring>kcfg_Quality</cstring>
++        </property>
+        </widget>
+       </item>
+       <item row="0" column="1" >
+--- krdc/krdc.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ krdc/krdc.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,6 +1,5 @@
+ # KDE Config File
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Application
+ Exec=krdc -caption "%c" %u
+ Icon=krdc
+--- krdc/smb2rdc.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ krdc/smb2rdc.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,6 @@
+ # KDE Config File
+ [Desktop Entry]
+-Encoding=UTF-8
+-ServiceTypes=application/x-smb-server
++X-KDE-ServiceTypes=application/x-smb-server
+ Actions=smb2rdc;
+ 
+ [Desktop Action smb2rdc]
+--- krdc/config/preferencesdialog.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ krdc/config/preferencesdialog.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -58,6 +58,7 @@
+     // that imporant because you will not change this configuration each day...
+     // see rdp/rdphostpreferences.cpp
+     rdpUi.resolutionComboBox->hide();
++    rdpUi.resolutionDummyLabel->hide();
+     rdpUi.kcfg_Height->setEnabled(true);
+     rdpUi.kcfg_Width->setEnabled(true);
+     rdpUi.heightLabel->setEnabled(true);
+--- krdc/config/hostpreferenceslist.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ krdc/config/hostpreferenceslist.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -144,7 +144,7 @@
+ 
+     QFile file(m_filename);
+     if (!file.open(QFile::WriteOnly | QFile::Text)) {
+-        kWarning(5010) << "Cannot write " << m_filename << ". " << file.errorString() << endl;
++        kWarning(5010) << "Cannot write " << m_filename << ". " << file.errorString();
+     }
+ 
+     QTextStream out(&file);
+--- krfb/krfb.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ krfb/krfb.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,6 +1,5 @@
+ # KDE Config File
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Application
+ Exec=krfb -caption "%c"
+ Icon=krfb
+--- krfb/kinetd/kinetd.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ krfb/kinetd/kinetd.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ 
+-ServiceTypes=KDEDModule
++X-KDE-ServiceTypes=KDEDModule
+ X-KDE-ModuleType=Library
+ X-KDE-Library=kinetd
+ X-KDE-Kded-autoload=true
+@@ -37,7 +36,6 @@
+ Name[lt]=KDE interneto tarnyba
+ Name[mk]=Даемон за Интернет на KDE 
+ Name[ms]=Daemon Internet KDE
+-Name[nb]=KDEs internett-nisse
+ Name[nds]=KDE-Internetdämoon
+ Name[ne]=केडीई इन्टरनेट डेइमोन
+ Name[nn]=KDE-Internett-nisse
+@@ -90,7 +88,6 @@
+ Comment[lt]=Interneto tarnyba, paleidžianti tinklo tarnybas esant poreikiui
+ Comment[mk]=Даемон за Интернет кој ги вклучува мрежните сервиси на барање
+ Comment[ms]=Daemon Internet yang memulakan servis jaringan di atas permintaan
+-Comment[nb]=internett-nisse som starter nettverkstjenester ved behov
+ Comment[nds]=En Internet-Dämoon, wat Nettwarkdeensten op Anfraag start
+ Comment[ne]=एउटा इन्टरनेट डेइमोन जसले मागमा सञ्जाल सेवा सुरु गर्दछ
+ Comment[nl]=Een internetdaemon die netwerkdiensten op afroep start
+--- krfb/kinetd/kinetdmodule.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ krfb/kinetd/kinetdmodule.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,6 @@
+ # describes the servicetype that you need to implement in order to use
+ # kinetd.
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=KInetDModule
+ Name=KInetD Module Type
+--- krfb/kcm_krfb/kcmkrfb.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ krfb/kcm_krfb/kcmkrfb.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,10 +1,9 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=krfb
+ Exec=kcmshell4 kcmkrfb
+ Type=Service
+-DocPath=krfb/krfb-configuration.html
+-ServiceTypes=KCModule
++X-DocPath=krfb/krfb-configuration.html
++X-KDE-ServiceTypes=KCModule
+ 
+ 
+ X-KDE-Library=kcm_krfb
+@@ -123,48 +122,48 @@
+ Comment[zh_CN]=配置桌面共享
+ Comment[zh_HK]=設定桌面分享
+ Comment[zh_TW]=設定桌面分享
+-Keywords=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited
+-Keywords[bg]=Keywords=споделяне, работно, място, десктоп, покана, връзка, desktop sharing, krfb, vnc, sharing, krdc, remote desktop connection, invitation, port, slp, uninvited
+-Keywords[ca]=compartició de l'escriptori,krfb,vnc,compartir,krdc,connexió a l'escriptori remot,invitació,port,slp,no invitat
+-Keywords[cs]=sdílení plochy,krfb,vnc,sdílení,rdp,krdc,připojení vzdálené plochy,pozvánka,port,slp
+-Keywords[cy]=rhannu penbwrdd,krfb,vnc,rhannu,rdp,krdc,cysylltiad penbwrdd pell,gwahoddiad,porth,slp,heb wahoddiad
+-Keywords[da]=desktopdeling,krfb,vnc,deling,krdc,ekstern desktopforbindelse,invitation,port,slp,ikke inviteret
+-Keywords[de]=Arbeitsfläche freigeben,krfb,VNC,freigeben,krdc,Entfernte Arbeitsfläche,Einladung,Port,slp,uneingeladen,rdp,remote desktop
+-Keywords[el]=κοινή χρήση επιφάνειας εργασίας,krfb,vnc,κοινή χρήση,krdc,σύνδεση σε απομακρυσμένη επιφάνεια εργασίας,πρόσκληση,θύρα,slp,απρόσκλητο
+-Keywords[es]=escritorio compartido,krfb,vnc,compartir,rdp,krdc, conexión escritorio remoto,invitación,puerto,slp,no invitado
+-Keywords[et]=töölaua jagamine,krfb,vnc,jagamine,rdp,krdc,kaugtöölaua ühendus,rdp,kutse,port,slp,kutsumata
+-Keywords[eu]=mahaigain partekatzea,krfb,vnc,partekatzea,krdc,urruneko mahaigain konexioa,gonbidapena,ataka,slp,gonbidapen gabea
+-Keywords[fa]=اشتراک رومیزی، krfb، vnc، اتصال رومیزی راه دور، دعوت، درگاه، slp، دعوت‌نشده
+-Keywords[fi]=työpöydän jakaminen,krfb,vnc,jakaminen,krdc,etätyöpöytäyhteys, kutsu,portti,slp,kutsumaton, työpöytä
+-Keywords[fr]=partage de bureau,krfb,vnc,partage,rdp,krdc,connexion à un bureau distant,invitation,port,slp,non invité
+-Keywords[gl]=compartilla de escritorio, vnc, compartir, krdc, conexón ao escritorio remoto, invitación, porto, slt, convidado, compartillar
+-Keywords[he]=שיתוף שולחן עבודה,שיתוף,חיבור לשולחן עבודה מרוחק,desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection, invitation, port, slp, uninvited
+-Keywords[hu]=munkaasztal-megosztás,krfb,vnc,megosztás,krdc,csatlakozás távoli munkaasztalhoz,meghívás,port,slp,meghívás nélkül
+-Keywords[is]=skjáborðsmiðlun,miðlun,krfb,vnc,rdp,krdc,fjarvinnsla,remote desktop connection,rdp
+-Keywords[it]=condivisione desktop,krfb,vnc,condivisione,krdc,connessione desktop remoto,invito,porta,slp,non invitato
+-Keywords[ja]=デスクトップ共有,krfb,vnc,共有,rdp,krdc,リモートデスクトップ接続,招待,ポート,slp,uninvited
+-Keywords[km]=ការ​ចែក​រំ​លែក​ផ្ទៃ​តុ,krfb,vnc,ការ​ចែក​រំលែក,krdc,ការ​ត​ភ្ជាប់​ផ្ទៃ​តុ​ពី​ចម្ងាយ,អញ្ជើញ,ច្រក,slp,មិន​បាន​អញ្ជើញ
+-Keywords[lt]=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited,dalinimasis darbastaliu,nutolusio darbastalio prijungimas,kvietimas,ryšys,nekviestas,jungtis,prievadas,dalintis,pasidalinti,jungimasis,prisijungti,kviesti
+-Keywords[mk]=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited,делење на површината,krfb,vnc,делење,krdc,поврзување со оддалечена  површина,покана,порта,slp,непоканет
+-Keywords[ms]= perkongsian ruang kerja, sambungan, liang, desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited
+-Keywords[nb]=skrivebordsdeling,krfb,vnc,deling,krdc,tilkobling til fjernt skrivebord,invitasjon,port,slp,ikke invitert
+-Keywords[nds]=schriefdisch,freegeven,freegaav,krfb,vnc,delen,krdc,feern Schriefdisch,verbinnen,inladen,port,slp,nich inlaadt
+-Keywords[ne]=डेस्कटप साझेदारी,krfb,vnc,साझेदारी,krdc, टाढाको डेस्कटप जडान,निमन्त्रणा,पोर्ट,slp,निमन्त्रणा नगरिएको
+-Keywords[nl]=desktop sharing,krfb,vnc,sharing,rdp,krdc,remote desktop connection,uitnodiging,slp,rdp,verbinding, bureaublad delen,bureaublad op afstand
+-Keywords[nn]=skrivebordsdeling,krfb,vnc,deling,krdc,nettverksskrivebord,invitasjon,port,slp,ikkje invitert
+-Keywords[pl]=współdzielenie pulpitu,krfb,vnc,współdzielenie,rdp,krdc,zdalne połączenie, zdalne biurko, zdalny pulpit, zaproszenie,port,slp
+-Keywords[pt]=partilha do ecrã,krfb,vnc,partilha,krdc,ligação a um ecrã remoto,convite,porto,slp,sem convite
+-Keywords[pt_BR]=compartilhamento de desktop,krfb,vnc,compartilhamento,krdc,conexão a desktop remoto,convite,porta,slp,não convidado
+-Keywords[sl]=namizje,souporaba,krfb,vnc,krdc,povezava oddaljenega namizja, povabilo,port,slp,nepovabljen
+-Keywords[sr]=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited,радна површина,дељење,позив,порт,непозван,удаљено
+-Keywords[sr at latin]=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited,radna površina,deljenje,poziv,port,nepozvan,udaljeno
+-Keywords[sv]=dela skrivbord,krfb,vnc,dela,krdc,fjärrskrivbordsanslutning,inbjudan,port,slp
+-Keywords[ta]=பணிமேடை பகிர்வு,krfb,vnc,பகிர்வு,krdc,தொலை பணிமேடை இணைப்பு,அழைப்பிதழ், துறை, slp, uninvited
+-Keywords[tr]=masaüstü paylaşımı,krfb,vnc,paylaşım,krdc,uzak masaüstü bağlantısı,davet,port,slp
+-Keywords[uk]=спільні стільниці,krfb,vnc,спільний,rdp,krdc,з'єднання віддаленої стільниці,запрошення,rdp,slp,без запрошення
+-Keywords[vi]=chia sẻ màn hình,krfb,vnc,chia sẻ,krdc,màn hình ở xa kết nối,mời kết nối,cổng,slp,không được mời
+-Keywords[x-test]=xxdesktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvitedxx
+-Keywords[zh_CN]=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited,桌面共享,共享,远程桌面连接,邀请,端口,未邀请
+-Keywords[zh_TW]=desktop sharing,krfb,vnc,sharing,rdp,krdc,remote desktop connection,rdp,桌面分享,分享,遠端桌面連線,invitation,port,slp,uninvited
++X-KDE-Keywords=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited
++X-KDE-Keywords[bg]=Keywords=споделяне, работно, място, десктоп, покана, връзка, desktop sharing, krfb, vnc, sharing, krdc, remote desktop connection, invitation, port, slp, uninvited
++X-KDE-Keywords[ca]=compartició de l'escriptori,krfb,vnc,compartir,krdc,connexió a l'escriptori remot,invitació,port,slp,no invitat
++X-KDE-Keywords[cs]=sdílení plochy,krfb,vnc,sdílení,rdp,krdc,připojení vzdálené plochy,pozvánka,port,slp
++X-KDE-Keywords[cy]=rhannu penbwrdd,krfb,vnc,rhannu,rdp,krdc,cysylltiad penbwrdd pell,gwahoddiad,porth,slp,heb wahoddiad
++X-KDE-Keywords[da]=desktopdeling,krfb,vnc,deling,krdc,ekstern desktopforbindelse,invitation,port,slp,ikke inviteret
++X-KDE-Keywords[de]=Arbeitsfläche freigeben,krfb,VNC,freigeben,krdc,Entfernte Arbeitsfläche,Einladung,Port,slp,uneingeladen,rdp,remote desktop
++X-KDE-Keywords[el]=κοινή χρήση επιφάνειας εργασίας,krfb,vnc,κοινή χρήση,krdc,σύνδεση σε απομακρυσμένη επιφάνεια εργασίας,πρόσκληση,θύρα,slp,απρόσκλητο
++X-KDE-Keywords[es]=escritorio compartido,krfb,vnc,compartir,rdp,krdc, conexión escritorio remoto,invitación,puerto,slp,no invitado
++X-KDE-Keywords[et]=töölaua jagamine,krfb,vnc,jagamine,rdp,krdc,kaugtöölaua ühendus,rdp,kutse,port,slp,kutsumata
++X-KDE-Keywords[eu]=mahaigain partekatzea,krfb,vnc,partekatzea,krdc,urruneko mahaigain konexioa,gonbidapena,ataka,slp,gonbidapen gabea
++X-KDE-Keywords[fa]=اشتراک رومیزی، krfb، vnc، اتصال رومیزی راه دور، دعوت، درگاه، slp، دعوت‌نشده
++X-KDE-Keywords[fi]=työpöydän jakaminen,krfb,vnc,jakaminen,krdc,etätyöpöytäyhteys, kutsu,portti,slp,kutsumaton, työpöytä
++X-KDE-Keywords[fr]=partage de bureau,krfb,vnc,partage,rdp,krdc,connexion à un bureau distant,invitation,port,slp,non invité
++X-KDE-Keywords[gl]=compartilla de escritorio, vnc, compartir, krdc, conexón ao escritorio remoto, invitación, porto, slt, convidado, compartillar
++X-KDE-Keywords[he]=שיתוף שולחן עבודה,שיתוף,חיבור לשולחן עבודה מרוחק,desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection, invitation, port, slp, uninvited
++X-KDE-Keywords[hu]=munkaasztal-megosztás,krfb,vnc,megosztás,krdc,csatlakozás távoli munkaasztalhoz,meghívás,port,slp,meghívás nélkül
++X-KDE-Keywords[is]=skjáborðsmiðlun,miðlun,krfb,vnc,rdp,krdc,fjarvinnsla,remote desktop connection,rdp
++X-KDE-Keywords[it]=condivisione desktop,krfb,vnc,condivisione,krdc,connessione desktop remoto,invito,porta,slp,non invitato
++X-KDE-Keywords[ja]=デスクトップ共有,krfb,vnc,共有,rdp,krdc,リモートデスクトップ接続,招待,ポート,slp,uninvited
++X-KDE-Keywords[km]=ការ​ចែក​រំ​លែក​ផ្ទៃ​តុ,krfb,vnc,ការ​ចែក​រំលែក,krdc,ការ​ត​ភ្ជាប់​ផ្ទៃ​តុ​ពី​ចម្ងាយ,អញ្ជើញ,ច្រក,slp,មិន​បាន​អញ្ជើញ
++X-KDE-Keywords[lt]=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited,dalinimasis darbastaliu,nutolusio darbastalio prijungimas,kvietimas,ryšys,nekviestas,jungtis,prievadas,dalintis,pasidalinti,jungimasis,prisijungti,kviesti
++X-KDE-Keywords[mk]=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited,делење на површината,krfb,vnc,делење,krdc,поврзување со оддалечена  површина,покана,порта,slp,непоканет
++X-KDE-Keywords[ms]= perkongsian ruang kerja, sambungan, liang, desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited
++X-KDE-Keywords[nb]=skrivebordsdeling,krfb,vnc,deling,krdc,tilkobling til fjernt skrivebord,invitasjon,port,slp,ikke invitert
++X-KDE-Keywords[nds]=schriefdisch,freegeven,freegaav,krfb,vnc,delen,krdc,feern Schriefdisch,verbinnen,inladen,port,slp,nich inlaadt
++X-KDE-Keywords[ne]=डेस्कटप साझेदारी,krfb,vnc,साझेदारी,krdc, टाढाको डेस्कटप जडान,निमन्त्रणा,पोर्ट,slp,निमन्त्रणा नगरिएको
++X-KDE-Keywords[nl]=desktop sharing,krfb,vnc,sharing,rdp,krdc,remote desktop connection,uitnodiging,slp,rdp,verbinding, bureaublad delen,bureaublad op afstand
++X-KDE-Keywords[nn]=skrivebordsdeling,krfb,vnc,deling,krdc,nettverksskrivebord,invitasjon,port,slp,ikkje invitert
++X-KDE-Keywords[pl]=współdzielenie pulpitu,krfb,vnc,współdzielenie,rdp,krdc,zdalne połączenie, zdalne biurko, zdalny pulpit, zaproszenie,port,slp
++X-KDE-Keywords[pt]=partilha do ecrã,krfb,vnc,partilha,krdc,ligação a um ecrã remoto,convite,porto,slp,sem convite
++X-KDE-Keywords[pt_BR]=compartilhamento de desktop,krfb,vnc,compartilhamento,krdc,conexão a desktop remoto,convite,porta,slp,não convidado
++X-KDE-Keywords[sl]=namizje,souporaba,krfb,vnc,krdc,povezava oddaljenega namizja, povabilo,port,slp,nepovabljen
++X-KDE-Keywords[sr]=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited,радна површина,дељење,позив,порт,непозван,удаљено
++X-KDE-Keywords[sr at latin]=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited,radna površina,deljenje,poziv,port,nepozvan,udaljeno
++X-KDE-Keywords[sv]=dela skrivbord,krfb,vnc,dela,krdc,fjärrskrivbordsanslutning,inbjudan,port,slp
++X-KDE-Keywords[ta]=பணிமேடை பகிர்வு,krfb,vnc,பகிர்வு,krdc,தொலை பணிமேடை இணைப்பு,அழைப்பிதழ், துறை, slp, uninvited
++X-KDE-Keywords[tr]=masaüstü paylaşımı,krfb,vnc,paylaşım,krdc,uzak masaüstü bağlantısı,davet,port,slp
++X-KDE-Keywords[uk]=спільні стільниці,krfb,vnc,спільний,rdp,krdc,з'єднання віддаленої стільниці,запрошення,rdp,slp,без запрошення
++X-KDE-Keywords[vi]=chia sẻ màn hình,krfb,vnc,chia sẻ,krdc,màn hình ở xa kết nối,mời kết nối,cổng,slp,không được mời
++X-KDE-Keywords[x-test]=xxdesktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvitedxx
++X-KDE-Keywords[zh_CN]=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited,桌面共享,共享,远程桌面连接,邀请,端口,未邀请
++X-KDE-Keywords[zh_TW]=desktop sharing,krfb,vnc,sharing,rdp,krdc,remote desktop connection,rdp,桌面分享,分享,遠端桌面連線,invitation,port,slp,uninvited
+ 
+ Categories=Qt;KDE;X-KDE-settings-network;Settings;
+--- krfb/x11framebuffer.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ krfb/x11framebuffer.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -55,7 +55,7 @@
+ {
+ #ifdef HAVE_XSHM
+     d->useShm = XShmQueryExtension(QX11Info::display());
+-    kDebug() << "shm: " << d->useShm << endl;
++    kDebug() << "shm: " << d->useShm;
+ #else
+     d->useShm = false;
+ #endif
+@@ -194,24 +194,24 @@
+     QList<QRect> cpy = tiles;
+     bool inserted = false;
+     tiles.clear();
+-//     kDebug() << "before cleanup: " << cpy.size() << endl;
++//     kDebug() << "before cleanup: " << cpy.size();
+     foreach (QRect r, cpy) {
+         if (tiles.size() > 0) {
+             for(int i = 0; i < tiles.size(); i++) {
+-    //             kDebug() << r << tiles[i] << endl;
++    //             kDebug() << r << tiles[i];
+                 if (r.intersects(tiles[i])) {
+                     tiles[i] |= r;
+                     inserted = true;
+                     break;
+-    //                 kDebug() << "merged into " << tiles[i] << endl;
++    //                 kDebug() << "merged into " << tiles[i];
+                 }
+             }
+             if (!inserted) {
+                 tiles.append(r);
+-    //             kDebug() << "appended " << r << endl;
++    //             kDebug() << "appended " << r;
+             }
+         } else {
+-    //         kDebug() << "appended " << r << endl;
++    //         kDebug() << "appended " << r;
+             tiles.append(r);
+         }
+     }
+@@ -230,7 +230,7 @@
+             tiles[i].setRight(d->framebufferImage->width);
+         }
+     }
+-//     kDebug() << "after cleanup: " << tiles.size() << endl;
++//     kDebug() << "after cleanup: " << tiles.size();
+ }
+ 
+ void X11FrameBuffer::acquireEvents() {
+@@ -255,7 +255,7 @@
+ #ifdef HAVE_XSHM
+ 
+             foreach(QRect r, tiles) {
+-//                 kDebug() << r << endl;
++//                 kDebug() << r;
+                 gl |= r;
+                 int y = r.y();
+                 int x = r.x();
+@@ -267,7 +267,7 @@
+                         if (x+d->updateTile->width > d->framebufferImage->width) {
+                             x = d->framebufferImage->width - d->updateTile->width;
+                         }
+-//                         kDebug() << "x: " << x << " (" << r.x() << ") y: " << y << " (" << r.y() << ") " << r << endl;
++//                         kDebug() << "x: " << x << " (" << r.x() << ") y: " << y << " (" << r.y() << ") " << r;
+                         XShmGetImage(QX11Info::display(), win, d->updateTile, x, y, AllPlanes);
+                         int pxsize =  d->framebufferImage->bits_per_pixel / 8;
+                         char *dest = fb + ((d->framebufferImage->bytes_per_line * y) + (x*pxsize));
+@@ -301,8 +301,8 @@
+             }
+         }
+     }
+-//     kDebug() << "tot: " << gl << endl;
+-//     kDebug() << tiles.size() << endl;
++//     kDebug() << "tot: " << gl;
++//     kDebug() << tiles.size();
+     ret = tiles;
+     tiles.clear();
+     return ret;
+--- lanbrowsing/kcmlisa/kcmkiolan.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ lanbrowsing/kcmlisa/kcmkiolan.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ Icon=samba
+ Exec=kcmshell4 kcmkiolan
+ 
+@@ -104,22 +103,22 @@
+ Comment[zh_HK]=lan: 與 rlan: 設定
+ Comment[zh_TW]=lan: 與 rlan: 設定
+ 
+-Keywords=lan
+-Keywords[bg]=lan,лан
+-Keywords[de]=LAN
+-Keywords[fa]=شبکۀ داخلی
+-Keywords[fr]=lan,réseau local,réseau
+-Keywords[gl]=lan,redes locais
+-Keywords[he]=lan,רשת מקומית
+-Keywords[lt]=lan,vietinis tinklas
+-Keywords[nds]=lan,nettwark
+-Keywords[ne]=ल्यान
+-Keywords[nl]=lan,lokaal netwerk,netwerk
+-Keywords[pl]=lan,LAN
+-Keywords[ru]=lan, локальная сеть
+-Keywords[tg]=шабакаи маҳаллӣ
+-Keywords[uk]=lan, локальна мережа
+-Keywords[uz]=локал тармоқ
+-Keywords[vi]=lan, mạng cục bộ
+-Keywords[x-test]=xxlanxx
+-Keywords[zh_CN]=局域网
++X-KDE-Keywords=lan
++X-KDE-Keywords[bg]=lan,лан
++X-KDE-Keywords[de]=LAN
++X-KDE-Keywords[fa]=شبکۀ داخلی
++X-KDE-Keywords[fr]=lan,réseau local,réseau
++X-KDE-Keywords[gl]=lan,redes locais
++X-KDE-Keywords[he]=lan,רשת מקומית
++X-KDE-Keywords[lt]=lan,vietinis tinklas
++X-KDE-Keywords[nds]=lan,nettwark
++X-KDE-Keywords[ne]=ल्यान
++X-KDE-Keywords[nl]=lan,lokaal netwerk,netwerk
++X-KDE-Keywords[pl]=lan,LAN
++X-KDE-Keywords[ru]=lan, локальная сеть
++X-KDE-Keywords[tg]=шабакаи маҳаллӣ
++X-KDE-Keywords[uk]=lan, локальна мережа
++X-KDE-Keywords[uz]=локал тармоқ
++X-KDE-Keywords[vi]=lan, mạng cục bộ
++X-KDE-Keywords[x-test]=xxlanxx
++X-KDE-Keywords[zh_CN]=局域网
+--- lanbrowsing/kcmlisa/kcmlisa.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ lanbrowsing/kcmlisa/kcmlisa.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ Icon=samba
+ Exec=kcmshell4 kcmlisa
+ 
+@@ -73,43 +72,43 @@
+ Comment[zh_HK]=設定 LISa
+ Comment[zh_TW]=設定 LISa
+ 
+-Keywords=lisa,network,smb,ftp,fish,http
+-Keywords[bg]=Keywords=мрежа, самба, настройки, локална, споделяне, lisa, network, smb, ftp, fish, http
+-Keywords[br]=lisa,rouedad,smb,ftp,fish,http
+-Keywords[ca]=lisa,xarxa,smb,ftp,fish,http
+-Keywords[cs]=lisa,síť,smb,ftp,fish,http
+-Keywords[cy]=lisa,rhwydwaith,smb,ftp,fish,http
+-Keywords[da]=lisa,netværk,smb,ftp,fish,http
+-Keywords[de]=lisa,Netzwerk,smb,ftp,fish,http
+-Keywords[el]=lisa,δίκτυο,smb,ftp,fish,http
+-Keywords[et]=lisa,võrk,smb,ftp,fish,http
+-Keywords[eu]=lisa,sarea,smb,ftp,fish,http
+-Keywords[fa]=lisa، شبکه، smb، قاپ، fish، قام
+-Keywords[fi]=lisa,verkko,smb,ftp,fish,http
+-Keywords[fr]=lisa,réseau,smb,ftp,fish,http
+-Keywords[gl]=lisa,rede,smb,ftp,fish,http
+-Keywords[he]=lisa,רשת,smb,ftp,fish,http
+-Keywords[hu]=lisa,hálózat,smb,ftp,fish,http
+-Keywords[it]=lisa,rete,smb,ftp,fish,http
+-Keywords[ja]=lisa,ネットワーク,smb,ftp,fish,http
+-Keywords[km]=lisa,បណ្ដាញ,smb,ftp,fish,http
+-Keywords[ko]=lisa,네트워크,smp,ftp,fish,http
+-Keywords[lt]=lisa,network,smb,ftp,fish,http,tinklas
+-Keywords[mk]=lisa,network,smb,ftp,fish,http,мрежа
+-Keywords[nb]=lisa,nettverk,smb,ftp,fish,http
+-Keywords[nds]=lisa,nettwark,smb,ftp,fish,http
+-Keywords[ne]=लिसा,सञ्जाल,smb,ftp,fish,http
+-Keywords[nl]=lisa,netwerk,smb,ftp,fish,http,samba
+-Keywords[nn]=lisa,nettverk,smb,ftp,fish,http
+-Keywords[pl]=lisa,sieć,smb,ftp,fish,http
+-Keywords[pt]=lisa,rede,smb,ftp,fish,http
+-Keywords[pt_BR]=lisa,rede,smb,ftp,fish,http
+-Keywords[ru]=lisa,сеть,smb,ftp,fish,http
+-Keywords[sl]=lisa,omrežje,smb,ftp,fish,http
+-Keywords[sv]=lisa,nätverk,smb,ftp,fish,http
+-Keywords[tr]=lisa,ağ,smb,ftp,fish,http
+-Keywords[uk]=lisa,мережа,smb,ftp,fish,http
+-Keywords[uz]=lisa,тармоқ,smb,ftp,fish,http
+-Keywords[vi]=lisa,mạng,smb,ftp,fish,http
+-Keywords[x-test]=xxlisa,network,smb,ftp,fish,httpxx
+-Keywords[zh_CN]=lisa,network,smb,ftp,fish,http,网络
++X-KDE-Keywords=lisa,network,smb,ftp,fish,http
++X-KDE-Keywords[bg]=Keywords=мрежа, самба, настройки, локална, споделяне, lisa, network, smb, ftp, fish, http
++X-KDE-Keywords[br]=lisa,rouedad,smb,ftp,fish,http
++X-KDE-Keywords[ca]=lisa,xarxa,smb,ftp,fish,http
++X-KDE-Keywords[cs]=lisa,síť,smb,ftp,fish,http
++X-KDE-Keywords[cy]=lisa,rhwydwaith,smb,ftp,fish,http
++X-KDE-Keywords[da]=lisa,netværk,smb,ftp,fish,http
++X-KDE-Keywords[de]=lisa,Netzwerk,smb,ftp,fish,http
++X-KDE-Keywords[el]=lisa,δίκτυο,smb,ftp,fish,http
++X-KDE-Keywords[et]=lisa,võrk,smb,ftp,fish,http
++X-KDE-Keywords[eu]=lisa,sarea,smb,ftp,fish,http
++X-KDE-Keywords[fa]=lisa، شبکه، smb، قاپ، fish، قام
++X-KDE-Keywords[fi]=lisa,verkko,smb,ftp,fish,http
++X-KDE-Keywords[fr]=lisa,réseau,smb,ftp,fish,http
++X-KDE-Keywords[gl]=lisa,rede,smb,ftp,fish,http
++X-KDE-Keywords[he]=lisa,רשת,smb,ftp,fish,http
++X-KDE-Keywords[hu]=lisa,hálózat,smb,ftp,fish,http
++X-KDE-Keywords[it]=lisa,rete,smb,ftp,fish,http
++X-KDE-Keywords[ja]=lisa,ネットワーク,smb,ftp,fish,http
++X-KDE-Keywords[km]=lisa,បណ្ដាញ,smb,ftp,fish,http
++X-KDE-Keywords[ko]=lisa,네트워크,smp,ftp,fish,http
++X-KDE-Keywords[lt]=lisa,network,smb,ftp,fish,http,tinklas
++X-KDE-Keywords[mk]=lisa,network,smb,ftp,fish,http,мрежа
++X-KDE-Keywords[nb]=lisa,nettverk,smb,ftp,fish,http
++X-KDE-Keywords[nds]=lisa,nettwark,smb,ftp,fish,http
++X-KDE-Keywords[ne]=लिसा,सञ्जाल,smb,ftp,fish,http
++X-KDE-Keywords[nl]=lisa,netwerk,smb,ftp,fish,http,samba
++X-KDE-Keywords[nn]=lisa,nettverk,smb,ftp,fish,http
++X-KDE-Keywords[pl]=lisa,sieć,smb,ftp,fish,http
++X-KDE-Keywords[pt]=lisa,rede,smb,ftp,fish,http
++X-KDE-Keywords[pt_BR]=lisa,rede,smb,ftp,fish,http
++X-KDE-Keywords[ru]=lisa,сеть,smb,ftp,fish,http
++X-KDE-Keywords[sl]=lisa,omrežje,smb,ftp,fish,http
++X-KDE-Keywords[sv]=lisa,nätverk,smb,ftp,fish,http
++X-KDE-Keywords[tr]=lisa,ağ,smb,ftp,fish,http
++X-KDE-Keywords[uk]=lisa,мережа,smb,ftp,fish,http
++X-KDE-Keywords[uz]=lisa,тармоқ,smb,ftp,fish,http
++X-KDE-Keywords[vi]=lisa,mạng,smb,ftp,fish,http
++X-KDE-Keywords[x-test]=xxlisa,network,smb,ftp,fish,httpxx
++X-KDE-Keywords[zh_CN]=lisa,network,smb,ftp,fish,http,网络
+--- lanbrowsing/kio_lan/lisa.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ lanbrowsing/kio_lan/lisa.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Link
+ URL=lan:/
+ Icon=network
+--- lanbrowsing/kio_lan/lan.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ lanbrowsing/kio_lan/lan.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Link
+-DocPath=lisa/index.html
++X-DocPath=lisa/index.html
+ URL=lan:/
+ Icon=network_local
+ Name=Local Network
+--- kdnssd/ioslave/zeroconf.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kdnssd/ioslave/zeroconf.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=network_local
+ Name=Network Services
+ Name[bg]=Мрежови услуги
+--- kdnssd/kdedmodule/dnssdwatcher.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kdnssd/kdedmodule/dnssdwatcher.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Name=DNS-SD Services Watcher
+ Name[ca]=Vigilant de serveis DNS-SD
+@@ -84,7 +83,7 @@
+ Comment[zh_CN]=跟踪 DNS-SD 服务并更新目录列表
+ Comment[zh_HK]=監察 DNS-SD 服務並更新目錄清單
+ Comment[zh_TW]=追蹤 DNS-SD 服務並更新目錄清單
+-ServiceTypes=KDEDModule
++X-KDE-ServiceTypes=KDEDModule
+ X-KDE-ModuleType=Library
+ X-KDE-Library=dnssdwatcher
+ X-KDE-Kded-autoload=true
+--- kopete/plugins/nowlistening/kopete_nowlistening_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/nowlistening/kopete_nowlistening_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=kaboodle
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_nowlistening
+ X-KDE-FactoryName=kcm_kopete_nowlistening
+--- kopete/plugins/nowlistening/nowlisteningprefs.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/nowlistening/nowlisteningprefs.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,27 +1,33 @@
+ <ui version="4.0" >
+- <author></author>
+- <comment></comment>
+- <exportmacro></exportmacro>
+  <class>NowListeningPrefsUI</class>
+  <widget class="QWidget" name="NowListeningPrefsUI" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>360</width>
+-    <height>376</height>
++    <width>426</width>
++    <height>380</height>
+    </rect>
+   </property>
+   <property name="windowTitle" >
+    <string>Now Listening</string>
+   </property>
+   <layout class="QVBoxLayout" >
+-   <property name="margin" >
+-    <number>9</number>
+-   </property>
+    <property name="spacing" >
+     <number>6</number>
+    </property>
++   <property name="leftMargin" >
++    <number>0</number>
++   </property>
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
+    <item>
+     <widget class="QLabel" name="advertiseNewMediaToBuddiesLabel" >
+      <property name="text" >
+@@ -49,20 +55,38 @@
+        <string>Messa&amp;ge</string>
+       </attribute>
+       <layout class="QVBoxLayout" >
+-       <property name="margin" >
+-        <number>0</number>
+-       </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
++       <property name="leftMargin" >
++        <number>0</number>
++       </property>
++       <property name="topMargin" >
++        <number>0</number>
++       </property>
++       <property name="rightMargin" >
++        <number>0</number>
++       </property>
++       <property name="bottomMargin" >
++        <number>0</number>
++       </property>
+        <item>
+         <layout class="QVBoxLayout" >
+-         <property name="margin" >
+-          <number>0</number>
+-         </property>
+          <property name="spacing" >
+           <number>6</number>
+          </property>
++         <property name="leftMargin" >
++          <number>0</number>
++         </property>
++         <property name="topMargin" >
++          <number>0</number>
++         </property>
++         <property name="rightMargin" >
++          <number>0</number>
++         </property>
++         <property name="bottomMargin" >
++          <number>0</number>
++         </property>
+          <item>
+           <widget class="QLabel" name="useThisMessageLabel" >
+            <property name="text" >
+@@ -83,12 +107,21 @@
+          </item>
+          <item>
+           <layout class="QVBoxLayout" >
+-           <property name="margin" >
+-            <number>0</number>
+-           </property>
+            <property name="spacing" >
+             <number>6</number>
+            </property>
++           <property name="leftMargin" >
++            <number>0</number>
++           </property>
++           <property name="topMargin" >
++            <number>0</number>
++           </property>
++           <property name="rightMargin" >
++            <number>0</number>
++           </property>
++           <property name="bottomMargin" >
++            <number>0</number>
++           </property>
+            <item>
+             <widget class="QLabel" name="m_headerLabel" >
+              <property name="text" >
+@@ -176,12 +209,21 @@
+        <string>A&amp;dvertising Mode</string>
+       </attribute>
+       <layout class="QVBoxLayout" >
+-       <property name="margin" >
+-        <number>9</number>
+-       </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
++       <property name="leftMargin" >
++        <number>9</number>
++       </property>
++       <property name="topMargin" >
++        <number>9</number>
++       </property>
++       <property name="rightMargin" >
++        <number>9</number>
++       </property>
++       <property name="bottomMargin" >
++        <number>9</number>
++       </property>
+        <item>
+         <widget class="QRadioButton" name="kcfg_ExplicitAdvertising" >
+          <property name="text" >
+@@ -236,20 +278,38 @@
+        <string>Media Pla&amp;yer</string>
+       </attribute>
+       <layout class="QVBoxLayout" >
+-       <property name="margin" >
+-        <number>0</number>
+-       </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
++       <property name="leftMargin" >
++        <number>0</number>
++       </property>
++       <property name="topMargin" >
++        <number>0</number>
++       </property>
++       <property name="rightMargin" >
++        <number>0</number>
++       </property>
++       <property name="bottomMargin" >
++        <number>0</number>
++       </property>
+        <item>
+         <layout class="QVBoxLayout" >
+-         <property name="margin" >
+-          <number>0</number>
+-         </property>
+          <property name="spacing" >
+           <number>6</number>
+          </property>
++         <property name="leftMargin" >
++          <number>0</number>
++         </property>
++         <property name="topMargin" >
++          <number>0</number>
++         </property>
++         <property name="rightMargin" >
++          <number>0</number>
++         </property>
++         <property name="bottomMargin" >
++          <number>0</number>
++         </property>
+          <item>
+           <widget class="QCheckBox" name="kcfg_UseSpecifiedMediaPlayer" >
+            <property name="text" >
+@@ -258,25 +318,17 @@
+           </widget>
+          </item>
+          <item>
+-          <widget class="K3ListBox" name="kcfg_SelectedMediaPlayer" >
++          <widget class="K3ListBox" native="1" name="kcfg_SelectedMediaPlayer" >
+            <property name="enabled" >
+             <bool>false</bool>
+            </property>
+            <property name="sizePolicy" >
+-            <sizepolicy>
+-             <hsizetype>5</hsizetype>
+-             <vsizetype>5</vsizetype>
++            <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+-           <property name="columnMode" >
+-            <enum>Q3ListBox::FixedNumber</enum>
+-           </property>
+-           <property name="rowMode" >
+-            <enum>Q3ListBox::Variable</enum>
+-           </property>
+-           <property name="variableHeight" >
++           <property name="variableHeight" stdset="0" >
+             <bool>false</bool>
+            </property>
+           </widget>
+@@ -328,8 +380,6 @@
+    <class>K3ListBox</class>
+    <extends></extends>
+    <header>k3listbox.h</header>
+-   <container>0</container>
+-   <pixmap></pixmap>
+   </customwidget>
+  </customwidgets>
+  <resources/>
+--- kopete/plugins/nowlistening/kopete_nowlistening.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/nowlistening/kopete_nowlistening.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=media-podcast
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-KDE-Library=kopete_nowlistening
+ X-KDE-PluginInfo-Author=Will Stephenson
+ X-KDE-PluginInfo-Email=wstephenson at kde.org
+--- kopete/plugins/urlpicpreview/kopete_urlpicpreview.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/urlpicpreview/kopete_urlpicpreview.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Icon=urlpicpreview
+ X-Kopete-Version=1000900
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-KDE-Library=kopete_urlpicpreview
+ X-KDE-PluginInfo-Author=Heiko Schäfer
+ X-KDE-PluginInfo-Email=heiko at rangun.de
+--- kopete/plugins/urlpicpreview/urlpicpreviewplugin.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/urlpicpreview/urlpicpreviewplugin.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -168,7 +168,7 @@
+  */
+ void URLPicPreviewPlugin::readyForUnload()
+ {
+-	kDebug ( 14314 ) << endl;
++	kDebug ( 14314 );
+ 	m_abortMessageCheck = true;
+ 	emit abortAllOperations();
+ }
+--- kopete/plugins/urlpicpreview/kopete_urlpicpreview_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/urlpicpreview/kopete_urlpicpreview_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=urlpicpreview
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_urlpicpreview
+ X-KDE-ParentApp=kopete_urlpicpreview
+--- kopete/plugins/urlpicpreview/urlpicpreviewprefsbase.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/urlpicpreview/urlpicpreviewprefsbase.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -5,7 +5,7 @@
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>370</width>
++    <width>373</width>
+     <height>236</height>
+    </rect>
+   </property>
+@@ -19,6 +19,18 @@
+    <string>Picture Preview Preferences</string>
+   </property>
+   <layout class="QVBoxLayout" >
++   <property name="leftMargin" >
++    <number>0</number>
++   </property>
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
+    <item>
+     <widget class="Q3GroupBox" name="groupBox1" >
+      <property name="title" >
+--- kopete/plugins/addbookmarks/kopete_addbookmarks.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/addbookmarks/kopete_addbookmarks.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Name=Bookmarks
+ Name[bg]=Отметки
+@@ -102,7 +101,7 @@
+ Comment[zh_HK]=自動將收到的訊息內的連結加到書籤
+ Comment[zh_TW]=自動將接收訊息中的連結加入書籤
+ Icon=konqueror
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-Kopete-Version=1000900
+ X-KDE-Library=kopete_addbookmarks
+ X-KDE-PluginInfo-Author=Roie Kerstein
+--- kopete/plugins/addbookmarks/kopete_addbookmarks_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/addbookmarks/kopete_addbookmarks_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Name=Bookmarks
+ Name[bg]=Отметки
+@@ -102,7 +101,7 @@
+ Comment[zh_HK]=自動將收到的訊息內的連結加到書籤
+ Comment[zh_TW]=自動將接收訊息中的連結加入書籤
+ Icon=konqueror
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_addbookmarks
+ X-KDE-FactoryName=kcm_kopete_addbookmarks
+--- kopete/plugins/addbookmarks/addbookmarksprefsui.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/addbookmarks/addbookmarksprefsui.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,4 @@
+ <ui version="4.0" >
+- <author></author>
+- <comment></comment>
+- <exportmacro></exportmacro>
+  <class>BookmarksPrefsUI</class>
+  <widget class="QWidget" name="BookmarksPrefsUI" >
+   <property name="geometry" >
+@@ -13,24 +10,42 @@
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+-   <property name="margin" >
+-    <number>9</number>
+-   </property>
+    <property name="spacing" >
+     <number>6</number>
+    </property>
++   <property name="leftMargin" >
++    <number>0</number>
++   </property>
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
+    <item>
+     <widget class="QGroupBox" name="buttonGroup1" >
+      <property name="title" >
+       <string>Use Subfolder for Each Contact</string>
+      </property>
+      <layout class="QVBoxLayout" >
+-      <property name="margin" >
+-       <number>9</number>
+-      </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
++      <property name="leftMargin" >
++       <number>9</number>
++      </property>
++      <property name="topMargin" >
++       <number>9</number>
++      </property>
++      <property name="rightMargin" >
++       <number>9</number>
++      </property>
++      <property name="bottomMargin" >
++       <number>9</number>
++      </property>
+       <item>
+        <widget class="QRadioButton" name="yesButton" >
+         <property name="enabled" >
+--- kopete/plugins/history/kopete_history.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/history/kopete_history.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=history
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-KDE-Library=kopete_history
+ X-KDE-PluginInfo-Author=Olivier Goffart
+ X-KDE-PluginInfo-Email=ogoffart at tiscalinet.be
+--- kopete/plugins/history/historydialog.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/history/historydialog.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -79,13 +79,13 @@
+ HistoryDialog::HistoryDialog(Kopete::MetaContact *mc, QWidget* parent)
+  : KDialog(parent)
+ {
++	setAttribute (Qt::WA_DeleteOnClose, true);
+ 	setCaption( i18n("History for %1", mc->displayName()) );
+ 	QString fontSize;
+ 	QString htmlCode;
+ 	QString fontStyle;
+ 
+ 	kDebug(14310) << "called.";
+-	//setWFlags(Qt::WDestructiveClose);	// send SIGNAL(closing()) on quit
+ 
+ 	// Class member initializations
+ 	mSearch = 0L;
+--- kopete/plugins/history/kopete_history_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/history/kopete_history_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=history
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_history
+ X-KDE-FactoryName=kcm_kopete_history
+--- kopete/plugins/history/historyprefsui.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/history/historyprefsui.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,5 @@
+ <ui version="4.0" >
+  <author>Olivier Goffart</author>
+- <comment></comment>
+- <exportmacro></exportmacro>
+  <class>HistoryPrefsUI</class>
+  <widget class="QWidget" name="HistoryPrefsUI" >
+   <property name="geometry" >
+@@ -13,24 +11,45 @@
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+-   <property name="margin" >
+-    <number>9</number>
+-   </property>
+    <property name="spacing" >
+     <number>6</number>
+    </property>
++   <property name="leftMargin" >
++    <number>0</number>
++   </property>
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
+    <item>
+     <widget class="QGroupBox" name="groupBox" >
+      <property name="title" >
+       <string>Chat History</string>
+      </property>
+      <layout class="QGridLayout" >
+-      <property name="margin" >
++      <property name="leftMargin" >
+        <number>9</number>
+       </property>
+-      <property name="spacing" >
++      <property name="topMargin" >
++       <number>9</number>
++      </property>
++      <property name="rightMargin" >
++       <number>9</number>
++      </property>
++      <property name="bottomMargin" >
++       <number>9</number>
++      </property>
++      <property name="horizontalSpacing" >
+        <number>6</number>
+       </property>
++      <property name="verticalSpacing" >
++       <number>6</number>
++      </property>
+       <item row="2" column="0" >
+        <spacer>
+         <property name="orientation" >
+@@ -105,12 +124,12 @@
+         <property name="whatsThis" >
+          <string>This is the number of messages that will be added automatically in the chat window when opening a new chat.</string>
+         </property>
++        <property name="minimum" >
++         <number>1</number>
++        </property>
+         <property name="maximum" >
+          <number>32768</number>
+         </property>
+-        <property name="minimum" >
+-         <number>1</number>
+-        </property>
+         <property name="value" >
+          <number>7</number>
+         </property>
+@@ -121,12 +140,12 @@
+         <property name="whatsThis" >
+          <string>The number of message that are shown when borwsing history in the chat window</string>
+         </property>
++        <property name="minimum" >
++         <number>1</number>
++        </property>
+         <property name="maximum" >
+          <number>32768</number>
+         </property>
+-        <property name="minimum" >
+-         <number>1</number>
+-        </property>
+         <property name="value" >
+          <number>10</number>
+         </property>
+@@ -171,17 +190,13 @@
+  <customwidgets>
+   <customwidget>
+    <class>KColorButton</class>
+-   <extends></extends>
++   <extends>QPushButton</extends>
+    <header>kcolorbutton.h</header>
+-   <container>0</container>
+-   <pixmap></pixmap>
+   </customwidget>
+   <customwidget>
+    <class>KIntSpinBox</class>
+-   <extends></extends>
++   <extends>QSpinBox</extends>
+    <header>knuminput.h</header>
+-   <container>0</container>
+-   <pixmap></pixmap>
+   </customwidget>
+  </customwidgets>
+  <tabstops>
+--- kopete/plugins/texteffect/kopete_texteffect.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/texteffect/kopete_texteffect.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=texteffect
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-KDE-Library=kopete_texteffect
+ X-KDE-PluginInfo-Author=Olivier Goffart
+ X-KDE-PluginInfo-Email=ogoffart at tiscalinet.be
+--- kopete/plugins/texteffect/kopete_texteffect_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/texteffect/kopete_texteffect_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=texteffect
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_texteffect
+ X-KDE-ParentApp=kopete_texteffect
+--- kopete/plugins/texteffect/texteffectprefs.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/texteffect/texteffectprefs.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,5 @@
+ <ui version="4.0" >
+  <author>Olivier Goffart</author>
+- <comment></comment>
+- <exportmacro></exportmacro>
+  <class>TextEffectPrefs</class>
+  <widget class="QWidget" name="TextEffectPrefs" >
+   <property name="geometry" >
+@@ -13,39 +11,78 @@
+    </rect>
+   </property>
+   <layout class="QGridLayout" >
+-   <property name="margin" >
+-    <number>5</number>
++   <property name="leftMargin" >
++    <number>0</number>
+    </property>
+-   <property name="spacing" >
++   <property name="topMargin" >
+     <number>0</number>
+    </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
++   <property name="horizontalSpacing" >
++    <number>0</number>
++   </property>
++   <property name="verticalSpacing" >
++    <number>0</number>
++   </property>
+    <item row="0" column="0" >
+     <widget class="QTabWidget" name="TabWidget3" >
++     <property name="currentIndex" >
++      <number>0</number>
++     </property>
+      <widget class="QWidget" name="tab" >
+       <attribute name="title" >
+        <string>&amp;Colors</string>
+       </attribute>
+       <layout class="QGridLayout" >
+-       <property name="margin" >
++       <property name="leftMargin" >
+         <number>0</number>
+        </property>
+-       <property name="spacing" >
++       <property name="topMargin" >
++        <number>0</number>
++       </property>
++       <property name="rightMargin" >
++        <number>0</number>
++       </property>
++       <property name="bottomMargin" >
++        <number>0</number>
++       </property>
++       <property name="horizontalSpacing" >
+         <number>6</number>
+        </property>
++       <property name="verticalSpacing" >
++        <number>6</number>
++       </property>
+        <item row="0" column="0" >
+         <widget class="QGroupBox" name="groupBox1" >
+          <property name="title" >
+           <string>Colors</string>
+          </property>
+          <layout class="QGridLayout" >
+-          <property name="margin" >
++          <property name="leftMargin" >
+            <number>11</number>
+           </property>
+-          <property name="spacing" >
++          <property name="topMargin" >
++           <number>11</number>
++          </property>
++          <property name="rightMargin" >
++           <number>11</number>
++          </property>
++          <property name="bottomMargin" >
++           <number>11</number>
++          </property>
++          <property name="horizontalSpacing" >
+            <number>6</number>
+           </property>
++          <property name="verticalSpacing" >
++           <number>6</number>
++          </property>
+           <item rowspan="5" row="0" column="0" >
+-           <widget class="K3ListBox" name="mColorsListBox" />
++           <widget class="K3ListBox" native="1" name="mColorsListBox" />
+           </item>
+           <item row="0" column="1" >
+            <widget class="QPushButton" name="mColorsAdd" >
+@@ -139,18 +176,25 @@
+        <string>Effects</string>
+       </attribute>
+       <layout class="QVBoxLayout" >
+-       <property name="margin" >
+-        <number>0</number>
+-       </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
++       <property name="leftMargin" >
++        <number>0</number>
++       </property>
++       <property name="topMargin" >
++        <number>0</number>
++       </property>
++       <property name="rightMargin" >
++        <number>0</number>
++       </property>
++       <property name="bottomMargin" >
++        <number>0</number>
++       </property>
+        <item>
+         <widget class="QCheckBox" name="m_lamer" >
+          <property name="sizePolicy" >
+-          <sizepolicy>
+-           <hsizetype>7</hsizetype>
+-           <vsizetype>0</vsizetype>
++          <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+@@ -163,9 +207,7 @@
+        <item>
+         <widget class="QCheckBox" name="m_casewaves" >
+          <property name="sizePolicy" >
+-          <sizepolicy>
+-           <hsizetype>7</hsizetype>
+-           <vsizetype>0</vsizetype>
++          <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+@@ -204,8 +246,6 @@
+    <class>K3ListBox</class>
+    <extends></extends>
+    <header>k3listbox.h</header>
+-   <container>0</container>
+-   <pixmap></pixmap>
+   </customwidget>
+  </customwidgets>
+  <tabstops>
+--- kopete/plugins/webpresence/kopete_webpresence.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/webpresence/kopete_webpresence.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=network
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-KDE-Library=kopete_webpresence
+ X-KDE-PluginInfo-Author=Will Stephenson
+ X-KDE-PluginInfo-Email=will at stevello.free-online.co.uk
+--- kopete/plugins/webpresence/kopete_webpresence_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/webpresence/kopete_webpresence_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Icon=html
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_webpresence
+ X-KDE-ParentApp=kopete_webpresence
+--- kopete/plugins/webpresence/webpresenceprefs.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/webpresence/webpresenceprefs.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,4 @@
+ <ui version="4.0" >
+- <author></author>
+- <comment></comment>
+- <exportmacro></exportmacro>
+  <class>WebPresencePrefsUI</class>
+  <widget class="QWidget" name="WebPresencePrefsUI" >
+   <property name="enabled" >
+@@ -11,29 +8,47 @@
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>725</width>
+-    <height>830</height>
++    <width>404</width>
++    <height>494</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+-   <property name="margin" >
+-    <number>9</number>
+-   </property>
+    <property name="spacing" >
+     <number>6</number>
+    </property>
++   <property name="leftMargin" >
++    <number>0</number>
++   </property>
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
+    <item>
+     <widget class="QGroupBox" name="groupBox" >
+      <property name="title" >
+       <string>Uploading</string>
+      </property>
+      <layout class="QHBoxLayout" >
+-      <property name="margin" >
+-       <number>9</number>
+-      </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
++      <property name="leftMargin" >
++       <number>9</number>
++      </property>
++      <property name="topMargin" >
++       <number>9</number>
++      </property>
++      <property name="rightMargin" >
++       <number>9</number>
++      </property>
++      <property name="bottomMargin" >
++       <number>9</number>
++      </property>
+       <item>
+        <widget class="QLabel" name="textLabel1" >
+         <property name="frameShape" >
+@@ -62,12 +77,21 @@
+       <string>Formatting</string>
+      </property>
+      <layout class="QVBoxLayout" >
+-      <property name="margin" >
+-       <number>9</number>
+-      </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
++      <property name="leftMargin" >
++       <number>9</number>
++      </property>
++      <property name="topMargin" >
++       <number>9</number>
++      </property>
++      <property name="rightMargin" >
++       <number>9</number>
++      </property>
++      <property name="bottomMargin" >
++       <number>9</number>
++      </property>
+       <item>
+        <widget class="QRadioButton" name="formatHTML" >
+         <property name="toolTip" >
+@@ -123,12 +147,21 @@
+       </item>
+       <item>
+        <layout class="QHBoxLayout" >
+-        <property name="margin" >
+-         <number>0</number>
+-        </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
++        <property name="leftMargin" >
++         <number>0</number>
++        </property>
++        <property name="topMargin" >
++         <number>0</number>
++        </property>
++        <property name="rightMargin" >
++         <number>0</number>
++        </property>
++        <property name="bottomMargin" >
++         <number>0</number>
++        </property>
+         <item>
+          <spacer>
+           <property name="orientation" >
+@@ -190,12 +223,24 @@
+       <string>Display Name</string>
+      </property>
+      <layout class="QGridLayout" >
+-      <property name="margin" >
++      <property name="leftMargin" >
+        <number>9</number>
+       </property>
+-      <property name="spacing" >
++      <property name="topMargin" >
++       <number>9</number>
++      </property>
++      <property name="rightMargin" >
++       <number>9</number>
++      </property>
++      <property name="bottomMargin" >
++       <number>9</number>
++      </property>
++      <property name="horizontalSpacing" >
+        <number>6</number>
+       </property>
++      <property name="verticalSpacing" >
++       <number>6</number>
++      </property>
+       <item row="0" column="0" >
+        <widget class="QRadioButton" name="showName" >
+         <property name="text" >
+@@ -222,12 +267,21 @@
+       </item>
+       <item row="2" column="0" >
+        <layout class="QHBoxLayout" >
+-        <property name="margin" >
+-         <number>0</number>
+-        </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
++        <property name="leftMargin" >
++         <number>0</number>
++        </property>
++        <property name="topMargin" >
++         <number>0</number>
++        </property>
++        <property name="rightMargin" >
++         <number>0</number>
++        </property>
++        <property name="bottomMargin" >
++         <number>0</number>
++        </property>
+         <item>
+          <spacer>
+           <property name="orientation" >
+@@ -279,10 +333,8 @@
+  <customwidgets>
+   <customwidget>
+    <class>KUrlRequester</class>
+-   <extends></extends>
++   <extends>QFrame</extends>
+    <header>kurlrequester.h</header>
+-   <container>0</container>
+-   <pixmap></pixmap>
+   </customwidget>
+  </customwidgets>
+  <tabstops>
+--- kopete/plugins/autoreplace/autoreplaceprefs.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/autoreplace/autoreplaceprefs.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -7,7 +7,7 @@
+     <x>0</x>
+     <y>0</y>
+     <width>381</width>
+-    <height>403</height>
++    <height>431</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+@@ -15,16 +15,16 @@
+     <number>6</number>
+    </property>
+    <property name="leftMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="topMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="rightMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <item>
+     <widget class="QGroupBox" name="groupBox" >
+--- kopete/plugins/autoreplace/kopete_autoreplace.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/autoreplace/kopete_autoreplace.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=autoreplace
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-KDE-Library=kopete_autoreplace
+ X-KDE-PluginInfo-Author=Roberto Pariset
+ X-KDE-PluginInfo-Email=victorheremita at fastwebnet.it
+--- kopete/plugins/autoreplace/kopete_autoreplace_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/autoreplace/kopete_autoreplace_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=color
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_autoreplace
+ X-KDE-ParentApp=kopete_autoreplace
+--- kopete/plugins/contactnotes/kopete_contactnotes.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/contactnotes/kopete_contactnotes.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=contact
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-KDE-Library=kopete_contactnotes
+ X-KDE-PluginInfo-Author=Olivier Goffart
+ X-KDE-PluginInfo-Email=ogoffart at tiscalinet.be
+--- kopete/plugins/highlight/kopete_highlight.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/highlight/kopete_highlight.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=highlight
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-KDE-Library=kopete_highlight
+ X-KDE-PluginInfo-Author=Olivier Goffart
+ X-KDE-PluginInfo-Email=ogoffart at tiscalinet.be
+--- kopete/plugins/highlight/kopete_highlight_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/highlight/kopete_highlight_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=highlight
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_highlight
+ X-KDE-ParentApp=kopete_highlight
+@@ -89,7 +88,6 @@
+ Comment[ko]=필터를 기반으로 메시지를 강조합니다
+ Comment[lt]=Paryškinamas tekstas, atsižvelgiant į filtrus
+ Comment[mk]=Го обележува текстот базирано на филтри
+-Comment[nb]=Marker meldinger ved bruk av filtere
+ Comment[nds]=Filterbaseert Rutheven vun Text
+ Comment[ne]=फिल्टरमा आधारित पाठ हाइलाइट गर्दछ
+ Comment[nl]=Laat tekst oplichten gebaseerd op filters
+--- kopete/plugins/highlight/highlightprefsbase.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/highlight/highlightprefsbase.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -7,28 +7,49 @@
+     <x>0</x>
+     <y>0</y>
+     <width>439</width>
+-    <height>543</height>
++    <height>566</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+-   <property name="margin" >
+-    <number>9</number>
+-   </property>
+    <property name="spacing" >
+     <number>6</number>
+    </property>
++   <property name="leftMargin" >
++    <number>0</number>
++   </property>
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
+    <item>
+     <widget class="QGroupBox" name="groupBox" >
+      <property name="title" >
+       <string>Available Filters</string>
+      </property>
+      <layout class="QGridLayout" >
+-      <property name="margin" >
++      <property name="leftMargin" >
+        <number>9</number>
+       </property>
+-      <property name="spacing" >
++      <property name="topMargin" >
++       <number>9</number>
++      </property>
++      <property name="rightMargin" >
++       <number>9</number>
++      </property>
++      <property name="bottomMargin" >
++       <number>9</number>
++      </property>
++      <property name="horizontalSpacing" >
+        <number>6</number>
+       </property>
++      <property name="verticalSpacing" >
++       <number>6</number>
++      </property>
+       <item row="1" column="0" >
+        <widget class="QPushButton" name="m_add" >
+         <property name="text" >
+@@ -49,9 +70,7 @@
+       <item row="0" column="0" colspan="3" >
+        <widget class="QListWidget" name="m_list" >
+         <property name="sizePolicy" >
+-         <sizepolicy>
+-          <hsizetype>7</hsizetype>
+-          <vsizetype>7</vsizetype>
++         <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+@@ -77,18 +96,25 @@
+       <string>Criteria</string>
+      </property>
+      <layout class="QVBoxLayout" >
+-      <property name="margin" >
+-       <number>9</number>
+-      </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
++      <property name="leftMargin" >
++       <number>9</number>
++      </property>
++      <property name="topMargin" >
++       <number>9</number>
++      </property>
++      <property name="rightMargin" >
++       <number>9</number>
++      </property>
++      <property name="bottomMargin" >
++       <number>9</number>
++      </property>
+       <item>
+        <widget class="QLabel" name="textLabel1" >
+         <property name="sizePolicy" >
+-         <sizepolicy>
+-          <hsizetype>1</hsizetype>
+-          <vsizetype>0</vsizetype>
++         <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+@@ -103,12 +129,21 @@
+       </item>
+       <item>
+        <layout class="QHBoxLayout" >
+-        <property name="margin" >
+-         <number>0</number>
+-        </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
++        <property name="leftMargin" >
++         <number>0</number>
++        </property>
++        <property name="topMargin" >
++         <number>0</number>
++        </property>
++        <property name="rightMargin" >
++         <number>0</number>
++        </property>
++        <property name="bottomMargin" >
++         <number>0</number>
++        </property>
+         <item>
+          <widget class="QCheckBox" name="m_regexp" >
+           <property name="text" >
+@@ -122,9 +157,7 @@
+            <bool>false</bool>
+           </property>
+           <property name="sizePolicy" >
+-           <sizepolicy>
+-            <hsizetype>5</hsizetype>
+-            <vsizetype>0</vsizetype>
++           <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+@@ -168,26 +201,42 @@
+       <string>Action</string>
+      </property>
+      <layout class="QVBoxLayout" >
+-      <property name="margin" >
+-       <number>9</number>
+-      </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
++      <property name="leftMargin" >
++       <number>9</number>
++      </property>
++      <property name="topMargin" >
++       <number>9</number>
++      </property>
++      <property name="rightMargin" >
++       <number>9</number>
++      </property>
++      <property name="bottomMargin" >
++       <number>9</number>
++      </property>
+       <item>
+        <layout class="QHBoxLayout" >
+-        <property name="margin" >
+-         <number>0</number>
+-        </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
++        <property name="leftMargin" >
++         <number>0</number>
++        </property>
++        <property name="topMargin" >
++         <number>0</number>
++        </property>
++        <property name="rightMargin" >
++         <number>0</number>
++        </property>
++        <property name="bottomMargin" >
++         <number>0</number>
++        </property>
+         <item>
+          <widget class="QCheckBox" name="m_setImportance" >
+           <property name="sizePolicy" >
+-           <sizepolicy>
+-            <hsizetype>1</hsizetype>
+-            <vsizetype>0</vsizetype>
++           <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+@@ -203,9 +252,7 @@
+            <bool>false</bool>
+           </property>
+           <property name="sizePolicy" >
+-           <sizepolicy>
+-            <hsizetype>3</hsizetype>
+-            <vsizetype>0</vsizetype>
++           <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+@@ -247,12 +294,21 @@
+       </item>
+       <item>
+        <layout class="QHBoxLayout" >
+-        <property name="margin" >
+-         <number>0</number>
+-        </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
++        <property name="leftMargin" >
++         <number>0</number>
++        </property>
++        <property name="topMargin" >
++         <number>0</number>
++        </property>
++        <property name="rightMargin" >
++         <number>0</number>
++        </property>
++        <property name="bottomMargin" >
++         <number>0</number>
++        </property>
+         <item>
+          <widget class="QCheckBox" name="m_setBG" >
+           <property name="text" >
+@@ -266,9 +322,7 @@
+            <bool>false</bool>
+           </property>
+           <property name="sizePolicy" >
+-           <sizepolicy>
+-            <hsizetype>5</hsizetype>
+-            <vsizetype>0</vsizetype>
++           <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+@@ -298,12 +352,21 @@
+       </item>
+       <item>
+        <layout class="QHBoxLayout" >
+-        <property name="margin" >
+-         <number>0</number>
+-        </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
++        <property name="leftMargin" >
++         <number>0</number>
++        </property>
++        <property name="topMargin" >
++         <number>0</number>
++        </property>
++        <property name="rightMargin" >
++         <number>0</number>
++        </property>
++        <property name="bottomMargin" >
++         <number>0</number>
++        </property>
+         <item>
+          <widget class="QCheckBox" name="m_setFG" >
+           <property name="text" >
+@@ -317,9 +380,7 @@
+            <bool>false</bool>
+           </property>
+           <property name="sizePolicy" >
+-           <sizepolicy>
+-            <hsizetype>5</hsizetype>
+-            <vsizetype>0</vsizetype>
++           <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+@@ -349,12 +410,21 @@
+       </item>
+       <item>
+        <layout class="QHBoxLayout" >
+-        <property name="margin" >
+-         <number>0</number>
+-        </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
++        <property name="leftMargin" >
++         <number>0</number>
++        </property>
++        <property name="topMargin" >
++         <number>0</number>
++        </property>
++        <property name="rightMargin" >
++         <number>0</number>
++        </property>
++        <property name="bottomMargin" >
++         <number>0</number>
++        </property>
+         <item>
+          <widget class="QCheckBox" name="m_raise" >
+           <property name="text" >
+@@ -366,12 +436,21 @@
+       </item>
+       <item>
+        <layout class="QHBoxLayout" >
+-        <property name="margin" >
+-         <number>0</number>
+-        </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
++        <property name="leftMargin" >
++         <number>0</number>
++        </property>
++        <property name="topMargin" >
++         <number>0</number>
++        </property>
++        <property name="rightMargin" >
++         <number>0</number>
++        </property>
++        <property name="bottomMargin" >
++         <number>0</number>
++        </property>
+         <item>
+          <widget class="QPushButton" name="m_notifications" >
+           <property name="text" >
+--- kopete/plugins/alias/aliasdialogbase.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/alias/aliasdialogbase.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,4 @@
+ <ui version="4.0" >
+- <author></author>
+- <comment></comment>
+- <exportmacro></exportmacro>
+  <class>AliasDialogBase</class>
+  <widget class="QWidget" name="AliasDialogBase" >
+   <property name="geometry" >
+@@ -13,12 +10,24 @@
+    </rect>
+   </property>
+   <layout class="QGridLayout" >
+-   <property name="margin" >
+-    <number>11</number>
++   <property name="leftMargin" >
++    <number>0</number>
+    </property>
+-   <property name="spacing" >
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
++   <property name="horizontalSpacing" >
+     <number>6</number>
+    </property>
++   <property name="verticalSpacing" >
++    <number>6</number>
++   </property>
+    <item row="0" column="0" colspan="3" >
+     <widget class="K3ListView" name="aliasList" >
+      <property name="whatsThis" >
+@@ -80,19 +89,15 @@
+  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+  <customwidgets>
+   <customwidget>
++   <class>K3ListView</class>
++   <extends>Q3ListView</extends>
++   <header>k3listview.h</header>
++  </customwidget>
++  <customwidget>
+    <class>KPushButton</class>
+-   <extends></extends>
++   <extends>QPushButton</extends>
+    <header>kpushbutton.h</header>
+-   <container>0</container>
+-   <pixmap></pixmap>
+   </customwidget>
+-  <customwidget>
+-   <class>K3ListView</class>
+-   <extends></extends>
+-   <header>k3listview.h</header>
+-   <container>0</container>
+-   <pixmap></pixmap>
+-  </customwidget>
+  </customwidgets>
+  <resources/>
+  <connections/>
+--- kopete/plugins/alias/aliasdialog.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/alias/aliasdialog.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,4 @@
+ <ui version="4.0" >
+- <author></author>
+- <comment></comment>
+- <exportmacro></exportmacro>
+  <class>AliasDialog</class>
+  <widget class="QDialog" name="AliasDialog" >
+   <property name="geometry" >
+@@ -16,12 +13,24 @@
+    <string>Add New Alias</string>
+   </property>
+   <layout class="QGridLayout" >
+-   <property name="margin" >
+-    <number>11</number>
++   <property name="leftMargin" >
++    <number>0</number>
+    </property>
+-   <property name="spacing" >
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
++   <property name="horizontalSpacing" >
+     <number>6</number>
+    </property>
++   <property name="verticalSpacing" >
++    <number>6</number>
++   </property>
+    <item row="1" column="0" >
+     <widget class="QLabel" name="textLabel2" >
+      <property name="text" >
+@@ -151,26 +160,20 @@
+  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+  <customwidgets>
+   <customwidget>
++   <class>K3ListView</class>
++   <extends>Q3ListView</extends>
++   <header>k3listview.h</header>
++  </customwidget>
++  <customwidget>
+    <class>KLineEdit</class>
+-   <extends></extends>
++   <extends>QLineEdit</extends>
+    <header>klineedit.h</header>
+-   <container>0</container>
+-   <pixmap></pixmap>
+   </customwidget>
+   <customwidget>
+    <class>KPushButton</class>
+-   <extends></extends>
++   <extends>QPushButton</extends>
+    <header>kpushbutton.h</header>
+-   <container>0</container>
+-   <pixmap></pixmap>
+   </customwidget>
+-  <customwidget>
+-   <class>K3ListView</class>
+-   <extends></extends>
+-   <header>k3listview.h</header>
+-   <container>0</container>
+-   <pixmap></pixmap>
+-  </customwidget>
+  </customwidgets>
+  <tabstops>
+   <tabstop>alias</tabstop>
+--- kopete/plugins/alias/kopete_alias.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/alias/kopete_alias.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=editinput
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-KDE-Library=kopete_alias
+ X-KDE-PluginInfo-Author=Jason Keirstead
+ X-KDE-PluginInfo-Email=jason at keirstead.org
+--- kopete/plugins/alias/kopete_alias_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/alias/kopete_alias_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=color
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_alias
+ X-KDE-FactoryName=kcm_kopete_alias
+--- kopete/plugins/translator/translatorprefsbase.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/translator/translatorprefsbase.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,5 @@
+ <ui version="4.0" >
+  <author>Duncan Mac-Vicar P.</author>
+- <comment></comment>
+- <exportmacro></exportmacro>
+  <class>TranslatorPrefsUI</class>
+  <widget class="QWidget" name="TranslatorPrefsUI" >
+   <property name="geometry" >
+@@ -9,32 +7,51 @@
+     <x>0</x>
+     <y>0</y>
+     <width>274</width>
+-    <height>361</height>
++    <height>407</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+-   <sizepolicy>
+-    <hsizetype>5</hsizetype>
+-    <vsizetype>5</vsizetype>
++   <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+     <horstretch>1</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <layout class="QVBoxLayout" >
+-   <property name="margin" >
+-    <number>9</number>
+-   </property>
+    <property name="spacing" >
+     <number>6</number>
+    </property>
++   <property name="leftMargin" >
++    <number>0</number>
++   </property>
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
+    <item>
+     <layout class="QGridLayout" >
+-     <property name="margin" >
++     <property name="leftMargin" >
+       <number>0</number>
+      </property>
+-     <property name="spacing" >
++     <property name="topMargin" >
++      <number>0</number>
++     </property>
++     <property name="rightMargin" >
++      <number>0</number>
++     </property>
++     <property name="bottomMargin" >
++      <number>0</number>
++     </property>
++     <property name="horizontalSpacing" >
+       <number>6</number>
+      </property>
++     <property name="verticalSpacing" >
++      <number>6</number>
++     </property>
+      <item rowspan="2" row="0" column="2" >
+       <spacer>
+        <property name="orientation" >
+@@ -65,9 +82,7 @@
+      <item row="0" column="1" >
+       <widget class="QComboBox" name="myLang" >
+        <property name="sizePolicy" >
+-        <sizepolicy>
+-         <hsizetype>1</hsizetype>
+-         <vsizetype>0</vsizetype>
++        <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
+          <horstretch>1</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+@@ -85,12 +100,21 @@
+       <string>Incoming Messages</string>
+      </property>
+      <layout class="QVBoxLayout" >
+-      <property name="margin" >
+-       <number>9</number>
+-      </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
++      <property name="leftMargin" >
++       <number>9</number>
++      </property>
++      <property name="topMargin" >
++       <number>9</number>
++      </property>
++      <property name="rightMargin" >
++       <number>9</number>
++      </property>
++      <property name="bottomMargin" >
++       <number>9</number>
++      </property>
+       <item>
+        <widget class="QRadioButton" name="IncomingDontTranslate" >
+         <property name="text" >
+@@ -127,12 +151,21 @@
+       <string>Outgoing Messages</string>
+      </property>
+      <layout class="QVBoxLayout" >
+-      <property name="margin" >
+-       <number>9</number>
+-      </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
++      <property name="leftMargin" >
++       <number>9</number>
++      </property>
++      <property name="topMargin" >
++       <number>9</number>
++      </property>
++      <property name="rightMargin" >
++       <number>9</number>
++      </property>
++      <property name="bottomMargin" >
++       <number>9</number>
++      </property>
+       <item>
+        <widget class="QRadioButton" name="OutgoingDontTranslate" >
+         <property name="text" >
+--- kopete/plugins/translator/kopete_translator.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/translator/kopete_translator.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=preferences-desktop-locale
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-KDE-Library=kopete_translator
+ X-KDE-PluginInfo-Author=Duncan Mac-Vicar Prett
+ X-KDE-PluginInfo-Email=duncan at kde.org
+--- kopete/plugins/translator/kopete_translator_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/translator/kopete_translator_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=locale
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_translator
+ X-KDE-FactoryName=kcm_kopete_translator
+--- kopete/plugins/statistics/statisticswidgetbase.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/statistics/statisticswidgetbase.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -20,16 +20,16 @@
+     <number>6</number>
+    </property>
+    <property name="leftMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="topMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="rightMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <item>
+     <widget class="QTabWidget" name="tabWidget" >
+--- kopete/plugins/statistics/kopete_statistics.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/statistics/kopete_statistics.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=statistics
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-KDE-Library=kopete_statistics
+ X-KDE-PluginInfo-Author=Marc Cramdal
+ X-KDE-PluginInfo-Email=marc.cramdal at yahoo.fr
+--- kopete/plugins/CMakeLists.txt	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/CMakeLists.txt	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,25 +1,59 @@
++option(WITH_latex "Enable Kopete latex plugin" ON)
++option(WITH_autoreplace "Enable Kopete autoreplace plugin" ON)
++option(WITH_history "Enable Kopete history plugin" ON)
++option(WITH_contactnotes "Enable Kopete contactnotes plugin" ON)
++option(WITH_translator "Enable Kopete translator plugin" ON)
++option(WITH_nowlistening "Enable Kopete nowlistening plugin" ON)
++option(WITH_texteffect "Enable Kopete texteffect plugin" ON)
++option(WITH_highlight "Enable Kopete highlight plugin" ON)
++option(WITH_alias "Enable Kopete alias plugin" ON)
++option(WITH_addbookmarks "Enable Kopete addbookmarks plugin" ON)
++option(WITH_privacy "Enable Kopete privacy plugin" ON)
++option(WITH_urlpicpreview "Enable Kopete urlpicpreview plugin" ON)
++option(WITH_statistics "Enable Kopete statistics plugin" ON)
++option(WITH_webpresence "Enable Kopete webpresence plugin" ON)
+ 
+ # Laurent this plugins use shell script which will not work on windows
+-if (UNIX)
+-  add_subdirectory( latex ) 
+-endif (UNIX)
+-add_subdirectory( autoreplace ) 
+-add_subdirectory( history ) 
+-add_subdirectory( contactnotes ) 
+-add_subdirectory( translator ) 
+-add_subdirectory( nowlistening ) 
+-add_subdirectory( texteffect ) 
+-add_subdirectory( highlight ) 
+-add_subdirectory( alias ) 
+-add_subdirectory( addbookmarks ) 
+-add_subdirectory( privacy ) 
+-add_subdirectory( urlpicpreview ) 
+-if (SQLITE_FOUND)
++if (WITH_latex AND UNIX)
++  add_subdirectory( latex )
++endif (WITH_latex AND UNIX)
++if (WITH_autoreplace)
++  add_subdirectory( autoreplace )
++endif (WITH_autoreplace)
++if (WITH_history)
++  add_subdirectory( history )
++endif (WITH_history)
++if (WITH_contactnotes)
++  add_subdirectory( contactnotes )
++endif (WITH_contactnotes)
++if (WITH_translator)
++  add_subdirectory( translator )
++endif (WITH_translator)
++if (WITH_nowlistening)
++  add_subdirectory( nowlistening )
++endif (WITH_nowlistening)
++if (WITH_texteffect)
++  add_subdirectory( texteffect )
++endif (WITH_texteffect)
++if (WITH_highlight)
++  add_subdirectory( highlight )
++endif (WITH_highlight)
++if (WITH_alias)
++  add_subdirectory( alias )
++endif (WITH_alias)
++if (WITH_addbookmarks)
++  add_subdirectory( addbookmarks )
++endif (WITH_addbookmarks)
++if (WITH_privacy)
++  add_subdirectory( privacy )
++endif (WITH_privacy)
++if (WITH_urlpicpreview)
++  add_subdirectory( urlpicpreview )
++endif (WITH_urlpicpreview)
++if (WITH_statistics AND SQLITE_FOUND)
+   add_subdirectory ( statistics ) 
+-endif (SQLITE_FOUND)
++endif (WITH_statistics AND SQLITE_FOUND)
+ 
+-if( LIBXML2_FOUND AND LIBXSLT_FOUND )
++if(WITH_webpresence AND LIBXML2_FOUND AND LIBXSLT_FOUND)
+   add_subdirectory( webpresence )
+-endif( LIBXML2_FOUND AND LIBXSLT_FOUND )
+-
+-
++endif(WITH_webpresence AND LIBXML2_FOUND AND LIBXSLT_FOUND)
+--- kopete/plugins/latex/kopete_latex_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/latex/kopete_latex_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=latex
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_latex
+ X-KDE-ParentApp=kopete_latex
+--- kopete/plugins/latex/latexprefsbase.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/latex/latexprefsbase.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -11,6 +11,18 @@
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
++   <property name="leftMargin" >
++    <number>0</number>
++   </property>
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
+    <item>
+     <widget class="QLabel" name="textLabel1" >
+      <property name="frameShape" >
+--- kopete/plugins/latex/kopete_latex.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/latex/kopete_latex.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=latex
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-KDE-Library=kopete_latex
+ X-KDE-PluginInfo-Author=Duncan Mac-Vicar
+ X-KDE-PluginInfo-Email=duncan at kde.org
+--- kopete/plugins/privacy/kopete_privacy_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/privacy/kopete_privacy_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_privacy
+ X-KDE-FactoryName=kcm_kopete_privacy
+--- kopete/plugins/privacy/kopete_privacy.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/privacy/kopete_privacy.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=view-filter
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-KDE-Library=kopete_privacy
+ X-KDE-PluginInfo-Author=Andre Duffeck
+ X-KDE-PluginInfo-Email=duffeck at kde.org
+--- kopete/plugins/privacy/privacydialog.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/plugins/privacy/privacydialog.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -10,24 +10,48 @@
+    </rect>
+   </property>
+   <layout class="QGridLayout" >
+-   <property name="margin" >
+-    <number>9</number>
++   <property name="leftMargin" >
++    <number>0</number>
+    </property>
+-   <property name="spacing" >
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
++   <property name="horizontalSpacing" >
+     <number>6</number>
+    </property>
++   <property name="verticalSpacing" >
++    <number>6</number>
++   </property>
+    <item row="0" column="0" >
+     <widget class="QGroupBox" name="groupBox" >
+      <property name="title" >
+       <string>Filter by sender</string>
+      </property>
+      <layout class="QGridLayout" >
+-      <property name="margin" >
++      <property name="leftMargin" >
+        <number>9</number>
+       </property>
+-      <property name="spacing" >
++      <property name="topMargin" >
++       <number>9</number>
++      </property>
++      <property name="rightMargin" >
++       <number>9</number>
++      </property>
++      <property name="bottomMargin" >
++       <number>9</number>
++      </property>
++      <property name="horizontalSpacing" >
+        <number>6</number>
+       </property>
++      <property name="verticalSpacing" >
++       <number>6</number>
++      </property>
+       <item row="2" column="0" colspan="2" >
+        <widget class="QRadioButton" name="radioOnlyWhiteList" >
+         <property name="text" >
+@@ -37,12 +61,24 @@
+       </item>
+       <item row="4" column="1" >
+        <layout class="QGridLayout" >
+-        <property name="margin" >
++        <property name="leftMargin" >
+          <number>0</number>
+         </property>
+-        <property name="spacing" >
++        <property name="topMargin" >
++         <number>0</number>
++        </property>
++        <property name="rightMargin" >
++         <number>0</number>
++        </property>
++        <property name="bottomMargin" >
++         <number>0</number>
++        </property>
++        <property name="horizontalSpacing" >
+          <number>6</number>
+         </property>
++        <property name="verticalSpacing" >
++         <number>6</number>
++        </property>
+         <item row="2" column="2" >
+          <widget class="QPushButton" name="btnClearBlackList" >
+           <property name="text" >
+@@ -109,12 +145,24 @@
+       </item>
+       <item row="4" column="0" >
+        <layout class="QGridLayout" >
+-        <property name="margin" >
++        <property name="leftMargin" >
+          <number>0</number>
+         </property>
+-        <property name="spacing" >
++        <property name="topMargin" >
++         <number>0</number>
++        </property>
++        <property name="rightMargin" >
++         <number>0</number>
++        </property>
++        <property name="bottomMargin" >
++         <number>0</number>
++        </property>
++        <property name="horizontalSpacing" >
+          <number>6</number>
+         </property>
++        <property name="verticalSpacing" >
++         <number>6</number>
++        </property>
+         <item row="0" column="0" colspan="2" >
+          <widget class="QLabel" name="label" >
+           <property name="text" >
+@@ -164,12 +212,24 @@
+       <string>Filter by content (separate multiple words by commas)</string>
+      </property>
+      <layout class="QGridLayout" >
+-      <property name="margin" >
++      <property name="leftMargin" >
+        <number>9</number>
+       </property>
+-      <property name="spacing" >
++      <property name="topMargin" >
++       <number>9</number>
++      </property>
++      <property name="rightMargin" >
++       <number>9</number>
++      </property>
++      <property name="bottomMargin" >
++       <number>9</number>
++      </property>
++      <property name="horizontalSpacing" >
+        <number>6</number>
+       </property>
++      <property name="verticalSpacing" >
++       <number>6</number>
++      </property>
+       <item row="3" column="0" >
+        <widget class="QLineEdit" name="editDropAll" />
+       </item>
+--- kopete/styles/Clear/Contents/Resources/Variants/No avatars.css	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/styles/Clear/Contents/Resources/Variants/No avatars.css	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,23 +0,0 @@
+-.IncomingBody2
+-{
+-	min-height: 0;
+-	padding-bottom: 7px;
+-}
+-
+-.inUserPicture
+-{
+-	display: none;
+-	float: none;
+-}
+-
+-.OutgoingBody2
+-{
+-	min-height: 0;
+-	padding-bottom: 7px;
+-}
+-
+-.outUserPicture
+-{
+-	display: none;
+-	float: none;
+-}
+--- kopete/styles/Clear/Contents/Resources/Variants/No_avatars.css	(.../tags/KDE/3.96/kdenetwork)	(revision 0)
++++ kopete/styles/Clear/Contents/Resources/Variants/No_avatars.css	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -0,0 +1,23 @@
++.IncomingBody2
++{
++	min-height: 0;
++	padding-bottom: 7px;
++}
++
++.inUserPicture
++{
++	display: none;
++	float: none;
++}
++
++.OutgoingBody2
++{
++	min-height: 0;
++	padding-bottom: 7px;
++}
++
++.outUserPicture
++{
++	display: none;
++	float: none;
++}
+--- kopete/styles/Clear/Contents/Resources/Variants/CMakeLists.txt	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/styles/Clear/Contents/Resources/Variants/CMakeLists.txt	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1 +1 @@
+-install( FILES "No avatars.css"  DESTINATION ${DATA_INSTALL_DIR}/kopete/styles/Clear/Contents/Resources/Variants)
++install( FILES No_avatars.css  DESTINATION ${DATA_INSTALL_DIR}/kopete/styles/Clear/Contents/Resources/Variants)
+--- kopete/styles/Kopete/Contents/Resources/Variants/_compact_Contact_color.css	(.../tags/KDE/3.96/kdenetwork)	(revision 0)
++++ kopete/styles/Kopete/Contents/Resources/Variants/_compact_Contact_color.css	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -0,0 +1,23 @@
++.IncomingBody2
++{
++	min-height: 0;
++	padding-bottom: 7px;
++}
++
++.inUserPicture
++{
++	display: none;
++	float: none;
++}
++
++.OutgoingBody2
++{
++	min-height: 0;
++	padding-bottom: 7px;
++}
++
++.outUserPicture
++{
++	display: none;
++	float: none;
++}
+--- kopete/styles/Kopete/Contents/Resources/Variants/_compact_.css	(.../tags/KDE/3.96/kdenetwork)	(revision 0)
++++ kopete/styles/Kopete/Contents/Resources/Variants/_compact_.css	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -0,0 +1,23 @@
++.IncomingBody2
++{
++	min-height: 0;
++	padding-bottom: 7px;
++}
++
++.inUserPicture
++{
++	display: none;
++	float: none;
++}
++
++.OutgoingBody2
++{
++	min-height: 0;
++	padding-bottom: 7px;
++}
++
++.outUserPicture
++{
++	display: none;
++	float: none;
++}
+--- kopete/styles/Kopete/Contents/Resources/Variants/CMakeLists.txt	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/styles/Kopete/Contents/Resources/Variants/CMakeLists.txt	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,6 +1,6 @@
+ 
+ ########### install files ###############
+ 
+-install( FILES Big_pictures.css Contact_color.css  DESTINATION ${DATA_INSTALL_DIR}/kopete/styles/Kopete/Contents/Resources/Variants)
++install( FILES Big_pictures.css Contact_color.css _compact_.css _compact_Contact_color.css DESTINATION ${DATA_INSTALL_DIR}/kopete/styles/Kopete/Contents/Resources/Variants)
+ 
+ 
+--- kopete/protocols/yahoo/yahooeditaccount.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/yahoo/yahooeditaccount.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -80,7 +80,7 @@
+ 		m_photoPath = iconUrl;
+ 		if( !iconUrl.isEmpty() )
+ 			m_Picture->setPixmap( iconUrl );
+-
++		groupBox->hide();
+ 	}
+ 
+ 	QObject::connect(buttonRegister, SIGNAL(clicked()), this, SLOT(slotOpenRegister()));
+--- kopete/protocols/yahoo/kopete_yahoo.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/yahoo/kopete_yahoo.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=yahoo_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-KDE-Library=kopete_yahoo
+ X-Kopete-Messaging-Protocol=messaging/yahoo
+ X-KDE-PluginInfo-Author=Kopete Developers
+--- kopete/protocols/yahoo/yahooaccount.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/yahoo/yahooaccount.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -474,7 +474,7 @@
+ 
+ 		QObject::disconnect(m_session, SIGNAL(pictureInfoNotify(const QString&, KUrl, int)), this, SLOT(slotGotBuddyIconInfo(const QString&, KUrl, int )));
+ 
+-		QObject::disconnect(m_session, SIGNAL(gotBuddyIconRequest(const QString&)), this, SLOT(slotGotBuddyIconRequest(const QString&)) );
++		QObject::disconnect(m_session, SIGNAL(pictureRequest(const QString&)), this, SLOT(slotGotBuddyIconRequest(const QString&)) );
+ 
+ 		QObject::disconnect(m_session, SIGNAL(pictureUploaded( const QString &, int )), this, SLOT(slotBuddyIconChanged(const QString&, int)));
+ 
+--- kopete/protocols/yahoo/ui/yahooeditaccountbase.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/yahoo/ui/yahooeditaccountbase.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -5,8 +5,8 @@
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>554</width>
+-    <height>336</height>
++    <width>478</width>
++    <height>433</height>
+    </rect>
+   </property>
+   <property name="windowTitle" >
+@@ -17,16 +17,16 @@
+     <number>6</number>
+    </property>
+    <property name="leftMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="topMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="rightMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <item>
+     <widget class="QTabWidget" name="tabWidget11" >
+@@ -185,6 +185,9 @@
+             <property name="alignment" >
+              <set>Qt::AlignVCenter</set>
+             </property>
++            <property name="wordWrap" >
++             <bool>true</bool>
++            </property>
+            </widget>
+           </item>
+           <item row="1" column="0" >
+@@ -349,7 +352,7 @@
+                <string>Ser&amp;ver:</string>
+               </property>
+               <property name="buddy" >
+-               <cstring>edtServerAddress</cstring>
++               <cstring>editServerAddress</cstring>
+               </property>
+              </widget>
+             </item>
+--- kopete/protocols/gadu/kopete_gadu.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/gadu/kopete_gadu.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=gadu_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-Kopete-Messaging-Protocol=messaging/gadu
+ X-KDE-Library=kopete_gadu
+ X-KDE-PluginInfo-Author=Grzegorz Jaskiewicz
+--- kopete/protocols/winpopup/kopete_wp.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/winpopup/kopete_wp.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=wp_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-KDE-Library=kopete_wp
+ X-Kopete-Messaging-Protocol=messaging/winpopup
+ X-KDE-PluginInfo-Author=Gav Wood
+--- kopete/protocols/qq/kopete_qq.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/qq/kopete_qq.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=qq_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-KDE-Library=kopete_qq
+ X-Kopete-Messaging-Protocol=messaging/qq
+ X-KDE-PluginInfo-Author=Hui Jin
+--- kopete/protocols/groupwise/kopete_groupwise.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/groupwise/kopete_groupwise.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=groupwise_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-KDE-Library=kopete_groupwise
+ X-Kopete-Messaging-Protocol=messaging/groupwise
+ X-KDE-PluginInfo-Author=Will Stephenson
+--- kopete/protocols/jabber/kopete_jabber.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/jabber/kopete_jabber.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=jabber_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-KDE-Library=kopete_jabber
+ X-Kopete-Messaging-Protocol=messaging/xmpp
+ X-KDE-PluginInfo-Author=Kopete Developers
+--- kopete/protocols/jabber/jabberaccount.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/jabber/jabberaccount.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1724,7 +1724,7 @@
+ 					i18n("Unregister"),
+ 					KGuiItem(i18n( "Remove and Unregister" ), "edit-delete"),
+ 					KGuiItem(i18n( "Remove only from Kopete"), "user-trash"),KStandardGuiItem::cancel(),
+-					"askUnregisterJabberAccount", KMessageBox::Notify | KMessageBox::Dangerous );
++					QString(), KMessageBox::Notify | KMessageBox::Dangerous );
+ 		if(result == KMessageBox::Cancel)
+ 		{
+ 			return false;
+--- kopete/protocols/jabber/ui/jabbereditaccountwidget.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/jabber/ui/jabbereditaccountwidget.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -59,11 +59,13 @@
+ 	{
+ 		// we are working with an existing account
+ 		reopen ();
++		registrationGroupBox->hide();
+ 		btnRegister->setEnabled ( false );
+ 	}
+ 	else
+ 	{
+ 		// this is a new account
++		changePasswordGroupBox->hide();
+ 		btnChangePassword->setEnabled ( false );
+ 		connect (btnRegister, SIGNAL (clicked ()), this, SLOT (registerClicked ()));
+ 	}
+--- kopete/protocols/jabber/ui/dlgjabbereditaccountwidget.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/jabber/ui/dlgjabbereditaccountwidget.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -6,8 +6,8 @@
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>718</width>
+-    <height>522</height>
++    <width>511</width>
++    <height>568</height>
+    </rect>
+   </property>
+   <property name="windowTitle" >
+@@ -24,16 +24,16 @@
+     <number>6</number>
+    </property>
+    <property name="leftMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="topMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="rightMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <item>
+     <widget class="QTabWidget" name="tabWidget10" >
+@@ -138,7 +138,7 @@
+         </widget>
+        </item>
+        <item>
+-        <widget class="QGroupBox" name="groupBox_2" >
++        <widget class="QGroupBox" name="registrationGroupBox" >
+          <property name="title" >
+           <string>Registration</string>
+          </property>
+@@ -229,7 +229,7 @@
+         </widget>
+        </item>
+        <item>
+-        <widget class="QGroupBox" name="groupBox_3" >
++        <widget class="QGroupBox" name="changePasswordGroupBox" >
+          <property name="title" >
+           <string>Change Password</string>
+          </property>
+@@ -717,21 +717,6 @@
+           <string>File Transfer Settings</string>
+          </property>
+          <layout class="QVBoxLayout" >
+-          <property name="spacing" >
+-           <number>6</number>
+-          </property>
+-          <property name="leftMargin" >
+-           <number>9</number>
+-          </property>
+-          <property name="topMargin" >
+-           <number>9</number>
+-          </property>
+-          <property name="rightMargin" >
+-           <number>9</number>
+-          </property>
+-          <property name="bottomMargin" >
+-           <number>9</number>
+-          </property>
+           <item>
+            <layout class="QGridLayout" >
+             <property name="leftMargin" >
+@@ -831,6 +816,9 @@
+             <property name="alignment" >
+              <set>Qt::AlignVCenter</set>
+             </property>
++            <property name="wordWrap" >
++             <bool>true</bool>
++            </property>
+            </widget>
+           </item>
+          </layout>
+@@ -1150,48 +1138,48 @@
+   <connection>
+    <sender>cbCustomServer</sender>
+    <signal>toggled(bool)</signal>
+-   <receiver>mServer</receiver>
++   <receiver>labelPort</receiver>
+    <slot>setEnabled(bool)</slot>
+    <hints>
+     <hint type="sourcelabel" >
+-     <x>204</x>
+-     <y>129</y>
++     <x>575</x>
++     <y>124</y>
+     </hint>
+     <hint type="destinationlabel" >
+-     <x>202</x>
+-     <y>145</y>
++     <x>596</x>
++     <y>144</y>
+     </hint>
+    </hints>
+   </connection>
+   <connection>
+    <sender>cbCustomServer</sender>
+    <signal>toggled(bool)</signal>
+-   <receiver>labelPort</receiver>
++   <receiver>mPort</receiver>
+    <slot>setEnabled(bool)</slot>
+    <hints>
+     <hint type="sourcelabel" >
+-     <x>575</x>
+-     <y>124</y>
++     <x>603</x>
++     <y>126</y>
+     </hint>
+     <hint type="destinationlabel" >
+-     <x>596</x>
+-     <y>144</y>
++     <x>636</x>
++     <y>140</y>
+     </hint>
+    </hints>
+   </connection>
+   <connection>
+    <sender>cbCustomServer</sender>
+    <signal>toggled(bool)</signal>
+-   <receiver>mPort</receiver>
++   <receiver>mServer</receiver>
+    <slot>setEnabled(bool)</slot>
+    <hints>
+     <hint type="sourcelabel" >
+-     <x>603</x>
+-     <y>126</y>
++     <x>204</x>
++     <y>129</y>
+     </hint>
+     <hint type="destinationlabel" >
+-     <x>636</x>
+-     <y>140</y>
++     <x>202</x>
++     <y>145</y>
+     </hint>
+    </hints>
+   </connection>
+--- kopete/protocols/messenger/kopete_messenger.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/messenger/kopete_messenger.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Icon=msn_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-KDE-Library=kopete_messenger
+ X-Kopete-Version=1000900
+ X-Kopete-Messaging-Protocol=messaging/messenger
+--- kopete/protocols/testbed/testbedcontact.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/testbed/testbedcontact.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -75,7 +75,7 @@
+ 	{
+ 		QList<Kopete::Contact*> contacts;
+ 		contacts.append(this);
+-		m_msgManager = Kopete::ChatSessionManager::self()->create(account()->myself(), contacts, protocol());
++		m_msgManager = Kopete::ChatSessionManager::self()->create(account()->myself(), contacts, protocol(), Kopete::ChatSession::Chatroom);
+ 		connect(m_msgManager, SIGNAL(messageSent(Kopete::Message&, Kopete::ChatSession*)),
+ 				this, SLOT( sendMessage( Kopete::Message& ) ) );
+ 		connect(m_msgManager, SIGNAL(destroyed()), this, SLOT(slotChatSessionDestroyed()));
+--- kopete/protocols/testbed/testbedprotocol.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/testbed/testbedprotocol.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -32,11 +32,11 @@
+ TestbedProtocol::TestbedProtocol( QObject* parent, const QStringList &/*args*/ )
+ 	: Kopete::Protocol( TestbedProtocolFactory::componentData(), parent ),
+ 	  testbedOnline(  Kopete::OnlineStatus::Online, 25, this, 0,  QStringList(QString()),  
+-			  i18n( "Online" ),   i18n( "O&nline" ) ),
++			  i18n( "Online" ),   i18n( "O&nline" ), Kopete::OnlineStatusManager::Online ),
+ 	  testbedAway(  Kopete::OnlineStatus::Away, 25, this, 1, QStringList(QLatin1String("msn_away")),  
+-			  i18n( "Away" ),   i18n( "&Away" ) ),
++			  i18n( "Away" ),   i18n( "&Away" ), Kopete::OnlineStatusManager::Away ),
+ 	  testbedOffline(  Kopete::OnlineStatus::Offline, 25, this, 2,  QStringList(QString()), 
+-			  i18n( "Offline" ),   i18n( "O&ffline" ) )
++			  i18n( "Offline" ),   i18n( "O&ffline" ), Kopete::OnlineStatusManager::Offline )
+ 
+ {
+ 	kDebug( 14210 ) ;
+--- kopete/protocols/testbed/testbedaccountpreferences.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/testbed/testbedaccountpreferences.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,27 +1,33 @@
+ <ui version="4.0" >
+- <author></author>
+- <comment></comment>
+- <exportmacro></exportmacro>
+  <class>TestbedAccountPreferences</class>
+  <widget class="QWidget" name="TestbedAccountPreferences" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>675</width>
+-    <height>660</height>
++    <width>362</width>
++    <height>272</height>
+    </rect>
+   </property>
+   <property name="windowTitle" >
+    <string>Account Preferences - Testbed</string>
+   </property>
+   <layout class="QVBoxLayout" >
+-   <property name="margin" >
+-    <number>9</number>
+-   </property>
+    <property name="spacing" >
+     <number>6</number>
+    </property>
++   <property name="leftMargin" >
++    <number>0</number>
++   </property>
++   <property name="topMargin" >
++    <number>0</number>
++   </property>
++   <property name="rightMargin" >
++    <number>0</number>
++   </property>
++   <property name="bottomMargin" >
++    <number>0</number>
++   </property>
+    <item>
+     <widget class="QTabWidget" name="tabWidget11" >
+      <widget class="QWidget" name="tab" >
+@@ -29,32 +35,59 @@
+        <string>B&amp;asic Setup</string>
+       </attribute>
+       <layout class="QVBoxLayout" >
+-       <property name="margin" >
+-        <number>9</number>
+-       </property>
+        <property name="spacing" >
+         <number>6</number>
+        </property>
++       <property name="leftMargin" >
++        <number>9</number>
++       </property>
++       <property name="topMargin" >
++        <number>9</number>
++       </property>
++       <property name="rightMargin" >
++        <number>9</number>
++       </property>
++       <property name="bottomMargin" >
++        <number>9</number>
++       </property>
+        <item>
+         <widget class="QGroupBox" name="groupBox" >
+          <property name="title" >
+           <string>Account Information</string>
+          </property>
+          <layout class="QVBoxLayout" >
+-          <property name="margin" >
+-           <number>9</number>
+-          </property>
+           <property name="spacing" >
+            <number>6</number>
+           </property>
++          <property name="leftMargin" >
++           <number>9</number>
++          </property>
++          <property name="topMargin" >
++           <number>9</number>
++          </property>
++          <property name="rightMargin" >
++           <number>9</number>
++          </property>
++          <property name="bottomMargin" >
++           <number>9</number>
++          </property>
+           <item>
+            <layout class="QHBoxLayout" >
+-            <property name="margin" >
+-             <number>0</number>
+-            </property>
+             <property name="spacing" >
+              <number>6</number>
+             </property>
++            <property name="leftMargin" >
++             <number>0</number>
++            </property>
++            <property name="topMargin" >
++             <number>0</number>
++            </property>
++            <property name="rightMargin" >
++             <number>0</number>
++            </property>
++            <property name="bottomMargin" >
++             <number>0</number>
++            </property>
+             <item>
+              <widget class="QLabel" name="accountLabel" >
+               <property name="toolTip" >
+@@ -92,18 +125,25 @@
+           <string>Information</string>
+          </property>
+          <layout class="QVBoxLayout" >
+-          <property name="margin" >
+-           <number>9</number>
+-          </property>
+           <property name="spacing" >
+            <number>6</number>
+           </property>
++          <property name="leftMargin" >
++           <number>9</number>
++          </property>
++          <property name="topMargin" >
++           <number>9</number>
++          </property>
++          <property name="rightMargin" >
++           <number>9</number>
++          </property>
++          <property name="bottomMargin" >
++           <number>9</number>
++          </property>
+           <item>
+            <widget class="QLabel" name="textLabel12" >
+             <property name="sizePolicy" >
+-             <sizepolicy>
+-              <hsizetype>3</hsizetype>
+-              <vsizetype>1</vsizetype>
++             <sizepolicy vsizetype="Minimum" hsizetype="MinimumExpanding" >
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+@@ -114,6 +154,9 @@
+             <property name="alignment" >
+              <set>Qt::AlignTop</set>
+             </property>
++            <property name="wordWrap" >
++             <bool>true</bool>
++            </property>
+            </widget>
+           </item>
+          </layout>
+--- kopete/protocols/testbed/kopete_testbed.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/testbed/kopete_testbed.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=testbed_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-KDE-Library=kopete_testbed
+ X-Kopete-Messaging-Protocol=messaging/testbed
+ X-KDE-PluginInfo-Author=Will Stephenson
+--- kopete/protocols/msn/kopete_msn.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/msn/kopete_msn.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Icon=msn_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-KDE-Library=kopete_msn
+ X-Kopete-Version=1000900
+ X-Kopete-Messaging-Protocol=messaging/msn
+--- kopete/protocols/msn/config/kopete_msn_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/msn/config/kopete_msn_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=msn_protocol
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-ModuleType=Library
+ X-KDE-Library=kcm_kopete_msn
+--- kopete/protocols/msn/ui/msneditaccountui.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/msn/ui/msneditaccountui.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -6,8 +6,8 @@
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>716</width>
+-    <height>739</height>
++    <width>601</width>
++    <height>512</height>
+    </rect>
+   </property>
+   <property name="windowTitle" >
+@@ -18,21 +18,21 @@
+     <number>6</number>
+    </property>
+    <property name="leftMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="topMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="rightMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <property name="bottomMargin" >
+-    <number>9</number>
++    <number>0</number>
+    </property>
+    <item>
+     <widget class="QTabWidget" name="tabWidget3" >
+      <property name="currentIndex" >
+-      <number>0</number>
++      <number>1</number>
+      </property>
+      <widget class="QWidget" name="tab_connection" >
+       <attribute name="title" >
+@@ -174,6 +174,9 @@
+             <property name="alignment" >
+              <set>Qt::AlignVCenter</set>
+             </property>
++            <property name="wordWrap" >
++             <bool>true</bool>
++            </property>
+            </widget>
+           </item>
+           <item>
+@@ -210,177 +213,6 @@
+       </attribute>
+       <layout class="QVBoxLayout" >
+        <item>
+-        <widget class="QGroupBox" name="groupBox_2" >
+-         <property name="title" >
+-          <string>Connection Preferences</string>
+-         </property>
+-         <layout class="QVBoxLayout" >
+-          <property name="spacing" >
+-           <number>6</number>
+-          </property>
+-          <property name="leftMargin" >
+-           <number>9</number>
+-          </property>
+-          <property name="topMargin" >
+-           <number>9</number>
+-          </property>
+-          <property name="rightMargin" >
+-           <number>9</number>
+-          </property>
+-          <property name="bottomMargin" >
+-           <number>9</number>
+-          </property>
+-          <item>
+-           <widget class="QCheckBox" name="optionOverrideServer" >
+-            <property name="text" >
+-             <string>&amp;Override default server information</string>
+-            </property>
+-           </widget>
+-          </item>
+-          <item>
+-           <layout class="QGridLayout" >
+-            <property name="leftMargin" >
+-             <number>0</number>
+-            </property>
+-            <property name="topMargin" >
+-             <number>0</number>
+-            </property>
+-            <property name="rightMargin" >
+-             <number>0</number>
+-            </property>
+-            <property name="bottomMargin" >
+-             <number>0</number>
+-            </property>
+-            <property name="horizontalSpacing" >
+-             <number>6</number>
+-            </property>
+-            <property name="verticalSpacing" >
+-             <number>6</number>
+-            </property>
+-            <item row="0" column="1" >
+-             <layout class="QHBoxLayout" >
+-              <property name="spacing" >
+-               <number>3</number>
+-              </property>
+-              <property name="leftMargin" >
+-               <number>0</number>
+-              </property>
+-              <property name="topMargin" >
+-               <number>0</number>
+-              </property>
+-              <property name="rightMargin" >
+-               <number>0</number>
+-              </property>
+-              <property name="bottomMargin" >
+-               <number>0</number>
+-              </property>
+-              <item>
+-               <widget class="QLabel" name="labelServer" >
+-                <property name="enabled" >
+-                 <bool>false</bool>
+-                </property>
+-                <property name="text" >
+-                 <string>Ser&amp;ver /</string>
+-                </property>
+-                <property name="buddy" >
+-                 <cstring>m_serverName</cstring>
+-                </property>
+-               </widget>
+-              </item>
+-              <item>
+-               <widget class="QLabel" name="labelPort" >
+-                <property name="enabled" >
+-                 <bool>false</bool>
+-                </property>
+-                <property name="text" >
+-                 <string>po&amp;rt:</string>
+-                </property>
+-                <property name="buddy" >
+-                 <cstring>m_serverPort</cstring>
+-                </property>
+-               </widget>
+-              </item>
+-             </layout>
+-            </item>
+-            <item row="0" column="0" >
+-             <spacer>
+-              <property name="orientation" >
+-               <enum>Qt::Horizontal</enum>
+-              </property>
+-              <property name="sizeType" >
+-               <enum>QSizePolicy::Fixed</enum>
+-              </property>
+-              <property name="sizeHint" >
+-               <size>
+-                <width>16</width>
+-                <height>20</height>
+-               </size>
+-              </property>
+-             </spacer>
+-            </item>
+-            <item row="0" column="3" >
+-             <widget class="QSpinBox" name="m_serverPort" >
+-              <property name="enabled" >
+-               <bool>false</bool>
+-              </property>
+-              <property name="toolTip" >
+-               <string>Only modify these values if you want to use a special IM proxy server, like SIMP</string>
+-              </property>
+-              <property name="whatsThis" >
+-               <string>Only modify these values if you want to use a special IM proxy server, like SIMP</string>
+-              </property>
+-              <property name="minimum" >
+-               <number>1</number>
+-              </property>
+-              <property name="maximum" >
+-               <number>65535</number>
+-              </property>
+-              <property name="value" >
+-               <number>1863</number>
+-              </property>
+-             </widget>
+-            </item>
+-            <item row="1" column="1" colspan="3" >
+-             <widget class="QCheckBox" name="optionUseHttpMethod" >
+-              <property name="enabled" >
+-               <bool>false</bool>
+-              </property>
+-              <property name="text" >
+-               <string>Use HTTP method</string>
+-              </property>
+-              <property name="shortcut" >
+-               <string/>
+-              </property>
+-             </widget>
+-            </item>
+-            <item row="0" column="2" >
+-             <widget class="QLineEdit" name="m_serverName" >
+-              <property name="enabled" >
+-               <bool>false</bool>
+-              </property>
+-              <property name="sizePolicy" >
+-               <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
+-                <horstretch>0</horstretch>
+-                <verstretch>0</verstretch>
+-               </sizepolicy>
+-              </property>
+-              <property name="toolTip" >
+-               <string>Only modify these values if you want to use a special IM proxy server, like SIMP</string>
+-              </property>
+-              <property name="whatsThis" >
+-               <string>Only modify these values if you want to use a special IM proxy server, like SIMP</string>
+-              </property>
+-              <property name="text" >
+-               <string>messenger.hotmail.com</string>
+-              </property>
+-             </widget>
+-            </item>
+-           </layout>
+-          </item>
+-         </layout>
+-        </widget>
+-       </item>
+-       <item>
+         <widget class="QGroupBox" name="global_settings_page" >
+          <property name="title" >
+           <string>Global MSN Options</string>
+@@ -924,6 +756,9 @@
+               <property name="alignment" >
+                <set>Qt::AlignVCenter</set>
+               </property>
++              <property name="wordWrap" >
++               <bool>true</bool>
++              </property>
+              </widget>
+             </item>
+            </layout>
+--- kopete/protocols/telepathy/ui/telepathyeditaccountwidget.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/telepathy/ui/telepathyeditaccountwidget.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -203,12 +203,12 @@
+ 	accountConfig->writeEntry( QLatin1String("SelectedProtocol"), selectedProtocol );
+ 	
+ 	// Write config related to ConnectionManager Parameter
+-	KSharedConfig::Ptr telepathyConfig = KGlobal::config();
+-	telepathyConfig->setGroup( TelepathyProtocol::protocol()->formatTelepathyConfigGroup(selectedConnectionManager, selectedProtocol, accountId) );
++	QString telepathyGroup(TelepathyProtocol::protocol()->formatTelepathyConfigGroup(selectedConnectionManager, selectedProtocol, accountId));
++	KConfigGroup telepathyConfig = KGlobal::config()->group(telepathyGroup);
+ 	
+ 	foreach(ConnectionManager::Parameter parameter, d->savedParameterList)
+ 	{
+-		telepathyConfig->writeEntry( parameter.name(), parameter.value() );
++		telepathyConfig.writeEntry( parameter.name(), parameter.value() );
+ 	}
+ }
+ 
+--- kopete/protocols/telepathy/kopete_telepathy.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/telepathy/kopete_telepathy.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Icon=telepathy_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-KDE-Library=kopete_telepathy
+ X-Kopete-Version=1000900
+ X-Kopete-Messaging-Protocol=messaging/telepathy
+--- kopete/protocols/sms/kopete_sms.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/sms/kopete_sms.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=sms_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-Kopete-Messaging-Protocol=messaging/sms
+ X-KDE-Library=kopete_sms
+ X-KDE-PluginInfo-Author=Richard Lärkäng
+--- kopete/protocols/oscar/liboscar/buffer.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/oscar/liboscar/buffer.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -183,7 +183,7 @@
+ 		mReadPos++;
+ 	}
+ 	else
+-		kDebug(14150) << "Buffer::getByte(): mBuffer empty" << endl;
++		kDebug(14150) << "Buffer::getByte(): mBuffer empty";
+ 
+ 	return thebyte;
+ }
+@@ -247,7 +247,7 @@
+ {
+ 	if ( len > (Oscar::DWORD)(mBuffer.size() - mReadPos) )
+ 	{
+-		kDebug(14150) << "Buffer::getBlock(DWORD): mBuffer underflow!!!" << endl;
++		kDebug(14150) << "Buffer::getBlock(DWORD): mBuffer underflow!!!";
+ 		len = mBuffer.size() - mReadPos;
+ 	}
+ 
+@@ -272,7 +272,7 @@
+ 
+ Oscar::WORD *Buffer::getWordBlock(Oscar::WORD len)
+ {
+-	kDebug(14150) << "of length " << len << endl;
++	kDebug(14150) << "of length " << len;
+ 	Oscar::WORD *ch=new Oscar::WORD[len+1];
+ 	for (unsigned int i=0; i<len; i++)
+ 	{
+@@ -344,10 +344,10 @@
+ 		if ( t )
+ 			t.data = getBlock( t.length );
+ 		/*else
+-			kDebug(OSCAR_RAW_DEBUG) << "Invalid TLV in buffer" << endl;*/
++			kDebug(OSCAR_RAW_DEBUG) << "Invalid TLV in buffer";*/
+ 	}
+ 
+-	//kDebug(OSCAR_RAW_DEBUG) << "TLV data is " << t.data << endl;
++	//kDebug(OSCAR_RAW_DEBUG) << "TLV data is " << t.data;
+ 	return t;
+ }
+ 
+@@ -362,11 +362,11 @@
+ 		t = getTLV();
+ 		if ( !t )
+ 		{
+-			kDebug(14150) << "Invalid TLV found" << endl;
++			kDebug(14150) << "Invalid TLV found";
+ 			continue;
+ 		}
+ 
+-		//kDebug(14150) << "got TLV(" << t.type << ")" << endl;
++		//kDebug(14150) << "got TLV(" << t.type << ")";
+ 		ql.append(t);
+ 	}
+ 
+--- kopete/protocols/oscar/liboscar/client.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/oscar/liboscar/client.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -975,7 +975,7 @@
+ 				return;
+ 		}
+ 
+-		kDebug( OSCAR_RAW_DEBUG ) << "Changing " << contact << "'s alias to " << alias << endl;
++		kDebug( OSCAR_RAW_DEBUG ) << "Changing " << contact << "'s alias to " << alias;
+ 		SSIModifyTask* ssimt = new SSIModifyTask( c->rootTask() );
+ 		if ( ssimt->modifyContact( oldItem, item ) )
+ 			ssimt->go( Task::AutoDelete );
+--- kopete/protocols/oscar/aim/kopete_aim.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/oscar/aim/kopete_aim.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=aim_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-KDE-Library=kopete_aim
+ X-Kopete-Messaging-Protocol=messaging/aim
+ X-KDE-PluginInfo-Author=Kopete Developers
+--- kopete/protocols/oscar/aim/ui/aimeditaccountui.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/oscar/aim/ui/aimeditaccountui.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -5,8 +5,8 @@
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>484</width>
+-    <height>371</height>
++    <width>507</width>
++    <height>420</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+@@ -73,7 +73,7 @@
+         </spacer>
+        </item>
+        <item row="1" column="0" >
+-        <widget class="QGroupBox" name="groupBox_2" >
++        <widget class="QGroupBox" name="registrationGroupBox" >
+          <property name="title" >
+           <string>Registration</string>
+          </property>
+@@ -891,7 +891,7 @@
+  <customwidgets>
+   <customwidget>
+    <class>Kopete::UI::PasswordWidget</class>
+-   <extends>QWidget</extends>
++   <extends></extends>
+    <header>kopetepasswordwidget.h</header>
+   </customwidget>
+  </customwidgets>
+--- kopete/protocols/oscar/aim/ui/aimeditaccountwidget.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/oscar/aim/ui/aimeditaccountwidget.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -111,6 +111,9 @@
+ 			QObject::connect( mGui->invisibleAdd, SIGNAL( clicked() ), m_invisibleEngine, SLOT( slotAdd() ) );
+ 			QObject::connect( mGui->invisibleRemove, SIGNAL( clicked() ), m_invisibleEngine, SLOT( slotRemove() ) );
+ 		}
++
++		// Hide the register UI if editing an existing account
++		mGui->registrationGroupBox->hide();
+     }
+ 	QObject::connect( mGui->buttonRegister, SIGNAL( clicked() ), this, SLOT( slotOpenRegister() ) );
+ 
+--- kopete/protocols/oscar/icq/kopete_icq.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/oscar/icq/kopete_icq.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=icq_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-KDE-Library=kopete_icq
+ X-Kopete-Messaging-Protocol=messaging/icq
+ X-KDE-PluginInfo-Author=Kopete Developers
+--- kopete/protocols/oscar/icq/icqcontact.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/oscar/icq/icqcontact.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -312,7 +312,7 @@
+ 
+ 	if ( m_ssiItem.alias().isEmpty() && !shortInfo.nickname.isEmpty() )
+ 	{
+-		kDebug(OSCAR_ICQ_DEBUG) << "setting new displayname for former UIN-only Contact" << endl;
++		kDebug(OSCAR_ICQ_DEBUG) << "setting new displayname for former UIN-only Contact";
+ 		setProperty( Kopete::Global::Properties::self()->nickName(), codec->toUnicode( shortInfo.nickname ) );
+ 	}
+ }
+--- kopete/protocols/oscar/icq/ui/icqeditaccountwidget.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/oscar/icq/ui/icqeditaccountwidget.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -134,6 +134,8 @@
+ 			QObject::connect( mAccountSettings->ignoreAdd, SIGNAL( clicked() ), m_ignoreEngine, SLOT( slotAdd() ) );
+ 			QObject::connect( mAccountSettings->ignoreRemove, SIGNAL( clicked() ), m_ignoreEngine, SLOT( slotRemove() ) );
+ 		}
++		// Hide the registration UI when editing an existing account
++		mAccountSettings->registrationGroupBox->hide();
+ 	}
+ 	else
+ 	{
+@@ -143,6 +145,7 @@
+ 		mProtocol->setComboFromTable( mAccountSettings->encodingCombo,
+ 		                              mProtocol->encodings(),
+ 		                              encodingId );
++		mAccountSettings->changePasswordGroupBox->hide();
+ 	}
+ 
+ 	if ( !mAccount || !mAccount->engine()->isActive() )
+--- kopete/protocols/oscar/icq/ui/icqeditaccountui.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/oscar/icq/ui/icqeditaccountui.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -5,8 +5,8 @@
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>493</width>
+-    <height>471</height>
++    <width>578</width>
++    <height>546</height>
+    </rect>
+   </property>
+   <property name="windowTitle" >
+@@ -139,7 +139,7 @@
+         </widget>
+        </item>
+        <item>
+-        <widget class="QGroupBox" name="groupBox_2" >
++        <widget class="QGroupBox" name="registrationGroupBox" >
+          <property name="title" >
+           <string>Registration</string>
+          </property>
+@@ -196,7 +196,7 @@
+         </widget>
+        </item>
+        <item>
+-        <widget class="QGroupBox" name="groupBox_5" >
++        <widget class="QGroupBox" name="changePasswordGroupBox" >
+          <property name="title" >
+           <string>Change password</string>
+          </property>
+@@ -951,7 +951,7 @@
+  <customwidgets>
+   <customwidget>
+    <class>Kopete::UI::PasswordWidget</class>
+-   <extends>QWidget</extends>
++   <extends></extends>
+    <header>kopetepasswordwidget.h</header>
+   </customwidget>
+  </customwidgets>
+--- kopete/protocols/meanwhile/kopete_meanwhile.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/meanwhile/kopete_meanwhile.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=meanwhile_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-KDE-Library=kopete_meanwhile
+ X-Kopete-Messaging-Protocol=messaging/meanwhile
+ X-KDE-PluginInfo-Author=Sivaram Gottimukkala
+--- kopete/protocols/irc/kopete_irc.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/irc/kopete_irc.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ X-Kopete-Version=1000900
+ Icon=irc_protocol
+-ServiceTypes=Kopete/Protocol
++X-KDE-ServiceTypes=Kopete/Protocol
+ X-KDE-Library=kopete_irc
+ X-Kopete-Messaging-Protocol=messaging/irc
+ X-KDE-PluginInfo-Author=Kopete Developers
+--- kopete/protocols/CMakeLists.txt	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/protocols/CMakeLists.txt	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -2,22 +2,42 @@
+ 
+ option(WITH_testbed "Enable Kopete testbed protocol" ON)
+ option(WITH_messenger "Enable Kopete MSN/Windows Live Messenger protocol" OFF)
++option(WITH_msn "Enable Kopete MSN protocol" ON)
++option(WITH_oscar "Enable Kopete Oscar (ICQ and AIM) protocol" ON)
++option(WITH_yahoo "Enable Kopete Yahoo protocol" ON)
++option(WITH_qq "Enable Kopete QQ protocol" ON)
+ option(WITH_sms "Enable Kopete SMS protocol" ON)
+ option(WITH_groupwise "Enable Novell GroupWise Messenger protocol" ON)
+ option(WITH_telepathy "Enable Telepathy testbed protocol" OFF)
++option(WITH_winpopup "Enable Kopete winpopup protocol" ON)
++option(WITH_gadu "Enable Kopete Gadu-Gadu protocol" ON)
++option(WITH_jabber "Enable Kopete Jabber protocol" ON)
++# option(WITH_irc "Enable Kopete IRC protocol" OFF)
+ 
+ include_directories(${KOPETE_INCLUDES})
+ 
+-add_subdirectory( msn ) 
+-add_subdirectory( oscar ) 
+-add_subdirectory( yahoo ) 
+-add_subdirectory( qq )
+-#add_subdirectory( irc )
++if(WITH_msn)
++  add_subdirectory( msn ) 
++endif(WITH_msn)
++if(WITH_oscar)
++  add_subdirectory( oscar )
++endif(WITH_oscar)
++if(WITH_yahoo)
++  add_subdirectory( yahoo ) 
++endif(WITH_yahoo)
++if(WITH_qq)
++  add_subdirectory( qq )
++endif(WITH_qq)
++# if(WITH_irc)
++#   add_subdirectory( irc )
++# endif(WITH_irc)
+ if(NOT WIN32)
+-  add_subdirectory( winpopup )
+-  if(OPENSSL_FOUND)
++  if(WITH_winpopup)
++    add_subdirectory( winpopup )
++  endif(WITH_winpopup)
++  if(WITH_gadu AND OPENSSL_FOUND)
+ 	add_subdirectory( gadu )
+-  endif(OPENSSL_FOUND)
++  endif(WITH_gadu AND OPENSSL_FOUND)
+   if(WITH_sms)
+     add_subdirectory( sms )
+   endif(WITH_sms)
+@@ -29,7 +49,9 @@
+ 
+ if(QCA2_FOUND)
+   if(IDN_FOUND)
+-     add_subdirectory( jabber )
++    if(WITH_jabber)
++      add_subdirectory( jabber )
++    endif(WITH_jabber)
+   else(IDN_FOUND)
+     message(STATUS "${CMAKE_CURRENT_SOURCE_DIR}: Disabled Jabber because libidn-devel was not found")
+   endif(IDN_FOUND)
+--- kopete/kopete/kopete.notifyrc	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/kopete.notifyrc	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -539,7 +539,6 @@
+ Comment[km]=បាន​ទទួល​សារ​សំខាន់​មួយ
+ Comment[lt]=Gauta paryškinta žinutė
+ Comment[mk]=Примена е осветлена порака
+-Comment[nb]=En fremhevet melding er mottatt
+ Comment[nds]=En rutheevt Naricht keem rin
+ Comment[nl]=Er is een geaccentueerd bericht ontvangen
+ Comment[pl]=Podświetlona wiadomość została odebrana
+@@ -1248,7 +1247,7 @@
+ Comment[cs]=Osoba vám poslala šťouchanec :-)
+ Comment[da]=En kontakt har sendt dig en buzz/nudge.
+ Comment[de]=Ein Benutzer macht auf sich aufmerksam.
+-Comment[el]=Μία επαφή σας έστειλε ένα βομβητή/Ειδοποίηση
++Comment[el]=Μία επαφή σας έστειλε ένα βομβητή/Ειδοποίηση.
+ Comment[et]=Kontakt müksas sind.
+ Comment[eu]=Kontaktu batek burrumbada/ukondokada bat bidali dizu.
+ Comment[fr]=Un contact vous a envoyé une vibration.
+--- kopete/kopete/kopetewindow.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/kopetewindow.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -162,7 +162,7 @@
+ 	 * Protected slot to setup the Set Global Status Message menu.
+ 	 */
+ 	void slotBuildStatusMessageMenu();
+-	void slotStatusMessageSelected( int i );
++	void slotStatusMessageSelected( QAction *action );
+ 	void slotNewStatusMessageEntered();
+ 
+ 	/**
+--- kopete/kopete/addaccountwizard/addaccountwizard.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/addaccountwizard/addaccountwizard.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -209,6 +209,7 @@
+ 	// if the account wasn't created correctly then leave
+ 	if (!account)
+ 	{
++		reject();
+ 		return;
+ 	}
+ 
+--- kopete/kopete/identity/identitystatuswidget.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/identity/identitystatuswidget.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -28,6 +28,7 @@
+ #include <QUrl>
+ #include <KColorScheme>
+ #include <kopeteidentity.h>
++#include <kopeteidentitymanager.h>
+ #include <kopeteaccount.h>
+ #include <kopeteaccountmanager.h>
+ #include <kopetecontact.h>
+@@ -43,8 +44,6 @@
+ 	Ui::IdentityStatusBase ui;
+ 	QTimeLine *timeline;
+ 	QString photoPath;
+-	// Used to display changing nickname in red
+-	QString lastNickName;
+ 	QHash<QListWidgetItem *,Kopete::Account *> accountHash;
+ };
+ 
+@@ -69,8 +68,6 @@
+ 	// user input signals
+ 	connect( d->ui.accounts, SIGNAL(customContextMenuRequested(const QPoint &)),
+ 			this, SLOT(showAccountContextMenu(const QPoint &)) );
+-	connect( d->ui.nickName, SIGNAL(editingFinished()), this, SLOT(slotSave()) );
+-	connect( d->ui.nickName, SIGNAL(textChanged(QString)), this, SLOT(slotNickNameTextChanged(QString)) );
+ 	connect( d->ui.photo, SIGNAL(clicked()), 
+ 			 this, SLOT(slotPhotoClicked()));
+ 
+@@ -78,6 +75,9 @@
+ 			this, SLOT(slotAccountRegistered(Kopete::Account*)));
+ 	connect( Kopete::AccountManager::self(), SIGNAL(accountUnregistered(const Kopete::Account*)),
+ 			this, SLOT(slotAccountUnregistered(const Kopete::Account*)));
++
++	connect( Kopete::IdentityManager::self(), SIGNAL(identityUnregistered(const Kopete::Identity*)),
++			this, SLOT(slotIdentityUnregistered(const Kopete::Identity*)));
+ }
+ 
+ IdentityStatusWidget::~IdentityStatusWidget()
+@@ -130,7 +130,6 @@
+ 	{
+ 		layout()->setSizeConstraint( QLayout::SetDefaultConstraint );
+ 		setFixedHeight( sizeHint().height() );
+-		d->ui.nickName->setFocus();
+ 		return;
+ 	}
+ 
+@@ -143,7 +142,6 @@
+ void IdentityStatusWidget::slotLoad()
+ {
+ 	// clear
+-	d->ui.nickName->clear();
+ 	d->ui.accounts->clear();
+ 	d->accountHash.clear();
+ 
+@@ -161,14 +159,6 @@
+ 		d->ui.photo->setIcon( KIcon( "user" ) );
+     }
+ 
+-	// nickname
+-	if (d->identity->hasProperty(props->nickName().key()))
+-	{
+-		// Set lastNickName to make red highlighting works when editing the identity nickname
+-		d->lastNickName = d->identity->property(props->nickName()).value().toString();
+-		d->ui.nickName->setText( d->lastNickName );
+-	}
+-
+ 	d->ui.identityName->setText(d->identity->label());
+ 
+ 	foreach(Kopete::Account *a, d->identity->accounts()) {
+@@ -265,21 +255,6 @@
+ 	item->setToolTip( contact->toolTip() );
+ }
+ 
+-void IdentityStatusWidget::slotNickNameTextChanged(const QString &text)
+-{
+-	if ( d->lastNickName != text )
+-	{
+-		QPalette palette;
+-		KColorScheme::adjustForeground( palette, KColorScheme::ActiveText );
+-		d->ui.nickName->setPalette(palette);
+-	}
+-	else
+-	{
+-		d->ui.nickName->setPalette(QPalette());
+-	}
+-
+-}
+-
+ void IdentityStatusWidget::slotSave()
+ {
+ 	if (!d->identity)
+@@ -293,19 +268,6 @@
+ 	{
+ 		d->identity->setProperty(props->photo(), d->photoPath);
+ 	}
+-
+-	// nickname
+-	if (!d->identity->hasProperty(props->nickName().key()) ||
+-		d->identity->property(props->photo()).value().toString() != d->ui.nickName->text())
+-	{
+-		d->identity->setProperty(props->nickName(), d->ui.nickName->text());
+-
+-		// Set last nickname to the new identity nickname
+-		// and reset the palette
+-		d->lastNickName = d->ui.nickName->text();
+-		d->ui.nickName->setPalette(QPalette());
+-	//TODO check what more to do
+-	}
+ }
+ 
+ void IdentityStatusWidget::showAccountContextMenu( const QPoint & point )
+@@ -341,6 +303,16 @@
+ 	//adjustSize();
+ }
+ 
++void IdentityStatusWidget::slotIdentityUnregistered( const Kopete::Identity* identity )
++{
++	if ( identity == d->identity )
++	{
++		disconnect( identity );
++		hide();
++		setIdentity( Kopete::IdentityManager::self()->defaultIdentity() );
++	}
++}
++
+ #include "identitystatuswidget.moc"
+ // vim: set noet ts=4 sts=4 sw=4:
+ 
+--- kopete/kopete/identity/identitystatusbase.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/identity/identitystatusbase.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -10,9 +10,6 @@
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" >
+-   <property name="spacing" >
+-    <number>2</number>
+-   </property>
+    <property name="leftMargin" >
+     <number>0</number>
+    </property>
+@@ -26,28 +23,6 @@
+     <number>0</number>
+    </property>
+    <item>
+-    <widget class="QLabel" name="identityName" >
+-     <property name="minimumSize" >
+-      <size>
+-       <width>0</width>
+-       <height>20</height>
+-      </size>
+-     </property>
+-     <property name="font" >
+-      <font>
+-       <weight>75</weight>
+-       <bold>true</bold>
+-      </font>
+-     </property>
+-     <property name="text" >
+-      <string>Identity Name</string>
+-     </property>
+-     <property name="alignment" >
+-      <set>Qt::AlignCenter</set>
+-     </property>
+-    </widget>
+-   </item>
+-   <item>
+     <layout class="QGridLayout" >
+      <property name="horizontalSpacing" >
+       <number>3</number>
+@@ -77,22 +52,30 @@
+        </property>
+       </widget>
+      </item>
++     <item row="0" column="2" >
++      <layout class="QHBoxLayout" />
++     </item>
+      <item row="0" column="1" >
+-      <layout class="QHBoxLayout" >
+-       <item>
+-        <widget class="QLabel" name="nickLabel" >
+-         <property name="text" >
+-          <string>Nick:</string>
+-         </property>
+-         <property name="buddy" >
+-          <cstring>nickName</cstring>
+-         </property>
+-        </widget>
+-       </item>
+-       <item>
+-        <widget class="QLineEdit" name="nickName" />
+-       </item>
+-      </layout>
++      <widget class="QLabel" name="identityName" >
++       <property name="minimumSize" >
++        <size>
++         <width>0</width>
++         <height>20</height>
++        </size>
++       </property>
++       <property name="font" >
++        <font>
++         <weight>75</weight>
++         <bold>true</bold>
++        </font>
++       </property>
++       <property name="text" >
++        <string>Identity Name</string>
++       </property>
++       <property name="alignment" >
++        <set>Qt::AlignCenter</set>
++       </property>
++      </widget>
+      </item>
+     </layout>
+    </item>
+--- kopete/kopete/identity/identitystatuswidget.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/identity/identitystatuswidget.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -60,14 +60,13 @@
+ 
+ 	void showAccountContextMenu( const QPoint & );
+ 	void slotPhotoClicked();
+-	/**
+-	 * @brief Show nickname in red when modified
+-	 * @param text text changed in nickname textbox
+-	 */
+-	void slotNickNameTextChanged(const QString &text);
+ 	void slotAccountRegistered( Kopete::Account *account );
+ 	void slotAccountUnregistered( const Kopete::Account *account );
+ 	void slotAccountStatusIconChanged( Kopete::Contact *contact );
++	/**
++	 * Handle departing identities
++	 */
++	void slotIdentityUnregistered( const Kopete::Identity* identity );
+ 
+ private:
+ 	void addAccountItem( Kopete::Account *account );
+--- kopete/kopete/kopete.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/kopete.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ MimeType=application/x-kopete-emoticons;application/x-icq;
+ Name=Kopete
+ Name[ne]=कोपेट
+@@ -115,4 +114,4 @@
+ Icon=kopete
+ Categories=Qt;KDE;Network;InstantMessaging;
+ X-DBUS-StartupType=Unique
+-ServiceTypes=DBUS/InstantMessenger
++X-KDE-ServiceTypes=DBUS/InstantMessenger
+--- kopete/kopete/kopetewindow.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/kopetewindow.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -407,7 +407,8 @@
+ 	setStatusMessageMenu->setIconText( i18n( "&Message" ) );
+ 	actionCollection()->addAction( "SetStatusMessage", setStatusMessageMenu );
+ 	setStatusMessageMenu->setDelayed( false );
+-	connect( setStatusMessageMenu->menu(), SIGNAL( aboutToShow() ), SLOT(slotBuildStatusMessageMenu() ) );
++	connect( setStatusMessageMenu->menu(), SIGNAL(aboutToShow()), SLOT(slotBuildStatusMessageMenu()) );
++	connect( setStatusMessageMenu->menu(), SIGNAL(triggered(QAction*)), this, SLOT(slotStatusMessageSelected(QAction*)) );
+ 
+ 	// sync actions, config and prefs-dialog
+ 	connect ( Kopete::AppearanceSettings::self(), SIGNAL(configChanged()), this, SLOT(slotConfigChanged()) );
+@@ -894,7 +895,7 @@
+ 	QAction *action = actionCollection()->action( s );
+ 	if ( action )
+ 	{
+-		kDebug(14000) << " found KAction " << action << " with name: " << action->objectName() << endl;
++		kDebug(14000) << " found KAction " << action << " with name: " << action->objectName();
+ 		d->addContactMapper->removeMappings( action );
+ 		d->actionAddContact->removeAction( action );
+ 	}
+@@ -991,9 +992,6 @@
+ 	d->globalStatusMessageMenu = static_cast<KMenu *>( senderObj );
+ 	d->globalStatusMessageMenu->clear();
+ 
+-	connect( d->globalStatusMessageMenu, SIGNAL( activated( int ) ),
+-		SLOT( slotStatusMessageSelected( int ) ) );
+-
+ 	d->globalStatusMessageMenu->addTitle( i18n("Status Message") );
+ 	//BEGIN: Add new message widget to the Set Status Message Menu.
+ 	KHBox * newMessageBox = new KHBox( 0 );
+@@ -1011,7 +1009,7 @@
+ 	newMessagePix->setFocusPolicy( Qt::ClickFocus );
+ 	connect( d->newMessageEdit, SIGNAL( returnPressed() ), SLOT( slotNewStatusMessageEntered() ) );
+ 
+-	KAction *newMessageAction = new KAction( KIcon("edit"), i18n("New Message..."), this ); //, "new_message" );
++	KAction *newMessageAction = new KAction( KIcon("edit"), i18n("New Message..."), d->globalStatusMessageMenu );
+ 	newMessageAction->setDefaultWidget( newMessageBox );
+ 
+ 	d->globalStatusMessageMenu->addAction( newMessageAction );
+@@ -1021,23 +1019,28 @@
+ 	d->globalStatusMessageMenu->addSeparator();
+ 
+ 	QStringList awayMessages = Kopete::Away::getInstance()->getMessages();
+-	for (int i = awayMessages.count() - 1; i >= 0; --i)
++	for ( int i = 0; i < awayMessages.count(); ++i )
+ 	{
+-		d->globalStatusMessageMenu->addAction( KStringHandler::rsqueeze( awayMessages[i] ) );
++		QAction *action = new QAction( d->globalStatusMessageMenu );
++		action->setText( KStringHandler::rsqueeze( awayMessages[i] ) );
++		action->setData( i );
++		d->globalStatusMessageMenu->addAction( action );
+ 	}
+-	//connect( m_globalStatusMessageMenu, SIGNAL( aboutToHide() ), m_globalStatusMessageMenu, SLOT( deleteLater() ) );
+ 
+ 	d->newMessageEdit->setFocus(Qt::OtherFocusReason);
+ 	d->globalStatusMessageMenu->setActiveAction(newMessageAction);
+-	//messageMenu->popup( e->globalPos(), 1 );
+ }
+ 
+-void KopeteWindow::slotStatusMessageSelected( int i )
++void KopeteWindow::slotStatusMessageSelected( QAction *action )
+ {
+-	if ( 0 == i )
++	if ( !action->data().isValid() )
++	{
+ 		setStatusMessage( "" );
+-	else if( i > 0 )
+-		setStatusMessage(  Kopete::Away::getInstance()->getMessage( i - 1 ) );
++		return;
++	}
++
++	int i = action->data().toInt();
++	setStatusMessage(  Kopete::Away::getInstance()->getMessage( i ) );
+ }
+ 
+ void KopeteWindow::slotNewStatusMessageEntered()
+@@ -1053,8 +1056,12 @@
+ {
+ 	KMenu *statusMessageIconMenu = new KMenu(this);
+ 
+-	connect(statusMessageIconMenu, SIGNAL( aboutToShow() ),
+-		this, SLOT(slotBuildStatusMessageMenu()));
++	connect( statusMessageIconMenu, SIGNAL(aboutToShow()),
++	         this, SLOT(slotBuildStatusMessageMenu()) );
++	connect( statusMessageIconMenu, SIGNAL(triggered(QAction*)),
++	         this, SLOT(slotStatusMessageSelected(QAction*)) );
++	connect( statusMessageIconMenu, SIGNAL(aboutToHide()),
++	         statusMessageIconMenu, SLOT(deleteLater()) );
+ 
+ 	statusMessageIconMenu->popup(position);
+ }
+--- kopete/kopete/config/accounts/kopete_accountconfig.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/config/accounts/kopete_accountconfig.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=users
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_accountconfig
+ X-KDE-FactoryName=kcm_kopete_accountconfig
+@@ -79,6 +78,6 @@
+ Comment[x-test]=xxManage Your Accounts and Identitiesxx
+ Comment[zh_CN]=管理您的账户和身份
+ Comment[zh_TW]=管理您的帳號與身份
+-DocPath=kopete/configure-dialog.html#configuring-accounts
++X-DocPath=kopete/configure-dialog.html#configuring-accounts
+ 
+ 
+--- kopete/kopete/config/accounts/kopeteaccountconfig.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/config/accounts/kopeteaccountconfig.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -296,7 +296,7 @@
+ 		Kopete::Account *i = lvi->account();
+ 		if ( KMessageBox::warningContinueCancel( this, i18n( "Are you sure you want to remove the account \"%1\"?", i->accountLabel() ),
+ 					i18n( "Remove Account" ), KGuiItem(i18n( "Remove Account" ), "edit-delete"), KStandardGuiItem::cancel(),
+-					"askRemoveAccount", KMessageBox::Notify | KMessageBox::Dangerous ) == KMessageBox::Continue )
++					QString(), KMessageBox::Notify | KMessageBox::Dangerous ) == KMessageBox::Continue )
+ 		{
+ 			Kopete::AccountManager::self()->removeAccount( i );
+ 			delete lvi;
+--- kopete/kopete/config/appearance/kopete_appearanceconfig.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/config/appearance/kopete_appearanceconfig.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=preferences-desktop-theme
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_appearanceconfig
+ X-KDE-FactoryName=kcm_kopete_appearanceconfig
+@@ -18,6 +17,7 @@
+ Name[nb]=Kontaktliste
+ Name[nds]=Kontaktenlist
+ Name[nl]=Contactlijst
++Name[oc]=Tièra de contactes
+ Name[pt]=Lista de Contactos
+ Name[pt_BR]=Lista de Contactos
+ Name[sv]=Kontaktlista
+@@ -38,6 +38,6 @@
+ Comment[x-test]=xxConfigure Contact List Look and Feelxx
+ Comment[zh_CN]=配置联系人列表的观感
+ Comment[zh_TW]=設定聯絡人清單的外觀與感覺
+-DocPath=kopete/configure-dialog.html#configuring-appearance
++X-DocPath=kopete/configure-dialog.html#configuring-appearance
+ 
+ 
+--- kopete/kopete/config/behavior/kopete_behaviorconfig.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/config/behavior/kopete_behaviorconfig.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=configure
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_behaviorconfig
+ X-KDE-FactoryName=kcm_kopete_behaviorconfig
+@@ -88,7 +87,7 @@
+ Comment[x-test]=xxPersonalize Kopete's Behaviorxx
+ Comment[zh_CN]=个性化 Kopete 的行为
+ Comment[zh_TW]=將 Kopete 個人化
+-DocPath=kopete/configure-dialog.html#configuring-behavior
++X-DocPath=kopete/configure-dialog.html#configuring-behavior
+ 
+ 
+ 
+--- kopete/kopete/config/plugins/kopete_pluginconfig.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/config/plugins/kopete_pluginconfig.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=gear
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_pluginconfig
+ X-KDE-FactoryName=kcm_kopete_pluginconfig
+--- kopete/kopete/config/avdevice/avdeviceconfig.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/config/avdevice/avdeviceconfig.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -65,8 +65,6 @@
+ 	void slotImageAutoBrightnessContrastChanged(bool);
+ 	void slotImageAutoColorCorrectionChanged(bool);
+ 	void slotImageAsMirrorChanged(bool);
+-	void slotDeviceDisableMMapChanged(bool);
+-	void slotDeviceWorkaroundBrokenDriverChanged(bool);
+ 	void slotUpdateImage();
+ 	void deviceRegistered( const QString & );
+ 	void deviceUnregistered( const QString & );
+--- kopete/kopete/config/avdevice/kopete_avdeviceconfig.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/config/avdevice/kopete_avdeviceconfig.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=camera-web
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_avdeviceconfig
+ X-KDE-FactoryName=kcm_kopete_avdeviceconfig
+@@ -11,16 +10,23 @@
+ X-KDE-Weight=180
+ 
+ Name=Video
++Name[ca]=Vídeo
++Name[el]=Βίντεο
+ Name[ja]=ビデオ
++Name[oc]=Vidèo
+ Name[pt]=Vídeo
+ Name[pt_BR]=Vídeo
++Name[x-test]=xxVideoxx
+ Name[zh_TW]=影像
+ Comment=Configure Video Devices
++Comment[ca]=Configura els dispositius de vídeo
+ Comment[de]=Videogeräte einrichten
++Comment[el]=Ρύθμιση συσκευών βίντεο
+ Comment[ja]=ビデオデバイスの設定
+ Comment[nl]=Video-apparaten instellen
+ Comment[pt]=Configurar os Dispositivos de Vídeo
+ Comment[pt_BR]=Configurar os Dispositivos de Vídeo
+ Comment[sv]=Anpassa videoenheter
++Comment[x-test]=xxConfigure Video Devicesxx
+ Comment[zh_TW]=設定影像裝置
+-DocPath=kopete/configure-dialog.html#configuring-avdevice
++X-DocPath=kopete/configure-dialog.html#configuring-avdevice
+--- kopete/kopete/config/avdevice/avdeviceconfig.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/config/avdevice/avdeviceconfig.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -39,7 +39,6 @@
+ #include <qpixmap.h>
+ 
+ #include <qtabwidget.h>
+-#include <qgl.h>
+ 
+ //#include "videodevice.h"
+ K_PLUGIN_FACTORY( KopeteAVDeviceConfigFactory,
+@@ -77,8 +76,6 @@
+ 	connect(mPrfsVideoDevice->mImageAutoBrightnessContrast,  SIGNAL(toggled(bool)),     this, SLOT(slotImageAutoBrightnessContrastChanged(bool)));
+ 	connect(mPrfsVideoDevice->mImageAutoColorCorrection,     SIGNAL(toggled(bool)),     this, SLOT(slotImageAutoColorCorrectionChanged(bool)));
+ 	connect(mPrfsVideoDevice->mImageAsMirror,                SIGNAL(toggled(bool)),     this, SLOT(slotImageAsMirrorChanged(bool)));
+-	connect(mPrfsVideoDevice->mDeviceDisableMMap,            SIGNAL(toggled(bool)),     this, SLOT(slotDeviceDisableMMapChanged(bool)));
+-	connect(mPrfsVideoDevice->mDeviceWorkaroundBrokenDriver, SIGNAL(toggled(bool)),     this, SLOT(slotDeviceWorkaroundBrokenDriverChanged(bool)));
+ 
+ 	// why is this here?
+ 	// mPrfsVideoDevice->mVideoImageLabel->setPixmap(qpixmap);
+@@ -161,8 +158,6 @@
+ 		mPrfsVideoDevice->mImageAutoBrightnessContrast->setChecked(mVideoDevicePool->getAutoBrightnessContrast());
+ 		mPrfsVideoDevice->mImageAutoColorCorrection->setChecked(mVideoDevicePool->getAutoColorCorrection());
+ 		mPrfsVideoDevice->mImageAsMirror->setChecked(mVideoDevicePool->getImageAsMirror());
+-		mPrfsVideoDevice->mDeviceDisableMMap->setChecked(mVideoDevicePool->getDisableMMap());
+-		mPrfsVideoDevice->mDeviceWorkaroundBrokenDriver->setChecked(mVideoDevicePool->getWorkaroundBrokenDriver());
+ 	}
+ }
+ 
+@@ -249,18 +244,6 @@
+ 	emit changed( true );
+ }
+ 
+-void AVDeviceConfig::slotDeviceWorkaroundBrokenDriverChanged(bool){
+-	kDebug() << "kopete:config (avdevice): slotDeviceWorkaroundBrokenDriverChanged(" << mPrfsVideoDevice->mDeviceWorkaroundBrokenDriver->isChecked() << ") called. ";
+-	mVideoDevicePool->setWorkaroundBrokenDriver(mPrfsVideoDevice->mDeviceWorkaroundBrokenDriver->isChecked());
+-	emit changed( true );
+-}
+-
+-void AVDeviceConfig::slotDeviceDisableMMapChanged(bool){
+-	kDebug() << "kopete:config (avdevice): slotDeviceDisableMMapChanged(" << mPrfsVideoDevice->mDeviceDisableMMap->isChecked() << ") called. ";
+-	mVideoDevicePool->setDisableMMap(mPrfsVideoDevice->mDeviceDisableMMap->isChecked());
+-	emit changed( true );
+-}
+-
+ void AVDeviceConfig::slotUpdateImage()
+ {
+ 	mVideoDevicePool->getFrame();
+--- kopete/kopete/config/avdevice/avdeviceconfig_videodevice.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/config/avdevice/avdeviceconfig_videodevice.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -131,31 +131,18 @@
+           </layout>
+          </item>
+          <item>
+-          <widget class="QCheckBox" name="mDeviceDisableMMap" >
+-           <property name="sizePolicy" >
+-            <sizepolicy vsizetype="Minimum" hsizetype="MinimumExpanding" >
+-             <horstretch>0</horstretch>
+-             <verstretch>0</verstretch>
+-            </sizepolicy>
++          <spacer>
++           <property name="orientation" >
++            <enum>Qt::Vertical</enum>
+            </property>
+-           <property name="text" >
+-            <string>Disable memor&amp;y mapping</string>
++           <property name="sizeHint" >
++            <size>
++             <width>20</width>
++             <height>40</height>
++            </size>
+            </property>
+-          </widget>
++          </spacer>
+          </item>
+-         <item>
+-          <widget class="QCheckBox" name="mDeviceWorkaroundBrokenDriver" >
+-           <property name="sizePolicy" >
+-            <sizepolicy vsizetype="Minimum" hsizetype="MinimumExpanding" >
+-             <horstretch>0</horstretch>
+-             <verstretch>0</verstretch>
+-            </sizepolicy>
+-           </property>
+-           <property name="text" >
+-            <string>&amp;Workaround broken driver</string>
+-           </property>
+-          </widget>
+-         </item>
+         </layout>
+        </widget>
+        <widget class="QWidget" name="TabPage" >
+@@ -458,8 +445,8 @@
+          </property>
+          <property name="minimumSize" >
+           <size>
+-           <width>280</width>
+-           <height>210</height>
++           <width>320</width>
++           <height>240</height>
+           </size>
+          </property>
+          <property name="frameShape" >
+--- kopete/kopete/config/chatwindow/chatwindowconfig_emoticons.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/config/chatwindow/chatwindowconfig_emoticons.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -73,6 +73,9 @@
+    </item>
+    <item row="4" column="0" >
+     <widget class="QPushButton" name="btnGetThemes" >
++     <property name="enabled" >
++      <bool>false</bool>
++     </property>
+      <property name="sizePolicy" >
+       <sizepolicy vsizetype="Fixed" hsizetype="Maximum" >
+        <horstretch>0</horstretch>
+--- kopete/kopete/config/chatwindow/chatwindowconfig_style.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/config/chatwindow/chatwindowconfig_style.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -5,8 +5,8 @@
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>281</width>
+-    <height>354</height>
++    <width>488</width>
++    <height>284</height>
+    </rect>
+   </property>
+   <property name="sizePolicy" >
+@@ -62,32 +62,21 @@
+        <property name="title" >
+         <string>Display</string>
+        </property>
+-       <layout class="QGridLayout" >
+-        <property name="leftMargin" >
+-         <number>9</number>
+-        </property>
+-        <property name="topMargin" >
+-         <number>9</number>
+-        </property>
+-        <property name="rightMargin" >
+-         <number>9</number>
+-        </property>
+-        <property name="bottomMargin" >
+-         <number>9</number>
+-        </property>
+-        <property name="horizontalSpacing" >
+-         <number>6</number>
+-        </property>
+-        <property name="verticalSpacing" >
+-         <number>6</number>
+-        </property>
+-        <item row="0" column="0" >
++       <layout class="QHBoxLayout" >
++        <item>
+          <widget class="QCheckBox" name="kcfg_groupConsecutiveMessages" >
+           <property name="text" >
+            <string>Group consecuti&amp;ve messages</string>
+           </property>
+          </widget>
+         </item>
++        <item>
++         <widget class="QCheckBox" name="kcfg_useCompact" >
++          <property name="text" >
++           <string>Co&amp;mpact style in chatrooms</string>
++          </property>
++         </widget>
++        </item>
+        </layout>
+       </widget>
+      </item>
+@@ -208,7 +197,7 @@
+           <item>
+            <widget class="KPushButton" name="btnGetStyles" >
+             <property name="enabled" >
+-             <bool>true</bool>
++             <bool>false</bool>
+             </property>
+             <property name="toolTip" >
+              <string>Get new Chat Window styles over the Internet</string>
+@@ -260,6 +249,7 @@
+   <tabstop>installButton</tabstop>
+   <tabstop>deleteButton</tabstop>
+   <tabstop>kcfg_groupConsecutiveMessages</tabstop>
++  <tabstop>kcfg_useCompact</tabstop>
+  </tabstops>
+  <resources/>
+  <connections/>
+--- kopete/kopete/config/chatwindow/kopete_chatwindowconfig.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/config/chatwindow/kopete_chatwindowconfig.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=view-choose
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_kopete_chatwindowconfig
+ X-KDE-FactoryName=kcm_kopete_chatwindowconfig
+--- kopete/kopete/config/chatwindow/chatwindowconfig.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/config/chatwindow/chatwindowconfig.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -415,8 +415,10 @@
+ 		slotUpdateChatPreview();
+ 		// Get the first variant to preview
+ 		// Check if the current style has variants.
+-		if( !m_currentVariantMap.empty() )
++		if( !m_currentVariantMap.empty() ) {
+ 			m_preview->setStyleVariant(m_currentVariantMap[0]);
++			m_styleUi.kcfg_useCompact->setEnabled(m_currentStyle->hasCompact( QString() ) );
++		}
+ 
+ 		emitChanged();
+ 	}
+@@ -427,6 +429,16 @@
+ // 	kDebug(14000) << variantName;
+ // 	kDebug(14000) << m_currentVariantMap[variantName];
+ 
++	// enable the 'Use compact' checkbox depending on whether the selected variant exists in compact
++	// form
++	QString styleName = m_styleUi.styleList->selectedItem()->text();
++	m_currentStyle = ChatWindowStyleManager::self()->getStyleFromPool( styleName );
++	if ( m_styleUi.variantList->currentIndex() == 0 ) {
++		m_styleUi.kcfg_useCompact->setEnabled(m_currentStyle->hasCompact( "" ) );
++	}
++	else {
++		m_styleUi.kcfg_useCompact->setEnabled(m_currentStyle->hasCompact( variantName ) );
++	}
+ 	// Update the preview
+ 	m_preview->setStyleVariant(m_currentVariantMap[variantName]);
+ 	emitChanged();
+--- kopete/kopete/chatwindow/chatwindow.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/chatwindow/chatwindow.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-Kopete-Version=1000900
+ X-KDE-Library=kopete_chatwindow
+ X-KDE-PluginInfo-Author=Kopete Developers
+--- kopete/kopete/chatwindow/kopetechatwindowstyle.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/chatwindow/kopetechatwindowstyle.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -20,6 +20,7 @@
+ // Qt includes
+ #include <QFile>
+ #include <QDir>
++#include <QHash>
+ #include <QStringList>
+ #include <QTextStream>
+ 
+@@ -44,6 +45,7 @@
+ 	QString statusHtml;
+ 	QString actionIncomingHtml;
+ 	QString actionOutgoingHtml;
++	QHash<QString, bool> compactVariants;
+ };
+ 
+ ChatWindowStyle::ChatWindowStyle(const QString &styleName, StyleBuildMode styleBuildMode)
+@@ -162,11 +164,23 @@
+ 
+ 	QStringList variantList = variantDir.entryList( QStringList("*.css") );
+ 	QStringList::ConstIterator it, itEnd = variantList.constEnd();
++	QLatin1String compactVersionPrefix("_compact_");
+ 	for(it = variantList.constBegin(); it != itEnd; ++it)
+ 	{
+ 		QString variantName = *it, variantPath;
+ 		// Retrieve only the file name.
+ 		variantName = variantName.left(variantName.lastIndexOf("."));
++		if ( variantName.startsWith( compactVersionPrefix ) ) {
++			if ( variantName == compactVersionPrefix ) {
++				d->compactVariants.insert( "", true );
++			}
++			continue;
++		}
++		QString compactVersionFilename = *it;
++		QString compactVersionPath = variantDirPath + compactVersionFilename.prepend( compactVersionPrefix );
++		if ( QFile::exists( compactVersionPath )) {
++			d->compactVariants.insert( variantName, true );
++		}
+ 		// variantPath is relative to baseHref.
+ 		variantPath = QString("Variants/%1").arg(*it);
+ 		d->variantsList.insert(variantName, variantPath);
+@@ -294,3 +308,21 @@
+ 	readStyleFiles();
+ 	listVariants();
+ }
++
++bool ChatWindowStyle::hasCompact( const QString & styleVariant ) const
++{
++	if ( d->compactVariants.contains( styleVariant ) ) {
++		return d->compactVariants.value( styleVariant );
++	}
++	return false;
++}
++
++QString ChatWindowStyle::compact( const QString & styleVariant ) const
++{
++	QString compacted = styleVariant;
++	if ( styleVariant.isEmpty() ) {
++		return QLatin1String( "Variants/_compact_.css" );
++	} else {
++		return compacted.insert( compacted.lastIndexOf('/') + 1, QString("_compact_") );
++	}
++}
+--- kopete/kopete/chatwindow/kopetechatwindowstyle.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/chatwindow/kopetechatwindowstyle.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -103,6 +103,17 @@
+ 	bool hasActionTemplate() const;
+ 
+ 	/**
++	 * Check if the supplied variant has a compact form
++	 */
++	bool hasCompact( const QString & variant ) const;
++
++	/**
++	 * Return the compact version of the given style variant.
++	 * For the unmodified style, this returns "Variants/_compact_.css"
++	 */
++	QString compact( const QString & variant ) const;
++
++	/**
+ 	 * Reload style from disk.
+ 	 */
+ 	void reload();
+--- kopete/kopete/chatwindow/emailwindow.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/chatwindow/emailwindow.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,7 +1,6 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-Kopete-Version=1000900
+ X-KDE-Library=kopete_emailwindow
+ X-KDE-PluginInfo-Author=Kopete Developers
+--- kopete/kopete/chatwindow/chatmessagepart.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/chatwindow/chatmessagepart.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -369,7 +369,7 @@
+ {
+ 	DOM::HTMLElement variantNode = document().getElementById( QString("mainStyle") );
+ 	if( !variantNode.isNull() )
+-		variantNode.setInnerText( QString("@import url(\"%1\");").arg(variantPath) );
++		variantNode.setInnerText( QString("@import url(\"%1\");").arg( adjustStyleVariantForChatSession( variantPath) ) );
+ }
+ 
+ void ChatMessagePart::slotAppearanceChanged()
+@@ -1176,7 +1176,7 @@
+ 		).arg( d->currentChatStyle->getStyleBaseHref() )
+ 		.arg( formatStyleKeywords(d->currentChatStyle->getHeaderHtml()) )
+ 		.arg( formatStyleKeywords(d->currentChatStyle->getFooterHtml()) )
+-		.arg( KopeteChatWindowSettings::self()->styleVariant() )
++		.arg( adjustStyleVariantForChatSession( KopeteChatWindowSettings::self()->styleVariant() ) )
+ 		.arg( styleHTML() );
+ 	write(xhtmlBase);
+ 	end();
+@@ -1185,6 +1185,14 @@
+ #endif
+ }
+ 
++QString ChatMessagePart::adjustStyleVariantForChatSession( const QString & styleVariant ) const
++{
++	if ( d->manager->form() == Kopete::ChatSession::Chatroom
++			&& KopeteChatWindowSettings::self()->useCompact() ) {
++		return d->currentChatStyle->compact( styleVariant );
++	}
++	return styleVariant;
++}
+ #include "chatmessagepart.moc"
+ 
+ // vim: set noet ts=4 sts=4 sw=4:
+--- kopete/kopete/chatwindow/kopetechatwindow.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/chatwindow/kopetechatwindow.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -179,7 +179,7 @@
+ 
+ 	if ( windowCreated )
+ 	{
+-		myWindow = new KopeteChatWindow();
++		myWindow = new KopeteChatWindow( manager->form() );
+ 
+ 		if ( !accountMap.contains( manager->account() ) )
+ 			accountMap.insert( manager->account(), myWindow );
+@@ -196,8 +196,8 @@
+ 	return myWindow;
+ }
+ 
+-KopeteChatWindow::KopeteChatWindow( QWidget *parent )
+-	: KXmlGuiWindow( parent )
++KopeteChatWindow::KopeteChatWindow( Kopete::ChatSession::Form form, QWidget *parent  )
++	: KXmlGuiWindow( parent ), initialForm( form )
+ {
+ #ifdef CHRONO
+ 	QTime chrono;chrono.start();
+@@ -230,7 +230,12 @@
+ 	vBox->setSpacing( 0 );
+ 	vBox->setFrameStyle( QFrame::NoFrame );
+ 	// set default window size.  This could be removed by fixing the size hints of the contents
+-	resize( 500, 500 );
++	if ( initialForm == Kopete::ChatSession::Chatroom ) {
++		resize( 650, 400 );
++	} else {
++		m_participantsWidget->hide();
++		resize( 400, 400 );
++	}
+ 	setCentralWidget( vBox );
+ 
+ 	mainArea = new QFrame( vBox );
+@@ -509,7 +514,11 @@
+ void KopeteChatWindow::slotStopAnimation( ChatView* view )
+ {
+ 	if( view == m_activeView )
++	{
+ 		anim->setPixmap( normalIcon );
++		if( animIcon.state() == QMovie::Running )
++			animIcon.pause();
++	}
+ }
+ 
+ void KopeteChatWindow::slotUpdateSendEnabled()
+@@ -824,7 +833,7 @@
+ 
+ 	if( !action )
+ 	{
+-		newWindow = new KopeteChatWindow();
++		newWindow = new KopeteChatWindow( detachedView->msgManager()->form() );
+ 		newWindow->setObjectName( QLatin1String("KopeteChatWindow") );
+ 	}
+ 	else
+@@ -1090,7 +1099,7 @@
+ {
+ 	// load and apply config file settings affecting the appearance of the UI
+ //	kDebug(14010) ;
+-	applyMainWindowSettings( KGlobal::config()->group( QLatin1String( "KopeteChatWindow" ) ) );
++	applyMainWindowSettings( KGlobal::config()->group( ( initialForm == Kopete::ChatSession::Chatroom ? QLatin1String( "KopeteChatWindowGroupMode" ) : QLatin1String( "KopeteChatWindowIndividualMode" ) ) ) );
+ 	//config->setGroup( QLatin1String("ChatWindowSettings") );
+ }
+ 
+@@ -1098,7 +1107,7 @@
+ {
+ //	kDebug(14010) ;
+ 
+-	KConfigGroup kopeteChatWindowMainWinSettings( KGlobal::config(), QLatin1String( "KopeteChatWindow" ) );
++	KConfigGroup kopeteChatWindowMainWinSettings( KGlobal::config(), ( initialForm == Kopete::ChatSession::Chatroom ? QLatin1String( "KopeteChatWindowGroupMode" ) : QLatin1String( "KopeteChatWindowIndividualMode" ) ) );
+ 
+ 	// saves menubar,toolbar and statusbar setting
+ 	saveMainWindowSettings( kopeteChatWindowMainWinSettings );
+--- kopete/kopete/chatwindow/chatmessagepart.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/chatwindow/chatmessagepart.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -240,6 +240,14 @@
+ 	 */
+ 	void writeTemplate();
+ 
++	/**
++	 * Adjust style variant to chat session type.  This allows the chat window to show a compact
++	 * variant of the style for chatrooms and a full-sized version for 1:small chats
++	 * @param styleVariant the chosen style variant as a relative path
++	 * @return the munged path, eg variant_compact.css
++	 */
++	QString adjustStyleVariantForChatSession( const QString & styleVariant ) const;
++
+ 	class Private;
+ 	Private *d;
+ };
+--- kopete/kopete/chatwindow/kopetechatwindow.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/chatwindow/kopetechatwindow.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -30,6 +30,7 @@
+ #include <QList>
+ #include "kopetecontact.h"
+ #include "kdeversion.h"
++#include <kopetechatsession.h>
+ 
+ #include <kopete_export.h>
+ 
+@@ -53,7 +54,6 @@
+ namespace Kopete
+ {
+ class Message;
+-class ChatSession;
+ class Contact;
+ typedef QList<Contact*>  ContactPtrList;
+ }
+@@ -114,7 +114,7 @@
+ 
+ private:
+ 	// All KopeteChatWindows are created by the window function
+-	KopeteChatWindow( QWidget *parent = 0 );
++	KopeteChatWindow( Kopete::ChatSession::Form form, QWidget *parent = 0 );
+ 
+ 	/**
+ 	 * The window list has changed:
+@@ -170,6 +170,7 @@
+ 	KActionMenu *actionDetachMenu;
+ 	KActionMenu *actionTabPlacementMenu;
+ 	QString statusMsg;
++	Kopete::ChatSession::Form initialForm;
+ 
+ signals:
+ 	void closing( KopeteChatWindow* );
+--- kopete/kopete/chatwindow/kopetechatwindowsettings.kcfg	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/kopete/chatwindow/kopetechatwindowsettings.kcfg	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -38,6 +38,10 @@
+ 			<label>Group consecutive messages from the same user as one block.</label>
+ 			<default>true</default>
+ 		</entry>
++		<entry key="useCompact" type="Bool">
++			<label>Use a compact variant of the chat style for chatrooms.</label>
++			<default>true</default>
++		</entry>
+ 		
+ 		<!-- Hightlight preferences -->
+ 		<entry key="highlightForegroundColor" type="Color">
+--- kopete/doc/t1/kopete_tutorialplugin.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/doc/t1/kopete_tutorialplugin.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Name=Tutorial Plugin
+ Name[bg]=Приставка за историята
+@@ -42,7 +41,7 @@
+ Comment[zh_CN]=Kopete 开发教学示范插件
+ Comment[zh_TW]=教導 Kopete 開發的示範外掛程式
+ Icon=tutorial_plugin
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-Kopete-Version=1000900
+ X-KDE-Library=kopete_tutorialplugin
+ X-KDE-PluginInfo-Author=Will Stephenson
+--- kopete/doc/t2/kopete_tutorialplugin.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/doc/t2/kopete_tutorialplugin.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Name=Tutorial Plugin
+ Name[bg]=Приставка за историята
+@@ -42,7 +41,7 @@
+ Comment[zh_CN]=Kopete 开发教学示范插件
+ Comment[zh_TW]=教導 Kopete 開發的示範外掛程式
+ Icon=tutorial_plugin
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-Kopete-Version=1000900
+ X-KDE-Library=kopete_tutorialplugin
+ X-KDE-PluginInfo-Author=Will Stephenson
+--- kopete/doc/t3/kopete_tutorialplugin.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/doc/t3/kopete_tutorialplugin.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Name=Tutorial Plugin
+ Name[bg]=Приставка за историята
+@@ -42,7 +41,7 @@
+ Comment[zh_CN]=Kopete 开发教学示范插件
+ Comment[zh_TW]=教導 Kopete 開發的示範外掛程式
+ Icon=tutorial_plugin
+-ServiceTypes=Kopete/Plugin
++X-KDE-ServiceTypes=Kopete/Plugin
+ X-Kopete-Version=1000900
+ X-KDE-Library=kopete_tutorialplugin
+ X-KDE-PluginInfo-Author=Will Stephenson
+--- kopete/doc/t3/kopete_tutorialplugin_config.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/doc/t3/kopete_tutorialplugin_config.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Icon=tutorial_plugin
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ Name=Tutorial
+ Name[bg]=Ръководство
+ Name[ca]=Tutelat
+--- kopete/doc/t3/tutorialpreferences.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/doc/t3/tutorialpreferences.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -2,22 +2,19 @@
+     Copyright (C) 2007 Will Stephenson <wstephenson 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 version 2
+-    as published by the Free Software Foundation.
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation; either version 2 of the License or ( at
++    your option ) version 3 or, at the discretion of KDE e.V. ( which shall
++    act as a proxy as in section 14 of the GPLv3 ), any later version.
+ 
+     This program is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+     GNU General Public License for more details.
+ 
+-    You should have received a copy of the GNU General Public License
+-    along with this program; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor,
+-    Boston, MA 02110-1301, USA.
+-
+-    As a special exception, permission is given to link this program
+-    with any edition of Qt, and distribute the resulting executable,
+-    without including the source code for Qt in the source distribution.
++    You should have received a copy of the GNU General Public License along
++    with this program; if not, write to the Free Software Foundation, Inc.,
++    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+ 
+ #include "tutorialpreferences.h"
+--- kopete/doc/t3/tutorialpreferences.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/doc/t3/tutorialpreferences.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -2,22 +2,19 @@
+     Copyright (C) 2007 Will Stephenson <wstephenson 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 version 2
+-    as published by the Free Software Foundation.
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation; either version 2 of the License or ( at
++    your option ) version 3 or, at the discretion of KDE e.V. ( which shall
++    act as a proxy as in section 14 of the GPLv3 ), any later version.
+ 
+     This program is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+     GNU General Public License for more details.
+ 
+-    You should have received a copy of the GNU General Public License
+-    along with this program; if not, write to the Free Software
+-    Foundation, Inc., 51 Franklin Street, Fifth Floor,
+-    Boston, MA 02110-1301, USA.
+-
+-    As a special exception, permission is given to link this program
+-    with any edition of Qt, and distribute the resulting executable,
+-    without including the source code for Qt in the source distribution.
++    You should have received a copy of the GNU General Public License along
++    with this program; if not, write to the Free Software Foundation, Inc.,
++    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+ 
+ #ifndef TUTORIAL_PREFERENCES_H
+--- kopete/libkopete/kopetechatsession.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopetechatsession.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -78,6 +78,11 @@
+ 
+ public:
+ 	/**
++	 * Describes the form of this chat session
++	 */ 
++	enum Form { Small,/**< The chat is a small group or 1:1 chat */
++		Chatroom/** Chat with many members and high traffic */ };
++	/**
+ 	 * Delete a chat manager instance
+ 	 * You shouldn't delete the KMM yourself. it will be deleted when the chatwindow is closed
+ 	 * see also @ref setCanBeDeleted() , @ref deref() 
+@@ -171,6 +176,12 @@
+ 	 */
+ 	MessageHandlerChain::Ptr chainForDirection( Message::MessageDirection dir );
+ 
++	/**
++	 * Get the form of this chatsession.  This is a hint to the UI so it can present the chat
++	 * appropriately
++	 */
++	Form form() const;
++
+ signals:
+ 	/**
+ 	 * @brief the KMM will be deleted
+@@ -377,7 +388,7 @@
+ 	 * static factory method createSession() creates the object. You may
+ 	 * not create instances yourself directly!
+ 	 */
+-	ChatSession( const Contact *user, ContactPtrList others, Protocol *protocol );
++	ChatSession( const Contact *user, ContactPtrList others, Protocol *protocol, Form form = Small );
+ 
+ 	/**
+ 	 * Set wether or not contact from this account may be invited in this chat.
+--- kopete/libkopete/avdevice/qvideostream.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/avdevice/qvideostream.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,735 +0,0 @@
+-/*
+- *
+- * Copyright (C) 2002 George Staikos <staikos at kde.org>
+- *               2004 Dirk Ziegelmeier <dziegel at gmx.de>
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public License
+- * along with this library; see the file COPYING.LIB.  If not, write to
+- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+- * Boston, MA 02110-1301, USA.
+- */
+-
+-#include "qvideostream.h"
+-#include <qevent.h>
+-#include <qimage.h>
+-#include <qtimer.h>
+-//Added by qt3to4:
+-#include <QKeyEvent>
+-
+-#include <kdebug.h>
+-#include "kxv.h"
+-
+-#include <sys/types.h>
+-#include <X11/Xutil.h>
+-
+-#ifdef HAVE_XSHM
+-extern "C" {
+-#include <sys/shm.h>
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/extensions/XShm.h>
+-}
+-#endif
+-
+-#ifdef HAVE_GL
+-class QVideoStreamGLWidget : public QGLWidget
+-{
+-public:
+-    QVideoStreamGLWidget(QWidget* parent = 0);
+-    virtual ~QVideoStreamGLWidget();
+-
+-    void setInputSize(const QSize& sz);
+-    void display(const unsigned char *const img, int x, int y, int sw, int sh);
+-
+-private:
+-    virtual void resizeGL(int w, int h);
+-    void initializeGL();    
+-
+-    virtual bool eventFilter( QObject *o, QEvent *e );
+-    void calc(QPoint& p, QPoint& v);
+-    
+-
+-    QSize _inputSize;
+-    GLuint _tex;
+-    int _tw, _th;
+-    QWidget* _w;
+-    int _maxGL;
+-    QSize _sz;
+-    bool _glfun;
+-    QPoint _ul, _ur, _ll, _lr;
+-    QPoint _vul, _vur, _vll, _vlr;
+-    QTimer* _glfunTimer;
+-};
+-#endif
+-
+-class QVideoStreamPrivate
+-{
+-public:
+-    QVideoStreamPrivate();
+-    ~QVideoStreamPrivate();
+-	KXv *xvHandle;
+-	KXvDevice *xvdev;
+-	XImage *xim;
+-	GC gc;
+-#ifdef HAVE_GL
+-    QVideoStreamGLWidget* glwidget;
+-#endif
+-#ifdef HAVE_XSHM
+-	XShmSegmentInfo shmh;
+-#endif
+-};
+-
+-QVideoStreamPrivate::QVideoStreamPrivate()
+-{
+-	xvHandle = 0;
+-	xim = 0;
+-}
+-
+-QVideoStreamPrivate::~QVideoStreamPrivate()
+-{
+-	delete xvHandle;
+-}
+-
+-QVideoStream::QVideoStream(QWidget *widget)
+-    : QObject(widget),
+-      d(new QVideoStreamPrivate),
+-      _w(widget),
+-      _methods(METHOD_NONE),
+-      _method(METHOD_NONE),
+-      _format(FORMAT_NONE),
+-      _init(false)
+-{
+-    setObjectName(name);
+-    int dummy;
+-    unsigned int dummy2;
+-    findDisplayProperties(_xFormat, dummy, dummy2, dummy);
+-
+-	_methods = (VideoMethod)(_methods | METHOD_X11);
+-
+-#ifdef HAVE_XSHM
+-	if (XShmQueryExtension(_w->x11Display())) {
+-		_methods = (VideoMethod)(_methods | METHOD_XSHM);
+-	}
+-#endif
+-
+-	if (KXv::haveXv()) {
+-		_methods = (VideoMethod)(_methods | METHOD_XV);
+-#ifdef HAVE_XSHM
+-		_methods = (VideoMethod)(_methods | METHOD_XVSHM);
+-#endif
+-	}
+-
+-#ifdef HAVE_GL
+-    if (QGLFormat::hasOpenGL()) {
+-        _methods = (VideoMethod)(_methods | METHOD_GL);
+-    }
+-#endif
+-    
+-	d->gc = XCreateGC(_w->x11Display(), _w->winId(), 0, NULL);
+-}
+-
+-QVideoStream::~QVideoStream()
+-{
+-	deInit();
+-	XFreeGC(_w->x11Display(), d->gc);
+-	delete d;
+-}
+-
+-void QVideoStream::deInit()
+-{
+-	if (!_init)
+-		return;
+-
+-	_init = false;
+-    _format = FORMAT_NONE;
+-
+-    Q_ASSERT(_methods & _method);
+-    if (!(_methods & _method))
+-        return;
+-    
+-	switch (_method) {
+-	case METHOD_XSHM:
+-#ifdef HAVE_XSHM
+-		XShmDetach(_w->x11Display(), &(d->shmh));
+-		XDestroyImage(d->xim);
+-		d->xim = 0;
+-		shmdt(d->shmh.shmaddr);
+-#endif
+-        break;
+-	case METHOD_X11:
+-		delete[] d->xim->data;
+-		d->xim->data = 0;
+-		XDestroyImage(d->xim);
+-		d->xim = 0;
+-        break;
+-	case METHOD_XVSHM:
+-	case METHOD_XV:
+-		delete d->xvHandle;
+-		d->xvHandle = 0;
+-        break;
+-	case METHOD_GL:
+-#ifdef HAVE_GL
+-        delete d->glwidget;
+-#endif
+-        break;
+-	default:
+-		Q_ASSERT(0);
+-		return;
+-	}
+-}
+-
+-void QVideoStream::init()
+-{
+-    Q_ASSERT(_methods & _method);
+-    if (!(_methods & _method))
+-        return;
+-    
+-	switch (_method) {
+-	case METHOD_XSHM:
+-        {
+-#ifdef HAVE_XSHM
+-            if ( !_inputSize.isValid() ) {
+-                kWarning() << "QVideoStream::init() (XSHM): Unable to initialize due to invalid input size.";
+-                return;
+-            }
+-            
+-            memset(&(d->shmh), 0, sizeof(XShmSegmentInfo));
+-            d->xim = XShmCreateImage(_w->x11Display(),
+-                                     (Visual*)_w->x11Visual(),
+-                                     _w->x11Depth(),
+-                                     ZPixmap, 0, &(d->shmh),
+-                                     _inputSize.width(),
+-                                     _inputSize.height());
+-            d->shmh.shmid = shmget(IPC_PRIVATE,
+-                                   d->xim->bytes_per_line*d->xim->height,
+-                                   IPC_CREAT|0600);
+-            d->shmh.shmaddr = (char *)shmat(d->shmh.shmid, 0, 0);
+-            d->xim->data = (char*)d->shmh.shmaddr;
+-            d->shmh.readOnly = False;
+-            Status s = XShmAttach(_w->x11Display(), &(d->shmh));
+-            if (s) {
+-                XSync(_w->x11Display(), False);
+-                shmctl(d->shmh.shmid, IPC_RMID, 0);
+-                _format = _xFormat;
+-                _init = true;
+-            } else {
+-                kWarning() << "XShmAttach failed!";
+-                XDestroyImage(d->xim);
+-                d->xim = 0;
+-                shmdt(d->shmh.shmaddr);
+-            }
+-#endif
+-        }
+-        break;
+-	case METHOD_X11:
+-		if ( !_inputSize.isValid() ) {
+-            kWarning() << "QVideoStream::init() (X11): Unable to initialize due to invalid input size.";
+-			return;
+-        }
+-        
+-        d->xim = XCreateImage(_w->x11Display(),
+-                              (Visual*)_w->x11Visual(),
+-                              _w->x11Depth(),
+-                              ZPixmap, 0, 0,
+-                              _inputSize.width(),
+-                              _inputSize.height(),
+-                              32, 0);
+-        
+-		d->xim->data = new char[d->xim->bytes_per_line*_inputSize.height()];
+-        _format = _xFormat;
+-		_init = true;
+-        break;
+-	case METHOD_XVSHM:
+-	case METHOD_XV:
+-		{
+-            if (d->xvHandle)
+-                delete d->xvHandle;
+-            
+-            d->xvHandle = KXv::connect(_w->winId());
+-            KXvDeviceList& xvdl(d->xvHandle->devices());
+-            KXvDevice *xvdev = NULL;
+-            
+-            for (xvdev = xvdl.first(); xvdev; xvdev = xvdl.next()) {
+-                if (xvdev->isImageBackend() &&
+-                    xvdev->supportsWidget(_w)) {
+-                    d->xvdev = xvdev;
+-                    d->xvdev->useShm(_method == METHOD_XVSHM);
+-                    _format = FORMAT_YUYV;
+-                    _init = true;
+-                    break;
+-                }
+-            }
+-            
+-            if (!_init) {
+-                delete d->xvHandle;
+-                d->xvHandle = 0;
+-            }
+-        }
+-        break;
+-	case METHOD_GL:
+-#ifdef HAVE_GL
+-        d->glwidget = new QVideoStreamGLWidget(_w, "QVideoStreamGLWidget");
+-        d->glwidget->resize(_w->width(), _w->height());
+-        d->glwidget->show();
+-        _format = FORMAT_BGR24;
+-        _init = true;
+-#endif
+-        break;
+-    default:
+-        Q_ASSERT(0);
+-		return;
+-	}
+-}
+-
+-bool QVideoStream::haveMethod(VideoMethod method) const
+-{
+-	return _methods & method;
+-}
+-
+-QVideo::VideoMethod QVideoStream::method() const
+-{
+-	return _method;
+-}
+-
+-QVideo::VideoMethod QVideoStream::setMethod(VideoMethod method)
+-{
+-	if (_methods & method) {
+-		deInit();
+-		_method = method;
+-		init();
+-	}
+-    
+-    return _method;
+-}
+-
+-QSize QVideoStream::maxSize() const
+-{
+-    return _size;
+-}
+-
+-int QVideoStream::maxWidth() const
+-{
+-    return _size.width();
+-}
+-
+-int QVideoStream::maxHeight() const
+-{
+-    return _size.height();
+-}
+-
+-QSize QVideoStream::size() const
+-{
+-	return _size;
+-}
+-
+-int QVideoStream::width() const
+-{
+-	return _size.width();
+-}
+-
+-int QVideoStream::height() const
+-{
+-	return _size.height();
+-}
+-
+-QSize QVideoStream::setSize(const QSize& sz)
+-{
+-	_size = sz;
+-    return _size;
+-}
+-
+-int QVideoStream::setWidth(int width)
+-{
+-	if (width < 0)
+-		width = 0;
+-	if (width > maxWidth())
+-		width = maxWidth();
+-	_size.setWidth(width);
+-    return _size.width();
+-}
+-
+-int QVideoStream::setHeight(int height)
+-{
+-	if (height < 0)
+-		height = 0;
+-	if (height > maxHeight())
+-		height = maxHeight();
+-	_size.setHeight(height);
+-    return _size.height();
+-}
+-
+-QSize QVideoStream::inputSize() const
+-{
+-	return _inputSize;
+-}
+-
+-int QVideoStream::inputWidth() const
+-{
+-	return _inputSize.width();
+-}
+-
+-int QVideoStream::inputHeight() const
+-{
+-	return _inputSize.height();
+-}
+-
+-QSize QVideoStream::setInputSize(const QSize& sz)
+-{
+-	if (sz == _inputSize)
+-		return _inputSize;
+-	_inputSize = sz;
+-	if (_method & (METHOD_XSHM | METHOD_X11)) {
+-		deInit();
+-		init();
+-	}
+-#ifdef HAVE_GL
+-	if (_method & METHOD_GL) {
+-        d->glwidget->setInputSize(_inputSize);
+-	}
+-#endif
+-    return _inputSize;
+-}
+-
+-int QVideoStream::setInputWidth(int width)
+-{
+-	if (width == _inputSize.width())
+-		return _inputSize.width();
+-	_inputSize.setWidth(width);
+-	if (_method & (METHOD_XSHM | METHOD_X11)) {
+-		deInit();
+-		init();
+-	}
+-#ifdef HAVE_GL
+-	if (_method & METHOD_GL) {
+-        d->glwidget->setInputSize(_inputSize);
+-	}
+-#endif
+-    return _inputSize.width();
+-}
+-
+-int QVideoStream::setInputHeight(int height)
+-{
+-	if (height == _inputSize.height())
+-		return _inputSize.height();
+-	_inputSize.setHeight(height);
+-	if (_method & (METHOD_XSHM | METHOD_X11)) {
+-		deInit();
+-		init();
+-	}
+-#ifdef HAVE_GL
+-	if (_method & METHOD_GL) {
+-        d->glwidget->setInputSize(_inputSize);
+-	}
+-#endif
+-    return _inputSize.height();
+-}
+-
+-bool QVideoStream::supportsFormat(VideoMethod method, ImageFormat format)
+-{
+-    return (bool)(formatsForMethod(method) & format);
+-}
+-
+-QVideo::ImageFormat QVideoStream::formatsForMethod(VideoMethod method)
+-{
+-    switch(method) {
+-    case METHOD_XSHM:
+-    case METHOD_X11:
+-        return _xFormat;
+-    case METHOD_XV:
+-    case METHOD_XVSHM:
+-        return FORMAT_YUYV;
+-    case METHOD_GL:
+-        return FORMAT_BGR24;
+-    default:
+-        return FORMAT_NONE;
+-    }
+-}
+-
+-QVideo::ImageFormat QVideoStream::format() const
+-{
+-    return _format;
+-}
+-
+-bool QVideoStream::setFormat(ImageFormat format)
+-{
+-    if(supportsFormat(_method, format)) {
+-        _format = format;
+-        return true;
+-    } else {
+-        return false;
+-    }
+-}
+-
+-int QVideoStream::displayFrame(const unsigned char *const img)
+-{
+-    return displayFrame(img, 0, 0, _inputSize.width(), _inputSize.height());
+-}
+-
+-int QVideoStream::displayFrame(const unsigned char *const img, int x, int y, int sw, int sh)
+-{
+-	Q_ASSERT(_init);
+-	if (!_init)
+-		return -1;
+-
+-    Q_ASSERT(_methods & _method);
+-    if (!(_methods & _method))
+-        return -1;
+-    
+-	switch (_method) {
+-	case METHOD_XV:
+-	case METHOD_XVSHM:
+-		return d->xvdev->displayImage(_w, img,
+-                                      _inputSize.width(), _inputSize.height(), x, y, sw, sh,
+-                                      _size.width(), _size.height());
+-        break;
+-	case METHOD_XSHM:
+-#ifdef HAVE_XSHM
+-        memcpy(d->xim->data,img,d->xim->bytes_per_line*d->xim->height);
+-        XShmPutImage(_w->x11Display(), _w->winId(), d->gc, d->xim,
+-                     x, y,
+-                     0, 0,
+-                     sw, sh,
+-                     0);
+-        XSync(_w->x11Display(), False);
+-        break;
+-#else
+-        return -1;
+-#endif
+-	case METHOD_X11:
+-        memcpy(d->xim->data, img, d->xim->bytes_per_line*d->xim->height);
+-        XPutImage(_w->x11Display(), _w->winId(), d->gc, d->xim,
+-                  x, y,
+-                  0, 0,
+-                  sw, sh);
+-        XSync(_w->x11Display(), False);
+-        break;
+-	case METHOD_GL:
+-#ifdef HAVE_GL
+-        d->glwidget->display(img, x, y, sw, sh);
+-#endif
+-        break;
+-	default:
+-		Q_ASSERT(0);
+-		return -1;
+-	}
+-
+-    return 0;
+-}
+-
+-QVideoStream& QVideoStream::operator<<(const unsigned char *const img)
+-{
+-	displayFrame(img);
+-    return *this;
+-}
+-
+-// ---------------------------------------------------------------------------------------
+-#ifdef HAVE_GL
+-
+-QVideoStreamGLWidget::QVideoStreamGLWidget(QWidget* parent, const char* name)
+-    : QGLWidget(QGLFormat(QGL::DoubleBuffer | QGL::Rgba | QGL::DirectRendering), parent, name),
+-      _tex(0),
+-      _w(parent),
+-      _glfun(false)
+-{
+-    kDebug() << "QVideoStreamGLWidget::QVideoStreamGLWidget()";
+-
+-    connect(_w, SIGNAL(resized(int, int)),
+-            this, SLOT(resize(int, int)));
+-
+-    topLevelWidget()->installEventFilter(this);
+-    _glfunTimer = new QTimer();
+-}
+-
+-QVideoStreamGLWidget::~QVideoStreamGLWidget()
+-{
+-    kDebug() << "QVideoStreamGLWidget::~QVideoStreamGLWidget()";
+-    delete _glfunTimer;
+-
+-    makeCurrent();
+-    if(_tex != 0) {
+-        glDeleteTextures(1, &_tex);
+-    }
+-}
+-
+-bool QVideoStreamGLWidget::eventFilter(QObject*, QEvent* e)
+-{
+-    // For some reason, KeyPress does not work (yields 2), QEvent::KeyPress is unknown... What the f...????
+-    // I am too lazy to scan the header files for the reason.
+-    if(e->type() == 6) {
+-        QKeyEvent* ke = static_cast<QKeyEvent*>(e);
+-        if(ke->key() == Qt::Key_Pause) {
+-            _glfunTimer->setSingleShot(true);
+-            _glfunTimer->start(500);
+-        } else if (_glfunTimer->isActive() && (ke->key() == Qt::Key_Escape)) {
+-            _glfun = !_glfun;
+-        }
+-    }
+-    return false;
+-}
+-
+-void QVideoStreamGLWidget::initializeGL()
+-{
+-    kDebug() << "QVideoStreamGLWidget::initializeGL()";
+-    setAutoBufferSwap(false);
+-
+-    QGLFormat f = format();
+-    glGetIntegerv(GL_MAX_TEXTURE_SIZE, &_maxGL);
+-    kDebug() << "OpenGL capabilities (* = required):";
+-    kDebug() << "    Valid context*:   " << isValid();
+-    kDebug() << "    DoubleBuffer*:    " << f.doubleBuffer();
+-    kDebug() << "    Depth:            " << f.depth();
+-    kDebug() << "    RGBA*:            " << f.rgba();
+-    kDebug() << "    Alpha:            " << f.alpha();
+-    kDebug() << "    Accum:            " << f.accum();
+-    kDebug() << "    Stencil:          " << f.stencil();
+-    kDebug() << "    Stereo:           " << f.stereo();
+-    kDebug() << "    DirectRendering*: " << f.directRendering();
+-    kDebug() << "    Overlay:          " << f.hasOverlay();
+-    kDebug() << "    Plane:            " << f.plane();
+-    kDebug() << "    MAX_TEXTURE_SIZE: " << _maxGL;
+-
+-    qglClearColor(Qt::black);
+-    glShadeModel(GL_FLAT);
+-    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+-
+-    _vul = QPoint( 4,  10);
+-    _vur = QPoint(-8,   4);
+-    _vll = QPoint(10,  -4);
+-    _vlr = QPoint(-8, -10);
+-}
+-
+-void QVideoStreamGLWidget::resizeGL(int w, int h)
+-{
+-    _sz = QSize(w, h);
+-
+-    glViewport(0, 0, w, h);
+-    glMatrixMode(GL_PROJECTION);
+-    glLoadIdentity();
+-    glOrtho(0.0, w, 0.0, h, -1, 1);
+-    glMatrixMode(GL_MODELVIEW);
+-    glLoadIdentity();
+-    
+-    _ul = QPoint(0, 0);
+-    _ur = QPoint(w, 0);
+-    _ll = QPoint(0, h);
+-    _lr = QPoint(w, h);
+-}
+-
+-void QVideoStreamGLWidget::setInputSize(const QSize& sz)
+-{
+-    makeCurrent();
+-
+-    _inputSize = sz;
+-    int iw = _inputSize.width();
+-    int ih = _inputSize.height();
+-
+-    if ( (iw > _maxGL) || (ih > _maxGL) ) {
+-        kWarning() << "QVideoStreamGLWidget::setInputSize(): Texture too large! maxGL: " << _maxGL;
+-        return;
+-    }
+-
+-    // textures have power-of-two x,y dimensions
+-    int i;
+-    for (i = 0; iw >= (1 << i); i++)
+-        ;
+-    _tw = (1 << i);
+-    for (i = 0; ih >= (1 << i); i++)
+-        ;
+-    _th = (1 << i);
+-    
+-    // Generate texture
+-    if(_tex != 0) {
+-        glDeleteTextures(1, &_tex);
+-    }
+-    glGenTextures(1, &_tex);
+-    glBindTexture(GL_TEXTURE_2D, _tex);
+-    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+-    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+-
+-    // Blank texture
+-    char* dummy = new char[_tw*_th*4];
+-    memset(dummy, 128, _tw*_th*4);
+-    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, _tw, _th, 0,
+-                 GL_RGB, GL_UNSIGNED_BYTE, dummy);
+-    delete[] dummy;
+-}
+-
+-void QVideoStreamGLWidget::display(const unsigned char *const img, int x, int y, int sw, int sh)
+-{
+-    makeCurrent();
+-
+-    // FIXME: Endianess - also support GL_RGB
+-    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, _inputSize.width(), _inputSize.height(),
+-                    GL_BGR, GL_UNSIGNED_BYTE, img);
+-
+-    // upper right coords
+-    float ur_x = (float)(x + sw) / _tw;
+-    float ur_y = (float)(y + sh) / _th;
+-
+-    // lower left coords
+-    float ll_x = (float)(x)      / _tw;
+-    float ll_y = (float)(y)      / _th;
+-    
+-    glEnable(GL_TEXTURE_2D);
+-    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
+-    glBindTexture(GL_TEXTURE_2D, _tex);
+-    if (!_glfun) {
+-        glBegin(GL_QUADS);
+-        glTexCoord2f(ll_x, ur_y); glVertex2i(0,           0           );
+-        glTexCoord2f(ll_x, ll_y); glVertex2i(0,           _sz.height());
+-        glTexCoord2f(ur_x, ll_y); glVertex2i(_sz.width(), _sz.height());
+-        glTexCoord2f(ur_x, ur_y); glVertex2i(_sz.width(), 0           );
+-        glEnd();
+-    } else {
+-        calc(_ul, _vul);
+-        calc(_ur, _vur);
+-        calc(_ll, _vll);
+-        calc(_lr, _vlr);
+-
+-        glClear(GL_COLOR_BUFFER_BIT);
+-
+-        glBegin(GL_QUADS);
+-        glTexCoord2f(0, y); glVertex2i(_ul.x(), _ul.y());
+-        glTexCoord2f(0, 0); glVertex2i(_ll.x(), _ll.y());
+-        glTexCoord2f(x, 0); glVertex2i(_lr.x(), _lr.y());
+-        glTexCoord2f(x, y); glVertex2i(_ur.x(), _ur.y());
+-        glEnd();
+-    }
+-    swapBuffers();
+-    glDisable(GL_TEXTURE_2D);
+-}
+-
+-void QVideoStreamGLWidget::calc(QPoint& p, QPoint& v)
+-{
+-    p += v;
+-
+-    if(p.x() < 0) {
+-        p.setX(-p.x());
+-        v.setX(-v.x());
+-    }
+-    if(p.y() < 0) {
+-        p.setY(-p.y());
+-        v.setY(-v.y());
+-    }
+-    if(p.x() > _sz.width()) {
+-        p.setX(_sz.width() - (p.x() - _sz.width()));
+-        v.setX(-v.x());
+-    }
+-    if(p.y() > _sz.height()) {
+-        p.setY(_sz.height() - (p.y() - _sz.height()));
+-        v.setY(-v.y());
+-    }
+-} 
+-#endif
+-
+-#include "qvideostream.moc"
+--- kopete/libkopete/avdevice/qvideo.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/avdevice/qvideo.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,154 +0,0 @@
+-/***************************************************************************
+-                           qvideo.cpp
+-                           ----------
+-    begin                : Sat Jun 12 2004
+-    copyright            : (C) 2004 by Dirk Ziegelmeier
+-                           (C) 2002 by George Staikos
+-    email                : dziegel at gmx.de
+- ***************************************************************************/
+-
+-/*
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public License
+- * along with this library; see the file COPYING.LIB.  If not, write to
+- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+- * Boston, MA 02110-1301, USA.
+- */
+-
+-#include "qvideo.h"
+-
+-#include <kdebug.h>
+-#include <qpaintdevice.h>
+-#include <QX11Info>
+-#include <X11/Xlib.h>
+-#include <X11/Xutil.h>
+-
+-unsigned int QVideo::bytesppForFormat(ImageFormat fmt)
+-{
+-    switch (fmt) {
+-    case FORMAT_RGB32:
+-    case FORMAT_RGB24:
+-    case FORMAT_BGR32:
+-    case FORMAT_BGR24:
+-        return 4;
+-
+-    case FORMAT_RGB15_LE:
+-    case FORMAT_RGB16_LE:
+-    case FORMAT_RGB15_BE:
+-    case FORMAT_RGB16_BE:
+-    case FORMAT_YUYV:
+-    case FORMAT_UYVY:
+-    case FORMAT_YUV422P:
+-    case FORMAT_YUV420P:
+-        return 2;
+-
+-    case FORMAT_GREY:
+-    case FORMAT_HI240:
+-        return 1;
+-
+-    default:
+-        // unknown format
+-        return 0;
+-    }
+-}
+-
+-bool QVideo::findDisplayProperties(ImageFormat& fmt, int& depth, unsigned int& bitsperpixel, int& bytesperpixel)
+-{
+-    XVisualInfo *vi_in, vi_out;
+-    long mask = VisualScreenMask;
+-    int  nvis = 0;
+-
+-    ImageFormat p = FORMAT_NONE;
+-    int bpp       = 0;
+-    int d         = 0;
+-
+-	vi_out.screen = QPaintDevice::x11AppScreen();
+-	vi_in         = XGetVisualInfo(QX11Info::display(), mask, &vi_out, &nvis);
+-
+-	if (vi_in) {
+-		for (int i = 0; i < nvis; i++) {
+-            bpp = 0;
+-			int n;
+-			XPixmapFormatValues *pf = XListPixmapFormats(QX11Info::display(),&n);
+-            d = vi_in[i].depth;
+-			for (int j = 0; j < n; j++) {
+-				if (pf[j].depth == d) {
+-					bpp = pf[j].bits_per_pixel;
+-					break;
+-				}
+-			}
+-			XFree(pf);
+-
+-            // FIXME: Endianess detection
+-
+-            p = FORMAT_NONE;
+-			switch (bpp) {
+-			case 32:
+-				if (vi_in[i].red_mask   == 0xff0000 &&
+-				    vi_in[i].green_mask == 0x00ff00 &&
+-				    vi_in[i].blue_mask  == 0x0000ff) {
+-					p = FORMAT_BGR32;
+-					kDebug() << "QVideo: Found BGR32 display.";
+-				}
+-                break;
+-			case 24:
+-				if (vi_in[i].red_mask   == 0xff0000 &&
+-				    vi_in[i].green_mask == 0x00ff00 &&
+-				    vi_in[i].blue_mask  == 0x0000ff) {
+-					p = FORMAT_BGR24;
+-					kDebug() << "QVideo: Found BGR24 display.";
+-				}
+-                break;
+-			case 16:
+-				if (vi_in[i].red_mask   == 0x00f800 &&
+-				    vi_in[i].green_mask == 0x0007e0 &&
+-				    vi_in[i].blue_mask  == 0x00001f) {
+-					p = FORMAT_RGB15_LE;
+-					kDebug() << "QVideo: Found RGB16_LE display.";
+-				} else
+-                    if (vi_in[i].red_mask   == 0x007c00 &&
+-                        vi_in[i].green_mask == 0x0003e0 &&
+-                        vi_in[i].blue_mask  == 0x00001f) {
+-                        p = FORMAT_RGB15_LE;
+-                        kDebug() << "QVideo: Found RGB15_LE display.";
+-                    }
+-                break;
+-			case 8:
+-			default:
+-				continue;
+-			}
+-
+-			if (p != FORMAT_NONE)
+-				break;
+-		}
+-		XFree(vi_in);
+-	}
+-
+-    if (p != FORMAT_NONE) {
+-        int bytespp = bytesppForFormat(p);
+-        kDebug() << "QVideo: Display properties: depth: " << d
+-                  << ", bits/pixel: " << bpp
+-                  << ", bytes/pixel: " << bytespp << endl;
+-        fmt           = p;
+-        bitsperpixel  = bpp;
+-        bytesperpixel = bytespp;
+-        depth         = d;
+-        return true;
+-    } else {
+-        kWarning() << "QVideo: Unable to find out palette. What display do you have????";
+-        fmt           = FORMAT_NONE;
+-        bitsperpixel  = 0;
+-        bytesperpixel = 0;
+-        depth         = 0;
+-        return false;
+-    }
+-}
+--- kopete/libkopete/avdevice/kxv.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/avdevice/kxv.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,710 +0,0 @@
+-/*
+- *   KDE Xv interface
+- *
+- *   Copyright (C) 2001 George Staikos (staikos at kde.org)
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public License
+- * along with this library; see the file COPYING.LIB.  If not, write to
+- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+- * Boston, MA 02110-1301, USA.
+- */
+-
+-#include <assert.h>
+-#include <QX11Info>
+-#include <qwindowdefs.h>
+-#include <qwidget.h>
+-
+-#include <kdebug.h>
+-
+-#include <config-kopete.h>
+-
+-#include "kxv.h"
+-
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <X11/StringDefs.h>
+-#include <X11/Xatom.h>
+-#ifdef HAVE_XSHM
+-extern "C" {
+-#include <sys/shm.h>
+-#include <X11/extensions/XShm.h>
+-}
+-#endif
+-
+-#ifdef HAVE_LIBXV
+-#include <X11/extensions/Xv.h>
+-#include <X11/extensions/Xvlib.h>
+-#endif
+-
+-#ifdef HAVE_LIBXVMC
+-#include <X11/extensions/XvMC.h>
+-#include <X11/extensions/XvMClib.h>
+-#endif
+-
+-
+-KXv::KXv()
+-{
+-    xv_adaptors = 0;
+-}
+-
+-
+-KXv::~KXv()
+-{
+-    kDebug() << "KXv::~KXv: Close Xv connection.";
+-    qDeleteAll(_devs);
+-    _devs.clear();
+-
+-#ifdef HAVE_LIBXV
+-    if (xv_adaptors > 0)
+-        XvFreeAdaptorInfo((XvAdaptorInfo *)xv_adaptor_info);
+-#endif
+-}
+-
+-
+-KXvDeviceList& KXv::devices()
+-{
+-  return _devs;
+-}
+-
+-
+-bool KXv::haveXv()
+-{
+-#ifndef HAVE_LIBXV
+-    return false;
+-#else
+-    unsigned int tmp;
+-    if (Success != XvQueryExtension(QX11Info::display(),
+-                                    &tmp,
+-                                    &tmp,
+-                                    &tmp,
+-                                    &tmp,
+-                                    &tmp))
+-        return false;
+-
+-    return true;
+-#endif
+-}
+-
+-
+-KXv* KXv::connect(Drawable d)
+-{
+-    KXv *xvptr;
+-
+-    xvptr = new KXv;
+-    if (!xvptr->init(d)) {
+-        kDebug() << "KXv::connect: Xv init failed.";
+-        delete xvptr;
+-        return NULL;
+-    }
+-
+-    kDebug() << "KXv::connect: Xv init completed.";
+-    return xvptr;
+-}
+-
+-
+-bool KXv::init(Drawable d)
+-{
+-#ifndef HAVE_LIBXV
+-    return false;
+-#else
+-    if (Success != XvQueryExtension(QX11Info::display(),
+-                                    &xv_version,
+-                                    &xv_release,
+-                                    &xv_request,
+-                                    &xv_event,
+-                                    &xv_error)) {
+-        kWarning() << "KXv::init: Xv extension not available.";
+-        return false;
+-    }
+-
+-#ifdef HAVE_LIBXVMC
+-    // Causes crashes for some people.
+-    //  if (Success == XvMCQueryExtension(QX11Info::display(),0,0)) {
+-    //    kDebug() << "Found XvMC!";
+-    //  }
+-#endif
+-
+-    if (Success != XvQueryAdaptors(QX11Info::display(),
+-                                   d,
+-                                   &xv_adaptors,
+-                                   (XvAdaptorInfo **)&xv_adaptor_info)) {
+-        // Note technically fatal... what to do?
+-        kWarning() << "KXv::init: XvQueryAdaptors failed.";
+-    }
+-
+-    XvAdaptorInfo *ai = (XvAdaptorInfo *)xv_adaptor_info;
+-
+-    for (unsigned int i = 0; i < xv_adaptors; i++) {
+-        KXvDevice *xvd = new KXvDevice;
+-        xvd->xv_type = ai[i].type;
+-        xvd->xv_port = ai[i].base_id;
+-        xvd->xv_name = ai[i].name;
+-        xvd->xv_adaptor = i;
+-        xvd->xv_nvisualformats = ai[i].num_formats;
+-        xvd->xv_visualformats = ai[i].formats;
+-        if (ai[i].type & XvInputMask &&
+-            ai[i].type & XvVideoMask ) {
+-            kDebug() << "KXv::init: Xv VideoMask port " << ai[i].base_id << " was found."
+-                      << "  Device is: " << ai[i].name << "." << endl;
+-        }
+-        if (ai[i].type & XvInputMask &&
+-            ai[i].type & XvImageMask ) {
+-            kDebug() << "KXv::init: Xv ImageMask port " << ai[i].base_id << " was found."
+-                      << "  Device is: " << ai[i].name << "." << endl;
+-        }
+-
+-        if (xvd->init()) {
+-            _devs.append(xvd);
+-        } else {
+-            delete xvd;
+-        }
+-    }
+-
+-    return true;
+-#endif
+-}
+-
+-bool KXvDevice::grabStill(QImage* /*pix*/, int /*dw*/, int /*dh*/)
+-{
+-#ifndef HAVE_LIBXV
+-    return false;
+-#else
+-    return false;
+-#endif
+-}
+-
+-int KXvDevice::displayImage(QWidget *widget, const unsigned char *const data, int w, int h, int dw, int dh)
+-{
+-    if (!widget)
+-        return -1;
+-    return displayImage(widget->winId(), data, w, h, 0, 0, w, h, dw, dh);
+-}
+-
+-int KXvDevice::displayImage(QWidget *widget, const unsigned char *const data, int w, int h, int x, int y, int sw, int sh, int dw, int dh)
+-{
+-    if (!widget)
+-        return -1;
+-    return displayImage(widget->winId(), data, w, h, x, y, sw, sh, dw, dh);
+-}
+-
+-int KXvDevice::displayImage(Window win, const unsigned char *const data, int w, int h, int dw, int dh)
+-{
+-    return displayImage(win, data, w, h, 0, 0, w, h, dw, dh);
+-}
+-
+-int KXvDevice::displayImage(Window win, const unsigned char *const data, int w, int h, int x, int y, int sw, int sh, int dw, int dh)
+-{
+-#ifndef HAVE_LIBXV
+-    return -1;
+-#else
+-    Q_ASSERT(xv_port != -1);
+-
+-    // Must be a video capable device!
+-    if (!(xv_type & XvImageMask) || !(xv_type & XvInputMask)) {
+-        kWarning() << "KXvDevice::displayImage: This is not a video capable device.";
+-        return -1;
+-    }
+-
+-    if (xv_image_w != w || xv_image_h != h || !xv_image)
+-        rebuildImage(w, h, _shm);
+-
+-    if (!xv_image)
+-        return -1;
+-
+-    if (win != xv_last_win && xv_gc) {
+-        XFreeGC(QX11Info::display(), xv_gc);
+-        xv_gc = 0;
+-    }
+-
+-    if (!xv_gc) {
+-        xv_last_win = win;
+-        xv_gc = XCreateGC(QX11Info::display(), win, 0, NULL);
+-    }
+-
+-    int rc = 0;
+-    Q_ASSERT(xv_image);
+-    if (!_shm) {
+-        static_cast<XvImage*>(xv_image)->data =
+-            (char *)const_cast<unsigned char*>(data);
+-        rc = XvPutImage(QX11Info::display(), xv_port, win, xv_gc,
+-                        static_cast<XvImage*>(xv_image), x, y, sw, sh, 0, 0, dw, dh);
+-    } else {
+-#ifdef HAVE_XSHM
+-        memcpy(static_cast<XvImage*>(xv_image)->data, data, static_cast<XvImage*>(xv_image)->data_size);
+-        rc = XvShmPutImage(QX11Info::display(), xv_port, win, xv_gc,
+-                           static_cast<XvImage*>(xv_image), x, y, sw, sh, 0, 0, dw, dh, 0);
+-#endif
+-    }
+-
+-    XSync(QX11Info::display(), False);
+-    return rc;
+-#endif
+-}
+-
+-
+-bool KXvDevice::startVideo(QWidget *w, int dw, int dh)
+-{
+-    if (!w) return false;
+-    return startVideo(w->winId(), dw, dh);
+-}
+-
+-
+-bool KXvDevice::startVideo(Window w, int dw, int dh)
+-{
+-#ifndef HAVE_LIBXV
+-    return false;
+-#else
+-    int sx = 0, sy = 0, dx = 0, dy = 0, sw = dw, sh = dh;
+-
+-    // Must be a video capable device!
+-    if (!(xv_type & XvVideoMask) || !(xv_type & XvInputMask)) {
+-        kWarning() << "KXvDevice::startVideo: This is not a video capable device.";
+-        return false;
+-    }
+-
+-    if (videoStarted) stopVideo();
+-
+-    if (xv_port == -1) {
+-        kWarning() << "KXvDevice::startVideo: No xv_port.";
+-        return false;
+-    }
+-
+-    if (w != xv_last_win && xv_gc) {
+-        XFreeGC(QX11Info::display(), xv_gc);
+-        xv_gc = 0;
+-    }
+-
+-    if (!xv_gc) {
+-        xv_last_win = w;
+-        xv_gc = XCreateGC(QX11Info::display(), w, 0, NULL);
+-    }
+-
+-    if (-1 != xv_encoding) {
+-        sw = ((XvEncodingInfo *)xv_encoding_info)[xv_encoding].width;
+-        sh = ((XvEncodingInfo *)xv_encoding_info)[xv_encoding].height;
+-    }
+-
+-    // xawtv does this here:
+-    //  ng_ratio_fixup(&dw, &dh, &dx, &dy);
+-
+-    kDebug() << "XvPutVideo: " << QX11Info::display()
+-              << " " << xv_port << " " << w << " " << xv_gc
+-              << " " << sx << " " << sy << " " << sw << " " << sh
+-              << " " << dx << " " << dy << " " << dw << " " << dh << endl;
+-    XvPutVideo(QX11Info::display(), xv_port, w, xv_gc, sx, sy, sw, sh, dx, dy, dw, dh);
+-
+-    videoStarted = true;
+-    videoWindow = w;
+-    return true;
+-#endif
+-}
+-
+-bool KXvDevice::stopVideo()
+-{
+-#ifndef HAVE_LIBXV
+-    return false;
+-#else
+-    if (!videoStarted)
+-        return true;
+-    if (xv_port == -1) {
+-        kWarning() << "KXvDevice::stopVideo: No xv_port.";
+-        return false;
+-    }
+-
+-    XvStopVideo(QX11Info::display(), xv_port, videoWindow);
+-    videoStarted = false;
+-    return true;
+-#endif
+-}
+-
+-
+-KXvDevice::KXvDevice()
+-{
+-    xv_encoding_info = NULL;
+-    xv_formatvalues = NULL;
+-    xv_attr = NULL;
+-    xv_port = -1;
+-    xv_encoding = -1;
+-    xv_name.clear();
+-    xv_type = -1;
+-    xv_adaptor = -1;
+-    _shm = false;
+-#ifdef HAVE_LIBXV
+-    xv_imageformat = 0x32595559;  // FIXME (YUY2)
+-#ifdef HAVE_XSHM
+-    if (!XShmQueryExtension(QX11Info::display())) {
+-        _haveShm = false;
+-    } else {
+-        _shm = true;
+-        _haveShm = true;
+-    }
+-    xv_shminfo = new XShmSegmentInfo;
+-#else
+-    xv_shminfo = 0;
+-#endif
+-#endif
+-    xv_gc = 0;
+-    xv_last_win = 0;
+-    videoStarted = false;
+-    xv_image = 0;
+-    xv_image_w = 320;
+-    xv_image_h = 200;
+-}
+-
+-
+-KXvDevice::~KXvDevice()
+-{
+-#ifdef HAVE_LIBXV
+-    qDeleteAll(_attrs);
+-    _attrs.clear();
+-    if (videoStarted) stopVideo();
+-    if (xv_encoding_info)
+-        XvFreeEncodingInfo((XvEncodingInfo *)xv_encoding_info);
+-    XFree(xv_formatvalues);
+-    XFree(xv_attr);
+-#ifdef HAVE_XSHM
+-    delete (XShmSegmentInfo*)xv_shminfo;
+-#endif
+-    destroyImage();
+-#endif
+-    if (xv_gc)
+-        XFreeGC(QX11Info::display(), xv_gc);
+-
+-#ifdef HAVE_LIBXV
+-    if (xv_port != -1)
+-        XvUngrabPort(QX11Info::display(), xv_port, CurrentTime);
+-#endif
+-}
+-
+-
+-bool KXvDevice::init()
+-{
+-#ifndef HAVE_LIBXV
+-    return false;
+-#else
+-    assert(xv_port != -1);   // make sure we were prepped by KXv already.
+-
+-    if (XvGrabPort(QX11Info::display(), xv_port, CurrentTime)) {
+-        kWarning() << "KXvDevice::init(): Unable to grab Xv port.";
+-        return false;
+-    }
+-
+-    if (Success != XvQueryEncodings(QX11Info::display(),
+-                                    xv_port,
+-                                    &xv_encodings,
+-                                    (XvEncodingInfo **)&xv_encoding_info)) {
+-        kWarning() << "KXvDevice::init: Xv QueryEncodings failed.  Dropping Xv support for this device.";
+-        return false;
+-    }
+-
+-    // Package the encodings up nicely
+-    for (unsigned int i = 0; i < xv_encodings; i++) {
+-        //kDebug() << "Added encoding: " << ((XvEncodingInfo *)xv_encoding_info)[i].name;
+-        _encodingList << ((XvEncodingInfo *)xv_encoding_info)[i].name;
+-    }
+-
+-    xv_attr = XvQueryPortAttributes(QX11Info::display(),
+-                                    xv_port,
+-                                    &xv_encoding_attributes);
+-    XvAttribute *xvattr = (XvAttribute *)xv_attr;
+-    kDebug() << "Attributes for port " << xv_port;
+-    for (int i = 0; i < xv_encoding_attributes; i++) {
+-        assert(xvattr);
+-        kDebug() << "   -> " << xvattr[i].name
+-                  << ((xvattr[i].flags & XvGettable) ? " get" : "")
+-                  << ((xvattr[i].flags & XvSettable) ? " set" : "")
+-                  << " Range: " << xvattr[i].min_value
+-                  << " -> " << xvattr[i].max_value << endl;
+-
+-        KXvDeviceAttribute *xvda = new KXvDeviceAttribute;
+-        xvda->name = xvattr[i].name;
+-        xvda->min = xvattr[i].min_value;
+-        xvda->max = xvattr[i].max_value;
+-        xvda->flags = xvattr[i].flags;
+-        _attrs.append(xvda);
+-    }
+-
+-    XvImageFormatValues  *fo;
+-    fo = XvListImageFormats(QX11Info::display(), xv_port, &xv_formats);
+-    xv_formatvalues = (void *)fo;
+-    kDebug() << "Image formats for port " << xv_port;
+-    for (int i = 0; i < xv_formats; i++) {
+-        assert(fo);
+-        QString imout;
+-        imout.sprintf("   0x%x (%c%c%c%c) %s",
+-                      fo[i].id,
+-                      fo[i].id        & 0xff,
+-                      (fo[i].id >>  8) & 0xff,
+-                      (fo[i].id >> 16) & 0xff,
+-                      (fo[i].id >> 24) & 0xff,
+-                      ((fo[i].format == XvPacked) ?
+-                       "Packed" : "Planar"));
+-        kDebug() << imout;
+-    }
+-
+-    kDebug() << "Disabling double buffering.";
+-    setAttribute("XV_DOUBLE_BUFFER", 0);
+-
+-    return true;
+-#endif
+-}
+-
+-
+-bool KXvDevice::supportsWidget(QWidget *w)
+-{
+-#ifndef HAVE_LIBXV
+-    return false;
+-#else
+-    for (int i = 0; i < xv_nvisualformats; i++) {
+-        if (static_cast<XvFormat*>(xv_visualformats)[i].visual_id
+-            == static_cast<Visual*>(w->x11Visual())->visualid) {
+-            return true;
+-        }
+-    }
+-    return false;
+-#endif
+-}
+-
+-
+-bool KXvDevice::isVideoSource()
+-{
+-#ifndef HAVE_LIBXV
+-    return false;
+-#else
+-    if (xv_type & XvVideoMask && xv_type & XvInputMask)
+-        return true;
+-    return false;
+-#endif
+-}
+-
+-
+-bool KXvDevice::isImageBackend()
+-{
+-#ifndef HAVE_LIBXV
+-    return false;
+-#else
+-    if (xv_type & XvImageMask && xv_type & XvInputMask)
+-        return true;
+-    return false;
+-#endif
+-}
+-
+-
+-const KXvDeviceAttributes& KXvDevice::attributes()
+-{
+-    return _attrs;
+-}
+-
+-
+-bool KXvDevice::getAttributeRange(const QString& attribute, int *min, int *max)
+-{
+-    for (KXvDeviceAttributes::iterator it = _attrs.begin(); it != _attrs.end(); ++it) {
+-        if ((*it)->name == attribute) {
+-            if (min) *min = (*it)->min;
+-            if (max) *max = (*it)->max;
+-            return true;
+-        }
+-    }
+-    return false;
+-}
+-
+-
+-bool KXvDevice::getAttribute(const QString& attribute, int *val)
+-{
+-#ifndef HAVE_LIBXV
+-    return false;
+-#else
+-    for (KXvDeviceAttributes::iterator it = _attrs.begin(); it != _attrs.end(); ++it) {
+-        if ((*it)->name == attribute) {
+-            if (val)
+-                XvGetPortAttribute(QX11Info::display(), xv_port, (*it)->atom(), val);
+-            return true;
+-        }
+-    }
+-    return false;
+-#endif
+-}
+-
+-
+-bool KXvDevice::setAttribute(const QString& attribute, int val)
+-{
+-#ifndef HAVE_LIBXV
+-    return false;
+-#else
+-    for (KXvDeviceAttributes::iterator it = _attrs.begin(); it != _attrs.end(); ++it) {
+-        if ((*it)->name == attribute) {
+-            XvSetPortAttribute(QX11Info::display(), xv_port, (*it)->atom(), val);
+-            XSync(QX11Info::display(), False);
+-            return true;
+-        }
+-    }
+-    return false;
+-#endif
+-}
+-
+-
+-const QString& KXvDevice::name() const
+-{
+-    return xv_name;
+-}
+-
+-
+-int KXvDevice::port() const
+-{
+-    return xv_port;
+-}
+-
+-const QStringList& KXvDevice::encodings() const
+-{
+-    return _encodingList;
+-}
+-
+-bool KXvDevice::encoding(QString& encoding)
+-{
+-#ifndef HAVE_LIBXV
+-    return false;
+-#else
+-    XvEncodingID enc;
+-
+-    for (KXvDeviceAttributes::iterator it = _attrs.begin(); it != _attrs.end(); ++it) {
+-        if ((*it)->name == "XV_ENCODING") {
+-            XvGetPortAttribute(QX11Info::display(), xv_port, (*it)->atom(), (int*)&enc);
+-            kDebug() << "KXvDevice: encoding: " << enc;
+-            encoding = enc;
+-            return true;
+-        }
+-    }
+-    return false;
+-#endif
+-}
+-
+-bool KXvDevice::setEncoding(const QString& e)
+-{
+-#ifdef HAVE_LIBXV
+-    for (unsigned int i = 0; i < xv_encodings; i++) {
+-        if (e == ((XvEncodingInfo *)xv_encoding_info)[i].name) {
+-            xv_encoding = i;
+-            return setAttribute("XV_ENCODING",
+-                                ((XvEncodingInfo *)xv_encoding_info)[i].encoding_id);
+-        }
+-    }
+-#endif
+-    return false;
+-}
+-
+-bool KXvDevice::videoPlaying() const
+-{
+-    return videoStarted;
+-}
+-
+-
+-bool KXvDevice::useShm(bool on)
+-{
+-#ifndef HAVE_XSHM
+-    if (on) {
+-        return false;
+-    }
+-#endif
+-    if (!_haveShm) {
+-        return false;
+-    }
+-    if (_shm != on)
+-        rebuildImage(xv_image_w, xv_image_h, on);
+-    if (_haveShm) // This can change in rebuildImage()
+-        _shm = on;
+-    return _shm;
+-}
+-
+-
+-bool KXvDevice::usingShm() const
+-{
+-    return _shm;
+-}
+-
+-
+-#include <unistd.h>
+-#include <QX11Info>
+-void KXvDevice::rebuildImage(int w, int h, bool shm)
+-{
+-    if (xv_image) {
+-        destroyImage();
+-    }
+-#ifdef HAVE_LIBXV
+-    if (!shm) {
+-        xv_image = (void*)XvCreateImage(QX11Info::display(), xv_port, xv_imageformat,
+-                                        0, w, h);
+-        if (!xv_image) {
+-            kWarning() << "KXvDevice::rebuildImage: XvCreateImage failed.";
+-        }
+-    } else {
+-#ifdef HAVE_XSHM
+-        memset(xv_shminfo, 0, sizeof(XShmSegmentInfo));
+-        xv_image = (void*)XvShmCreateImage(QX11Info::display(), xv_port, xv_imageformat,
+-                                           0, w, h, static_cast<XShmSegmentInfo*>(xv_shminfo));
+-        if (!xv_image) {
+-            kWarning() << "KXvDevice::rebuildImage: Error using SHM with Xv! Disabling SHM...";
+-            _haveShm = false;
+-            _shm = false;
+-            xv_image = (void*)XvCreateImage(QX11Info::display(), xv_port, xv_imageformat,
+-                                            0, w, h);
+-            if (!xv_image) {
+-                kWarning() << "KXvDevice::rebuildImage: XvCreateImage failed.";
+-            }
+-        } else {
+-            static_cast<XShmSegmentInfo*>(xv_shminfo)->shmid =
+-                shmget(IPC_PRIVATE,
+-                       static_cast<XvImage*>(xv_image)->data_size,
+-                       IPC_CREAT | 0600);
+-            static_cast<XShmSegmentInfo*>(xv_shminfo)->shmaddr =
+-                (char*)shmat(static_cast<XShmSegmentInfo*>(xv_shminfo)->shmid, 0, 0);
+-            static_cast<XShmSegmentInfo*>(xv_shminfo)->readOnly = True;
+-            static_cast<XvImage*>(xv_image)->data =
+-                static_cast<XShmSegmentInfo*>(xv_shminfo)->shmaddr;
+-            XShmAttach(QX11Info::display(), static_cast<XShmSegmentInfo*>(xv_shminfo));
+-            XSync(QX11Info::display(), False);
+-            shmctl(static_cast<XShmSegmentInfo*>(xv_shminfo)->shmid, IPC_RMID, 0);
+-        }
+-#endif
+-    }
+-    Q_ASSERT(xv_image != 0);
+-    xv_image_w = w;
+-    xv_image_h = h;
+-#endif
+-}
+-
+-
+-void KXvDevice::destroyImage()
+-{
+-#ifdef HAVE_LIBXV
+-    if (!_shm) {
+-        if (xv_image) {
+-            static_cast<XvImage*>(xv_image)->data = 0;
+-        }
+-    } else {
+-        if (xv_image) {
+-#ifdef HAVE_XSHM
+-            shmdt(static_cast<XShmSegmentInfo*>(xv_shminfo)->shmaddr);
+-#endif
+-        }
+-    }
+-    XFree(xv_image);
+-    xv_image = 0;
+-#endif
+-}
+-
+-
+-Atom KXvDeviceAttribute::atom()
+-{
+-    return XInternAtom(QX11Info::display(), name.toLatin1(), False);
+-}
+--- kopete/libkopete/avdevice/qvideostream.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/avdevice/qvideostream.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,110 +0,0 @@
+-// -*- c++ -*-
+-
+-/*
+- *
+- * Copyright (C) 2002 George Staikos <staikos at kde.org>
+- *               2004 Dirk Ziegelmeier <dziegel at gmx.de>
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public License
+- * along with this library; see the file COPYING.LIB.  If not, write to
+- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+- * Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef _QVIDEOSTREAM_H
+-#define _QVIDEOSTREAM_H
+-
+-#include <config-kopete.h>
+-
+-#ifdef HAVE_GL
+-#include <qgl.h>
+-#include <GL/gl.h>
+-#endif
+-
+-#include <qwidget.h>
+-#include "qvideo.h"
+-
+-class QVideoStreamPrivate;
+-
+-/**
+- * QT-style video stream driver.
+- */
+-class QVideoStream : public QObject, public QVideo
+-{
+-	Q_OBJECT
+-
+-public:
+-	QVideoStream(QWidget *widget = 0);
+-	~QVideoStream();
+-
+-	/* output method */
+-	bool haveMethod(VideoMethod method) const;
+-	VideoMethod method() const;
+-	VideoMethod setMethod(VideoMethod method);
+-
+-	/* max output sizes */
+-	QSize maxSize() const;
+-	int   maxWidth() const;
+-	int   maxHeight() const;
+-
+-	/* output sizes */
+-	QSize size() const;
+-	int   width() const;
+-	int   height() const;
+-
+-	QSize setSize(const QSize& sz);
+-	int   setWidth(int width);
+-	int   setHeight(int height);
+-
+-	/* input sizes */
+-	QSize inputSize() const;
+-	int   inputWidth() const;
+-	int   inputHeight() const;
+-
+-	QSize setInputSize(const QSize& sz);
+-	int setInputWidth(int width);
+-	int setInputHeight(int height);
+-
+-    /* input format */
+-    ImageFormat format() const;
+-    bool setFormat(ImageFormat format);
+-
+-    /* functions to find out about formats */
+-    ImageFormat formatsForMethod(VideoMethod method);
+-    bool supportsFormat(VideoMethod method, ImageFormat format);
+-
+-    /* Display image */
+-	QVideoStream& operator<<(const unsigned char *const img);
+-    
+-public slots:
+-	int displayFrame(const unsigned char *const img);
+-	int displayFrame(const unsigned char *const img, int x, int y, int sw, int sh);
+-
+-private:
+-    QVideoStreamPrivate* d;
+-
+-	QWidget*    _w;
+-	VideoMethod _methods; // list of methods
+-	VideoMethod _method;  // the current method
+-    ImageFormat _format;
+-	QSize       _size;
+-	QSize       _inputSize;
+-	bool        _init;
+-    ImageFormat _xFormat;
+-
+-	void deInit();
+-	void init();
+-};
+-
+-#endif
+-
+--- kopete/libkopete/avdevice/qvideo.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/avdevice/qvideo.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,68 +0,0 @@
+-// -*- c++ -*-
+-/***************************************************************************
+-                           qvideo.h
+-                           --------
+-    begin                : Sat Jun 12 2004
+-    copyright            : (C) 2004 by Dirk Ziegelmeier
+-    email                : dziegel at gmx.de
+- ***************************************************************************/
+-
+-/*
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public License
+- * along with this library; see the file COPYING.LIB.  If not, write to
+- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+- * Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef QVIDEO_H
+-#define QVIDEO_H
+-
+-class QVideo
+-{
+-public:
+-    typedef enum {
+-        FORMAT_NONE     =       0,
+-        FORMAT_GREY     =  (1<<0),
+-        FORMAT_HI240    =  (1<<1),
+-        FORMAT_RGB15_LE =  (1<<2),
+-        FORMAT_RGB15_BE =  (1<<3),
+-        FORMAT_RGB16_LE =  (1<<4),
+-        FORMAT_RGB16_BE =  (1<<5),
+-        FORMAT_RGB32    =  (1<<6),
+-        FORMAT_BGR32    =  (1<<7),
+-        FORMAT_RGB24    =  (1<<8),
+-        FORMAT_BGR24    =  (1<<9),
+-        FORMAT_YUYV     = (1<<10),
+-        FORMAT_UYVY     = (1<<11),
+-        FORMAT_YUV422P  = (1<<12),
+-        FORMAT_YUV420P  = (1<<13),
+-        FORMAT_ALL      = 0x00003FFF
+-    } ImageFormat;
+-
+-    typedef enum {
+-        METHOD_NONE  =  0,
+-        METHOD_XSHM  =  1,
+-        METHOD_XV    =  2,
+-        METHOD_XVSHM =  4,
+-        METHOD_X11   =  8,
+-        METHOD_DGA   = 16, /* unimplemented */
+-        METHOD_GL    = 32,
+-        METHOD_SDL   = 64  /* unimplemented */
+-    } VideoMethod;
+-    
+-    static unsigned int bytesppForFormat(ImageFormat fmt);
+-    static bool findDisplayProperties(ImageFormat& fmt, int& depth, unsigned int& bitsperpixel, int& bytesperpixel);
+-};
+-
+-#endif //QVIDEO_H
+-
+--- kopete/libkopete/avdevice/kxv.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/avdevice/kxv.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,260 +0,0 @@
+-/* 
+- *   KDE Xv interface
+- *
+- *   Copyright (C) 2001 George Staikos (staikos at kde.org)
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public License
+- * along with this library; see the file COPYING.LIB.  If not, write to
+- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+- * Boston, MA 02110-1301, USA.
+- */
+-
+-#ifndef __KXV_H
+-#define __KXV_H
+-
+-#include <X11/X.h>
+-#include <X11/Xlib.h>
+-#include <QString>
+-#include <QStringList>
+-#include <QList>
+-
+-class QWidget;
+-class QImage;
+-
+-class KXvPrivate;
+-class KXvDevice;
+-class KXvDevicePrivate;
+-
+-typedef QList<KXvDevice*> KXvDeviceList;
+-
+-
+-class KXv
+-{
+-public:
+-    ~KXv();
+-    
+-    /*
+-     *   To get access to the Xv extension, you call this method.  It will return
+-     *   a KXv* object on success, or NULL if it can't connect.
+-     *
+-     *   d is typically the Window ID
+-     */
+-    static KXv *connect(Drawable d);
+-    
+-    /*
+-     *   True if we can connect to the Xv extension.
+-     */
+-    static bool haveXv();
+-    
+-    /*
+-     *   Return the list of Xv devices
+-     */
+-    KXvDeviceList& devices();
+-    
+-protected:
+-    KXv();
+-    bool init(Drawable d);
+-    
+-    /***   XV info   ***/
+-    unsigned int xv_version, xv_release, xv_request, xv_event, xv_error;
+-    unsigned int xv_adaptors;
+-    void *xv_adaptor_info;
+-    
+-    KXvDeviceList _devs;
+-    
+-private:
+-    KXvPrivate *d;
+-};
+-
+-
+-
+-class KXvDeviceAttribute
+-{
+-public:
+-    QString name;
+-    int min;
+-    int max;
+-    int flags;
+-    
+-    Atom atom();
+-};
+-
+-typedef QList<KXvDeviceAttribute*> KXvDeviceAttributes;
+-
+-
+-class KXvDevice
+-{
+-    friend class KXv;
+-public:
+-
+-    KXvDevice();
+-    ~KXvDevice();
+-    
+-    /*
+-     *   return the list of known attributes
+-     */
+-    const KXvDeviceAttributes& attributes();
+-    
+-    /*
+-     *   return the range for a given attribute
+-     */
+-    bool getAttributeRange(const QString& attribute, int *min, int *max);
+-    
+-    /*
+-     *   get the current value of a given attribute
+-     */
+-    bool getAttribute(const QString& attribute, int *val);
+-    
+-    /*
+-     *   set the current value of a given attribute
+-     */
+-    bool setAttribute(const QString& attribute, int val);
+-    
+-    bool grabStill(QImage *pix, int dw, int dh);
+-    
+-    /*
+-     *   True if this device can operate on the given widget
+-     */
+-    bool supportsWidget(QWidget *w);
+-    
+-    /*
+-     *   Display the given image with Xv.
+-     */
+-    int displayImage(QWidget *widget, const unsigned char *const data, int w, int h, int dw, int dh);
+-    int displayImage(Window win, const unsigned char *const data, int w, int h, int dw, int dh);
+-
+-    /*
+-     *   Display a portion of the given image with Xv.
+-     */
+-    int displayImage(QWidget *widget, const unsigned char *const data, int w, int h, int x, int y, int sw, int sh, int dw, int dh);
+-    int displayImage(Window win, const unsigned char *const data, int w, int h, int x, int y, int sw, int sh, int dw, int dh);
+-    
+-    /*
+-     *   Start a video stream in widget w, width dw, height dh
+-     */
+-    bool startVideo(QWidget *w, int dw, int dh);
+-    bool startVideo(Window w, int dw, int dh);
+-    
+-    /*
+-     *   Is the video playing
+-     */
+-    bool videoPlaying() const;
+-    
+-    /*
+-     *   Stop video stream
+-     */
+-    bool stopVideo();
+-    
+-    /*
+-     *   True if this is an image output backend (video card)
+-     */
+-    bool isImageBackend();
+-    
+-    /*
+-     *   True if this is a video source
+-     */
+-    bool isVideoSource();
+-    
+-    /*
+-     *   Name of the device
+-     */
+-    const QString& name() const;
+-    
+-    /*
+-     *   The Xv port for this device
+-     */
+-    int port() const;
+-    
+-    /*
+-     *   The list of encodings/norms available
+-     */
+-    const QStringList& encodings() const;
+-    
+-    /*
+-     *   get encoding
+-     */
+-    bool encoding(QString& encoding);
+-    
+-    /*
+-     *   Set the encoding to the given one.  This should be taken from the list.
+-     */
+-    bool setEncoding(const QString& e);
+-    
+-    /*
+-     *   Set the image format. (ex YUV)
+-     */
+-    int setImageFormat(int format);
+-    
+-    /*
+-     *   Get the current image format
+-     */
+-    int imageFormat() const;
+-    
+-    /*
+-     *   Use SHM for PutImage if available
+-     */
+-    bool useShm(bool on);
+-    
+-    /*
+-     *   Is SHM being used?
+-     */
+-    bool usingShm() const;
+-
+-    
+-protected:
+-    bool init();
+-    
+-    bool _shm;
+-    KXvDeviceAttributes _attrs;
+-    
+-    int xv_type, xv_adaptor;
+-    QString xv_name;
+-    int xv_port;
+-    unsigned int xv_encodings;
+-    int xv_encoding;
+-    void *xv_encoding_info;
+-    int xv_encoding_attributes;
+-    void *xv_attr;
+-    GC xv_gc;
+-    Window xv_last_win;
+-    
+-    QStringList _encodingList;
+-    
+-    int xv_formats;
+-    void *xv_formatvalues;
+-    
+-    int xv_nvisualformats;
+-    void *xv_visualformats;  // XvFormat*
+-    
+-    bool videoStarted;
+-    Window videoWindow;
+-    
+-    long xv_imageformat;
+-    
+-    void *xv_shminfo;
+-    void *xv_image;
+-    int xv_image_w;
+-    int xv_image_h;
+-    bool _haveShm;
+-
+-    
+-private:
+-    KXvDevicePrivate *d;
+-    
+-    void rebuildImage(int w, int h, bool shm);
+-    void destroyImage();
+-};
+-
+-
+-#endif
+-
+--- kopete/libkopete/avdevice/videodevicepool.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/avdevice/videodevicepool.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -403,53 +403,11 @@
+ }
+ 
+ /*!
+-    \fn VideoDevicePool::getDisableMMap()
+- */
+-bool VideoDevicePool::getDisableMMap()
+-{
+-	if(m_videodevice.size())
+-		return m_videodevice[currentDevice()].getDisableMMap();
+-	return false;
+-}
+-
+-/*!
+-    \fn VideoDevicePool::setDisableMMap(bool disablemmap)
+- */
+-bool VideoDevicePool::setDisableMMap(bool disablemmap)
+-{
+-	kDebug() << "VideoDevicePool::setDisableMMap(" << disablemmap << ") called.";
+-	if(m_videodevice.size())
+-		return m_videodevice[currentDevice()].setDisableMMap(disablemmap);
+-	return false;
+-}
+-
+-/*!
+-    \fn VideoDevicePool::getWorkaroundBrokenDriver()
+- */
+-bool VideoDevicePool::getWorkaroundBrokenDriver()
+-{
+-	if(m_videodevice.size())
+-		return m_videodevice[currentDevice()].getWorkaroundBrokenDriver();
+-	return false;
+-}
+-
+-/*!
+-    \fn VideoDevicePool::setWorkaroundBrokenDriver(bool workaroundbrokendriver)
+- */
+-bool VideoDevicePool::setWorkaroundBrokenDriver(bool workaroundbrokendriver)
+-{
+-	kDebug() << "VideoDevicePool::setWorkaroundBrokenDriver(" << workaroundbrokendriver << ") called.";
+-	if(m_videodevice.size())
+-		return m_videodevice[currentDevice()].setWorkaroundBrokenDriver(workaroundbrokendriver);
+-	return false;
+-}
+-
+-/*!
+     \fn VideoDevicePool::getFrame()
+  */
+ int VideoDevicePool::getFrame()
+ {
+-	kDebug() << "VideoDevicePool::getFrame() called.";
++//	kDebug() << "VideoDevicePool::getFrame() called.";
+ 	if(m_videodevice.size())
+ 		return m_videodevice[currentDevice()].getFrame();
+ 	else
+@@ -472,7 +430,7 @@
+  */
+ int VideoDevicePool::getImage(QImage *qimage)
+ {
+-	kDebug() << "VideoDevicePool::getImage() called.";
++//	kDebug() << "VideoDevicePool::getImage() called.";
+ 	if(m_videodevice.size())
+ 		return m_videodevice[currentDevice()].getImage(qimage);
+ 	else
+@@ -688,88 +646,6 @@
+ 	}
+ 
+ #endif
+-#if 0
+-	QDir videodevice_dir;
+-	const QString videodevice_dir_path=QString::fromLocal8Bit("/dev/v4l/");
+-	const QStringList videodevice_dir_filter(QString::fromLocal8Bit("video*"));
+-	VideoDevice videodevice;
+-
+-	m_videodevice.clear();
+-	m_modelvector.clear();
+-
+-	videodevice_dir.setPath(videodevice_dir_path);
+-	videodevice_dir.setNameFilters(videodevice_dir_filter);
+-        videodevice_dir.setFilter( QDir::System | QDir::NoSymLinks | QDir::Readable | QDir::Writable );
+-        videodevice_dir.setSorting( QDir::Name );
+-
+-	QFileInfoList list = videodevice_dir.entryInfoList();
+-
+-	if (list.isEmpty())
+-	{
+-		kDebug() << "Found no suitable devices in " << videodevice_dir_path;
+-		QDir videodevice_dir;
+-		const QString videodevice_dir_path=QString::fromLocal8Bit("/dev/");
+-		const QStringList videodevice_dir_filter(QString::fromLocal8Bit("video*"));
+-		VideoDevice videodevice;
+-
+-		videodevice_dir.setPath(videodevice_dir_path);
+-		videodevice_dir.setNameFilters(videodevice_dir_filter);
+-        	videodevice_dir.setFilter( QDir::System | QDir::NoSymLinks | QDir::Readable | QDir::Writable );
+-        	videodevice_dir.setSorting( QDir::Name );
+-
+-		QFileInfoList list = videodevice_dir.entryInfoList();
+-
+-		if (list.isEmpty())
+-		{
+-			kDebug() << "Found no suitable devices in " << videodevice_dir_path;
+-			return EXIT_FAILURE;
+-		}
+-		QFileInfoList::iterator fileiterator, itEnd = list.end();
+-
+-		kDebug() << "scanning devices in " << videodevice_dir_path << "...";
+-		for ( fileiterator = list.begin(); fileiterator != itEnd; ++fileiterator )
+-		{
+-			QFileInfo fileinfo = ( *fileiterator );
+-			videodevice.setFileName(fileinfo.absoluteFilePath());
+-			kDebug() << "Found device " << videodevice.full_filename;
+-			videodevice.open(); // It should be opened with O_NONBLOCK (it's a FIFO) but I dunno how to do it using QFile
+-			if(videodevice.isOpen())
+-			{
+-				kDebug() << "File " << videodevice.full_filename << " was opened successfuly";
+-
+-// This must be changed to proper code to handle multiple devices of the same model. It currently simply add models without proper checking
+-				videodevice.close();
+-				videodevice.m_modelindex=m_modelvector.addModel (videodevice.m_model); // Adds device to the device list and sets model number
+-				m_videodevice.push_back(videodevice);
+-			}
+-		}
+-
+-		return EXIT_FAILURE;
+-	}
+-
+-	QFileInfoList::iterator fileiterator, itEnd = list.end();
+-	m_videodevice.clear();
+-	kDebug() << "scanning devices in " << videodevice_dir_path << "...";
+-	for ( fileiterator = list.begin(); fileiterator != itEnd; ++fileiterator )
+-	{
+-		QFileInfo fileinfo = ( *fileiterator );
+-		videodevice.setFileName(fileinfo.absoluteFilePath());
+-		kDebug() << "Found device " << videodevice.full_filename;
+-		videodevice.open(); // It should be opened with O_NONBLOCK (it's a FIFO) but I dunno how to do it using QFile
+-		if(videodevice.isOpen())
+-		{
+-			kDebug() << "File " << videodevice.full_filename << " was opened successfuly";
+-
+-// This must be changed to proper code to handle multiple devices of the same model. It currently simply add models without proper checking
+-			videodevice.close();
+-			videodevice.m_modelindex=m_modelvector.addModel (videodevice.m_model); // Adds device to the device list and sets model number
+-			m_videodevice.push_back(videodevice);
+-		}
+-		++fileiterator;
+-	}
+-	m_current_device = 0;
+-	loadConfig();
+-#endif
+ 	kDebug() << "exited successfuly";
+ 	return EXIT_SUCCESS;
+ }
+@@ -786,26 +662,27 @@
+ 	{
+ 		kDebug() << "vendor: " << vendorDevice->vendor() << ", product: " << vendorDevice->product();
+ 	}
+-	QStringList protocols = device.as<Solid::Video>()->supportedProtocols();
+-	if ( protocols.contains( "video4linux" ) )
+-	{
+-		QStringList drivers = device.as<Solid::Video>()->supportedDrivers( "video4linux" );
+-		if ( drivers.contains( "video4linux" ) )
++	Solid::Video * solidVideoDevice = device.as<Solid::Video>();
++	if ( solidVideoDevice ) {
++		QStringList protocols = solidVideoDevice->supportedProtocols();
++		if ( protocols.contains( "video4linux" ) )
+ 		{
+-			kDebug() << "V4L device path is" << device.as<Solid::Video>()->driverHandle( "video4linux" ).toString();
+-			VideoDevice videodevice;
+-			videodevice.setUdi( device.udi() );
+-			videodevice.setFileName(device.as<Solid::Video>()->driverHandle( "video4linux" ).toString());
+-			kDebug() << "Found device " << videodevice.full_filename;
+-			videodevice.open(); // It should be opened with O_NONBLOCK (it's a FIFO) but I dunno how to do it using QFile
+-			if(videodevice.isOpen())
++			QStringList drivers = solidVideoDevice->supportedDrivers( "video4linux" );
++			if ( drivers.contains( "video4linux" ) )
+ 			{
+-				kDebug() << "File " << videodevice.full_filename << " was opened successfuly";
+-
+-				// This must be changed to proper code to handle multiple devices of the same model. It currently simply add models without proper checking
+-				videodevice.close();
+-				videodevice.m_modelindex=m_modelvector.addModel (videodevice.m_model); // Adds device to the device list and sets model number
+-				m_videodevice.push_back(videodevice);
++				kDebug() << "V4L device path is" << solidVideoDevice->driverHandle( "video4linux" ).toString();
++				VideoDevice videodevice;
++				videodevice.setUdi( device.udi() );
++				videodevice.setFileName(solidVideoDevice->driverHandle( "video4linux" ).toString());
++				kDebug() << "Found device " << videodevice.full_filename;
++				videodevice.open();
++				if(videodevice.isOpen())
++				{
++					kDebug() << "File " << videodevice.full_filename << " was opened successfuly";
++					videodevice.close();
++					videodevice.m_modelindex=m_modelvector.addModel (videodevice.m_model); // Adds device to the device list and sets model number
++					m_videodevice.push_back(videodevice);
++				}
+ 			}
+ 		}
+ 	}
+@@ -884,11 +761,8 @@
+ 			}
+ 			const QString name                = config.readEntry((QString::fromLocal8Bit ( "Model %1 Device %2 Name")  .arg ((*vditerator).m_name ) .arg ((*vditerator).m_modelindex)), (*vditerator).m_model);
+ 			const int currentinput            = config.readEntry((QString::fromLocal8Bit ( "Model %1 Device %2 Current input")  .arg ((*vditerator).m_name ) .arg ((*vditerator).m_modelindex)), 0);
+-			const bool disablemmap            = config.readEntry((QString::fromLocal8Bit ( "Model %1 Device %2 DisableMMap")  .arg ((*vditerator).m_model ) .arg ((*vditerator).m_modelindex)), false );
+-			const bool workaroundbrokendriver = config.readEntry((QString::fromLocal8Bit ( "Model %1 Device %2 WorkaroundBrokenDriver")  .arg ((*vditerator).m_model ) .arg ((*vditerator).m_modelindex)), false );
+ 			kDebug() << "Device name: " << name;
+ 			kDebug() << "Device current input: " << currentinput;
+-			(*vditerator).setWorkaroundBrokenDriver(workaroundbrokendriver);
+ 			(*vditerator).selectInput(currentinput);
+ 
+ 			for (int input = 0 ; input < (*vditerator).m_input.size(); input++)
+@@ -917,7 +791,6 @@
+ 				kDebug() << "AutoColorCorrection   :" << autocolorcorrection;
+ 				kDebug() << "ImageAsMirror         :" << imageasmirror;
+ 			}
+-			Q_UNUSED(disablemmap);
+ 		}
+ 	}
+ }
+@@ -956,12 +829,8 @@
+ // Stores current input for the given video device
+ 			const QString name                   = QString::fromLocal8Bit ( "Model %1 Device %2 Name")  .arg ((*vditerator).m_model ) .arg ((*vditerator).m_modelindex);
+ 			const QString currentinput           = QString::fromLocal8Bit ( "Model %1 Device %2 Current input")  .arg ((*vditerator).m_model ) .arg ((*vditerator).m_modelindex);
+-			const QString disablemmap            = QString::fromLocal8Bit ( "Model %1 Device %2 DisableMMap") .arg ((*vditerator).m_model ) .arg ((*vditerator).m_modelindex);
+-			const QString workaroundbrokendriver = QString::fromLocal8Bit ( "Model %1 Device %2 WorkaroundBrokenDriver") .arg ((*vditerator).m_model ) .arg ((*vditerator).m_modelindex);
+ 			config.writeEntry( name,                   (*vditerator).m_name);
+ 			config.writeEntry( currentinput,           (*vditerator).currentInput());
+-			config.writeEntry( disablemmap,            (*vditerator).getDisableMMap());
+-			config.writeEntry( workaroundbrokendriver, (*vditerator).getWorkaroundBrokenDriver());
+ 
+ 			for (int input = 0 ; input < (*vditerator).m_input.size(); input++)
+ 			{
+--- kopete/libkopete/avdevice/videodevicepool.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/avdevice/videodevicepool.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -102,11 +102,6 @@
+ 	bool getImageAsMirror();
+ 	bool setImageAsMirror(bool imageasmirror);
+ 
+-	bool getDisableMMap();
+-	bool setDisableMMap(bool disablemmap);
+-	bool getWorkaroundBrokenDriver();
+-	bool setWorkaroundBrokenDriver(bool workaroundbrokendriver);
+-
+ 	void loadConfig(); // Load configuration parameters;
+ 	void saveConfig(); // Save configuretion parameters;
+ 
+--- kopete/libkopete/avdevice/videodevice.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/avdevice/videodevice.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -140,10 +140,8 @@
+ 
+ 		m_driver=VIDEODEV_DRIVER_NONE;
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 
+-if(!getWorkaroundBrokenDriver())
+-{
+ 		CLEAR(V4L2_capabilities);
+ 
+ 		if (-1 != xioctl (VIDIOC_QUERYCAP, &V4L2_capabilities))
+@@ -160,7 +158,7 @@
+ 			m_model=QString::fromLocal8Bit((const char*)V4L2_capabilities.card);
+ 
+ 
+-// Detect maximum and minimum resolution supported by the V4L2 device
++// Detect maximum and minimum resolution supported by the V4L2 device. VIDIOC_ENUM_FRAMESIZES is still experimental.
+ 			CLEAR (fmt);
+ 			fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+     			if (-1 == xioctl (VIDIOC_G_FMT, &fmt))
+@@ -242,7 +240,6 @@
+ 			kDebug() << "checkDevice(): " << full_filename << " is not a V4L2 device.";
+ 		}
+ 
+-}
+ #endif
+ 
+ 		CLEAR(V4L_capabilities);
+@@ -426,7 +423,7 @@
+ 	switch(m_driver)
+ 	{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		case VIDEODEV_DRIVER_V4L2:
+ 			if(V4L2_capabilities.capabilities & V4L2_CAP_READWRITE)
+ 			{
+@@ -472,7 +469,7 @@
+ 
+ // Select video input, video standard and tune here.
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 	cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ 	if (-1 == xioctl (VIDIOC_CROPCAP, &cropcap))
+ 	{ // Errors ignored.
+@@ -537,20 +534,33 @@
+ 	if(isOpen())
+ 	{
+ // It should not be there. It must remain in a completely distict place, cause this method should not change the pixelformat.
+-		if(PIXELFORMAT_NONE == setPixelFormat(PIXELFORMAT_YUV420P))
++		kDebug() <<  k_funcinfo << "Trying YUY422P";
++		if(PIXELFORMAT_NONE == setPixelFormat(PIXELFORMAT_YUV422P))
+ 		{
+-			kDebug() << "Card doesn't seem to support YUV420P format. Trying RGB24.";
+-			if(PIXELFORMAT_NONE == setPixelFormat(PIXELFORMAT_RGB24))
++			kDebug() <<  k_funcinfo << "Card doesn't seem to support YUV422P format. Trying YUYV.";
++			if(PIXELFORMAT_NONE == setPixelFormat(PIXELFORMAT_YUYV))
+ 			{
+-				kDebug() << "Card doesn't seem to support RGB24 format. Trying BGR24.";
+-				if(PIXELFORMAT_NONE == setPixelFormat(PIXELFORMAT_BGR24))
++				kDebug() <<  k_funcinfo << "Card doesn't seem to support YUYV format. Trying UYVY.";
++				if(PIXELFORMAT_NONE == setPixelFormat(PIXELFORMAT_UYVY))
+ 				{
+-					kDebug() << "Card doesn't seem to support RGB24 format. Trying RGB32.";
+-					if(PIXELFORMAT_NONE == setPixelFormat(PIXELFORMAT_RGB32))
++					kDebug() <<  k_funcinfo << "Card doesn't seem to support UYVY format. Trying YUV420P.";
++					if(PIXELFORMAT_NONE == setPixelFormat(PIXELFORMAT_YUV420P))
+ 					{
+-						kDebug() << "Card doesn't seem to support RGB32 format. Trying BGR32.";
+-						if(PIXELFORMAT_NONE == setPixelFormat(PIXELFORMAT_BGR32))
+-							kDebug() << "Card doesn't seem to support BGR32 format. Fallback to it is not yet implemented.";
++						kDebug() <<  k_funcinfo << "Card doesn't seem to support YUV420P format. Trying RGB24.";
++						if(PIXELFORMAT_NONE == setPixelFormat(PIXELFORMAT_RGB24))
++						{
++							kDebug() <<  k_funcinfo << "Card doesn't seem to support RGB24 format. Trying BGR24.";
++							if(PIXELFORMAT_NONE == setPixelFormat(PIXELFORMAT_BGR24))
++							{
++								kDebug() <<  k_funcinfo << "Card doesn't seem to support RGB24 format. Trying RGB32.";
++								if(PIXELFORMAT_NONE == setPixelFormat(PIXELFORMAT_RGB32))
++								{
++									kDebug() <<  k_funcinfo << "Card doesn't seem to support RGB32 format. Trying BGR32.";
++									if(PIXELFORMAT_NONE == setPixelFormat(PIXELFORMAT_BGR32))
++										kDebug() <<  k_funcinfo << "Card doesn't seem to support BGR32 format. Fallback to it is not yet implemented.";
++								}
++							}
++						}
+ 					}
+ 				}
+ 			}
+@@ -569,7 +579,7 @@
+ 		switch(m_driver)
+ 		{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 			case VIDEODEV_DRIVER_V4L2:
+ //				CLEAR (fmt);
+ 				if (-1 == xioctl (VIDIOC_G_FMT, &fmt))
+@@ -669,7 +679,7 @@
+ 	switch(m_driver)
+ 	{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		case VIDEODEV_DRIVER_V4L2:
+ //			CLEAR (fmt);
+ 			if (-1 == xioctl (VIDIOC_G_FMT, &fmt))
+@@ -755,7 +765,7 @@
+ 		switch (m_driver)
+ 		{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 			case VIDEODEV_DRIVER_V4L2:
+ 				if (-1 == ioctl (descriptor, VIDIOC_S_INPUT, &newinput))
+ 				{
+@@ -823,7 +833,7 @@
+ 				break;
+ 			case IO_METHOD_MMAP:
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 				{
+ 					unsigned int loop;
+ 					for (loop = 0; loop < m_streambuffers; ++loop)
+@@ -845,7 +855,7 @@
+ 				break;
+ 			case IO_METHOD_USERPTR:
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 				{
+ 					unsigned int loop;
+ 					for (loop = 0; loop < m_streambuffers; ++loop)
+@@ -883,7 +893,7 @@
+ 	ssize_t bytesread;
+ 
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 	struct v4l2_buffer v4l2buffer;
+ #endif
+ #endif
+@@ -917,7 +927,7 @@
+ 				break;
+ 			case IO_METHOD_MMAP:
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 				CLEAR (v4l2buffer);
+ 				v4l2buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ 				v4l2buffer.memory = V4L2_MEMORY_MMAP;
+@@ -977,7 +987,7 @@
+ 				break;
+ 			case IO_METHOD_USERPTR:
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 				{
+ 					unsigned int i;
+ 					CLEAR (v4l2buffer);
+@@ -1007,7 +1017,7 @@
+ 				break;
+ 		}
+ 
+-// Automatic color correction. Now it just swaps R and B channels in RGB24/BGR24 modes.
++/* Automatic color correction. Now it just swaps R and B channels in RGB24/BGR24 modes.
+ 		if(m_input[m_current_input].getAutoColorCorrection())
+ 		{
+ 			switch(m_currentbuffer.pixelformat)
+@@ -1048,7 +1058,7 @@
+ 				case PIXELFORMAT_YUV420P: break;
+ 				case PIXELFORMAT_YUV422P: break;
+ 			}
+-		}
++		}*/
+ // kDebug() << "10 Using IO_METHOD_READ.File descriptor: " << descriptor << " Buffer address: " << &m_currentbuffer.data[0] << " Size: " << m_currentbuffer.data.size();
+ 
+ 
+@@ -1145,82 +1155,83 @@
+ 		case PIXELFORMAT_YUV422P:
+ 		case PIXELFORMAT_YUV420P:
+ 		{
+-		uchar *yptr, *cbptr, *crptr;
+-		bool halfheight=false;
+-		bool packed=false;
+-		if (m_currentbuffer.pixelformat == PIXELFORMAT_YUV420P)
+-			halfheight=true;
+-	
+-		if (m_currentbuffer.pixelformat == PIXELFORMAT_YUYV)
+-		{
+-			yptr = &m_currentbuffer.data[0];
+-			cbptr = yptr + 1;
+-			crptr = yptr + 3;
+-			packed=true;
+-		}
+-		else if (m_currentbuffer.pixelformat == PIXELFORMAT_UYVY)
+-		{
+-			cbptr = &m_currentbuffer.data[0];
+-			yptr = cbptr + 1;
+-			crptr = cbptr + 3;
+-			packed=true;
+-		}
+-		else
+-		{
+-			yptr = &m_currentbuffer.data[0];
+-			cbptr = yptr + (width()*height());
+-			crptr = cbptr + (width()*height()/(halfheight ? 4:2));
+-		}
+-	
+-		for(int y=0; y<height(); y++)
+-		{
+-			for(int x=0; x<width(); x++)
++			uchar *yptr, *cbptr, *crptr;
++			bool halfheight=false;
++			bool packed=false;
++// Adjust algorythm to specific YUV data arrangements.
++			if (m_currentbuffer.pixelformat == PIXELFORMAT_YUV420P)
++				halfheight=true;
++			if (m_currentbuffer.pixelformat == PIXELFORMAT_YUYV)
+ 			{
+-			int c,d,e;
+-	
+-			if (packed)
++				yptr = &m_currentbuffer.data[0];
++				cbptr = yptr + 1;
++				crptr = yptr + 3;
++				packed=true;
++			}
++			else if (m_currentbuffer.pixelformat == PIXELFORMAT_UYVY)
+ 			{
+-				c = (yptr[x<<1])-16;
+-				d = (cbptr[x&!1])-128;
+-				e = (crptr[x&!1])-128;
++				cbptr = &m_currentbuffer.data[0];
++				yptr = cbptr + 1;
++				crptr = cbptr + 2;
++				packed=true;
+ 			}
+ 			else
+ 			{
+-				c = (yptr[x])-16;
+-				d = (cbptr[x>>1])-128;
+-				e = (crptr[x>>1])-128;
++				yptr = &m_currentbuffer.data[0];
++				cbptr = yptr + (width()*height());
++				crptr = cbptr + (width()*height()/(halfheight ? 4:2));
+ 			}
+ 	
+-			int r = (298 * c           + 409 * e + 128)>>8;
+-			int g = (298 * c - 100 * d - 208 * e + 128)>>8;
+-			int b = (298 * c + 516 * d           + 128)>>8;
++			for(int y=0; y<height(); y++)
++			{
++// Decode scanline
++				for(int x=0; x<width(); x++)
++				{
++					int c,d,e;
++
++					if (packed)
++					{
++						c = (yptr[x<<1])-16;
++						d = (cbptr[x>>1<<2])-128;
++						e = (crptr[x>>1<<2])-128;
++					}
++					else
++					{
++						c = (yptr[x])-16;
++						d = (cbptr[x>>1])-128;
++						e = (crptr[x>>1])-128;
++					}
+ 	
+-			if (r<0) r=0;   if (r>255) r=255;
+-			if (g<0) g=0;   if (g>255) g=255;
+-			if (b<0) b=0;   if (b>255) b=255;
++					int r = (298 * c           + 409 * e + 128)>>8;
++					int g = (298 * c - 100 * d - 208 * e + 128)>>8;
++					int b = (298 * c + 516 * d           + 128)>>8;
+ 	
+-			uint *p = (uint*)qimage->scanLine(y)+x;
+-			*p = qRgba(r,g,b,255);
++					if (r<0) r=0;   if (r>255) r=255;
++					if (g<0) g=0;   if (g>255) g=255;
++					if (b<0) b=0;   if (b>255) b=255;
+ 	
+-			}
++					uint *p = (uint*)qimage->scanLine(y)+x;
++					*p = qRgba(r,g,b,255);
+ 	
+-			if (packed)
+-			{
+-			yptr+=width()*2;
+-			cbptr+=width()*2;
+-			crptr+=width()*2;
++				}
++// Jump to next line
++				if (packed)
++				{
++					yptr+=width()*2;
++					cbptr+=width()*2;
++					crptr+=width()*2;
++				}
++				else
++				{
++					yptr+=width();
++					if (!halfheight || y&1)
++					{
++						cbptr+=width()/2;
++						crptr+=width()/2;
++					}
++				}
+ 			}
+-			else
+-			{
+-			yptr+=width();
+-			if (!halfheight || y&1)
+-			{
+-				cbptr+=width()/2;
+-				crptr+=width()/2;
+-			}
+-			}
+ 		}
+-		}
+ 		break;
+ 	}
+ 
+@@ -1245,23 +1256,23 @@
+ 				break;
+ 			case IO_METHOD_MMAP:
+ 			case IO_METHOD_USERPTR:
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 				{
+ 					enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ 					if (-1 == xioctl (VIDIOC_STREAMOFF, &type))
+ 						return errnoReturn ("VIDIOC_STREAMOFF");
+ 
+-                    if (m_io_method == IO_METHOD_MMAP)
+-                    {
+-                        unsigned int loop;
+-                        for (loop = 0; loop < m_streambuffers; ++loop)
+-                        {
+-                            if (munmap(m_rawbuffers[loop].start,m_rawbuffers[loop].length) != 0)
+-                            {
+-                                kDebug() << "unable to munmap.";
+-                            }
+-                        }
+-                    }
++					if (m_io_method == IO_METHOD_MMAP)
++					{
++						unsigned int loop;
++						for (loop = 0; loop < m_streambuffers; ++loop)
++						{
++							if (munmap(m_rawbuffers[loop].start,m_rawbuffers[loop].length) != 0)
++							{
++								kDebug() << "unable to munmap.";
++							}
++						}
++					}
+ 				}
+ #endif
+ 				break;
+@@ -1306,8 +1317,40 @@
+ 	switch(m_driver)
+ 	{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		case VIDEODEV_DRIVER_V4L2:
++			{
++				struct v4l2_queryctrl queryctrl;
++				struct v4l2_control control;
++
++				CLEAR (queryctrl);
++				queryctrl.id = V4L2_CID_BRIGHTNESS;
++
++				if (-1 == xioctl (VIDIOC_QUERYCTRL, &queryctrl))
++				{
++					if (errno != EINVAL)
++					{
++						kDebug() <<  k_funcinfo << "VIDIOC_QUERYCTRL failed (" << errno << ").";
++					} else
++					{
++						kDebug() << k_funcinfo << "Device doesn't support the Brightness control.";
++					}
++				} else
++				if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
++				{
++					kDebug() << k_funcinfo << "Device doesn't support the Brightness control.";
++				} else
++				{
++					CLEAR (control);
++					control.id = V4L2_CID_BRIGHTNESS;
++					control.value = (queryctrl.maximum - queryctrl.minimum)*getBrightness();
++
++					if (-1 == xioctl (VIDIOC_S_CTRL, &control))
++					{
++						kDebug() <<  k_funcinfo << "VIDIOC_S_CTRL failed (" << errno << ").";
++					}
++				}
++			}
+ 			break;
+ #endif
+ 		case VIDEODEV_DRIVER_V4L:
+@@ -1344,8 +1387,40 @@
+ 	switch(m_driver)
+ 	{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		case VIDEODEV_DRIVER_V4L2:
++			{
++				struct v4l2_queryctrl queryctrl;
++				struct v4l2_control control;
++
++				CLEAR (queryctrl);
++				queryctrl.id = V4L2_CID_CONTRAST;
++
++				if (-1 == xioctl (VIDIOC_QUERYCTRL, &queryctrl))
++				{
++					if (errno != EINVAL)
++					{
++						kDebug() <<  k_funcinfo << "VIDIOC_QUERYCTRL failed (" << errno << ").";
++					} else
++					{
++						kDebug() << k_funcinfo << "Device doesn't support the Contrast control.";
++					}
++				} else
++				if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
++				{
++					kDebug() << k_funcinfo << "Device doesn't support the Contrast control.";
++				} else
++				{
++					CLEAR (control);
++					control.id = V4L2_CID_CONTRAST;
++					control.value = (queryctrl.maximum - queryctrl.minimum)*getContrast();
++
++					if (-1 == xioctl (VIDIOC_S_CTRL, &control))
++					{
++						kDebug() <<  k_funcinfo << "VIDIOC_S_CTRL failed (" << errno << ").";
++					}
++				}
++			}
+ 			break;
+ #endif
+ 		case VIDEODEV_DRIVER_V4L:
+@@ -1382,8 +1457,40 @@
+ 	switch(m_driver)
+ 	{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		case VIDEODEV_DRIVER_V4L2:
++			{
++				struct v4l2_queryctrl queryctrl;
++				struct v4l2_control control;
++
++				CLEAR (queryctrl);
++				queryctrl.id = V4L2_CID_SATURATION;
++
++				if (-1 == xioctl (VIDIOC_QUERYCTRL, &queryctrl))
++				{
++					if (errno != EINVAL)
++					{
++						kDebug() <<  k_funcinfo << "VIDIOC_QUERYCTRL failed (" << errno << ").";
++					} else
++					{
++						kDebug() << k_funcinfo << "Device doesn't support the Saturation control.";
++					}
++				} else
++				if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
++				{
++					kDebug() << k_funcinfo << "Device doesn't support the Saturation control.";
++				} else
++				{
++					CLEAR (control);
++					control.id = V4L2_CID_SATURATION;
++					control.value = (queryctrl.maximum - queryctrl.minimum)*getSaturation();
++
++					if (-1 == xioctl (VIDIOC_S_CTRL, &control))
++					{
++						kDebug() <<  k_funcinfo << "VIDIOC_S_CTRL failed (" << errno << ").";
++					}
++				}
++			}
+ 			break;
+ #endif
+ 		case VIDEODEV_DRIVER_V4L:
+@@ -1420,8 +1527,40 @@
+ 	switch(m_driver)
+ 	{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		case VIDEODEV_DRIVER_V4L2:
++			{
++				struct v4l2_queryctrl queryctrl;
++				struct v4l2_control control;
++
++				CLEAR (queryctrl);
++				queryctrl.id = V4L2_CID_WHITENESS;
++
++				if (-1 == xioctl (VIDIOC_QUERYCTRL, &queryctrl))
++				{
++					if (errno != EINVAL)
++					{
++						kDebug() <<  k_funcinfo << "VIDIOC_QUERYCTRL failed (" << errno << ").";
++					} else
++					{
++						kDebug() << k_funcinfo << "Device doesn't support the Whiteness control.";
++					}
++				} else
++				if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
++				{
++					kDebug() << k_funcinfo << "Device doesn't support the Whiteness control.";
++				} else
++				{
++					CLEAR (control);
++					control.id = V4L2_CID_WHITENESS;
++					control.value = (queryctrl.maximum - queryctrl.minimum)*getWhiteness();
++
++					if (-1 == xioctl (VIDIOC_S_CTRL, &control))
++					{
++						kDebug() <<  k_funcinfo << "VIDIOC_S_CTRL failed (" << errno << ").";
++					}
++				}
++			}
+ 			break;
+ #endif
+ 		case VIDEODEV_DRIVER_V4L:
+@@ -1458,8 +1597,40 @@
+ 	switch(m_driver)
+ 	{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		case VIDEODEV_DRIVER_V4L2:
++			{
++				struct v4l2_queryctrl queryctrl;
++				struct v4l2_control control;
++
++				CLEAR (queryctrl);
++				queryctrl.id = V4L2_CID_HUE;
++
++				if (-1 == xioctl (VIDIOC_QUERYCTRL, &queryctrl))
++				{
++					if (errno != EINVAL)
++					{
++						kDebug() <<  k_funcinfo << "VIDIOC_QUERYCTRL failed (" << errno << ").";
++					} else
++					{
++						kDebug() << k_funcinfo << "Device doesn't support the Hue control.";
++					}
++				} else
++				if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
++				{
++					kDebug() << k_funcinfo << "Device doesn't support the Hue control.";
++				} else
++				{
++					CLEAR (control);
++					control.id = V4L2_CID_HUE;
++					control.value = (queryctrl.maximum - queryctrl.minimum)*getHue();
++
++					if (-1 == xioctl (VIDIOC_S_CTRL, &control))
++					{
++						kDebug() <<  k_funcinfo << "VIDIOC_S_CTRL failed (" << errno << ").";
++					}
++				}
++			}
+ 			break;
+ #endif
+ 		case VIDEODEV_DRIVER_V4L:
+@@ -1542,36 +1713,12 @@
+ 	  return false;
+ }
+ 
+-bool VideoDevice::getDisableMMap()
+-{
+-	return m_disablemmap;
+-}
+-
+-bool VideoDevice::setDisableMMap(bool disablemmap)
+-{
+-	kDebug() << "VideoDevice::setDisableMMap(" << disablemmap << ") called.";
+-	m_disablemmap = disablemmap;
+-	return m_disablemmap;
+-}
+-
+-bool VideoDevice::getWorkaroundBrokenDriver()
+-{
+-	return m_workaroundbrokendriver;
+-}
+-
+-bool VideoDevice::setWorkaroundBrokenDriver(bool workaroundbrokendriver)
+-{
+-	kDebug() << "VideoDevice::setWorkaroundBrokenDriver(" << workaroundbrokendriver << ") called.";
+-	m_workaroundbrokendriver = workaroundbrokendriver;
+-	return m_workaroundbrokendriver;
+-}
+-
+ pixel_format VideoDevice::pixelFormatForPalette( int palette )
+ {
+ 	switch(m_driver)
+ 	{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		case VIDEODEV_DRIVER_V4L2:
+ 			switch(palette)
+ 			{
+@@ -1623,7 +1770,7 @@
+ 	switch(m_driver)
+ 	{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		case VIDEODEV_DRIVER_V4L2:
+ 			switch(pixelformat)
+ 			{
+@@ -1728,7 +1875,7 @@
+ 	switch(m_driver)
+ 	{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		case VIDEODEV_DRIVER_V4L2:
+ 			switch(pixelformat)
+ 			{
+@@ -1778,7 +1925,7 @@
+ 	switch(m_driver)
+ 	{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		case VIDEODEV_DRIVER_V4L2:
+ 			switch(standard)
+ 			{
+@@ -1920,7 +2067,7 @@
+ 	switch(m_driver)
+ 	{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		case VIDEODEV_DRIVER_V4L2:
+ 			switch(standard)
+ 			{
+@@ -1990,7 +2137,7 @@
+ 	switch(m_driver)
+ 	{
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		case VIDEODEV_DRIVER_V4L2:
+ 			break;
+ #endif
+@@ -2049,7 +2196,7 @@
+ 	if(isOpen())
+ 	{
+ 		kDebug() << full_filename << " Trying to MMAP";
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		struct v4l2_requestbuffers req;
+ 
+ 		CLEAR (req);
+@@ -2121,7 +2268,7 @@
+     /// @todo implement me
+ 	if(isOpen())
+ 	{
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 		struct v4l2_requestbuffers req;
+ 
+ 		CLEAR (req);
+--- kopete/libkopete/avdevice/videodevice.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/avdevice/videodevice.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -79,7 +79,7 @@
+ #if defined( __linux__) && defined(ENABLE_AV)
+         ,
+ 	VIDEODEV_DRIVER_V4L
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+         ,
+ 	VIDEODEV_DRIVER_V4L2
+ #endif
+@@ -231,11 +231,6 @@
+ 	bool getImageAsMirror();
+ 	bool setImageAsMirror(bool imageasmirror);
+ 
+-	bool getDisableMMap();
+-	bool setDisableMMap(bool disablemmap);
+-	bool getWorkaroundBrokenDriver();
+-	bool setWorkaroundBrokenDriver(bool workaroundbrokendriver);
+-
+ 	bool canCapture();
+ 	bool canChromakey();
+ 	bool canScale();
+@@ -255,7 +250,7 @@
+ 
+ //protected:
+ #if defined(__linux__) && defined(ENABLE_AV)
+-#ifdef HAVE_V4L2
++#ifdef V4L2_CAP_VIDEO_CAPTURE
+ 	struct v4l2_capability V4L2_capabilities;
+ 	struct v4l2_cropcap cropcap;
+ 	struct v4l2_crop crop;
+@@ -270,9 +265,6 @@
+ protected:
+ 	int currentwidth, minwidth, maxwidth, currentheight, minheight, maxheight;
+ 
+-	bool m_disablemmap;
+-	bool m_workaroundbrokendriver;
+-
+ 	QVector<rawbuffer> m_rawbuffers;
+ 	unsigned int m_streambuffers;
+ 	imagebuffer m_currentbuffer;
+--- kopete/libkopete/kopetechatsessionmanager.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopetechatsessionmanager.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -105,12 +105,12 @@
+ }
+ 
+ ChatSession *ChatSessionManager::create(
+-	const Contact *user, ContactPtrList chatContacts, Protocol *protocol)
++	const Contact *user, ContactPtrList chatContacts, Protocol *protocol, Kopete::ChatSession::Form form )
+ {
+ 	ChatSession *result=findChatSession( user,  chatContacts, protocol);
+ 	if (!result)
+ 	{
+-		result = new ChatSession(user,  chatContacts, protocol );
++		result = new ChatSession(user,  chatContacts, protocol, form );
+ 		registerChatSession(result);
+ 	}
+ 	return (result);
+--- kopete/libkopete/kopetechatsession.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopetechatsession.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -59,10 +59,11 @@
+ 	KopeteView *view;
+ 	bool mayInvite;
+ 	Kopete::MessageHandlerChain::Ptr chains[3];
++	Kopete::ChatSession::Form form;
+ };
+ 
+ Kopete::ChatSession::ChatSession( const Kopete::Contact *user,
+-	Kopete::ContactPtrList others, Kopete::Protocol *protocol )
++	Kopete::ContactPtrList others, Kopete::Protocol *protocol, Kopete::ChatSession::Form form )
+ : QObject( user->account())
+ {
+ 	int i;
+@@ -76,6 +77,7 @@
+ 	d->view = 0L;
+ 	d->customDisplayName = false;
+ 	d->mayInvite = false;
++	d->form = form;
+ 
+ 	for ( i = 0; others.size() != i; i++ )
+ 		addContact( others[i], true );
+@@ -511,6 +513,11 @@
+ 		v->raise(true);
+ }
+ 
++Kopete::ChatSession::Form Kopete::ChatSession::form() const
++{
++	return d->form;
++}
++
+ #include "kopetechatsession.moc"
+ 
+ 
+--- kopete/libkopete/kopeteonlinestatusmanager.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopeteonlinestatusmanager.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -157,7 +157,7 @@
+ {
+ 	QString fp = fingerprint( statusFor, icon, size, color, idle );
+ 
+-	kDebug(14010) << "finger print:" << fp << ", icon: " << icon;
++	//kDebug(14010) << "finger print:" << fp << ", icon: " << icon;
+ 	// look it up in the cache
+ 	QPixmap *theIcon = d->iconCache.value(fp);
+ 	if ( !theIcon )
+@@ -319,7 +319,7 @@
+ 	// create an icon suiting the status from the base icon
+ 	// use reasonable defaults if not provided or protocol not set
+ 
+-	kDebug( 14010) << "overlayIcons size: " << statusFor.overlayIcons().count();
++	//kDebug( 14010) << "overlayIcons size: " << statusFor.overlayIcons().count();
+ 
+ 	// NOTE: overlayIcons car be empty
+ 	if ( !statusFor.overlayIcons().empty() && baseIcon == statusFor.overlayIcons().first() )
+--- kopete/libkopete/kopetemessage.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopetemessage.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -553,6 +553,8 @@
+ 	return styleAttribute;
+ }
+ 
++// prime candidate for removal
++#if 0 
+ QString Message::decodeString( const QByteArray &message, const QTextCodec *providedCodec, bool *success )
+ {
+ 	/*
+@@ -636,6 +638,7 @@
+ */
+ 	return QString();
+ }
++#endif
+ 
+ QStringList Message::classes() const
+ {
+--- kopete/libkopete/kopeteaccountmanager.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopeteaccountmanager.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -36,6 +36,7 @@
+ #include "kopeteprotocol.h"
+ #include "kopetecontact.h"
+ #include "kopetecontactlist.h"
++#include "kopeteidentitymanager.h"
+ #include "kopetepluginmanager.h"
+ #include "kopeteonlinestatus.h"
+ #include "kopeteonlinestatusmanager.h"
+@@ -104,9 +105,10 @@
+ 
+ void AccountManager::setOnlineStatus( uint category, const QString& awayMessage, uint flags )
+ {
+-	kDebug() << "category: " << category << ", Kopete::OnlineStatusManager::Away: " << Kopete::OnlineStatusManager::Away << endl;
+-	OnlineStatusManager::Categories categories 
++	kDebug() << "category: " << category << ", Kopete::OnlineStatusManager::Away: " << Kopete::OnlineStatusManager::Away;
++	OnlineStatusManager::Categories categories
+ 		= (OnlineStatusManager::Categories)category;
++	bool onlyChangeConnectedAccounts = isAnyAccountConnected();
+ 
+ 	foreach( Account *account, d->accounts )
+ 	{
+@@ -117,7 +119,7 @@
+ 			continue;
+ 		}
+ 		
+-		if ( isAnyAccountConnected() ) {
++		if ( onlyChangeConnectedAccounts ) {
+ 			if ( account->isConnected() || ( (flags & ConnectIfOffline) && !account->excludeConnect() ) )
+ 				account->setOnlineStatus( status, awayMessage );
+ 		}
+@@ -391,6 +393,14 @@
+ 				"Failed to create account for '" << accountId << "'" << endl;
+ 			continue;
+ 		}
++		// the account's Identity must be set here instead of in the Kopete::Account ctor, because there the
++		// identity cannot pick up any state set in the derived Account ctor
++		Identity *identity = Kopete::IdentityManager::self()->findIdentity( account->configGroup()->readEntry("Identity", QString()) );
++		// if the identity was not found, use the default one which will for sure exist
++		// FIXME: get rid of this, the account's identity should always exist at this point
++		if (!identity)
++			identity = Kopete::IdentityManager::self()->defaultIdentity();
++		account->setIdentity( identity );
+ 	}
+ }
+ 
+--- kopete/libkopete/kopeteidentity.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopeteidentity.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -91,8 +91,10 @@
+ 
+ 	/**
+ 	 * @brief Sets the online status for this identity
+-	 *
+-	 * FIXME: describe a bit more
++	 * Sets the online status for each account in this identity, except those which are set to 
++	 * 'Exclude from connect all' (Kopete::Account::excludeConnect()).
++	 * @param category generic OnlineStatusManager::Categories identifying status to set
++	 * @param awayMessage status message to use in this onlinestatus
+ 	 */
+ 	void setOnlineStatus( uint category, const QString &awayMessage );
+ 
+--- kopete/libkopete/kopeteui.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopeteui.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=Kopete/UI
+ X-KDE-Derived=Kopete/Plugin
+--- kopete/libkopete/kopetechatsessionmanager.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopetechatsessionmanager.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -63,7 +63,7 @@
+ 	 * @return A pointer to a new or reused Kopete::ChatSession.
+ 	 */
+ 	Kopete::ChatSession* create( const Kopete::Contact *user,
+-		Kopete::ContactPtrList chatContacts, Kopete::Protocol *protocol);
++		Kopete::ContactPtrList chatContacts, Kopete::Protocol *protocol, Kopete::ChatSession::Form form = Kopete::ChatSession::Small );
+ 
+ 	/**
+ 	 * Find a chat session, if one exists, that matches the given list of contacts.
+--- kopete/libkopete/kopeteprotocol.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopeteprotocol.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=Kopete/Protocol
+ X-KDE-Derived=Kopete/Plugin
+--- kopete/libkopete/kopetemessage.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopetemessage.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -420,7 +420,8 @@
+ 	 */
+ 	static QString escape( const QString & );
+ 
+-
++#if 0 
++	//candidate for removal!
+ 	/**
+ 	 * Helper function to decode a string. Whatever returned here is *nearly guaranteed* to
+ 	 * be parseable by the XML engine.
+@@ -435,6 +436,7 @@
+ 	 */
+ 	static QString decodeString( const QByteArray &message,
+  		const QTextCodec *providedCodec = 0L, bool *success = 0L );
++#endif
+ 
+ private:
+ 	class Private;
+--- kopete/libkopete/kopeteidentity.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopeteidentity.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -162,8 +162,10 @@
+ 
+ QString Identity::customIcon() const
+ {
+-	//TODO implement
+-	return "user";
++	if (hasProperty( Kopete::Global::Properties::self()->photo().key() ))
++		return property(Kopete::Global::Properties::self()->photo()).value().toString();
++	else
++		return "user";
+ }
+ 
+ 
+@@ -179,10 +181,14 @@
+ 		return;
+ 
+ 	d->accounts.append( account );
++
++	connect( account->myself(),
++			SIGNAL(onlineStatusChanged(Kopete::Contact *, const Kopete::OnlineStatus &, const Kopete::OnlineStatus &)),
++			this, SLOT(updateOnlineStatus()));
+ 	connect(account, SIGNAL(accountDestroyed(const Kopete::Account*)),
+ 			this, SLOT(removeAccount(const Kopete::Account*)));
+-	//TODO implement the signals for status changes and so
+-	
++
++	updateOnlineStatus();
+ 	emit identityChanged( this );
+ }
+ 
+@@ -192,9 +198,9 @@
+ 	if ( !d->accounts.contains( a ) )
+ 		return;
+ 
+-	//TODO disconnect signals and so on
++	disconnect( account );
+ 	d->accounts.removeAll( a );
+-	
++	updateOnlineStatus();
+ 	emit identityChanged( this );
+ }
+ 
+--- kopete/libkopete/kopetecontact.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopetecontact.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -543,11 +543,22 @@
+ 	// --------------------------------------------------------------------------
+ 	// Fixed part of tooltip
+ 
+-	QString iconName = QString::fromLatin1("kopete-contact-icon:%1:%2:%3")
+-		.arg( QString(QUrl::toPercentEncoding( protocol()->pluginId() )),
+-				QString(QUrl::toPercentEncoding( account()->accountId() )),
+-				QString(QUrl::toPercentEncoding( contactId() )) );
++	QString iconName;
++	if ( this == account()->myself() )
++	{
++		iconName = QString::fromLatin1("kopete-account-icon:%1:%2")
++			.arg( QString(QUrl::toPercentEncoding( protocol()->pluginId() )),
++			      QString(QUrl::toPercentEncoding( account()->accountId() )) );
+ 
++	}
++	else
++	{
++		iconName = QString::fromLatin1("kopete-contact-icon:%1:%2:%3")
++			.arg( QString(QUrl::toPercentEncoding( protocol()->pluginId() )),
++			      QString(QUrl::toPercentEncoding( account()->accountId() )),
++			      QString(QUrl::toPercentEncoding( contactId() )) );
++	}
++
+ 	// TODO:  the nickname should be a configurable properties, like others. -Olivier
+ 	QString nick = property( Kopete::Global::Properties::self()->nickName() ).value().toString();
+ 	if ( nick.isEmpty() )
+--- kopete/libkopete/kopeteaccount.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopeteaccount.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -103,15 +103,6 @@
+ 	d->customIcon = d->configGroup->readEntry( "Icon", QString() );
+ 	d->priority = d->configGroup->readEntry( "Priority", 0 );
+ 
+-	Identity *identity = Kopete::IdentityManager::self()->findIdentity( d->configGroup->readEntry("Identity", QString()) );
+-
+-	// if the identity was not found, use the default one which will for sure exist
+-	// FIXME: maybe it could show a passive dialog telling that to the user
+-	if (!identity)
+-		identity = Kopete::IdentityManager::self()->defaultIdentity();
+-
+-	setIdentity( identity );
+-
+ 	d->restoreStatus = Kopete::OnlineStatus::Online;
+ 	d->restoreMessage = "";
+ 
+@@ -422,6 +413,11 @@
+ 
+ void Account::setIdentity( Identity *ident )
+ {
++	if ( d->identity == ident )
++	{
++		return;
++	}
++
+ 	if (d->identity)
+ 	{
+ 		d->identity->removeAccount( this );
+@@ -460,9 +456,6 @@
+ 	QObject::connect( d->myself, SIGNAL( propertyChanged( Kopete::PropertyContainer *, const QString &, const QVariant &, const QVariant & ) ),
+ 		this, SLOT( slotContactPropertyChanged( Kopete::PropertyContainer *, const QString &, const QVariant &, const QVariant & ) ) );
+ 
+-	QObject::connect( d->myself, SIGNAL( onlineStatusChanged( Kopete::Contact *, const Kopete::OnlineStatus &, const Kopete::OnlineStatus & ) ),
+-		identity(), SLOT( updateOnlineStatus()));
+-
+ 	if ( isConnected() != wasConnected )
+ 		emit isConnectedChanged();
+ }
+--- kopete/libkopete/kopeteproperty.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopeteproperty.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -53,7 +53,7 @@
+ 	PropertyTmpl other = Kopete::Global::Properties::self()->tmpl(key);
+ 	if(other.isNull())
+ 	{
+-//		kDebug(14000) << "Creating new template for key = '" << key << "'" << endl;
++//		kDebug(14000) << "Creating new template for key = '" << key << "'";
+ 
+ 		d = new Private;
+ 		d->refCount = 1;
+@@ -65,7 +65,7 @@
+ 	}
+ 	else
+ 	{
+-//		kDebug(14000) << "Using existing template for key = '" << key << "'" << endl;
++//		kDebug(14000) << "Using existing template for key = '" << key << "'";
+ 		d = other.d;
+ 		d->refCount++;
+ 	}
+@@ -82,12 +82,12 @@
+ {
+ 	if (this == &other)
+ 	{
+-//		kDebug(14000) << "trying to assign this to itself!" << endl;
++//		kDebug(14000) << "trying to assign this to itself!";
+ 		return *this;
+ 	}
+ 	if( d == other.d )
+ 	{
+-//		kDebug(14000) << "trying to assign d to itself!" << endl;
++//		kDebug(14000) << "trying to assign d to itself!";
+ 		return *this;
+ 	}
+ 	d->refCount--;
+@@ -216,7 +216,7 @@
+ {
+ 	if (this == &other)
+ 	{
+-//		kDebug(14000) << "trying to assign this to itself!" << endl;
++//		kDebug(14000) << "trying to assign this to itself!";
+ 		return *this;
+ 	}
+ 
+--- kopete/libkopete/kopeteidentitymanager.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopeteidentitymanager.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -107,7 +107,7 @@
+ 
+ void IdentityManager::unregisterIdentity( const Identity *identity )
+ {
+-	kDebug( 14010 ) << "Unregistering identity " << identity->id() << endl;
++	kDebug( 14010 ) << "Unregistering identity " << identity->id();
+ 	d->identities.removeAll( const_cast<Identity*>(identity) );
+ 
+ 	emit identityUnregistered( identity );
+@@ -199,7 +199,7 @@
+ 	KConfigGroup group = KGlobal::config()->group("IdentityManager");
+ 	group.writeEntry("DefaultIdentity", d->defaultIdentity->id());
+ 
+-	//kDebug( 14010 ) << endl;
++	//kDebug( 14010 );
+ 	foreach( Identity *identity, d->identities )
+ 	{
+ 		KConfigGroup *config = identity->configGroup();
+@@ -232,7 +232,7 @@
+ 								 "Failed to create identity for '" << identityId << "'" << endl;
+ 			continue;
+ 		}
+-		kDebug() << "Created identity " << identityId << endl;
++		kDebug() << "Created identity " << identityId;
+ 	}
+ 
+ 	// get the default identity
+@@ -249,7 +249,7 @@
+ void IdentityManager::slotIdentityOnlineStatusChanged(Identity *i)
+ {
+ 	//TODO: check if we need to do something more on status changes
+-	//kDebug(14010) << endl;
++	//kDebug(14010);
+ 	emit identityOnlineStatusChanged(i);
+ }
+ 
+--- kopete/libkopete/ui/avatarselectorwidget.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/ui/avatarselectorwidget.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -90,14 +90,14 @@
+ {
+ public:
+ 	Private()
+-	 : selectedItem(0)
++	 : selectedItem(0), noAvatarItem(0)
+ 	{}
+ 
+ 	Ui::AvatarSelectorWidget mainWidget;
+ 	QListWidgetItem *selectedItem;
+ 	QString currentAvatar;
+-
+-	void addItem(Kopete::AvatarManager::AvatarEntry entry);
++	AvatarSelectorWidgetItem * noAvatarItem;
++	AvatarSelectorWidgetItem * addItem(Kopete::AvatarManager::AvatarEntry entry);
+ };
+ 
+ AvatarSelectorWidget::AvatarSelectorWidget(QWidget *parent)
+@@ -124,7 +124,7 @@
+ 	empty.name = i18n("No Avatar");
+ 	empty.contact = 0;
+ 	empty.category = Kopete::AvatarManager::User;
+-	d->addItem(empty);
++	d->noAvatarItem = d->addItem(empty);
+ 
+ 	// List avatars of User category
+ 	Kopete::AvatarQueryJob *queryJob = new Kopete::AvatarQueryJob(this);
+@@ -224,9 +224,12 @@
+ 	AvatarSelectorWidgetItem *selectedItem = dynamic_cast<AvatarSelectorWidgetItem*>( d->mainWidget.listUserAvatar->selectedItems().first() );
+ 	if( selectedItem )
+ 	{
+-		if( !Kopete::AvatarManager::self()->remove( selectedItem->avatarEntry() ) )
++		if ( selectedItem != d->noAvatarItem )
+ 		{
+-			kDebug(14010) << "Removing of avatar failed for unknown reason.";
++			if( !Kopete::AvatarManager::self()->remove( selectedItem->avatarEntry() ) )
++			{
++				kDebug(14010) << "Removing of avatar failed for unknown reason.";
++			}
+ 		}
+ 	}
+ }
+@@ -285,21 +288,23 @@
+ 
+ void AvatarSelectorWidget::listSelectionChanged(QListWidgetItem *item)
+ {
++	d->mainWidget.buttonRemoveAvatar->setEnabled( item != d->noAvatarItem );
+ 	d->selectedItem = item;
+ }
+ 
+-void AvatarSelectorWidget::Private::addItem(Kopete::AvatarManager::AvatarEntry entry)
++AvatarSelectorWidgetItem * AvatarSelectorWidget::Private::addItem(Kopete::AvatarManager::AvatarEntry entry)
+ {
+ 	kDebug(14010) << "Entry(" << entry.name << "): " << entry.category;
+ 
+ 	// only use User avatars
+ 	if( !(entry.category & Kopete::AvatarManager::User) )
+-	    return;
++	    return 0;
+ 
+ 	AvatarSelectorWidgetItem *item = new AvatarSelectorWidgetItem(mainWidget.listUserAvatar);
+ 	item->setAvatarEntry(entry);
+ 	if (entry.path == currentAvatar)
+ 		item->setSelected(true);
++	return item;
+ }
+ 
+ } // Namespace Kopete::UI
+--- kopete/libkopete/kopeteplugin.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kopete/libkopete/kopeteplugin.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=Kopete/Plugin
+ X-KDE-Derived=KPluginInfo
+--- knewsticker/knewsticker.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ knewsticker/knewsticker.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -18,12 +18,14 @@
+ 
+ struct NewsItem;
+ class NewsItemView;
++class SettingsDialog;
+ 
+ class KNewsTicker : public Plasma::Applet
+ {
+     Q_OBJECT
+ public:
+     KNewsTicker( QObject *parent, const QVariantList &args );
++    virtual ~KNewsTicker();
+ 
+     virtual QSizeF contentSizeHint() const;
+ 
+@@ -40,6 +42,7 @@
+     void feedUpdateFinished();
+     void openFeedItem( const QString &url );
+     void settingsChanged( const QString &dialogName );
++    void settingsAccepted();
+     void setupItemView();
+ 
+ private:
+@@ -50,6 +53,7 @@
+     QSignalMapper *m_signalMapper;
+     QSet<QUrl> m_readArticles;
+     NewsItemView *m_itemView;
++    SettingsDialog *m_settingsDialog;
+ };
+ 
+ #endif // KNEWSTICKER_H
+--- knewsticker/itemviews.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ knewsticker/itemviews.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,3 +1,13 @@
++/*
++ * itemviews.cpp
++ *
++ * Copyright (c) 2007 Frerich Raabe <raabe at kde.org>
++ *
++ * This program is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
++ * FOR A PARTICULAR PURPOSE. For licensing and distribution details, check the
++ * accompanying file 'COPYING'.
++ */
+ #include "itemviews.h"
+ #include "knewsticker.h"
+ 
+@@ -135,9 +145,7 @@
+ 
+ void ScrollingItemView::relayoutItems()
+ {
+-    foreach ( QGraphicsItem *item, m_graphicsItems ) {
+-        delete item;
+-    }
++    qDeleteAll( m_graphicsItems );
+     m_graphicsItems.clear();
+ 
+     if ( items().empty() ) {
+@@ -361,15 +369,7 @@
+ {
+     NewsItemView::setItems( items_ );
+     m_currentItem = items().begin();
+-    if ( items().isEmpty() ) {
+-        m_linkItem->setText( i18n( "No unread news available" ) );
+-        m_linkItem->setUrl( QString() );
+-        m_linkItem->setToolTip( QString() );
+-    } else {
+-        m_linkItem->setText( ( *m_currentItem ).text );
+-        m_linkItem->setUrl( ( *m_currentItem ).url );
+-        m_linkItem->setToolTip( ( *m_currentItem ).description );
+-    }
++    updateLinkItem();
+     updateMoveAnimations();
+     moveItemIn();
+ }
+@@ -398,9 +398,7 @@
+     if ( ++m_currentItem == items().end() ) {
+         m_currentItem = items().begin();
+     }
+-    m_linkItem->setText( ( *m_currentItem ).text );
+-    m_linkItem->setUrl( ( *m_currentItem ).url );
+-    m_linkItem->setToolTip( ( *m_currentItem ).description );
++    updateLinkItem();
+     if ( m_needToReloadSettings ) {
+         m_linkItem->setBrush( Settings::color() );
+         m_linkItem->setFont( Settings::font() );
+@@ -415,5 +413,18 @@
+     m_needToReloadSettings = true;
+ }
+ 
++void PagingItemView::updateLinkItem()
++{
++    if ( m_currentItem == items().end() ) {
++        m_linkItem->setText( i18n( "No unread news available" ) );
++        m_linkItem->setUrl( QString() );
++        m_linkItem->setToolTip( QString() );
++    } else {
++        m_linkItem->setText( ( *m_currentItem ).text );
++        m_linkItem->setUrl( ( *m_currentItem ).url );
++        m_linkItem->setToolTip( ( *m_currentItem ).description );
++    }
++}
++
+ #include "itemviews.moc"
+ 
+--- knewsticker/plasma-knewsticker-default.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ knewsticker/plasma-knewsticker-default.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=News Ticker
+ Name[af]=Nuus Tikker
+ Name[br]=Kliker keleier
+@@ -54,7 +53,7 @@
+ X-KDE-PluginInfo-EnabledByDefault=false
+ Icon=knewsticker
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet
+ Comment=A scrolling RDF news ticker
+ Comment[bg]=Четец на новини RDF
+ Comment[ca]=Teletip de notícies RDF amb desplaçament
+--- knewsticker/settingsdialog.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 0)
++++ knewsticker/settingsdialog.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -0,0 +1,38 @@
++/*
++ * settingsdialog.cpp
++ *
++ * Copyright (c) 2007 Frerich Raabe <raabe at kde.org>
++ *
++ * This program is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
++ * FOR A PARTICULAR PURPOSE. For licensing and distribution details, check the
++ * accompanying file 'COPYING'.
++ */
++#include "settingsdialog.h"
++#include "settings.h"
++#include "ui_visualsettings.h"
++#include "feedsettingswidget.h"
++
++SettingsDialog::SettingsDialog( QWidget *parent )
++    : KConfigDialog( parent, "settings", Settings::self() )
++{
++    setFaceType( KPageDialog::Tabbed );
++
++    QWidget *page = new QWidget( 0 );
++    {
++        Ui::VisualSettings ui;
++        ui.setupUi( page );
++    }
++    addPage( page, i18n( "Appearance" ) );
++
++    m_feedSettingsWidget = new FeedSettingsWidget( 0 );
++    addPage( m_feedSettingsWidget, i18n( "Feed Access" ) );
++}
++
++QStringList SettingsDialog::feedUrls() const
++{
++    return m_feedSettingsWidget->feedUrls();
++}
++
++#include "settingsdialog.moc"
++
+--- knewsticker/itemviews.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ knewsticker/itemviews.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,3 +1,13 @@
++/*
++ * itemviews.h
++ *
++ * Copyright (c) 2007 Frerich Raabe <raabe at kde.org>
++ *
++ * This program is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
++ * FOR A PARTICULAR PURPOSE. For licensing and distribution details, check the
++ * accompanying file 'COPYING'.
++ */
+ #ifndef ITEMVIEWS_H
+ #define ITEMVIEWS_H
+ 
+@@ -102,6 +112,7 @@
+ class ScrollingItemView : public NewsItemView
+ {
+     Q_OBJECT
++    using NewsItemView::advance;
+ public:
+     ScrollingItemView( KNewsTicker *parent );
+ 
+@@ -138,6 +149,7 @@
+ 
+ private:
+     void updateMoveAnimations();
++    void updateLinkItem();
+ 
+     QList<NewsItem>::ConstIterator m_currentItem;
+     HyperlinkItem *m_linkItem;
+--- knewsticker/settingsdialog.h	(.../tags/KDE/3.96/kdenetwork)	(revision 0)
++++ knewsticker/settingsdialog.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -0,0 +1,31 @@
++/*
++ * settingsdialog.h
++ *
++ * Copyright (c) 2007 Frerich Raabe <raabe at kde.org>
++ *
++ * This program is distributed in the hope that it will be useful, but WITHOUT
++ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
++ * FOR A PARTICULAR PURPOSE. For licensing and distribution details, check the
++ * accompanying file 'COPYING'.
++ */
++#ifndef SETTINGSDIALOG_H
++#define SETTINGSDIALOG_H
++
++#include <kconfigdialog.h>
++
++class FeedSettingsWidget;
++
++class SettingsDialog : public KConfigDialog
++{
++    Q_OBJECT
++public:
++    SettingsDialog( QWidget *parent = 0 );
++
++    QStringList feedUrls() const;
++
++private:
++    FeedSettingsWidget *m_feedSettingsWidget;
++};
++
++#endif // !defined(SETTINGSDIALOG_H)
++
+--- knewsticker/knewsticker.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ knewsticker/knewsticker.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -9,11 +9,10 @@
+  * accompanying file 'COPYING'.
+  */
+ #include "knewsticker.h"
+-#include "feedsettingswidget.h"
+ #include "newsfeedmanager.h"
+ #include "settings.h"
+-#include "ui_visualsettings.h"
+ #include "itemviews.h"
++#include "settingsdialog.h"
+ 
+ #include <kconfigdialog.h>
+ #include <kiconloader.h>
+@@ -43,7 +42,8 @@
+ KNewsTicker::KNewsTicker( QObject *parent, const QVariantList &args )
+     : Plasma::Applet( parent, args ),
+     m_signalMapper( 0 ),
+-    m_itemView( 0 )
++    m_itemView( 0 ),
++    m_settingsDialog( 0 )
+ {
+     setDrawStandardBackground( true );
+ 
+@@ -65,36 +65,21 @@
+     updateFeeds();
+ }
+ 
+-void KNewsTicker::showConfigurationInterface()
++KNewsTicker::~KNewsTicker()
+ {
+-    KConfigDialog dlg( 0, "settings", Settings::self() );
+-    connect( &dlg, SIGNAL( settingsChanged( const QString & ) ),
+-             this, SLOT( settingsChanged( const QString & ) ) );
+-    dlg.setFaceType( KPageDialog::Tabbed );
++    delete m_settingsDialog;
++}
+ 
+-    QWidget *page = new QWidget( 0 );
+-    {
+-        Ui::VisualSettings ui;
+-        ui.setupUi( page );
++void KNewsTicker::showConfigurationInterface()
++{
++    if ( !m_settingsDialog ) {
++        m_settingsDialog = new SettingsDialog;
++        connect( m_settingsDialog, SIGNAL( settingsChanged( const QString & ) ),
++                 this, SLOT( settingsChanged( const QString & ) ) );
++        connect( m_settingsDialog, SIGNAL( accepted() ),
++                 this, SLOT( settingsAccepted() ) );
+     }
+-    dlg.addPage( page, i18n( "Appearance" ) );
+-
+-    FeedSettingsWidget *feedSettingsWidget = new FeedSettingsWidget( 0 );
+-    dlg.addPage( feedSettingsWidget, i18n( "Feed Access" ) );
+-
+-    QFont origFont = Settings::font();
+-    const QStringList origFeedUrls = Settings::feedUrls();
+-
+-    if ( dlg.exec() == QDialog::Accepted ) {
+-        Settings::setFeedUrls( feedSettingsWidget->feedUrls() );
+-
+-        if ( Settings::feedUrls() != origFeedUrls ) {
+-            NewsFeedManager::self()->setSubscriptions( Settings::feedUrls() );
+-            updateFeeds();
+-        }
+-
+-        reloadSettings();
+-    }
++    m_settingsDialog->show();
+ }
+ 
+ void KNewsTicker::settingsChanged( const QString & /* dialogName */ )
+@@ -102,6 +87,14 @@
+     reloadSettings();
+ }
+ 
++void KNewsTicker::settingsAccepted()
++{
++    Settings::setFeedUrls( m_settingsDialog->feedUrls() );
++    NewsFeedManager::self()->setSubscriptions( Settings::feedUrls() );
++    updateFeeds();
++    reloadSettings();
++}
++
+ QSizeF KNewsTicker::contentSizeHint() const
+ {
+     return m_itemView->boundingRect().size();
+--- knewsticker/CMakeLists.txt	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ knewsticker/CMakeLists.txt	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -4,7 +4,8 @@
+         knewsticker.cpp
+         newsfeedmanager.cpp
+         feedsettingswidget.cpp
+-        itemviews.cpp)
++        itemviews.cpp
++        settingsdialog.cpp)
+ 
+ kde4_add_kcfg_files(knewsticker_SRCS settings.kcfgc)
+ kde4_add_ui_files(knewsticker_SRCS visualsettings.ui feedsettings.ui)
+--- kget/conf/preferencesdialog.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/conf/preferencesdialog.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -38,6 +38,12 @@
+     dlgNet.setupUi(network);
+     dlgAdv.setupUi(advanced);
+ 
++    // TODO: remove the following lines as soon as these features are ready
++    dlgNet.kcfg_SpeedLimit->setVisible(false);
++    dlgNet.groupBoxCompleted->setVisible(false);
++    dlgNet.lbl_maxnum_2->setVisible(false);
++    dlgNet.kcfg_MaxConnectionsServer->setVisible(false);
++
+     addPage(appearance, i18n("Appearance"), "video-display", i18n("Change appearance settings"));
+     addPage(groups, i18n("Groups"), "bookmark", i18n("Manage the groups"));
+     addPage(directories, i18n("Folders"), "folder-open", i18n("Default Download Folders"));
+--- kget/conf/kget.kcfg	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/conf/kget.kcfg	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -25,7 +25,7 @@
+     </entry>
+     <entry name="ShowSplashscreen" type="Bool">
+       <label>Sets to show the splashscreen while KGet is loading</label>
+-      <default>true</default>
++      <default>false</default>
+     </entry>
+     <entry name="ShowExpandableTransferDetails" type="Bool">
+       <default>false</default>
+@@ -130,5 +130,11 @@
+       <default code="true">QDir::currentPath()</default>
+     </entry>
+   </group>
++ 
++  <group name="Geometry">
++    <entry name="ColumnWidths" type="IntList">
++      <label>The width of the columns in the main wiew</label>
++    </entry>
++  </group>
+ 
+ </kcfg>
+--- kget/core/plugin/kget_plugin.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/core/plugin/kget_plugin.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=ServiceType
+ X-KDE-ServiceType=KGet/Plugin
+ Comment=Plugin for KGet
+--- kget/core/transfer.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/core/transfer.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -92,8 +92,9 @@
+     return group()->model();
+ }
+ 
+-void Transfer::save(QDomElement e) // krazy:exclude=passbyvalue
++void Transfer::save(const QDomElement &element)
+ {
++    QDomElement e = element;
+     e.setAttribute("Source", m_source.url());
+     e.setAttribute("Dest", m_dest.url());
+     e.setAttribute("TotalSize", (qulonglong) m_totalSize);
+--- kget/core/speedlimiter.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/core/speedlimiter.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -40,7 +40,7 @@
+     if(!m_speedLimit)
+         return;
+     m_JobSpeedLimiters << new KJobSpeedLimiter(job, m_speedLimit);
+-    kDebug(5001) << "Limiting job:" << job << " speed to: " << m_speedLimit << endl;
++    kDebug(5001) << "Limiting job:" << job << " speed to: " << m_speedLimit;
+ }
+ 
+ 
+@@ -69,19 +69,19 @@
+     int elapsed = m_time.restart();
+ 
+     QString status = isSuspended() ? QString("suspended") : QString("running");
+-    kDebug(5001) << "Status: " << status << " expected time: " << expected << " elapsed time: " << elapsed << endl;
++    kDebug(5001) << "Status: " << status << " expected time: " << expected << " elapsed time: " << elapsed;
+ 
+     if (expected > elapsed)
+     {
+         m_OnTime = (elapsed * 4500)/expected;
+         m_OffTime = 4500 - m_OnTime;
+         suspend();
+-        kDebug(5001) << "sleeping for: " << m_OffTime << " msegs." << endl;
++        kDebug(5001) << "sleeping for: " << m_OffTime << " msegs.";
+         QTimer::singleShot(m_OffTime, this, SLOT(slotOffTimer()));
+     }
+     else
+     {
+-        kDebug(5001) << "speed below limit, checking in 500 msegs " << endl;
++        kDebug(5001) << "speed below limit, checking in 500 msegs ";
+         resume();
+         QTimer::singleShot(500, this, SLOT(slotOnTimer()));
+     }
+@@ -91,7 +91,7 @@
+ {
+     resume();
+     m_time.restart();
+-    kDebug(5001) << "resuming for: " << m_OnTime << " msegs." << endl;
++    kDebug(5001) << "resuming for: " << m_OnTime << " msegs.";
+     QTimer::singleShot(m_OnTime, this, SLOT(slotOnTimer()));
+ }
+ 
+--- kget/core/transfer.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/core/transfer.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -126,7 +126,7 @@
+          * @param n The pointer to the QDomNode where the transfer will be saved
+          * @return  The created QDomElement
+          */
+-        virtual void save(QDomElement e);
++        virtual void save(const QDomElement &element);
+ 
+     protected:
+         //Function used to load and save the transfer's info from xml
+--- kget/core/kget.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/core/kget.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -697,7 +697,11 @@
+ 
+ bool KGet::isValidDestDirectory(const QString & destDir)
+ {
+-    return (!destDir.isEmpty() && QFileInfo( destDir ).isDir());
++    if (QFileInfo( destDir ).isWritable())
++        return (!destDir.isEmpty() && QFileInfo( destDir ).isDir() && QFileInfo( destDir ).isWritable());
++    if (!QFileInfo( destDir ).isWritable() && !destDir.isEmpty())
++         KMessageBox::error(0, i18n("Directory is not writable"));
++    return false;
+ }
+ 
+ bool KGet::isValidDestUrl(const KUrl &destUrl)
+--- kget/mainwindow.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/mainwindow.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -40,6 +40,7 @@
+ #include <klocale.h>
+ #include <kicon.h>
+ #include <kactionmenu.h>
++#include <krun.h>
+ 
+ #include <QtDBus>
+ #include <QClipboard>
+@@ -445,7 +446,7 @@
+         QString directory = it->dest().directory();
+         if( !openedDirs.contains( directory ) )
+         {
+-            KToolInvocation::invokeBrowser( directory );
++            new KRun(directory, this, 0, true, false);
+             openedDirs.append( directory );
+         }
+     }
+--- kget/transfer-plugins/multisegmentkio/transfermultisegkio.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/multisegmentkio/transfermultisegkio.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -104,10 +104,12 @@
+     }
+ }
+ 
+-void transferMultiSegKio::save(QDomElement e) // krazy:exclude=passbyvalue
++void transferMultiSegKio::save(const QDomElement &element)
+ {
+     kDebug(5001) << "TransferMultiSegKio::save";
+ 
++    QDomElement e = element;
++
+     Transfer::save(e);
+ 
+     QDomDocument doc(e.ownerDocument());
+@@ -191,6 +193,7 @@
+     switch (kioJob->error())
+     {
+         case 0:                            //The download has finished
++        case 1:                            // we kill the job after close
+         case KIO::ERR_FILE_ALREADY_EXIST:  //The file has already been downloaded.
+             setStatus(Job::Finished, i18n("Finished"), SmallIcon("ok"));
+             m_percent = 100;
+@@ -280,7 +283,7 @@
+     m_Urls = Urls;
+     if (m_copyjob)
+     {
+-        m_copyjob->slotUrls(Urls);
++        m_copyjob->slotUrls(m_Urls);
+     }
+ }
+ 
+--- kget/transfer-plugins/multisegmentkio/transfermultisegkio.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/multisegmentkio/transfermultisegkio.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -39,7 +39,7 @@
+         int remainingTime() const;
+         bool isResumable() const;
+ 
+-        void save(QDomElement e);
++        void save(const QDomElement &element);
+ 
+     protected:
+         void load(const QDomElement &e);
+--- kget/transfer-plugins/multisegmentkio/dlgmultisegkio.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/multisegmentkio/dlgmultisegkio.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -13,11 +13,16 @@
+ #include "multisegkiosettings.h"
+ 
+ DlgEngineEditing::DlgEngineEditing(QWidget *parent)
+-    : QDialog(parent)
++    : KDialog(parent)
+ {
+-    ui.setupUi(this);
++    QWidget *mainWidget = new QWidget(this);
++    ui.setupUi(mainWidget);
++    setMainWidget(mainWidget);
++
+     setWindowTitle(i18n("Insert Engine"));
+     setModal(true);
++    setButtons(KDialog::Ok | KDialog::Cancel);
++    showButtonSeparator(true);
+ 
+     ui.engineNameLabel->setText(i18n("Engine name:"));
+     ui.urlLabel->setText(i18n("Url:"));
+@@ -32,13 +37,17 @@
+ 
+ void DlgEngineEditing::slotChangeText()
+ {
+-  ui.okButton->setEnabled(!ui.urlEdit->text().isEmpty());
++  enableButton(KDialog::Ok, !ui.urlEdit->text().isEmpty());
+ }
+ 
+ DlgSettingsWidget::DlgSettingsWidget(QWidget *parent)
+     : QWidget(parent)
+ {
+     ui.setupUi(this);
++
++    ui.newEngineBt->setIcon(KIcon("list-add"));
++    ui.removeEngineBt->setIcon(KIcon("list-remove"));
++
+     init();
+     connect(ui.numSegSpinBox, SIGNAL(valueChanged(int)), SLOT(slotSetSegments(int)));
+     connect(ui.minSegSizeSpinBox, SIGNAL(valueChanged(int)), SLOT(slotSetMinSegSize(int)));
+--- kget/transfer-plugins/multisegmentkio/kget_multisegkiofactory.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/multisegmentkio/kget_multisegkiofactory.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ # service definition
+ Type=Service
+-ServiceTypes=KGet/Plugin
++X-KDE-ServiceTypes=KGet/Plugin
+ 
+ # standard fields
+ Name=Multi Segments KIO TransferFactory
+@@ -42,7 +41,7 @@
+ Comment[zh_TW]=KGet 傳輸外掛程式
+ 
+ # options for library loader
+-X-KDE-Library=libkget_multisegkiofactory
++X-KDE-Library=kget_multisegkiofactory
+ X-KDE-KGet-plugintype=TransferFactory
+ X-KDE-KGet-rank=70
+ X-KDE-KGet-framework-version=1
+--- kget/transfer-plugins/multisegmentkio/kget_multisegkiofactory.kcfg	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/multisegmentkio/kget_multisegkiofactory.kcfg	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -19,11 +19,13 @@
+     </entry>
+     <entry name="SearchEnginesNameList" type="StringList" key="NameItems">
+       <label>List of the available search engines</label>
+-      <default>filemirrors</default>
++      <default>FindFiles.com</default>
++      <default>FileWatcher.com</default>
+     </entry>
+     <entry name="SearchEnginesUrlList" type="StringList" key="UrlItems">
+       <label>Urls list of the available search engines</label>
+-      <default>http://www.filemirrors.com/search.src?type=begins&amp;file=${filename}&amp;action=Find</default>
++      <default>http://www.findfiles.com/list.php?db=Mirrors&amp;string=${filename}</default>
++      <default>http://www.filewatcher.com/_/?q=+${filename}</default>
+     </entry>
+   </group>
+ </kcfg>
+--- kget/transfer-plugins/multisegmentkio/dlgmultisegkio.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/multisegmentkio/dlgmultisegkio.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -14,7 +14,7 @@
+ #include "ui_dlgengineediting.h"
+ #include "ui_dlgmultisegkio.h"
+ 
+-class DlgEngineEditing : public QDialog
++class DlgEngineEditing : public KDialog
+ {
+     Q_OBJECT
+ 
+--- kget/transfer-plugins/multisegmentkio/segmentfactory.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/multisegmentkio/segmentfactory.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -10,6 +10,7 @@
+ 
+ #include "segmentfactory.h"
+ #include "multisegkiosettings.h"
++#include "../../settings.h"
+ 
+ #include <QtCore/QTimer>
+ 
+@@ -29,7 +30,7 @@
+ 
+ bool Segment::createTransfer ( const KUrl &src )
+ {
+-    kDebug(5001) << "Segment::createTransfer() -- " << src;
++    kDebug(5001) << " -- " << src;
+     if ( m_getJob )
+         return false;
+     m_getJob = KIO::get(src, KIO::NoReload, KIO::HideProgressInfo);
+@@ -49,7 +50,7 @@
+ 
+ bool Segment::startTransfer ()
+ {
+-    kDebug(5001) << "Segment::startTransfer()";
++    kDebug(5001);
+     if( m_getJob && m_status != Running )
+     {
+         setStatus( Running, false );
+@@ -61,7 +62,7 @@
+ 
+ bool Segment::stopTransfer ()
+ {
+-    kDebug(5001) << "Segment::stopTransfer()";
++    kDebug(5001);
+     if( m_getJob && m_status == Running )
+     {
+         setStatus( Stopped, false );
+@@ -86,7 +87,7 @@
+ 
+ void Segment::slotResult( KJob *job )
+ {
+-    kDebug(5001) << "Segment::slotResult() job: " << job;
++    kDebug(5001) << "job: " << job;
+     m_getJob = 0;
+     if ( !m_buffer.isEmpty() )
+     {
+@@ -101,7 +102,7 @@
+     }
+     if( m_status == Running )
+     {
+-        kDebug(5001) << "Segment::slotResult() Conection broken " << job << " --restarting--";
++        kDebug(5001) << "Conection broken " << job << " --restarting--";
+         setStatus(Timeout);
+     }
+ }
+@@ -136,7 +137,7 @@
+     }
+     if (!m_segData.bytes)
+     {
+-        kDebug(5001) << "Segment::writeBuffer() closing transfer ...";
++        kDebug(5001) << "Closing transfer ...";
+         if( m_getJob )
+             m_getJob->kill( KJob::EmitResult );
+         emit updateSegmentData();
+@@ -155,13 +156,13 @@
+    : m_segments( n ), m_Urls( Urls ), m_split(true)
+ 
+ {
+-    kDebug(5001) << "SegmentFactory::SegmentFactory()";
++    kDebug(5001);
+     it_Urls = m_Urls.begin();
+ }
+ 
+ SegmentFactory::~SegmentFactory()
+ {
+-    kDebug(5001) << "SegmentFactory::destructor()";
++    kDebug(5001);
+     QList<Segment *>::iterator it = m_Segments.begin();
+     QList<Segment *>::iterator itEnd = m_Segments.end();
+     for ( ; it!=itEnd ; ++it )
+@@ -174,7 +175,7 @@
+ 
+ bool SegmentFactory::startTransfer()
+ {
+-    kDebug(5001) << "SegmentFactory::startTransfer()";
++    kDebug(5001);
+     bool rest = false;
+     QList<Segment *>::iterator it = m_Segments.begin();
+     QList<Segment *>::iterator itEnd = m_Segments.end();
+@@ -187,7 +188,7 @@
+ 
+ bool SegmentFactory::stopTransfer()
+ {
+-    kDebug(5001) << "SegmentFactory::stopTransfer()";
++    kDebug(5001);
+     bool rest = false;
+     QList<Segment *>::iterator it = m_Segments.begin();
+     QList<Segment *>::iterator itEnd = m_Segments.end();
+@@ -200,7 +201,7 @@
+ 
+ QList<SegData> SegmentFactory::SegmentsData()
+ {
+-    kDebug(5001) << "SegmentFactory::getSegmentsData";
++    kDebug(5001);
+     QList<SegData> tdata;
+     QList<Segment *>::iterator it = m_Segments.begin();
+     QList<Segment *>::iterator itEnd = m_Segments.end();
+@@ -214,7 +215,7 @@
+ 
+ QList<Segment *> SegmentFactory::splitSegment( Segment *Seg, int n)
+ {
+-    kDebug(5001) << "SegmentFactory::splitSegment() " << Seg;
++    kDebug(5001) << "Spliting " << Seg << "in " << n;
+     QList<Segment *> Segments;
+ 
+     KIO::TransferJob *Job = Seg->job();
+@@ -281,7 +282,7 @@
+ 
+ Segment *SegmentFactory::createSegment( SegData data, const KUrl &src )
+ {
+-    kDebug(5001) << "SegmentFactory::createSegment()";
++    kDebug(5001);
+     Segment *seg = new Segment(this);
+     connect( seg, SIGNAL(statusChanged( Segment *)),
+                   SLOT(slotStatusChanged( Segment *)));
+@@ -295,12 +296,12 @@
+ void SegmentFactory::deleteSegment(Segment *seg)
+ {
+     m_Segments.removeAll(seg);
+-    kDebug(5001) << "SegmentFactory::deleteSegment() " << m_Segments.size() << " segments left.";
++    kDebug(5001) << m_Segments.size() << " segments left.";
+ }
+ 
+ void SegmentFactory::slotStatusChanged( Segment *seg)
+ {
+-    kDebug(5001) << "SegmentFactory::slotStatusChanged() " << seg->status();
++    kDebug(5001) << seg->status();
+     switch (seg->status())
+     {
+     case Segment::Timeout :
+@@ -327,7 +328,7 @@
+ 
+ void SegmentFactory::slotSegmentTimeOut()
+ {
+-    kDebug(5001) << "SegmentFactory::slotSegmentTimeOut() " <<  m_TimeOutSegments.size();
++    kDebug(5001) <<  m_TimeOutSegments.size();
+     if(m_TimeOutSegments.isEmpty())
+         return;
+     m_TimeOutSegments.takeFirst()->restartTransfer( nextUrl() );
+@@ -335,7 +336,7 @@
+ 
+ Segment *SegmentFactory::takeLongest()
+ {
+-    kDebug(5001) << "SegmentFactory::takeLongest()";
++    kDebug(5001);
+ 
+     Segment *longest = 0;
+     KIO::filesize_t bytes = MultiSegKioSettings::splitSize()*1024;
+@@ -359,7 +360,7 @@
+ 
+ const KUrl SegmentFactory::nextUrl()
+ {
+-    kDebug(5001) << "SegmentFactory::nextUrl() ";
++    kDebug(5001);
+     if ( it_Urls == m_Urls.end() )
+     {
+         it_Urls = m_Urls.begin();
+--- kget/transfer-plugins/multisegmentkio/dlgengineediting.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/multisegmentkio/dlgengineediting.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,120 +1,43 @@
+ <ui version="4.0" >
+- <author></author>
+- <comment></comment>
+- <exportmacro></exportmacro>
+  <class>DlgEngineEditing</class>
+- <widget class="QDialog" name="DlgEngineEditing" >
++ <widget class="QWidget" name="DlgEngineEditing" >
+   <property name="geometry" >
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>430</width>
+-    <height>181</height>
++    <width>419</width>
++    <height>132</height>
+    </rect>
+   </property>
+-  <property name="sizePolicy" >
+-   <sizepolicy>
+-    <hsizetype>5</hsizetype>
+-    <vsizetype>0</vsizetype>
+-    <horstretch>0</horstretch>
+-    <verstretch>255</verstretch>
+-   </sizepolicy>
+-  </property>
+-  <property name="windowTitle" >
+-   <string>Dialog</string>
+-  </property>
+   <layout class="QGridLayout" >
+-   <property name="margin" >
+-    <number>9</number>
+-   </property>
+-   <property name="spacing" >
+-    <number>6</number>
+-   </property>
+-   <item row="2" column="0" >
+-    <widget class="QLabel" name="urlLabel" >
++   <item row="0" column="0" >
++    <widget class="QLabel" name="engineNameLabel" >
+      <property name="text" >
+-      <string>Url:</string>
++      <string>Engine name:</string>
+      </property>
+     </widget>
+    </item>
+-   <item row="3" column="1" >
+-    <spacer>
+-     <property name="orientation" >
+-      <enum>Qt::Vertical</enum>
+-     </property>
+-     <property name="sizeHint" >
+-      <size>
+-       <width>20</width>
+-       <height>40</height>
+-      </size>
+-     </property>
+-    </spacer>
++   <item row="0" column="1" >
++    <widget class="QLineEdit" name="engineNameEdit" />
+    </item>
+    <item row="1" column="0" >
+-    <widget class="QLabel" name="engineNameLabel" >
++    <widget class="QLabel" name="urlLabel" >
+      <property name="text" >
+-      <string>Engine name:</string>
++      <string>Url:</string>
+      </property>
+     </widget>
+    </item>
+-   <item row="4" column="0" colspan="2" >
+-    <widget class="Line" name="line" >
+-     <property name="orientation" >
+-      <enum>Qt::Horizontal</enum>
+-     </property>
+-    </widget>
+-   </item>
+-   <item row="2" column="1" >
++   <item row="1" column="1" >
+     <widget class="QLineEdit" name="urlEdit" />
+    </item>
+-   <item row="1" column="1" >
+-    <widget class="QLineEdit" name="engineNameEdit" />
+-   </item>
+-   <item row="5" column="0" colspan="2" >
+-    <layout class="QHBoxLayout" >
+-     <property name="margin" >
+-      <number>0</number>
+-     </property>
+-     <property name="spacing" >
+-      <number>6</number>
+-     </property>
+-     <item>
+-      <spacer>
+-       <property name="orientation" >
+-        <enum>Qt::Horizontal</enum>
+-       </property>
+-       <property name="sizeHint" >
+-        <size>
+-         <width>131</width>
+-         <height>31</height>
+-        </size>
+-       </property>
+-      </spacer>
+-     </item>
+-     <item>
+-      <widget class="QPushButton" name="okButton" >
+-       <property name="text" >
+-        <string>OK</string>
+-       </property>
+-      </widget>
+-     </item>
+-     <item>
+-      <widget class="QPushButton" name="cancelButton" >
+-       <property name="text" >
+-        <string>Cancel</string>
+-       </property>
+-      </widget>
+-     </item>
+-    </layout>
+-   </item>
+-   <item row="0" column="1" >
++   <item row="2" column="0" colspan="2" >
+     <spacer>
+      <property name="orientation" >
+       <enum>Qt::Vertical</enum>
+      </property>
+      <property name="sizeHint" >
+       <size>
+-       <width>20</width>
++       <width>361</width>
+        <height>40</height>
+       </size>
+      </property>
+@@ -122,40 +45,6 @@
+    </item>
+   </layout>
+  </widget>
+- <pixmapfunction></pixmapfunction>
+  <resources/>
+- <connections>
+-  <connection>
+-   <sender>okButton</sender>
+-   <signal>clicked()</signal>
+-   <receiver>DlgEngineEditing</receiver>
+-   <slot>accept()</slot>
+-   <hints>
+-    <hint type="sourcelabel" >
+-     <x>278</x>
+-     <y>253</y>
+-    </hint>
+-    <hint type="destinationlabel" >
+-     <x>96</x>
+-     <y>254</y>
+-    </hint>
+-   </hints>
+-  </connection>
+-  <connection>
+-   <sender>cancelButton</sender>
+-   <signal>clicked()</signal>
+-   <receiver>DlgEngineEditing</receiver>
+-   <slot>reject()</slot>
+-   <hints>
+-    <hint type="sourcelabel" >
+-     <x>369</x>
+-     <y>253</y>
+-    </hint>
+-    <hint type="destinationlabel" >
+-     <x>179</x>
+-     <y>282</y>
+-    </hint>
+-   </hints>
+-  </connection>
+- </connections>
++ <connections/>
+ </ui>
+--- kget/transfer-plugins/multisegmentkio/multisegkio.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/multisegmentkio/multisegkio.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -111,7 +111,7 @@
+ void MultiSegmentCopyJob::stop()
+ {
+     kDebug(5001) << "MultiSegmentCopyJob::stop()";
+-    setError(KIO::ERR_USER_CANCELED);
++    setError(KIO::ERR_ABORTED);
+     if (SegFactory)
+         SegFactory->stopTransfer();
+     if (m_putJob)
+@@ -189,6 +189,7 @@
+        QFile::rename ( dest_part, dest_orig );
+     }
+     emit updateSegmentsData();
++    m_putJob->kill();
+ }
+ 
+ // tooked from SlaveInterface.cpp
+--- kget/transfer-plugins/multisegmentkio/CMakeLists.txt	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/multisegmentkio/CMakeLists.txt	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,12 +1,7 @@
+-
+ include_directories(
+    ../../
+-   ${CMAKE_CURRENT_SOURCE_DIR}
+-   ${CMAKE_CURRENT_BINARY_DIR}
+ )
+ 
+-########### next target ###############
+-
+ set(kget_multisegkiofactory_PART_SRCS
+   dlgmultisegkio.cpp
+   segmentfactory.cpp
+@@ -20,13 +15,10 @@
+ 
+ kde4_add_kcfg_files(kget_multisegkiofactory_PART_SRCS multisegkiosettings.kcfgc)
+ 
+-kde4_add_plugin(kget_multisegkiofactory WITH_PREFIX ${kget_multisegkiofactory_PART_SRCS})
++kde4_add_plugin(kget_multisegkiofactory ${kget_multisegkiofactory_PART_SRCS})
+ 
+-target_link_libraries(kget_multisegkiofactory ${KDE4_KIO_LIBS}  kgetcore)
++target_link_libraries(kget_multisegkiofactory ${KDE4_KIO_LIBS} kgetcore)
+ 
+ install(TARGETS kget_multisegkiofactory DESTINATION  ${PLUGIN_INSTALL_DIR})
+-
+-########### install files ###############
+-
+ install(FILES kget_multisegkiofactory.desktop DESTINATION ${SERVICES_INSTALL_DIR})
+ install(FILES kget_multisegkiofactory.kcfg DESTINATION ${KCFG_INSTALL_DIR})
+--- kget/transfer-plugins/multisegmentkio/mirrors.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/multisegmentkio/mirrors.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -64,7 +64,7 @@
+         QString u = str.mid(posOfTagHref + 6, (hrefEnd - posOfTagHref -6));
+ 
+         start = hrefEnd + 1;
+-            if ( u.endsWith( m_url.fileName() ) )
++            if ( u.endsWith( '/' + m_url.fileName() ) )
+             {
+                 m_Urls << KUrl(u);
+                 kDebug(5001) << "url: " << u;
+--- kget/transfer-plugins/kio/kget_kiofactory.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/kio/kget_kiofactory.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ # service definition
+ Type=Service
+-ServiceTypes=KGet/Plugin
++X-KDE-ServiceTypes=KGet/Plugin
+ 
+ # standard fields
+ Name=KIO TransferFactory
+@@ -38,7 +37,7 @@
+ Comment[zh_TW]=KGet 傳輸外掛程式
+ 
+ # options for library loader
+-X-KDE-Library=libkget_kiofactory
++X-KDE-Library=kget_kiofactory
+ X-KDE-KGet-plugintype=TransferFactory
+ X-KDE-KGet-rank=50
+ X-KDE-KGet-framework-version=1
+--- kget/transfer-plugins/kio/CMakeLists.txt	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/kio/CMakeLists.txt	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -2,20 +2,14 @@
+    ../../
+ )
+ 
+-########### next target ###############
+-
+ set(kget_kiofactory_PART_SRCS
+   transferKio.cpp
+   transferKioFactory.cpp
+ )
+ 
++kde4_add_plugin(kget_kiofactory ${kget_kiofactory_PART_SRCS})
+ 
+-kde4_add_plugin(kget_kiofactory WITH_PREFIX ${kget_kiofactory_PART_SRCS})
++target_link_libraries(kget_kiofactory ${KDE4_KIO_LIBS} kgetcore)
+ 
+-target_link_libraries(kget_kiofactory ${KDE4_KIO_LIBS}  kgetcore)
+-
+ install(TARGETS kget_kiofactory DESTINATION ${PLUGIN_INSTALL_DIR})
+-
+-########### install files ###############
+-
+ install(FILES kget_kiofactory.desktop DESTINATION ${SERVICES_INSTALL_DIR})
+--- kget/transfer-plugins/metalink/CMakeLists.txt	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/metalink/CMakeLists.txt	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -2,20 +2,15 @@
+    ../../
+ )
+ 
+-########### next target ###############
+-
+ set(kget_metalinkfactory_PART_SRCS
+   metalinkfactory.cpp
+   metalink.cpp
+   metalinker.cpp
+ )
+ 
+-kde4_add_plugin(kget_metalinkfactory WITH_PREFIX ${kget_metalinkfactory_PART_SRCS})
++kde4_add_plugin(kget_metalinkfactory ${kget_metalinkfactory_PART_SRCS})
+ 
+-target_link_libraries(kget_metalinkfactory ${KDE4_KIO_LIBS}  kgetcore)
++target_link_libraries(kget_metalinkfactory ${KDE4_KIO_LIBS} kgetcore)
+ 
+ install(TARGETS kget_metalinkfactory DESTINATION ${PLUGIN_INSTALL_DIR})
+-
+-########### install files ###############
+-
+ install(FILES kget_metalinkfactory.desktop DESTINATION ${SERVICES_INSTALL_DIR})
+--- kget/transfer-plugins/metalink/kget_metalinkfactory.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/metalink/kget_metalinkfactory.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ # service definition
+ Type=Service
+-ServiceTypes=KGet/Plugin
++X-KDE-ServiceTypes=KGet/Plugin
+ 
+ # standard fields
+ Name=MetaLink TransferFactory
+@@ -38,7 +37,7 @@
+ Comment[zh_TW]=KGet 傳輸外掛程式
+ 
+ # options for library loader
+-X-KDE-Library=libkget_metalinkfactory
++X-KDE-Library=kget_metalinkfactory
+ X-KDE-KGet-plugintype=TransferFactory
+ X-KDE-KGet-rank=90
+ X-KDE-KGet-framework-version=1
+--- kget/transfer-plugins/bittorrent/http.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/http.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,98 +0,0 @@
+-/*
+- *  Copyright (C) 2005 Felix Berger <felixberger at beldesign.de>
+- *
+- *  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; either version 2 of the License, or
+- *  (at your option) any later version.
+- *
+- *  This program is distributed in the hope that it will be useful,
+- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *  GNU General Public License for more details.
+- *
+- *  You should have received a copy of the GNU General Public License
+- *  along with this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-
+-#include "http.h"
+-#include "http.moc"
+-
+-#include <torrent/exceptions.h>
+-#include <iostream>
+-
+-#include <kio/job.h>
+-#include <kio/scheduler.h>
+-#include <kdebug.h>
+-
+-void signalDone(torrent::Http* http);
+-void signalFailed(torrent::Http* http, const QString& err);
+-
+-Http::Http()
+-  : job(0)
+-{
+-}
+-
+-void Http::start()
+-{
+-  if (job) {
+-    // throw torrent::internal_error("Tried to start already running http job");
+-    kDebug(5001) << "Tried to start already running http job";
+-  }
+-  job = KIO::get(KUrl(get_url().c_str()), KIO::NoReload, KIO::HideProgressInfo);
+-  connect(job, SIGNAL(data(KIO::Job*, const QByteArray&)),
+-	  SLOT(data(KIO::Job*, const QByteArray&)));
+-  connect(job, SIGNAL(result(KIO::Job*)), SLOT(result(KIO::Job*)));
+-}
+-
+-void Http::close()
+-{
+-  if (job) {
+-    KIO::Scheduler::cancelJob(job);
+-    job = 0;
+-  }
+-}
+-
+-void Http::data(KIO::Job* job, const QByteArray& data)
+-{
+-  Q_UNUSED(job);
+-  m_stream->write(data.data(), data.size());
+-}
+-
+-void Http::result(KIO::Job* job)
+-{
+-  if (job->error()) {
+-    signalFailed(this, job->errorString());
+-  }
+-  else {
+-    signalDone(this);
+-  }
+-  this->job = 0;
+-}
+-
+-Http* Http::createObject()
+-{
+-  // hope they don't leak in the client code
+-  return new Http();
+-}
+-
+-Http::SlotFactory Http::getFactory()
+-{
+-  return sigc::ptr_fun(&Http::createObject);
+-}
+-
+-#ifdef emit
+-#undef emit
+-void signalDone(torrent::Http* http)
+-{
+-  http->signal_done().emit();
+-}
+-
+-void signalFailed(torrent::Http* http, const QString& err)
+-{
+-  Q_UNUSED(err)
+-  http->signal_failed().emit("http error");
+-}
+-#endif
+--- kget/transfer-plugins/bittorrent/btthread.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/btthread.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,65 +0,0 @@
+-/*
+- *  Copyright (C) 2005 Felix Berger <felixberger at beldesign.de>
+- *
+- *  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; either version 2 of the License, or
+- *  (at your option) any later version.
+- *
+- *  This program is distributed in the hope that it will be useful,
+- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *  GNU General Public License for more details.
+- *
+- *  You should have received a copy of the GNU General Public License
+- *  along with this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-
+-#ifndef BTTHREAD_H
+-#define BTTHREAD_H
+-
+-#include <QThread>
+-#include <QMutex>
+-
+-/**
+- * Singleton thread for the bittorrent library. Waits in a select for the
+- * bittorrent file descriptors and executes the work on the descriptors in its
+- * run method.
+- *
+- * The work part is protected by a private mutex which can be locked through
+- * the static public inerfaces lock() and unlock(). Code in different
+- * threads (the Qt eventloop thread) should lock before accessing values of a
+- * torrent::download object.
+- *
+- * It also does all the library initialization and cleanup calls.
+- */
+-class BTThread : public QThread
+-{
+-    private:
+-        BTThread()
+-        {
+-        }
+-        ~BTThread();
+-
+-    public:
+-        /**
+-        * Initialize torrent library the instance thread and start it.
+-        *
+-        * torrent::initialize() should be already called before.
+-        */
+-        static void initialize();
+-        static void stop();
+-        static void lock();
+-        static void unlock();
+-
+-        void run();
+-
+-    private:
+-        static BTThread* instance;
+-        static int initialized;
+-        QMutex mutex;
+-};
+-
+-#endif
+--- kget/transfer-plugins/bittorrent/http.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/http.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,55 +0,0 @@
+-/*
+- *  Copyright (C) 2005 Felix Berger <felixberger at beldesign.de>
+- *
+- *  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; either version 2 of the License, or
+- *  (at your option) any later version.
+- *
+- *  This program is distributed in the hope that it will be useful,
+- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *  GNU General Public License for more details.
+- *
+- *  You should have received a copy of the GNU General Public License
+- *  along with this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-
+-#ifndef HTTP_H
+-#define HTTP_H
+-
+-#include <torrent/http.h>
+-
+-#include <QObject>
+-#include <QPointer>
+-
+-namespace KIO {
+-  class Job;
+-  class TransferJob;
+-}
+-
+-class Http : public QObject, public torrent::Http
+-{
+-  Q_OBJECT
+-
+-public:
+-  Http();
+-  void start();
+-  void close();
+-
+-  typedef sigc::slot0<Http*>  SlotFactory;
+-  static SlotFactory getFactory();
+-  static Http* createObject();
+-
+-
+-private slots:
+-  void data(KIO::Job* job, const QByteArray& data);
+-  void result(KIO::Job* job);
+-
+-private:
+-  QPointer<KIO::TransferJob> job;
+-};
+-
+-#endif
+--- kget/transfer-plugins/bittorrent/Makefile.am	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/Makefile.am	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,19 +0,0 @@
+-if HAVE_LIBTORRENT
+-kde_module_LTLIBRARIES = libkget_bittorrentfactory.la
+-
+-libkget_bittorrentfactory_la_SOURCES =  bttransfer.cpp http.cpp btthread.cpp bttransferhandler.cpp\
+-	bttransferfactory.cpp btdetailswidgetfrm.ui btdetailswidget.cpp
+-libkget_bittorrentfactory_la_LIBADD = $(LIB_QTCORE) $(LIB_QTGUI) $(LIB_QT3SUPPORT) $(LIB_KDEUI) $(LIB_KDECORE) $(LIB_KIO) $(TORRENT_LIBS) ../../core/libcore.la \
+-	../../conf/libconf.la
+-libkget_bittorrentfactory_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) \
+-	$(all_libraries)
+-
+-noinst_HEADERS = bttransfer.h http.h btthread.h bttransferfactory.h bttransferhandler.h
+-
+-INCLUDES = $(TORRENT_CFLAGS) $(all_includes) -I$(srcdir)/../.. 
+-
+-kde_services_DATA = kget_bittorrentfactory.desktop
+-
+-endif
+-
+-METASOURCES = AUTO
+\ No newline at end of file
+--- kget/transfer-plugins/bittorrent/btthread.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/btthread.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,107 +0,0 @@
+-/*
+- *  Copyright (C) 2005 Felix Berger <felixberger at beldesign.de>
+- *
+- *  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; either version 2 of the License, or
+- *  (at your option) any later version.
+- *
+- *  This program is distributed in the hope that it will be useful,
+- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *  GNU General Public License for more details.
+- *
+- *  You should have received a copy of the GNU General Public License
+- *  along with this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
+-
+-#include "btthread.h"
+-#include "http.h"
+-
+-#include <torrent/torrent.h>
+-
+-#include <kdebug.h>
+-
+-BTThread* BTThread::instance = 0;
+-int BTThread::initialized = 0;
+-
+-void BTThread::initialize()
+-{
+-    if (!initialized++)
+-    {
+-        torrent::Http::set_factory(Http::getFactory());
+-        torrent::initialize();
+-        torrent::listen_open(6890, 6999);
+-        instance = new BTThread();
+-        instance->start();
+-    }
+-    kDebug(5001) << "initialized1 = " << initialized;
+-}
+-
+-void BTThread::stop()
+-{
+-    kDebug(5001) << "initialized2 = " << initialized;
+-    if (!--initialized)
+-    {
+-        //I've disabled this line because we can't delete the instance
+-        //if we have a QMutexLocker. Felix, is this mutex necessary?
+-        //(removing it solves some crashes when deleting bittorrent transfers)
+-        //QMutexLocker locker(&instance->mutex);
+-        instance->terminate();
+-        instance->wait();
+-        delete instance;
+-        instance = 0;
+-        torrent::cleanup();
+-    }
+-}
+-
+-BTThread::~BTThread()
+-{
+-}
+-
+-void BTThread::lock()
+-{
+-    if (instance) 
+-    {
+-        instance->mutex.lock();
+-    }
+-}
+-
+-void BTThread::unlock()
+-{
+-    if (instance) 
+-    {
+-        instance->mutex.unlock();
+-    }
+-}
+-
+-void BTThread::run()
+-{
+-    while (true) 
+-    {
+-        int max_fd = 0;
+-        fd_set rd, wr, er;
+-        FD_ZERO (&rd);
+-        FD_ZERO (&wr);
+-        FD_ZERO (&er);
+-
+-        torrent::mark(&rd, &wr, &er, &max_fd);
+-
+-        uint64_t t = torrent::get_next_timeout();
+-	// TODO check if values make sense and we sleep enough on select
+-        if (t > 1000000)
+-            t = 1000000;
+-
+-        timeval timeout = {t / 1000000, t % 1000000};
+-
+-        max_fd = select(max_fd + 1, &rd, &wr, &er, &timeout);
+-
+-        if (max_fd >= 0) 
+-        {
+-            QMutexLocker locker(&mutex);
+-            torrent::work(&rd, &wr, &er, max_fd);
+-        }
+-    }
+-}
+--- kget/transfer-plugins/bittorrent/btdetailswidget.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/btdetailswidget.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,6 +1,6 @@
+ /* This file is part of the KDE project
+ 
+-   Copyright (C) 2005 Dario Massarin <nekkar at libero.it>
++   Copyright (C) 2007 Lukas Appelhans <l.appelhans at gmx.de>
+ 
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public
+@@ -11,27 +11,13 @@
+ #include "btdetailswidget.h"
+ 
+ #include "bttransferhandler.h"
+-#include "btdetailswidgetfrm.h"
++#include "ui_btdetailswidgetfrm.h"
+ 
+ #include <kdebug.h>
+ 
+ BTDetailsWidget::BTDetailsWidget(BTTransferHandler * transfer)
+     : m_transfer(transfer)
+ {
+-    Ui::BTDetailsWidgetFrm frm;
+-    frm.setupUi(this);
+-
+-    findChild<QLabel *>("chunksTotalLabel")->setText(i18n("Total:"));
+-    findChild<QLabel *>("chunksDownloadedLabel")->setText(i18n("Downloaded:"));
+-
+-    findChild<QLabel *>("peersConnectedLabel")->setText(i18n("Connected:"));
+-    findChild<QLabel *>("peersNotConnectedLabel")->setText(i18n("Not connected:"));
+-
+-    m_chunksTotalLabel = findChild<QLabel *>("chunksTotalContentLabel");
+-    m_chunksDownloadedLabel = findChild<QLabel *>("chunksDownloadedContentLabel");
+-    m_peersConnectedLabel = findChild<QLabel *>("peersConnectedContentLabel");
+-    m_peersNotConnectedLabel = findChild<QLabel *>("peersNotConnectedContentLabel");
+-
+     transfer->addObserver(this);
+     //This updates the widget with the right values
+     transferChangedEvent(transfer);
+@@ -39,48 +25,6 @@
+ 
+ void BTDetailsWidget::transferChangedEvent(TransferHandler * transfer)
+ {
+-    TransferHandler::ChangesFlags transferFlags = m_transfer->changesFlags(this);
+-
+-    if(transferFlags & BTTransfer::Tc_ChunksTotal)
+-    {
+-        int chunksTotal = m_transfer->chunksTotal();
+-
+-        if(chunksTotal!=-1)
+-            m_chunksTotalLabel->setText(QString(chunksTotal));
+-        else
+-            m_chunksTotalLabel->setText(QString());
+-    }
+-
+-    if(transferFlags & BTTransfer::Tc_ChunksDownloaded)
+-    {
+-        int chunksDownloaded = m_transfer->chunksDownloaded();
+-
+-        if(chunksDownloaded!=-1)
+-            m_chunksDownloadedLabel->setText(QString(chunksDownloaded));
+-        else
+-            m_chunksDownloadedLabel->setText(QString());
+-    }
+-
+-    if(transferFlags & BTTransfer::Tc_PeersConnected)
+-    {
+-        int peersConnected = m_transfer->peersConnected();
+-
+-        if(peersConnected!=-1)
+-            m_peersConnectedLabel->setText(QString(peersConnected));
+-        else
+-            m_peersConnectedLabel->setText(QString());
+-    }
+-
+-    if(transferFlags & BTTransfer::Tc_PeersNotConnected)
+-    {
+-        int peersNotConnected = m_transfer->peersNotConnected();
+-
+-        if(peersNotConnected!=-1)
+-            m_peersNotConnectedLabel->setText(QString(peersNotConnected));
+-        else
+-            m_peersNotConnectedLabel->setText(QString());
+-    }
+-
+     m_transfer->resetChangesFlags(this);
+ }
+ 
+--- kget/transfer-plugins/bittorrent/bttransfer.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/bttransfer.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,39 +1,25 @@
+-/*
+- *  Copyright (C) 2005 Felix Berger <felixberger at beldesign.de>
+- *
+- *  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; either version 2 of the License, or
+- *  (at your option) any later version.
+- *
+- *  This program is distributed in the hope that it will be useful,
+- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *  GNU General Public License for more details.
+- *
+- *  You should have received a copy of the GNU General Public License
+- *  along with this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
++/* This file is part of the KDE project
+ 
++   Copyright (C) 2007 Lukas Appelhans <l.appelhans at gmx.de>
++
++   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; either
++   version 2 of the License, or (at your option) any later version.
++*/
++
+ #ifndef BTTRANSFER_H
+ #define BTTRANSFER_H
+ 
+-#include <torrent/torrent.h>
+-#include <sstream>
+-
+ #include <QTimer>
+ #include <QDateTime>
++#include <QByteArray>
+ 
+ #include "core/transfer.h"
++#include "torrentcontrol.h"
+ 
++#include <kio/job.h>
+ 
+-namespace KIO
+-{
+-    class Job;
+-}
+-
+ class BTTransfer : public QObject, public Transfer
+ {
+     Q_OBJECT
+@@ -52,7 +38,7 @@
+ 
+         BTTransfer(TransferGroup* parent, TransferFactory* factory,
+                     Scheduler* scheduler, const KUrl& src, const KUrl& dest,
+-                    const QDomElement * e = 0 );
++                    const QDomElement * e = 0);
+         ~BTTransfer();
+ 
+         //Job virtual functions
+@@ -75,29 +61,25 @@
+ 
+     private slots:
+         void update();
++        void slotData(KIO::Job *, const QByteArray& data);
++        void slotResult(KJob * job);
++        void slotStoppedByError(bt::TorrentInterface* error, QString errormsg);
+ 
+     private:
+-        void resume();
+-        void remove(); //Now I put this functions here. Shouldn't it
+-                       //be integrated in the destructor?
+-        void trackerMessage(std::string msg);
++        //TODO: are all these functions necessary??
+         void downloadFinished();
+         void hashingFinished();
+ 
+-        QTime startTime;
+         QTimer timer;
+-        std::stringstream bencodeStream;
+-        torrent::Download download;
+ 
+         int m_chunksTotal;
+         int m_chunksDownloaded;
+         int m_peersConnected;
+         int m_peersNotConnected;
+ 
+-        sigc::connection trackerSucceeded;
+-        sigc::connection trackerFailed;
+-        sigc::connection downloadDone;
+-        sigc::connection hashingDone;
++        bt::TorrentControl *torrent;
++
++        QByteArray m_data;
+ };
+ 
+ #endif
+--- kget/transfer-plugins/bittorrent/bttransferfactory.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/bttransferfactory.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,22 +1,13 @@
+-/*
+- *  Copyright (C) 2005 Felix Berger <felixberger at beldesign.de>
+- *
+- *  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; either version 2 of the License, or
+- *  (at your option) any later version.
+- *
+- *  This program is distributed in the hope that it will be useful,
+- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *  GNU General Public License for more details.
+- *
+- *  You should have received a copy of the GNU General Public License
+- *  along with this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
++/* This file is part of the KDE project
+ 
++   Copyright (C) 2007 Lukas Appelhans <l.appelhans at gmx.de>
++
++   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; either
++   version 2 of the License, or (at your option) any later version.
++*/
++
+ #include "bttransferfactory.h"
+ 
+ // header inclusion order is crucial because of signal emit clashes
+@@ -30,21 +21,25 @@
+ 
+ KGET_EXPORT_PLUGIN(BTTransferFactory)
+ 
+-Transfer * BTTransferFactory::createTransfer( KUrl srcUrl, KUrl destUrl,
++BTTransferFactory::BTTransferFactory()
++{
++}
++
++BTTransferFactory::~BTTransferFactory()
++{
++}
++
++Transfer * BTTransferFactory::createTransfer(const KUrl &srcUrl, const KUrl &destUrl,
+                                               TransferGroup * parent,
+                                               Scheduler * scheduler, 
+                                               const QDomElement * e )
+ {
+     kDebug(5001) << "BTTransferFactory::createTransfer";
+ 
+-    if (srcUrl.fileName().endsWith(".torrent") && srcUrl.isLocalFile())
++    if (srcUrl.fileName().endsWith(".torrent"))
+     {
+-        //Make sure that the given url points to an existing torrent file
+-        QFile torrentFile(srcUrl.path());
+-        if(!torrentFile.exists())
+-            return 0;
+-
+-        return new BTTransfer(parent, this, scheduler, srcUrl, destUrl, e);
++        if (!srcUrl.isEmpty() && !destUrl.isEmpty() && parent && scheduler)
++            return new BTTransfer(parent, this, scheduler, srcUrl, destUrl, e);
+     }
+     return 0;
+ }
+--- kget/transfer-plugins/bittorrent/btdetailswidget.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/btdetailswidget.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,6 +1,6 @@
+ /* This file is part of the KDE project
+ 
+-   Copyright (C) 2005 Dario Massarin <nekkar at libero.it>
++   Copyright (C) 2007 Lukas Appelhans <l.appelhans at gmx.de>
+ 
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public
+@@ -15,8 +15,6 @@
+ 
+ #include "core/observer.h"
+ 
+-class QLabel;
+-
+ class BTTransferHandler;
+ 
+ class BTDetailsWidget : public QWidget, public TransferObserver
+@@ -29,11 +27,6 @@
+ 
+     private:
+         BTTransferHandler * m_transfer;
+-
+-        QLabel * m_chunksTotalLabel;
+-        QLabel * m_chunksDownloadedLabel;
+-        QLabel * m_peersConnectedLabel;
+-        QLabel * m_peersNotConnectedLabel;
+ };
+ 
+ #endif
+--- kget/transfer-plugins/bittorrent/kget_bittorrentfactory.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/kget_bittorrentfactory.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ # service definition
+ Type=Service
+-ServiceTypes=KGet/Plugin
++X-KDE-ServiceTypes=KGet/Plugin
+ 
+ # standard fields
+ Name=KIO TransferFactory
+--- kget/transfer-plugins/bittorrent/bttransferfactory.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/bttransferfactory.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,22 +1,13 @@
+-/*
+- *  Copyright (C) 2005 Felix Berger <felixberger at beldesign.de>
+- *
+- *  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; either version 2 of the License, or
+- *  (at your option) any later version.
+- *
+- *  This program is distributed in the hope that it will be useful,
+- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *  GNU General Public License for more details.
+- *
+- *  You should have received a copy of the GNU General Public License
+- *  along with this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
++/* This file is part of the KDE project
+ 
++   Copyright (C) 2007 Lukas Appelhans <l.appelhans at gmx.de>
++
++   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; either
++   version 2 of the License, or (at your option) any later version.
++*/
++
+ #ifndef BTTRANSFERFACTORY_H
+ #define BTTRANSFERFACTORY_H
+ 
+@@ -25,7 +16,10 @@
+ class BTTransferFactory : public TransferFactory
+ {
+     public:
+-        Transfer * createTransfer( KUrl srcUrl, KUrl destUrl,
++        BTTransferFactory();
++        ~BTTransferFactory();
++
++        Transfer * createTransfer(const KUrl &srcUrl, const KUrl &destUrl,
+                                    TransferGroup * parent,
+                                    Scheduler * scheduler,
+                                    const QDomElement * e = 0 );
+@@ -36,6 +30,10 @@
+         QWidget * createDetailsWidget( TransferHandler * transfer );
+ 
+         const QList<KAction *> actions();
++
++        QWidget * createSettingsWidget() { return 0;}
++
++        QString displayName(){return "Bittorrent";}
+ };
+ 
+ #endif
+--- kget/transfer-plugins/bittorrent/bttransferhandler.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/bttransferhandler.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,6 +1,6 @@
+ /* This file is part of the KDE project
+ 
+-   Copyright (C) 2005 Dario Massarin <nekkar at libero.it>
++   Copyright (C) 2007 Lukas Appelhans <l.appelhans at gmx.de>
+ 
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public
+--- kget/transfer-plugins/bittorrent/bttransfer.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/bttransfer.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,351 +1,196 @@
+-/*
+- *  Copyright (C) 2005 Felix Berger <felixberger at beldesign.de>
+- *
+- *  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; either version 2 of the License, or
+- *  (at your option) any later version.
+- *
+- *  This program is distributed in the hope that it will be useful,
+- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+- *  GNU General Public License for more details.
+- *
+- *  You should have received a copy of the GNU General Public License
+- *  along with this program; if not, write to the Free Software
+- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- *
+- */
++/* This file is part of the KDE project
+ 
+-#include "bttransfer.h"
+-#include "btthread.h"
++   Copyright (C) 2007 Lukas Appelhans <l.appelhans at gmx.de>
+ 
+-#include <sigc++/bind.h>
+-#include <torrent/torrent.h>
+-#include <torrent/bencode.h>
+-#include <torrent/rate.h>
++   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; either
++   version 2 of the License, or (at your option) any later version.
++*/
+ 
+-#include <kdebug.h>
+-#include <klocale.h>
+-#include <kiconloader.h>
++#include "bttransfer.h"
+ 
+-#include <QDomElement>
++#include <torrent.h>
++#include <peermanager.h>
++#include <error.h>
++#include <globals.h>
++#include <server.h>
++#include <util/constants.h>
++
++#include <KDebug>
++#include <KLocale>
++#include <KIconLoader>
++#include <KStandardDirs>
+ #include <QFile>
++#include <QDomElement>
+ 
+ BTTransfer::BTTransfer(TransferGroup* parent, TransferFactory* factory,
+                Scheduler* scheduler, const KUrl& src, const KUrl& dest,
+                const QDomElement * e)
+   : Transfer(parent, factory, scheduler, src, dest, e),
+-    m_chunksTotal(0), m_chunksDownloaded(0),
+-    m_peersConnected(0), m_peersNotConnected(0)
++    m_chunksTotal(0), 
++    m_chunksDownloaded(0),
++    m_peersConnected(0), 
++    m_peersNotConnected(0)
+ {
+-    BTThread::initialize(); //check: is this thread active always?? :-O
+-    kDebug(5001) << "new bt transfer";
++ /**   QFile srcFile(m_source.url());
++    if (!srcFile.isLocalFile() && !m_source.isEmpty())
++    {
++        KIO::TransferJob *m_copyjob = KIO::get(m_source , KIO::NoReload, KIO::HideProgressInfo);
++        connect(m_copyjob,SIGNAL(data(KIO::Job*,const QByteArray &)), SLOT(slotData(KIO::Job*, const QByteArray& )));
++        connect(m_copyjob, SIGNAL(result(KJob *)), this, SLOT(slotResult(KJob * )));
++    }**/
+ 
+-    //We already know that the file is local (the check is in the Factory)
+-    QFile file(src.path());
+-    kDebug(5001) << "Opening file: " << src.path();
+ 
+-    if(file.open(QIODevice::ReadOnly))
++
++    bt::Uint16 i = 0;
++    do
+     {
+-        kDebug(5001) << "***********Bittorrent file opened";
+-        QByteArray data = file.readAll();
+-        kDebug(5001) << "Stream of size: " << data.size(); 
+-        kDebug(5001) << "Stream of data: " << endl << data.data();
+-        bencodeStream.write(data.data(), data.size());
++        bt::Globals::instance().initServer(6881 + i);
++        i++;
++    }while (!bt::Globals::instance().getServer().isOK() && i < 10);
+ 
+-        file.close();
++    if (!bt::Globals::instance().getServer().isOK())
++        return;
++
++    kDebug(5001) << m_source.url().remove("file://");
++    try
++    {
++        torrent = new bt::TorrentControl();
++        torrent->init(0, m_source.url().remove("file://"), m_dest.url().remove("file://"), m_dest.url().remove("file://"), 0);
+     }
+-    else
++    catch (bt::Error &err)
+     {
+-        kDebug(5001) << "***********Unable to open bittorrent file!";
+-        kDebug(5001) << file.errorString();
++        kDebug(5001) << err.toString();
+     }
+ 
++    connect(torrent, SIGNAL(stoppedByError(bt::TorrentInterface*, QString)), this, SLOT(slotStoppedByError(bt::TorrentInterface*, QString)));
+     connect(&timer, SIGNAL(timeout()), SLOT(update()));
+ }
+ 
+ BTTransfer::~BTTransfer()
+ {
+-    BTThread::stop();
+ }
+ 
+ bool BTTransfer::isResumable() const
+ {
++    kDebug(5001);
++    //FIXME
+     return true;
+ }
+ 
+ int BTTransfer::chunksTotal()
+ {
+-    if (download.is_valid() && download.is_active())
+-        return download.get_chunks_total();
+-    else
+-        return -1;
++    kDebug(5001);
++    return torrent->getTorrent().getNumChunks();
+ }
+ 
+ int BTTransfer::chunksDownloaded()
+ {
+-    if (download.is_valid() && download.is_active())
+-        return download.get_chunks_done();
+-    else
+-        return -1;
++    kDebug(5001);
++    //FIXME
+ }
+ 
+ int BTTransfer::peersConnected()
+ {
+-    if (download.is_valid() && download.is_active())
+-        return download.get_peers_connected();
+-    else
+-        return -1;
+-
++    kDebug(5001);
+ }
+ 
+ int BTTransfer::peersNotConnected()
+ {
+-    if (download.is_valid() && download.is_active())
+-        return download.get_peers_not_connected();
+-    else
+-        return -1;
++    kDebug(5001);
+ }
+ 
+ void BTTransfer::start()
+ {
+-    startTime = QTime::currentTime();
++    kDebug(5001);
+     setStatus(Job::Running, i18n("Analizing torrent.."), SmallIcon("xmag"));
+     setTransferChange(Tc_Status, true);
+ 
+-    resume();
++    torrent->start();
++    timer.start(500);
+ }
+ 
+ void BTTransfer::stop()
+ {
+-    kDebug(5001) << endl << "bt stopped" << endl;
+-    timer.stop();
+-    if (download.is_valid()) 
+-    {
+-        download.stop();
+-//          download.hash_save();
+-        m_speed = 0;
+-        setStatus(Job::Stopped, i18n("Stopped"), SmallIcon("process-stop"));
+-        setTransferChange(Tc_Speed | Tc_Status, true);
+-
+-        startTime = QTime();
+-    }
++    kDebug(5001);
++    torrent->stop(true);
++    m_speed = 0;
++    setStatus(Job::Stopped, i18n("Stopped"), SmallIcon("process-stop"));
++    setTransferChange(Tc_Speed | Tc_Status, true);
+ }
+ 
+ int BTTransfer::elapsedTime() const
+ {
+-    return startTime.secsTo(QTime::currentTime());
++    kDebug(5001);
++    return torrent->getRunningTimeDL();
+ }
+ 
+ int BTTransfer::remainingTime() const
+ {
+-    // we should use the average rate here
+-    int rate = speed();
+-    return (rate <= 0) ? -1 :
+-        (int)((totalSize() - processedSize()) / rate);
++    kDebug(5001);
++    return torrent->getETA();
+ }
+ 
+-void BTTransfer::resume()
+-{
+-    kDebug(5001) << endl << "resume dl" << endl;
+-    if (!download.is_valid())
+-    {
+-        try
+-        {
+-            download = torrent::download_add(&bencodeStream);
+-            // deallocate stream
+-            bencodeStream.str(std::string());
+-            // set directory
+-            download.set_root_dir(std::string(qPrintable(dest().directory(false))));
+-
+-            if (download.get_entry_size() == 1) 
+-            {
+-                //set filename too?
+-            }
+-
+-            //       trackerSucceeded = download.signal_tracker_succeded
+-            // 	(sigc::bind(sigc::mem_fun(*this, &BTTransfer::trackerMessage), 
+-            // 		    "succeeded"));
+-            //       trackerFailed = download.signal_tracker_failed
+-            // 	(sigc::mem_fun(*this, &BTTransfer::trackerMessage));
+-
+-            downloadDone = download.signal_download_done
+-            (sigc::mem_fun(*this, &BTTransfer::downloadFinished));
+-
+-            hashingDone = download.signal_hash_done
+-            (sigc::mem_fun(*this, &BTTransfer::hashingFinished));
+-        }
+-        catch (std::exception& e)
+-        {
+-            // line below only compiles with exceptions activated
+-            // kDebug(5001) << "exception " << e.what();
+-            return;
+-        }
+-        kDebug(5001) << "still alive";
+-    }
+-
+-    if(!download.is_active())
+-    {
+-        if (!download.is_open()) 
+-        {
+-            kDebug(5001) << endl << "second turn" << endl;
+-            download.open();
+-        }
+-        if (!download.is_hash_checked()) 
+-        {
+-            download.hash_check(false);
+-            return;
+-        }
+-        try 
+-        {
+-            kDebug(5001) << endl << "third turn" << endl;
+-            setStatus(status(), i18n("Connecting.."), SmallIcon("connect-creating"));
+-            setTransferChange(Tc_Status, true);
+-
+-            download.start();
+-        }
+-        catch (std::exception& e)
+-        {
+-        // the line below only compiles with exceptions activated
+-        // kDebug(5001) << "Resume exception " << e.what() << endl;
+-        }
+-        timer.start(1 * 1000);
+-        return;
+-    }
+-}
+-
+-void BTTransfer::remove()
+-{
+-    kDebug(5001) << endl << "bt removed" << endl;
+-    timer.stop();
+-    if (download.is_valid() && download.is_active()) 
+-    {
+-        download.stop();
+-        download.close();
+-        torrent::download_remove(download.get_hash());
+-    }
+-}
+-
+-void BTTransfer::trackerMessage(std::string msg)
+-{
+-    kDebug(5001) << "trackerMessage";
+-    kDebug(5001) << msg.c_str();
+-}
+-
+ void BTTransfer::downloadFinished()
+ {
+-    kDebug(5001) << "bt transfer done ";
++    kDebug(5001);
+     setStatus(Job::Finished, i18n("Finished"), SmallIcon("ok"));
+     setTransferChange(Tc_Status, true);
+ }
+ 
+ void BTTransfer::hashingFinished()
+ {
+-    kDebug(5001) << "hashing finished ";
++    kDebug(5001);
+ 
+     setTransferChange(Tc_Status, true);
+-    resume();
++    start();
+ }
+ 
+ void BTTransfer::update()
+ {
+-    kDebug(5001) << "update";
+-    if (!download.is_valid() || !download.is_active()) 
+-    {
+-        kDebug(5001) << "timer running on invalid or inactive download";
+-        timer.stop();
+-        return;
+-    }
+-  
+-//   kDebug(5001) << "dl name " << download.get_name().c_str();
+-//   kDebug(5001) << "processedSize " << download.get_bytes_done();
+-//   kDebug(5001) << "rate down " << download.get_rate_down();
+-//   kDebug(5001) << "rate up " << download.get_rate_up();
+-//   kDebug(5001) << "bytes up " << download.get_bytes_up();
+-//   kDebug(5001) << "bytes down " << download.get_bytes_down();
+-//   kDebug(5001) << "chunk size " << download.get_chunks_size();
+-//   kDebug(5001) << "chunks done " << download.get_chunks_done();
+-//   kDebug(5001) << "chunks total " << download.get_chunks_total();
+-//   kDebug(5001) << "peers conn " << download.get_peers_connected();
+-//   kDebug(5001) << "handshakes " << torrent::get(torrent::HANDSHAKES_TOTAL);
++    kDebug(5001);
+ 
+-    BTThread::lock();
+-    m_totalSize = download.get_bytes_total();
+-    m_processedSize = download.get_bytes_done();
+-    m_speed = download.get_read_rate().rate();
+-    BTThread::unlock();
++    torrent->update();
+ 
+-    //Make sure we are really downloading the torrent before setting the status
+-    //text to "Downloading.."
+-    if( m_speed &&
+-       (statusText() != i18n("Downloading..")) &&
+-       (status() != Job::Finished) )
+-    {
+-        setStatus(status(), i18n("Downloading.."), SmallIcon("media-playback-start"));
+-        setTransferChange(Tc_Status);
+-    }
+-
+-    if (m_totalSize > 0) 
+-    {
+-        m_percent = (int)((100.0 * m_processedSize) / m_totalSize);
+-        setTransferChange(Tc_Percent);
+-    }
+-
+-    if (m_chunksTotal != chunksTotal())
+-    {
+-        m_chunksTotal = chunksTotal();
+-        setTransferChange(Tc_ChunksTotal);
+-    }
+-
+-    if (m_chunksDownloaded != chunksDownloaded())
+-    {
+-        m_chunksDownloaded = chunksDownloaded();
+-        setTransferChange(Tc_ChunksDownloaded);
+-    }
+-
+-    if (m_peersConnected != peersConnected())
+-    {
+-        m_peersConnected = peersConnected();
+-        setTransferChange(Tc_PeersConnected);
+-    }
+-
+-    if (m_peersNotConnected != peersNotConnected())
+-    {
+-        m_peersNotConnected = peersNotConnected();
+-        setTransferChange(Tc_PeersNotConnected);
+-    }
+-
+     setTransferChange(Tc_ProcessedSize | Tc_Speed | Tc_TotalSize, true);
+ }
+ 
+ void BTTransfer::save(QDomElement e) // krazy:exclude=passbyvalue
+ {
+-    Transfer::save(e);
+-
+-    if (download.is_valid() && !download.is_active()) 
+-    {
+-        QDomDocument doc(e.ownerDocument());
+-        QDomElement bencode(doc.createElement("bencode"));
+-        e.appendChild(bencode);
+-        std::stringstream s;
+-        s << download.get_bencode();
+-        bencode.appendChild(doc.createTextNode(s.str().c_str()));
+-    }
+ }
+ 
+ void BTTransfer::load(const QDomElement &e)
+ {
+-    if (!e.isNull())
++}
++
++void BTTransfer::slotData(KIO::Job *, const QByteArray& data) //stolen from Metalink-plugin
++{
++    kDebug(5001);
++    if (data.size() == 0)
++        return;
++    m_data.append(data);
++}
++
++void BTTransfer::slotResult(KJob * job)
++{
++/**    switch (job->error())
+     {
+-        Transfer::load(e);
++        case 0:                      //The download has finished
++            QFile torrentFile(KStandardDirs::locateLocal("appdata", "/tmp/" + m_source.fileName()));
++            torrentFile.write(m_data);
++            torrentFile.close();
++            m_source = KStandardDirs::locateLocal("appdata", "/tmp/") + torrentFile.fileName();
++            break;
++        case KIO::ERR_FILE_ALREADY_EXIST:  //The file has already been downloaded.
++            m_data = 0;
++    }**/
++}
+ 
+-        QDomElement first(e.firstChild().toElement());
+-        if (!first.isNull() &&  (first.tagName() == "bencode") )
+-        {
+-            bencodeStream << qPrintable(first.text());
+-        }
+-    }
++void BTTransfer::slotStoppedByError(bt::TorrentInterface* error, QString errormsg)
++{
++    kDebug(5001) << errormsg;
+ }
+ 
++
+ #include "bttransfer.moc"
+--- kget/transfer-plugins/bittorrent/CMakeLists.txt	(.../tags/KDE/3.96/kdenetwork)	(revision 0)
++++ kget/transfer-plugins/bittorrent/CMakeLists.txt	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -0,0 +1,36 @@
++
++find_package(BTCore REQUIRED)
++if(BTCORE_FOUND)
++include_directories(
++   ../../
++   ${CMAKE_CURRENT_SOURCE_DIR}
++   ${CMAKE_CURRENT_BINARY_DIR}
++   ${KDE4_INCLUDES}
++   ${BTCORE_INCLUDE_DIR}
++)
++add_definitions(${KDE4_ENABLE_EXCEPTIONS} ${KDE4_DEFINITIONS} )
++########### next target ###############
++
++set(kget_bittorrentfactory_PART_SRCS
++  bttransfer.cpp
++  bttransferfactory.cpp
++  bttransferhandler.cpp
++  btdetailswidget.cpp
++)
++
++kde4_add_ui_files(kget_bittorrentfactory_PART_SRCS btdetailswidgetfrm.ui)
++
++#kde4_add_kcfg_files(kget_bittorrentfactory_PART_SRCS bittorrentsettings.kcfgc)
++
++kde4_add_plugin(kget_bittorrentfactory WITH_PREFIX ${kget_bittorrentfactory_PART_SRCS})
++
++target_link_libraries(kget_bittorrentfactory ${KDE4_KDEUI_LIBS} ${BTCORE_LIBRARIES}  kgetcore)
++
++install(TARGETS kget_bittorrentfactory DESTINATION  ${PLUGIN_INSTALL_DIR})
++
++########### install files ###############
++
++install(FILES kget_bittorrentfactory.desktop DESTINATION ${SERVICES_INSTALL_DIR})
++#install(FILES kget_bittorrentfactory.kcfg DESTINATION ${KCFG_INSTALL_DIR})
++
++endif(BTCORE_FOUND)
+--- kget/transfer-plugins/bittorrent/bttransferhandler.h	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/transfer-plugins/bittorrent/bttransferhandler.h	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,6 +1,6 @@
+ /* This file is part of the KDE project
+ 
+-   Copyright (C) 2005 Dario Massarin <nekkar at libero.it>
++   Copyright (C) 2007 Lukas Appelhans <l.appelhans at gmx.de>
+ 
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public
+--- kget/desktop/kget.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/desktop/kget.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,8 +1,7 @@
+ # KDE Config File
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Application
+-Exec=kget -caption "%c" %i %m
++Exec=kget -caption "%c" %i
+ Icon=kget
+ Terminal=false
+ Name=KGet
+--- kget/desktop/kget_download.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/desktop/kget_download.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Actions=KGetDownload;
+ Type=Service
+ Icon=
+-ServiceTypes=KonqPopupMenu/Plugin,all/allfiles
++X-KDE-ServiceTypes=KonqPopupMenu/Plugin,all/allfiles
+ ExcludeServiceTypes=kdedevice/*
+ X-KDE-Protocol=!file
+ 
+--- kget/plasma/applet/errorgraph.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/plasma/applet/errorgraph.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -23,7 +23,7 @@
+ 
+ #include <plasma/widgets/icon.h>
+ #include <plasma/widgets/label.h>
+-#include <plasma/widgets/boxlayout.h>
++#include <plasma/layouts/boxlayout.h>
+ #include <plasma/widgets/pushbutton.h>
+ 
+ #include <KIcon>
+@@ -41,9 +41,12 @@
+     m_launchButton = new Plasma::PushButton(KIcon("kget"), "Launch KGet", m_applet);
+ 
+     //m_layout->addItem(m_errorLabel);
+-    m_layout->addItem(m_launchButton);
++    //m_layout->addItem(m_launchButton);
+ 
++    m_applet->updateGeometry();
++    m_errorLabel->updateGeometry();
+ 
++
+     connect(m_launchButton, SIGNAL(clicked()), SLOT(launchKGet()));
+ }
+ 
+--- kget/plasma/applet/plasma-kget-default.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/plasma/applet/plasma-kget-default.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=KGet
+ Name[cy]=KNôl
+ Name[eo]=Prenilo
+@@ -9,7 +8,7 @@
+ Name[x-test]=xxKGetxx
+ Icon=kget
+ Type=Service
+-ServiceTypes=Plasma/Applet
++X-KDE-ServiceTypes=Plasma/Applet
+ 
+ X-KDE-Library=plasma_applet_kget
+ X-KDE-PluginInfo-Author=Javier Goday
+--- kget/plasma/applet/barchart.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/plasma/applet/barchart.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -22,7 +22,7 @@
+ #include "transfergraph.h"
+ 
+ #include <plasma/widgets/label.h>
+-#include <plasma/widgets/boxlayout.h>
++#include <plasma/layouts/boxlayout.h>
+ #include <plasma/widgets/progressbar.h>
+ //#include <plasma/widgets/layoutanimator.h>
+ 
+--- kget/plasma/engine/plasma-engine-kget.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/plasma/engine/plasma-engine-kget.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=KGet Data Engine
+ Name[ca]=Motor de dades del KGet
+ Name[de]=KGet-Datenmodul
+@@ -14,7 +13,7 @@
+ Name[x-test]=xxKGet Data Enginexx
+ Name[zh_CN]=KGet 数据引擎
+ Name[zh_TW]=KGet 資料引擎
+-ServiceTypes=Plasma/DataEngine
++X-KDE-ServiceTypes=Plasma/DataEngine
+ Type=Service
+ Icon=kget
+ X-KDE-Library=plasma_engine_kget
+--- kget/ui/transfersview.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/ui/transfersview.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -9,6 +9,7 @@
+ */
+ 
+ #include "transfersview.h"
++#include "settings.h"
+ 
+ #include <kdebug.h>
+ 
+@@ -33,7 +34,13 @@
+ 
+ TransfersView::~TransfersView()
+ {
+-
++    QList<int>  list;
++    for (int i = 0; i<5; i++)
++    {
++        list.append(columnWidth(i));
++    }
++    Settings::setColumnWidths( list );
++    Settings::self()->writeConfig();
+ }
+ 
+ void TransfersView::setModel(QAbstractItemModel * model)
+@@ -48,7 +55,21 @@
+         openPersistentEditor(model->index(i, 1, QModelIndex()));
+     }
+ 
+-    setColumnWidth(0, 250);
++    QList<int> sizeList = Settings::columnWidths();
++
++    if (!sizeList.isEmpty())
++    {
++        int j = 0;
++        foreach(int i, sizeList)
++        {
++            setColumnWidth( j, i );
++            j++;
++        }
++    }
++    else
++    {
++        setColumnWidth(0 , 250);
++    }
+ }
+ 
+ QModelIndex TransfersView::indexFromTransferHandler(TransferHandler *handler)
+--- kget/ui/newtransferdialog.cpp	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/ui/newtransferdialog.cpp	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -31,7 +31,7 @@
+       m_multiple(false)
+ {
+     setCaption(i18n("New Download"));
+-    setMinimumSize(400, 300);
++    setMinimumSize(420, 300);
+     showButtonSeparator(true);
+ 
+     QWidget *mainWidget = new QWidget(this);
+@@ -39,7 +39,7 @@
+     Ui::NewTransferWidget widget;
+     widget.setupUi(mainWidget);
+ 
+-    m_gridLayout = widget.gridLayout;
++    m_gridLayout1 = widget.gridLayout1;
+     m_titleWidget = widget.titleWidget;
+     m_folderRequester = widget.folderRequester;
+     m_groupComboBox = widget.groupComboBox;
+@@ -77,13 +77,13 @@
+     if (multiple())
+     {
+         listWidget = new KListWidget();
+-        m_gridLayout->addWidget(listWidget, 0, 1, 1, 1);
++        m_gridLayout1->addWidget(listWidget, 0, 1, 1, 1);
+     }
+     else
+     {
+         urlRequester = new KLineEdit();
+         urlRequester->setClearButtonShown(true);
+-        m_gridLayout->addWidget(urlRequester, 0, 1, 1, 1);
++        m_gridLayout1->addWidget(urlRequester, 0, 1, 1, 1);
+     }
+ }
+ 
+--- kget/ui/newtransferwidget.ui	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kget/ui/newtransferwidget.ui	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -5,96 +5,96 @@
+    <rect>
+     <x>0</x>
+     <y>0</y>
+-    <width>395</width>
+-    <height>224</height>
++    <width>400</width>
++    <height>200</height>
+    </rect>
+   </property>
+-  <widget class="QWidget" name="layoutWidget" >
+-   <property name="geometry" >
+-    <rect>
+-     <x>10</x>
+-     <y>10</y>
+-     <width>365</width>
+-     <height>201</height>
+-    </rect>
+-   </property>
+-   <layout class="QVBoxLayout" >
+-    <item>
+-     <widget class="KTitleWidget" name="titleWidget" >
+-      <property name="text" >
+-       <string>New Download</string>
+-      </property>
+-     </widget>
+-    </item>
+-    <item>
+-     <layout class="QGridLayout" >
+-      <property name="horizontalSpacing" >
+-       <number>2</number>
+-      </property>
+-      <property name="verticalSpacing" >
+-       <number>2</number>
+-      </property>
+-      <item row="0" column="0" >
+-       <widget class="QLabel" name="label" >
+-        <property name="text" >
+-         <string>Url</string>
+-        </property>
+-        <property name="alignment" >
+-         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+-        </property>
+-       </widget>
+-      </item>
+-      <item row="1" column="0" >
+-       <widget class="QLabel" name="label_2" >
+-        <property name="text" >
+-         <string>Download Folder</string>
+-        </property>
+-       </widget>
+-      </item>
+-      <item row="1" column="1" >
+-       <widget class="KUrlComboRequester" name="folderRequester" />
+-      </item>
+-      <item row="3" column="0" >
+-       <widget class="QLabel" name="label_3" >
+-        <property name="text" >
+-         <string>Transfer Group</string>
+-        </property>
+-       </widget>
+-      </item>
+-      <item row="3" column="1" >
+-       <widget class="QComboBox" name="groupComboBox" >
+-        <property name="minimumSize" >
+-         <size>
+-          <width>250</width>
+-          <height>0</height>
+-         </size>
+-        </property>
+-       </widget>
+-      </item>
+-      <item row="4" column="1" >
+-       <spacer>
+-        <property name="orientation" >
+-         <enum>Qt::Vertical</enum>
+-        </property>
+-        <property name="sizeHint" >
+-         <size>
+-          <width>20</width>
+-          <height>40</height>
+-         </size>
+-        </property>
+-       </spacer>
+-      </item>
+-      <item row="2" column="1" >
+-       <widget class="QCheckBox" name="defaultFolderButton" >
+-        <property name="text" >
+-         <string>Set as default folder</string>
+-        </property>
+-       </widget>
+-      </item>
+-     </layout>
+-    </item>
+-   </layout>
+-  </widget>
++  <property name="minimumSize" >
++   <size>
++    <width>400</width>
++    <height>200</height>
++   </size>
++  </property>
++  <layout class="QGridLayout" >
++   <item row="0" column="0" >
++    <layout class="QVBoxLayout" >
++     <item>
++      <widget class="KTitleWidget" native="1" name="titleWidget" >
++       <property name="text" stdset="0" >
++        <string>New Download</string>
++       </property>
++      </widget>
++     </item>
++     <item>
++      <layout class="QGridLayout" >
++       <property name="horizontalSpacing" >
++        <number>2</number>
++       </property>
++       <property name="verticalSpacing" >
++        <number>2</number>
++       </property>
++       <item row="0" column="0" >
++        <widget class="QLabel" name="label" >
++         <property name="text" >
++          <string>Url</string>
++         </property>
++         <property name="alignment" >
++          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
++         </property>
++        </widget>
++       </item>
++       <item row="1" column="0" >
++        <widget class="QLabel" name="label_2" >
++         <property name="text" >
++          <string>Download Folder</string>
++         </property>
++        </widget>
++       </item>
++       <item row="1" column="1" >
++        <widget class="KUrlComboRequester" native="1" name="folderRequester" />
++       </item>
++       <item row="3" column="0" >
++        <widget class="QLabel" name="label_3" >
++         <property name="text" >
++          <string>Transfer Group</string>
++         </property>
++        </widget>
++       </item>
++       <item row="3" column="1" >
++        <widget class="QComboBox" name="groupComboBox" >
++         <property name="minimumSize" >
++          <size>
++           <width>250</width>
++           <height>0</height>
++          </size>
++         </property>
++        </widget>
++       </item>
++       <item row="4" column="1" >
++        <spacer>
++         <property name="orientation" >
++          <enum>Qt::Vertical</enum>
++         </property>
++         <property name="sizeHint" >
++          <size>
++           <width>20</width>
++           <height>40</height>
++          </size>
++         </property>
++        </spacer>
++       </item>
++       <item row="2" column="1" >
++        <widget class="QCheckBox" name="defaultFolderButton" >
++         <property name="text" >
++          <string>Set as default folder</string>
++         </property>
++        </widget>
++       </item>
++      </layout>
++     </item>
++    </layout>
++   </item>
++  </layout>
+  </widget>
+  <customwidgets>
+   <customwidget>
+@@ -104,7 +104,7 @@
+   </customwidget>
+   <customwidget>
+    <class>KUrlComboRequester</class>
+-   <extends>KUrlRequester</extends>
++   <extends>QWidget</extends>
+    <header>kurlrequester.h</header>
+   </customwidget>
+  </customwidgets>
+--- filesharing/advanced/kcm_sambaconf/kcmsambaconf.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ filesharing/advanced/kcm_sambaconf/kcmsambaconf.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 kcmsambaconf
+ Icon=kcmsambaconf
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ 
+ Terminal=false
+@@ -61,38 +60,38 @@
+ Comment[zh_CN]=配置 Microsoft Windows 共享的模块
+ Comment[zh_HK]=設定 Microsoft Windows 分享資源的模組
+ Comment[zh_TW]=設定 Microsoft Windows 分享的模組
+-Keywords=KcmSambaConf,kcmsambaconf,samba,windows,share
+-Keywords[bg]=Keywords=Самба, Уиндоус, мрежа, споделяне, KcmSambaConf, kcmsambaconf, samba, windows, share
+-Keywords[ca]=KcmSambaConf,kcmsambaconf,samba,windows,share,recurs compartit
+-Keywords[cs]=Samba,nastavení,windows,sdílení
+-Keywords[de]=KcmSambaConf,kcmsambaconf,samba,windows,freigabe,share
+-Keywords[et]=KcmSambaConf,kcmsambaconf,samba,windows,jagatud ressursid
+-Keywords[eu]=KcmSambaConf,kcmsambaconf,samba,windows,partekatze
+-Keywords[fa]=KcmSambaConf، kcmsambaconf، samba، ویندوز، مشترک
+-Keywords[fi]=KcmSambaConf,kcmsambaconf,samba,windows,jako
+-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[ja]=KcmSambaConf,kcmsambaconf,samba,windows,共有
+-Keywords[km]=KcmSambaConf,kcmsambaconf,samba,បង្អួច,ចែក​រំលែក
+-Keywords[ko]=KcmSambaConf,kcmsambaconf,samba,윈도,windows,공유
+-Keywords[lt]=KcmSambaConf,kcmsambaconf,samba,windows,share,dalinimasis,dalintis,pasidalinti
+-Keywords[nb]=KcmSambaConf,kcmsambaconf,samba,windows,delt,ressurs
+-Keywords[nds]=KcmSambaConf,kcmsambaconf,samba,windows,share,freegaav,freegaven
+-Keywords[ne]=KcmSambaConf,kcmsambaconf,साम्बा,विन्डोज,साझेदारी
+-Keywords[nl]=KcmSambaConf,kcmsambaconf,samba,windows netwerk,share,gedeelde mappen,gedeelde printers
+-Keywords[nn]=KcmSambaConf,kcmsambaconf,samba,Windows,delt ressurs
+-Keywords[pl]=KcmSambaConf,kcmsambaconf,samba,Samba,serwer,SMB,smb,windows,udział,dysk sieciowy
+-Keywords[pt]=KcmSambaConf,kcmsambaconf,Samba,Windows,partilha
+-Keywords[sl]=KcmSambaConf,kcmsambaconf,Samba,samba,souporaba,deljeno
+-Keywords[sv]=IM SAMBA-inställning,IM samba-inställning,Windows,dela
+-Keywords[uk]=KcmSambaConf,kcmsambaconf,samba,windows,share,спільні ресурси
+-Keywords[vi]=KcmSambaConf,kcmsambaconf,samba,windows,share, chia sẻ
+-Keywords[x-test]=xxKcmSambaConf,kcmsambaconf,samba,windows,sharexx
+-Keywords[zh_CN]=KcmSambaConf,kcmsambaconf,samba,windows,share,共享
++X-KDE-Keywords=KcmSambaConf,kcmsambaconf,samba,windows,share
++X-KDE-Keywords[bg]=Keywords=Самба, Уиндоус, мрежа, споделяне, KcmSambaConf, kcmsambaconf, samba, windows, share
++X-KDE-Keywords[ca]=KcmSambaConf,kcmsambaconf,samba,windows,share,recurs compartit
++X-KDE-Keywords[cs]=Samba,nastavení,windows,sdílení
++X-KDE-Keywords[de]=KcmSambaConf,kcmsambaconf,samba,windows,freigabe,share
++X-KDE-Keywords[et]=KcmSambaConf,kcmsambaconf,samba,windows,jagatud ressursid
++X-KDE-Keywords[eu]=KcmSambaConf,kcmsambaconf,samba,windows,partekatze
++X-KDE-Keywords[fa]=KcmSambaConf، kcmsambaconf، samba، ویندوز، مشترک
++X-KDE-Keywords[fi]=KcmSambaConf,kcmsambaconf,samba,windows,jako
++X-KDE-Keywords[fr]=KcmSambaConf,kcmsambaconf,samba,windows,partage
++X-KDE-Keywords[gl]=KcmSambaConf,kcmsambaconf,samba,widows,compartir
++X-KDE-Keywords[he]=KcmSambaConf,kcmsambaconf,samba,windows,share, סמבה, חלונות, שיתוף, שיתופי חלונות
++X-KDE-Keywords[hu]=KcmSambaConf,kcmsambaconf,samba,windows,megosztás
++X-KDE-Keywords[is]=KcmSambaConf,kcmsambaconf,samba,windows,sameign
++X-KDE-Keywords[it]=KcmSambaConf,kcmsambaconf,samba,windows,condivisione
++X-KDE-Keywords[ja]=KcmSambaConf,kcmsambaconf,samba,windows,共有
++X-KDE-Keywords[km]=KcmSambaConf,kcmsambaconf,samba,បង្អួច,ចែក​រំលែក
++X-KDE-Keywords[ko]=KcmSambaConf,kcmsambaconf,samba,윈도,windows,공유
++X-KDE-Keywords[lt]=KcmSambaConf,kcmsambaconf,samba,windows,share,dalinimasis,dalintis,pasidalinti
++X-KDE-Keywords[nb]=KcmSambaConf,kcmsambaconf,samba,windows,delt,ressurs
++X-KDE-Keywords[nds]=KcmSambaConf,kcmsambaconf,samba,windows,share,freegaav,freegaven
++X-KDE-Keywords[ne]=KcmSambaConf,kcmsambaconf,साम्बा,विन्डोज,साझेदारी
++X-KDE-Keywords[nl]=KcmSambaConf,kcmsambaconf,samba,windows netwerk,share,gedeelde mappen,gedeelde printers
++X-KDE-Keywords[nn]=KcmSambaConf,kcmsambaconf,samba,Windows,delt ressurs
++X-KDE-Keywords[pl]=KcmSambaConf,kcmsambaconf,samba,Samba,serwer,SMB,smb,windows,udział,dysk sieciowy
++X-KDE-Keywords[pt]=KcmSambaConf,kcmsambaconf,Samba,Windows,partilha
++X-KDE-Keywords[sl]=KcmSambaConf,kcmsambaconf,Samba,samba,souporaba,deljeno
++X-KDE-Keywords[sv]=IM SAMBA-inställning,IM samba-inställning,Windows,dela
++X-KDE-Keywords[uk]=KcmSambaConf,kcmsambaconf,samba,windows,share,спільні ресурси
++X-KDE-Keywords[vi]=KcmSambaConf,kcmsambaconf,samba,windows,share, chia sẻ
++X-KDE-Keywords[x-test]=xxKcmSambaConf,kcmsambaconf,samba,windows,sharexx
++X-KDE-Keywords[zh_CN]=KcmSambaConf,kcmsambaconf,samba,windows,share,共享
+ Name=Samba
+ Name[bg]=Самба
+ Name[he]=סמבה
+--- filesharing/advanced/propsdlgplugin/fileshare_propsdlgplugin.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ filesharing/advanced/propsdlgplugin/fileshare_propsdlgplugin.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Icon=fileshare
+ Name=Fileshare Konqueror Directory Properties Page
+@@ -98,4 +97,4 @@
+ Comment[zh_TW]=Konqueror 屬性對話框外掛程式,用於在本地端網路上分享目錄
+ X-KDE-Library=fileshare_propsdlgplugin
+ X-KDE-Protocol=file
+-ServiceTypes=KPropertiesDialog/Plugin,inode/directory
++X-KDE-ServiceTypes=KPropertiesDialog/Plugin,inode/directory
+--- filesharing/simple/fileshare.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ filesharing/simple/fileshare.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,9 +1,8 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Exec=kcmshell4 fileshare
+ Icon=share
+ Type=Service
+-ServiceTypes=KCModule
++X-KDE-ServiceTypes=KCModule
+ 
+ X-KDE-Library=kcm_fileshare
+ X-KDE-ParentApp=kcontrol
+@@ -114,51 +113,51 @@
+ Comment[zh_HK]=啟用或停用檔案分享
+ Comment[zh_TW]=開啟或關閉檔案分享
+ 
+-Keywords=Share
+-Keywords[bg]=Share,споделяне
+-Keywords[br]=Rannañ
+-Keywords[ca]=Compartit
+-Keywords[cs]=sdílení
+-Keywords[da]=Del
+-Keywords[de]=Freigabe
+-Keywords[el]=Κοινόχρηστο
+-Keywords[es]=Compartir
+-Keywords[et]=Jagamine
+-Keywords[fa]=مشترک
+-Keywords[fi]=Jakaminen,Jako
+-Keywords[fr]=partage
+-Keywords[gl]=Compartir
+-Keywords[he]=שיתוף, share
+-Keywords[hu]=Megosztás
+-Keywords[is]=Deild
+-Keywords[it]=Condivisione
+-Keywords[ja]=共有
+-Keywords[km]=ការ​ចែក​រំ​លែក
+-Keywords[ko]=공유
+-Keywords[lt]=Share,dalinimasis,dalintis,pasidalinti
+-Keywords[mk]=Делена
+-Keywords[nb]=Dele
+-Keywords[nds]=Delen,Freegaav,Freegaven
+-Keywords[ne]=साझेदार
+-Keywords[nl]=delen
+-Keywords[nn]=deling
+-Keywords[oc]=Partejar
+-Keywords[pa]=ਸਾਂਝ
+-Keywords[pl]=współdzielenie,pliki
+-Keywords[pt]=Partilhar
+-Keywords[pt_BR]=compartilhamento de arquivos
+-Keywords[ro]=partajare
+-Keywords[ru]=Общий ресурс
+-Keywords[sl]=Souporaba
+-Keywords[sr]=Share,дељење
+-Keywords[sr at latin]=Share,deljenje
+-Keywords[sv]=Dela
+-Keywords[ta]=பகிர்வு
+-Keywords[tg]=Муштаракан доштан
+-Keywords[tr]=Paylaş
+-Keywords[uk]=Спільний ресурс
+-Keywords[vi]=Chia sẻ
+-Keywords[x-test]=xxSharexx
+-Keywords[zh_CN]=Share,共享
++X-KDE-Keywords=Share
++X-KDE-Keywords[bg]=Share,споделяне
++X-KDE-Keywords[br]=Rannañ
++X-KDE-Keywords[ca]=Compartit
++X-KDE-Keywords[cs]=sdílení
++X-KDE-Keywords[da]=Del
++X-KDE-Keywords[de]=Freigabe
++X-KDE-Keywords[el]=Κοινόχρηστο
++X-KDE-Keywords[es]=Compartir
++X-KDE-Keywords[et]=Jagamine
++X-KDE-Keywords[fa]=مشترک
++X-KDE-Keywords[fi]=Jakaminen,Jako
++X-KDE-Keywords[fr]=partage
++X-KDE-Keywords[gl]=Compartir
++X-KDE-Keywords[he]=שיתוף, share
++X-KDE-Keywords[hu]=Megosztás
++X-KDE-Keywords[is]=Deild
++X-KDE-Keywords[it]=Condivisione
++X-KDE-Keywords[ja]=共有
++X-KDE-Keywords[km]=ការ​ចែក​រំ​លែក
++X-KDE-Keywords[ko]=공유
++X-KDE-Keywords[lt]=Share,dalinimasis,dalintis,pasidalinti
++X-KDE-Keywords[mk]=Делена
++X-KDE-Keywords[nb]=Dele
++X-KDE-Keywords[nds]=Delen,Freegaav,Freegaven
++X-KDE-Keywords[ne]=साझेदार
++X-KDE-Keywords[nl]=delen
++X-KDE-Keywords[nn]=deling
++X-KDE-Keywords[oc]=Partejar
++X-KDE-Keywords[pa]=ਸਾਂਝ
++X-KDE-Keywords[pl]=współdzielenie,pliki
++X-KDE-Keywords[pt]=Partilhar
++X-KDE-Keywords[pt_BR]=compartilhamento de arquivos
++X-KDE-Keywords[ro]=partajare
++X-KDE-Keywords[ru]=Общий ресурс
++X-KDE-Keywords[sl]=Souporaba
++X-KDE-Keywords[sr]=Share,дељење
++X-KDE-Keywords[sr at latin]=Share,deljenje
++X-KDE-Keywords[sv]=Dela
++X-KDE-Keywords[ta]=பகிர்வு
++X-KDE-Keywords[tg]=Муштаракан доштан
++X-KDE-Keywords[tr]=Paylaş
++X-KDE-Keywords[uk]=Спільний ресурс
++X-KDE-Keywords[vi]=Chia sẻ
++X-KDE-Keywords[x-test]=xxSharexx
++X-KDE-Keywords[zh_CN]=Share,共享
+ 
+ Categories=Qt;KDE;X-KDE-settings-network;Settings;
+--- doc/krdc/index.docbook	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ doc/krdc/index.docbook	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -183,7 +183,7 @@
+ <sect2><title>Server name entry</title>
+ <para>
+ If you know the host name (or IP address) of the server you want to
+-connect to, you can enter it directly into the <guilabel>Addresss:</guilabel> input.
++connect to, you can enter it directly into the <guilabel>Address:</guilabel> input.
+ </para>
+ 
+ <para>
+--- kfile-plugins/torrent/kfile_torrent.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kfile-plugins/torrent/kfile_torrent.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Type=Service
+ Name=Bit Torrent Info
+ Name[br]=Titouriñ diwar-benn Bit Torrent
+@@ -47,7 +46,7 @@
+ Name[zh_CN]=BitTorrent 信息
+ Name[zh_HK]=Bit Torrent 資訊
+ Name[zh_TW]=Bit Torrent 資訊
+-ServiceTypes=KFilePlugin
++X-KDE-ServiceTypes=KFilePlugin
+ X-KDE-Library=kfile_torrent
+ # change MimeType here! (example: inode/directory)
+ MimeType=application/x-bittorrent;
+--- kppp/Kppp.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kppp/Kppp.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ GenericName=Internet Dial-Up Tool
+ GenericName[bg]=Включване в Интернет
+ GenericName[ca]=Eina per a la connexió telefònica a Internet
+@@ -60,7 +59,6 @@
+ X-DocPath=kppp/index.html
+ Exec=kppp
+ Icon=kppp
+-Path=
+ Type=Application
+ Terminal=false
+ X-KDE-StartupNotify=true
+--- kppp/logview/kppplogview.desktop	(.../tags/KDE/3.96/kdenetwork)	(revision 740225)
++++ kppp/logview/kppplogview.desktop	(.../trunk/KDE/kdenetwork)	(revision 740225)
+@@ -1,5 +1,4 @@
+ [Desktop Entry]
+-Encoding=UTF-8
+ Name=KPPPLogview
+ Name[de]=KPPP-Protokoll-Betrachter
+ Name[el]=Προβολή καταγραφής KPPP
+@@ -67,7 +66,6 @@
+ MimeType=
+ Exec=kppplogview
+ Icon=kppp
+-Path=
+ Type=Application
+ Terminal=false
+ X-DBUS-StartupType=Multi

Added: branches/kde4/packages/kdenetwork/debian/patches/series
===================================================================
--- branches/kde4/packages/kdenetwork/debian/patches/series	                        (rev 0)
+++ branches/kde4/packages/kdenetwork/debian/patches/series	2007-11-22 21:50:09 UTC (rev 8050)
@@ -0,0 +1 @@
+01_kdenetwork_branch_r740225.diff -p0




More information about the pkg-kde-commits mailing list