Git commit a28120d8a235f9c50f9a9acfd810e69c224b081b by Eike Hein.
Committed on 12/07/2014 at 18:07.
Pushed by hein into branch 'frameworks'.

Rip out address book integration support.

This will be reimplemented using KPeople in the future, none of
the current code is really worth preserving.

M  +1    -2    CMakeLists.txt
D  +0    -2    data/images/icons/README-kimproxy
D  +-    --    data/images/icons/hi16-action-kimproxyaway.png
D  +-    --    data/images/icons/hi16-action-kimproxyoffline.png
D  +-    --    data/images/icons/hi16-action-kimproxyonline.png
D  +-    --    data/images/icons/hi22-action-kimproxyaway.png
D  +-    --    data/images/icons/hi22-action-kimproxyoffline.png
D  +-    --    data/images/icons/hi22-action-kimproxyonline.png
D  +-    --    data/images/icons/hi32-action-kimproxyaway.png
D  +-    --    data/images/icons/hi32-action-kimproxyoffline.png
D  +-    --    data/images/icons/hi32-action-kimproxyonline.png
D  +-    --    data/images/icons/hisc-action-kimproxyaway.svgz
D  +-    --    data/images/icons/hisc-action-kimproxyoffline.svgz
D  +-    --    data/images/icons/hisc-action-kimproxyonline.svgz
M  +20   -158  doc/index.docbook
D  +-    --    doc/kaddressbook.png
D  +-    --    doc/kimproxy_create_screen2.png
D  +-    --    doc/kimproxy_create_screen_co.png
M  +3    -13   src/CMakeLists.txt
M  +0    -2    src/application.cpp
M  +1    -1    src/application.h
M  +0    -3    src/irc/channel.cpp
M  +0    -2    src/irc/channelnick.cpp
M  +1    -9    src/irc/nick.cpp
M  +1    -142  src/irc/nickinfo.cpp
M  +3    -13   src/irc/nickinfo.h
M  +14   -221  src/irc/nicksonline.cpp
M  +3    -33   src/irc/nicksonline.h
M  +0    -1    src/irc/outputfilter.cpp
M  +1    -56   src/irc/query.cpp
M  +0    -2    src/irc/query.h
M  +2    -27   src/irc/server.cpp
M  +2    -16   src/irc/server.h
M  +0    -118  src/irc/serverison.cpp
M  +4    -40   src/irc/serverison.h
D  +0    -337  src/linkaddressbook/addressbook.cpp
D  +0    -103  src/linkaddressbook/addressbook.h
D  +0    -517  src/linkaddressbook/addressbook_base.cpp
D  +0    -125  src/linkaddressbook/addressbook_base.h
D  +0    -58   src/linkaddressbook/addresseeitem.cpp
D  +0    -65   src/linkaddressbook/addresseeitem.h
D  +0    -192  src/linkaddressbook/kimiface.h
D  +0    -168  src/linkaddressbook/linkaddressbookui.cpp
D  +0    -64   src/linkaddressbook/linkaddressbookui.h
D  +0    -150  src/linkaddressbook/linkaddressbookui_base.ui
M  +1    -0    src/main.cpp
M  +0    -10   src/mainwindow.cpp
M  +0    -3    src/mainwindow.h
M  +0    -12   src/viewer/images.cpp
M  +0    -10   src/viewer/images.h
M  +0    -199  src/viewer/irccontextmenus.cpp
M  +0    -8    src/viewer/irccontextmenus.h

http://commits.kde.org/konversation/a28120d8a235f9c50f9a9acfd810e69c224b081b

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 15aba0c..9009853 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,7 +6,6 @@ cmake_minimum_required(VERSION 2.6.2)
 set(KDE_MIN_VERSION "4.7.0")
 #atm this gets us FindQt4 and FindX11 (provided that the default cmake FindQt4 
doesn't get used)
 find_package(KDE4 ${KDE_MIN_VERSION} REQUIRED)
-find_package(KdepimLibs REQUIRED)
 include(KDE4Defaults)
 include(MacroLibrary)
 include(CheckIncludeFile)
@@ -20,7 +19,7 @@ string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_TOLOWER)
     add_definitions (-DQT_STRICT_ITERATORS)
 endif()
 
-include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} 
${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} ${KDEPIMLIBS_INCLUDE_DIRS})
+include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} 
${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES})
 
 macro_optional_find_package(QCA2)
 macro_bool_to_01(QCA2_FOUND HAVE_QCA2)
diff --git a/data/images/icons/README-kimproxy 
b/data/images/icons/README-kimproxy
deleted file mode 100644
index b573f2d..0000000
--- a/data/images/icons/README-kimproxy
+++ /dev/null
@@ -1,2 +0,0 @@
-These are the icons that are shown in kaddressbook, kmail etc for konversation 
contacts.
-This icons are provided via the kimiface dcop interface.
diff --git a/data/images/icons/hi16-action-kimproxyaway.png 
b/data/images/icons/hi16-action-kimproxyaway.png
deleted file mode 100644
index 5b722ce..0000000
Binary files a/data/images/icons/hi16-action-kimproxyaway.png and /dev/null 
differ
diff --git a/data/images/icons/hi16-action-kimproxyoffline.png 
b/data/images/icons/hi16-action-kimproxyoffline.png
deleted file mode 100644
index d120047..0000000
Binary files a/data/images/icons/hi16-action-kimproxyoffline.png and /dev/null 
differ
diff --git a/data/images/icons/hi16-action-kimproxyonline.png 
b/data/images/icons/hi16-action-kimproxyonline.png
deleted file mode 100644
index 911eaac..0000000
Binary files a/data/images/icons/hi16-action-kimproxyonline.png and /dev/null 
differ
diff --git a/data/images/icons/hi22-action-kimproxyaway.png 
b/data/images/icons/hi22-action-kimproxyaway.png
deleted file mode 100644
index 9548953..0000000
Binary files a/data/images/icons/hi22-action-kimproxyaway.png and /dev/null 
differ
diff --git a/data/images/icons/hi22-action-kimproxyoffline.png 
b/data/images/icons/hi22-action-kimproxyoffline.png
deleted file mode 100644
index 1e76853..0000000
Binary files a/data/images/icons/hi22-action-kimproxyoffline.png and /dev/null 
differ
diff --git a/data/images/icons/hi22-action-kimproxyonline.png 
b/data/images/icons/hi22-action-kimproxyonline.png
deleted file mode 100644
index 7bceadd..0000000
Binary files a/data/images/icons/hi22-action-kimproxyonline.png and /dev/null 
differ
diff --git a/data/images/icons/hi32-action-kimproxyaway.png 
b/data/images/icons/hi32-action-kimproxyaway.png
deleted file mode 100644
index bd8048e..0000000
Binary files a/data/images/icons/hi32-action-kimproxyaway.png and /dev/null 
differ
diff --git a/data/images/icons/hi32-action-kimproxyoffline.png 
b/data/images/icons/hi32-action-kimproxyoffline.png
deleted file mode 100644
index 3849c9c..0000000
Binary files a/data/images/icons/hi32-action-kimproxyoffline.png and /dev/null 
differ
diff --git a/data/images/icons/hi32-action-kimproxyonline.png 
b/data/images/icons/hi32-action-kimproxyonline.png
deleted file mode 100644
index 177f8bb..0000000
Binary files a/data/images/icons/hi32-action-kimproxyonline.png and /dev/null 
differ
diff --git a/data/images/icons/hisc-action-kimproxyaway.svgz 
b/data/images/icons/hisc-action-kimproxyaway.svgz
deleted file mode 100644
index 473befc..0000000
Binary files a/data/images/icons/hisc-action-kimproxyaway.svgz and /dev/null 
differ
diff --git a/data/images/icons/hisc-action-kimproxyoffline.svgz 
b/data/images/icons/hisc-action-kimproxyoffline.svgz
deleted file mode 100644
index b983517..0000000
Binary files a/data/images/icons/hisc-action-kimproxyoffline.svgz and /dev/null 
differ
diff --git a/data/images/icons/hisc-action-kimproxyonline.svgz 
b/data/images/icons/hisc-action-kimproxyonline.svgz
deleted file mode 100644
index ffb4f42..0000000
Binary files a/data/images/icons/hisc-action-kimproxyonline.svgz and /dev/null 
differ
diff --git a/doc/index.docbook b/doc/index.docbook
index 4542980..c176420 100644
--- a/doc/index.docbook
+++ b/doc/index.docbook
@@ -142,7 +142,6 @@ See <link linkend="color-msgs">Sending colorful 
messages</link> for more informa
 See <link linkend="nickthemes">Configuring &i18n-nickname; themes</link> for 
more information.
 See <link linkend="quick-buttons">Configuring Quick Buttons</link> for more 
information
 See <link linkend="dcc">Sending and receiving files</link> for more information
-See <link linkend="linkaddressbook">Integrating with &kaddressbook;</link> for 
more information
 See <link linkend="urlcatcher">Capturing &URL;s from messages.</link> for more 
information
 See <link linkend="webbrowser">Setting your preferred web browser.</link> for 
more information
 See <link linkend="rememberlines">Marking Channel and Query Logs</link> for 
more information
@@ -187,13 +186,12 @@ regular expression pattern.</para></listitem>
 <listitem><para>Automatic logging and log management.</para></listitem>
 <listitem><para>Marking of lines in logs.</para></listitem>
 <listitem><para>Scripting.</para></listitem>
-<listitem><para>Integration with &kaddressbook;.</para></listitem>
 </itemizedlist>
 </para>
 
 <para>The &konversation; website is
 <ulink url="&konviwebsite;">&konviwebsite;</ulink>.
-Further information like a FAQ and tips and tricks you find in the 
+Further information like a FAQ and tips and tricks you find in the
 <ulink url="http://konversation.kde.org/wiki/Main_Page";>&konversation; 
Wiki</ulink>.
 </para>
 
@@ -437,9 +435,9 @@ If you don't know what this is, leave these boxes 
blank.</para></callout>
                </mediaobjectco>
        </screenshot>
 </para>
-<!-- Automatik Away group missing 
-If you check this box, Konversation will automatically set all connections 
-using this Identity away when the screensaver starts or after a period of 
+<!-- Automatik Away group missing
+If you check this box, Konversation will automatically set all connections
+using this Identity away when the screensaver starts or after a period of
 user inactivity configured below.
 -->
 <para>
@@ -643,7 +641,7 @@ the <guilabel>New Network</guilabel> screen appears.</para>
 
 <para>
 <calloutlist>
-<callout arearefs="pt-addnetwork-1"><para>Enter the 
+<callout arearefs="pt-addnetwork-1"><para>Enter the
 <guilabel>Network name</guilabel> here.  You may create as many entries
 in the <guilabel>Server List</guilabel> screen with the same
 <guilabel>Network</guilabel> as you like.</para></callout>
@@ -690,9 +688,7 @@ channel.  You may also change the order the channels are 
joined.
 
 <note><para>Avoid mixing servers on different &irc; networks under the same
 <guilabel>Network</guilabel>.  Avoid entering the same server under
-two different <guilabel>Network</guilabel>s.  Otherwise, &konversation;
-<link linkend="linkaddressbook">integration with your address book</link> and
-<link linkend="nicksonline">monitoring of online &i18n-nickname;s</link> will 
not function
+two different <guilabel>Network</guilabel>s. Otherwise, <link 
linkend="nicksonline">monitoring of online &i18n-nickname;s</link> will not 
function
 correctly.</para>
 </note>
 
@@ -896,7 +892,7 @@ To send a message to everyone in the channel, type the 
message here and press &E
        <guisubmenu>Settings</guisubmenu>
        <guisubmenu>Configure Konversation</guisubmenu>
 </menuchoice> from the main menu, expand <guilabel>Behavior</guilabel>,
-click on <guilabel>General</guilabel>, and select a 
+click on <guilabel>General</guilabel>, and select a
 <guilabel>Completion mode</guilabel>.
  </para>
 
@@ -921,12 +917,12 @@ or use the mouse wheel to cycle through the tabs.
        <guisubmenu>Settings</guisubmenu>
        <guisubmenu>Configure Konversation</guisubmenu>
 </menuchoice> from the main menu, expand <guilabel>Interface</guilabel>,
-click on <guilabel>Tabs</guilabel> or expand 
<guilabel>Notifications</guilabel> and 
+click on <guilabel>Tabs</guilabel> or expand 
<guilabel>Notifications</guilabel> and
 click on <guilabel>Tabs</guilabel>.
 </para>
 
 </callout>
-<!-- 
+<!--
 Settings->Configure Konversation->Notifications->Tabs->Use colored LEDs needs 
to be activated
 -->
 <callout arearefs="pt-channeltour-3"><para>These &led;s will blink when there 
is something you haven't seen in that tab.
@@ -1041,7 +1037,6 @@ channel admin <!-- (see TODO) -->
 <para>
 Click with the &RMB; on any &i18n-nickname; to display a context menu of 
operations you can perform with that &i18n-nickname;.
 For example, you can <link linkend="dcc">send a file</link> to the 
&i18n-nickname;.
-This is also the place where you can <link linkend="linkaddressbook">associate 
a &i18n-nickname; to a contact in your address book.</link>
 </para>
 
 <para>To hide the <interface>Nick Panel</interface>, choose
@@ -1303,7 +1298,7 @@ To configure notifications, choose
 <para>Repeat by selecting another event and checking the notifications 
desired.  When you've configured all the desired notifications, click the 
<guibutton>OK</guibutton> button.</para>
 
 <para>
-Once you've set up your notifications, you can enable or disable all 
notifications using 
+Once you've set up your notifications, you can enable or disable all 
notifications using
 <menuchoice>
        <guisubmenu>Window</guisubmenu>
        <guisubmenu>Enable Notifications</guisubmenu>
@@ -1326,9 +1321,7 @@ in a message using &konversation;'s
 or not.
 </para>
 
-<para>You can associate online &i18n-nickname;s with contact entries in your 
address book.
-When you do this, the &i18n-nickname; and &irc; network where the 
&i18n-nickname; is online are
-entered into the contact in the address book.  The &irc; network is recorded 
because &i18n-nickname;s
+<para>The &irc; network is recorded because &i18n-nickname;s
 are unique across a single &irc; network.  The &i18n-nickname; in two 
different &irc; networks
 is not necessarily the same person, but the same &i18n-nickname; on two 
different servers
 within the same &irc; network generally is the same person.</para>
@@ -1337,9 +1330,6 @@ within the same &irc; network generally is the same 
person.</para>
 for all servers in the same &irc; network, when <link linkend="serverlist">
 defining networks, servers, and auto join channels</link>.</para></note>
 
-<para>You can also define &i18n-nickname;s you want watched that are not in 
your address book.
-In this case also, each &i18n-nickname; has an associated &irc; network.  See 
below.</para>
-
 <para>To activate the &i18n-nickname; watching feature, choose
 <menuchoice>
        <guisubmenu>Window</guisubmenu>
@@ -1374,8 +1364,7 @@ In this case also, each &i18n-nickname; has an associated 
&irc; network.  See be
 
 <para>
 <calloutlist>
-<callout arearefs="pt-nicksonline-1"><para>The &i18n-nickname;s in your watch 
list and
-also the &i18n-nickname;s associated with entries in your address book are 
listed here.
+<callout arearefs="pt-nicksonline-1"><para>The &i18n-nickname;s in your watch 
list are listed here.
 They are listed under their associated &irc; network.  If no &i18n-nickname;s 
are listed,
 either you haven't specified any &i18n-nickname;s to watch, or you need to 
activate
 the &i18n-nickname; watching feature (see below).  Expand each online 
&i18n-nickname; to see a list
@@ -1394,21 +1383,11 @@ all &i18n-nickname;s have information.
 of the &irc; networks you are connected to are listed in the 
<guilabel>Offline</guilabel>
 part of the listing.
 </para></callout-->
-<!--callout arearefs="pt-nicksonline-4"><para>Nicknames that are associated 
with
-a contact entry in your address book have this icon
-(<inlinemediaobject><imageobject><imagedata fileref="kaddressbook.png" 
format="PNG"  /></imageobject></inlinemediaobject>) next to their information.
-</para></callout-->
-<callout arearefs="pt-nicksonline-3"><para>Use these buttons to associate a 
&i18n-nickname;
-with a contact in your address book, remove an association, or open the 
address book
-to edit the contact information.  See the
-<ulink url="help:kaddressbook">&kaddressbook; Handbook</ulink> for additional 
instructions
-on using the &kde; address book.
-</para></callout>
 </calloutlist>
 </para>
 
 <para>
-To add a single &i18n-nickname; to watch, open the context menu in the 
<guilabel>Nick List</guilabel> 
+To add a single &i18n-nickname; to watch, open the context menu in the 
<guilabel>Nick List</guilabel>
 by clicking with the &RMB; on a &i18n-nickname; and select <guilabel>Add to 
Watched Nicks</guilabel>.
 If you want to add several &i18n-nickname;s choose
 <menuchoice>
@@ -1877,7 +1856,7 @@ Choose
                        <guilabel>Preparing</guilabel>
                </term>
                <listitem>
-                       <para>A receiving transfer is checking for resumable 
files or a sending 
+                       <para>A receiving transfer is checking for resumable 
files or a sending
                          transfer is acquiring the data to send.
                        </para>
                </listitem>
@@ -2000,123 +1979,6 @@ See <link linkend="faq">Questions and Answers</link>.
 
 <!-- =================================================================== -->
 
-<sect1 id="linkaddressbook">
-<title>Integrating with &kaddressbook;</title>
-
-<para>You can associate any &i18n-nickname; with a contact in &kaddressbook;.
-Once you've done this, &konversation; will display the contact real name
-in parenthesis after the &i18n-nickname; in the <interface>Nick 
Panel</interface>.
-</para>
-
-<para>
-To associate a &i18n-nickname; with a contact in &kaddressbook;,
-click with the &RMB; on the &i18n-nickname; of the person in the
-<interface>Nick Panel</interface> of the <link 
linkend="channel-screen-tour">Main</link> screen.  Choose
-<menuchoice>
-       <guisubmenu>Whois</guisubmenu>
-</menuchoice>
-to <action>display information to help you determine the user's real 
name</action>.
-Next, click with the &RMB; on the &i18n-nickname; of the person again and 
choose
-<menuchoice>
-       <guisubmenu>Address Book Associations</guisubmenu>
-</menuchoice>.
-  <action>A submenu appears.</action>  If the &i18n-nickname; is not already 
associated with a contact,
-choose
-<menuchoice>
-       <guisubmenu>Create New Contact</guisubmenu>
-</menuchoice>.
-  <action>The <guilabel>Edit Contact</guilabel> screen appears.</action>
-</para>
-
-<para>
-<screenshot>
-<screeninfo>The Edit Contact screen.</screeninfo>
-       <mediaobjectco>
-               <imageobjectco>
-                       <areaspec units="calspair">
-                               <area id="pt-kimproxy-create-1" coords="1 1"/>
-                               <area id="pt-kimproxy-create-2" coords="1 1"/>
-                               <area id="pt-kimproxy-create-3" coords="1 1"/>
-                       </areaspec>
-                       <imageobject>
-                               <imagedata 
fileref="kimproxy_create_screen_co.png" format="PNG"/>
-                       </imageobject>
-               </imageobjectco>
-               <textobject>
-                       <phrase>The Edit Contact screen.</phrase>
-               </textobject>
-       </mediaobjectco>
-</screenshot>
-</para>
-
-<para>
-<calloutlist>
-
-<callout arearefs="pt-kimproxy-create-1"><para>The &i18n-nickname; is 
automatically filled in here.
-If you know the person's real name, replace the &i18n-nickname; with the real 
name.
-</para></callout>
-
-<callout arearefs="pt-kimproxy-create-2">
-<para>Notice that the &i18n-nickname; does <emphasis>not</emphasis> appear 
here.  Instead, ..</para>
-</callout>
-
-<callout arearefs="pt-kimproxy-create-3">
-<para>Click here.  The <guilabel>Edit Instant Messaging Addresses</guilabel> 
window appears.</para></callout>
-
-</calloutlist>
-</para>
-
-<para>
-<screenshot>
-       <screeninfo>The IM Addresses Window.</screeninfo>
-       <mediaobject>
-               <imageobject>
-                       <imagedata fileref="kimproxy_create_screen2.png" 
format="PNG"/>
-               </imageobject>
-               <textobject>
-                       <phrase>The IM Addresses Window.</phrase>
-               </textobject>
-       </mediaobject>
-</screenshot>
-</para>
-
-<!--para>Notice that &konversation; fills in the &i18n-nickname; for you with 
protocol
-<guilabel>IRC</guilabel>.
-</para-->
-
-<para>See the
-<ulink url="help:kaddressbook">&kaddressbook; Handbook</ulink> for additional 
instructions
-on using the &kde; address book.</para>
-
-<para>Fill in any additional information about the &i18n-nickname; you know 
and click
-<guilabel>OK</guilabel>.  The real name of the person will appear inside
-parenthesis next to the &i18n-nickname; in the <guilabel>Nick Panel</guilabel>
-of &konversation;.  The real name also appears when the mouse hovers over
-the &i18n-nickname;.</para>
-
-<para>Once a &i18n-nickname; has been associated with a contact in 
&kaddressbook;,
-you can click with the &RMB; on the &i18n-nickname; of the person in the
-<interface>Nick Panel</interface> and edit the associated contact, associate
-the &i18n-nickname; with a different contact, or delete the association.
-</para>
-
-<para>If you have associated a &i18n-nickname; with a contact, and the user 
changes their &i18n-nickname; while you are running &konversation;,
-it will automatically associate the new &i18n-nickname; with the contact, 
keeping the
-original association as well.</para>
-
-<para>If you associate an &irc; &i18n-nickname; with a contact in
-<ulink url="help:kopete">&kopete;</ulink>,
-the association will also appear in &konversation;, and vice versa.</para>
-
-<para>Note: It is possible to highlight more than one &i18n-nickname; in the
-<interface>Nick Panel</interface>, click with the mouse &RMB;, and perform
-multiple associations.
-</para>
-
-</sect1>
-
-<!-- =================================================================== -->
-
 <sect1 id="urlcatcher">
 <title>Capturing &URL;s from messages</title>
 
@@ -2352,7 +2214,7 @@ display.  Use this button to view the most recent 
messages.</para></callout>
 and the log file on disk.</para></callout>
 <callout arearefs="pt-logviewer-5"><para>Use this box to set the maximum size
 of the scroll.  This setting does take effect only for newly opened log tabs.
-The last changed value of the scroll size will be used on &konversation;'s 
next start.  
+The last changed value of the scroll size will be used on &konversation;'s 
next start.
 Each log file may have a separate setting.</para></callout>
 </calloutlist>
 </para>
@@ -2902,7 +2764,7 @@ CPU: Intel(R) Core 2 Quad  CPU   Q9450  @ 2.66GHz at 2666 
MHz (5333 bogomips), H
 <para>All these scripts have predefined command aliases. In &konversation;'s 
settings dialog
 select <menuchoice><guimenu>Behavior</guimenu> <guimenuitem>Command 
Aliases</guimenuitem></menuchoice>
 to view, add, remove or edit command aliases.
-</para> 
+</para>
 </sect1>
 
 </chapter>
@@ -3310,7 +3172,7 @@ Move Tab Right Alt Shift Right
                                </action>
                        </para></listitem>
        </varlistentry>
-<!-- 
+<!--
 Enable Notifications
 Set Encoding
   -->
@@ -3511,7 +3373,7 @@ How do I have &konversation; automatically mark me as 
away after a period of ina
 Auto-away messages are configured on a per-identity basis. To enable auto-away 
select 
<menuchoice><guimenu>Settings</guimenu><guimenuitem>Identities</guimenuitem></menuchoice>.
 Choose the identity for which you want to enable auto-away from the drop
 down list at the top of the dialog and go to the <guilabel>Away</guilabel> tab.
-Check the <guilabel>Automatic Away</guilabel> option. 
+Check the <guilabel>Automatic Away</guilabel> option.
 </para></answer>
 </qandaentry>
 
@@ -3519,8 +3381,8 @@ Check the <guilabel>Automatic Away</guilabel> option.
 <question>
 <para>How to avoid the <guilabel>Auto Replace</guilabel> feature of the 
<interface>Input Line</interface>?</para>
 </question>
-<answer><para>Use <keycombo action="simul">&Ctrl;&Enter;</keycombo> instead of 
just &Enter; to avoid parsing and 
-automatically replacing the text in the <interface>Input Line</interface> 
according to the options in the settings 
+<answer><para>Use <keycombo action="simul">&Ctrl;&Enter;</keycombo> instead of 
just &Enter; to avoid parsing and
+automatically replacing the text in the <interface>Input Line</interface> 
according to the options in the settings
 dialog page <menuchoice><guimenu>Behavior</guimenu> <guimenuitem>Auto 
Replace</guimenuitem></menuchoice>.
 </para></answer>
 </qandaentry>
diff --git a/doc/kaddressbook.png b/doc/kaddressbook.png
deleted file mode 100644
index c5f4237..0000000
Binary files a/doc/kaddressbook.png and /dev/null differ
diff --git a/doc/kimproxy_create_screen2.png b/doc/kimproxy_create_screen2.png
deleted file mode 100644
index d6d6582..0000000
Binary files a/doc/kimproxy_create_screen2.png and /dev/null differ
diff --git a/doc/kimproxy_create_screen_co.png 
b/doc/kimproxy_create_screen_co.png
deleted file mode 100644
index 92ac211..0000000
Binary files a/doc/kimproxy_create_screen_co.png and /dev/null differ
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ee586ca..b92a9e9 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,6 +1,6 @@
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/config)
-include_directories(config dcc irc viewer linkaddressbook upnp)
+include_directories(config dcc irc viewer upnp)
 
 if (QCA2_FOUND)
     include_directories(${QCA2_INCLUDE_DIR})
@@ -191,16 +191,6 @@ kde4_add_ui_files(dcc_SRCS
     dcc/whiteboardfontchooserui.ui
 )
 
-set(linkaddressbook_SRCS
-    linkaddressbook/linkaddressbookui.cpp
-    linkaddressbook/addressbook_base.cpp
-    linkaddressbook/addressbook.cpp
-    linkaddressbook/addresseeitem.cpp
-)
-
-kde4_add_ui_files(linkaddressbook_SRCS
-    linkaddressbook/linkaddressbookui_base.ui
-)
 if (QCA2_FOUND)
     set(cipher_SRCS
         cipher.cpp)
@@ -213,7 +203,7 @@ set(upnp_SRCS
     upnp/upnprouter.cpp
 )
 
-set (completed_SRCS ${core_SRCS} ${irc_SRCS} ${viewer_SRCS} ${config_SRCS} 
${dcc_SRCS} ${linkaddressbook_SRCS} ${cipher_SRCS} ${upnp_SRCS})
+set (completed_SRCS ${core_SRCS} ${irc_SRCS} ${viewer_SRCS} ${config_SRCS} 
${dcc_SRCS} ${cipher_SRCS} ${upnp_SRCS})
 set (konversation_SRCS ${completed_SRCS})
 
 kde4_add_ui_files(konversation_SRCS
@@ -229,7 +219,7 @@ kde4_add_app_icon(konversation_SRCS 
"${CMAKE_CURRENT_SOURCE_DIR}/../data/images/
 kde4_add_executable(konversation ${konversation_SRCS})
 
 target_link_libraries(konversation ${KDE4_KIO_LIBS} ${KDE4_KPARTS_LIBS}
-                                   ${KDE4_KDE3SUPPORT_LIBS} ${KDE4_KABC_LIBS}
+                                   ${KDE4_KDE3SUPPORT_LIBS}
                                    ${KDE4_KNOTIFYCONFIG_LIBRARY} 
${PHONON_LIBRARY} ${KDE4_SOLID_LIBS}
                                    ${KDE4_KIDLETIME_LIBS} 
${KDE4_KEMOTICONS_LIBS})
 
diff --git a/src/application.cpp b/src/application.cpp
index 5c0e721..8269c79 100644
--- a/src/application.cpp
+++ b/src/application.cpp
@@ -24,7 +24,6 @@
 #include "sound.h"
 #include "quickconnectdialog.h"
 #include "dbus.h"
-#include "linkaddressbook/addressbook.h"
 #include "servergroupsettings.h"
 #include "serversettings.h"
 #include "channel.h"
@@ -251,7 +250,6 @@ int Application::newInstance()
         QDBusConnection::sessionBus().registerObject("/irc", dbusObject, 
QDBusConnection::ExportNonScriptableSlots);
         identDBus = new Konversation::IdentDBus(this);
         QDBusConnection::sessionBus().registerObject("/identity", identDBus, 
QDBusConnection::ExportNonScriptableSlots);
-        QDBusConnection::sessionBus().registerObject("/KIMIface", 
Konversation::Addressbook::self(), QDBusConnection::ExportNonScriptableSlots | 
QDBusConnection::ExportNonScriptableSignals);
 
         if (dbusObject)
         {
diff --git a/src/application.h b/src/application.h
index de84e5d..3cf7b81 100644
--- a/src/application.h
+++ b/src/application.h
@@ -86,7 +86,7 @@ class Application : public KUniqueApplication
 
         static Application* instance();
 
-        /** For dcop and addressbook, a user can be specified as user at 
irc.server.net
+        /** For D-Bus, a user can be specified as user at irc.server.net
          *  or user\@servergroup or using the unicode separator symbol 0xE120 
instead
          *  of the "@".  This function takes a string like the above examples, 
and
          *  modifies ircnick and serverOrGroup to contain the split up string. 
 If
diff --git a/src/irc/channel.cpp b/src/irc/channel.cpp
index 594630e..d35c147 100644
--- a/src/irc/channel.cpp
+++ b/src/irc/channel.cpp
@@ -293,9 +293,6 @@ Channel::Channel(QWidget* parent, const QString& _name) : 
ChatWindow(parent)
     #ifdef HAVE_QCA2
     m_cipher = 0;
     #endif
-    //FIXME JOHNFLUX
-    // connect( Konversation::Addressbook::self()->getAddressBook(), 
SIGNAL(addressBookChanged(AddressBook*)), this, SLOT(slotLoadAddressees()) );
-    // connect( Konversation::Addressbook::self(), 
SIGNAL(addresseesChanged()), this, SLOT(slotLoadAddressees()));
 
     // Setup delayed sort timer
     m_delayedSortTimer = new QTimer(this);
diff --git a/src/irc/channelnick.cpp b/src/irc/channelnick.cpp
index e7740cc..41218f2 100644
--- a/src/irc/channelnick.cpp
+++ b/src/irc/channelnick.cpp
@@ -184,8 +184,6 @@ QString ChannelNick::getHostmask() const
 
 QString ChannelNick::tooltip() const
 {
-    //  if(addressee.isEmpty()) return QString();
-    //KABC::Addressee addressee = nickInfo->getAddressee();
     QString strTooltip;
     QTextStream tooltip( &strTooltip, QIODevice::WriteOnly );
 
diff --git a/src/irc/nick.cpp b/src/irc/nick.cpp
index 298eafb..f28c597 100644
--- a/src/irc/nick.cpp
+++ b/src/irc/nick.cpp
@@ -12,7 +12,6 @@
 */
 
 #include "nick.h"
-#include "addressbook.h"
 #include "application.h"
 #include "images.h"
 #include "preferences.h"
@@ -20,8 +19,6 @@
 
 #include <QHeaderView>
 
-#include <kabc/phonenumber.h>
-
 Nick::Nick(NickListView *listView, Channel* channel, const ChannelNickPtr& 
channelnick)
     : QTreeWidgetItem (listView)
 {
@@ -148,15 +145,10 @@ void Nick::repositionMe()
 QString Nick::calculateLabel1() const
 {
     NickInfoPtr nickinfo = getChannelNick()->getNickInfo();
-    KABC::Addressee addressee = nickinfo->getAddressee();
 
     QString retString = nickinfo->getNickname();
 
-    if(!addressee.realName().isEmpty())           //if no addressee, realName 
will be empty
-    {
-        retString += " (" + 
Konversation::removeIrcMarkup(addressee.realName()) + ')';
-    }
-    else if(Preferences::self()->showRealNames() && 
!nickinfo->getRealName().isEmpty())
+    if(Preferences::self()->showRealNames() && 
!nickinfo->getRealName().isEmpty())
     {
         retString += " (" + 
Konversation::removeIrcMarkup(nickinfo->getRealName()) + ')';
     }
diff --git a/src/irc/nickinfo.cpp b/src/irc/nickinfo.cpp
index 503bc47..b87712c 100644
--- a/src/irc/nickinfo.cpp
+++ b/src/irc/nickinfo.cpp
@@ -20,17 +20,11 @@
 
 #include "nickinfo.h"
 #include "application.h"
-#include "linkaddressbook/addressbook.h"
-#include "linkaddressbook/linkaddressbookui.h"
 #include "mainwindow.h"
 #include "server.h"
 
-#include <Q3MimeSourceFactory>
-
-
 NickInfo::NickInfo(const QString& nick, Server* server): KShared()
 {
-    m_addressee = 
Konversation::Addressbook::self()->getKABCAddresseeFromNick(nick, 
server->getServerName(), server->getDisplayName());
     m_nickname = nick;
     m_loweredNickname = nick.toLower();
     m_owningServer = server;
@@ -39,17 +33,12 @@ NickInfo::NickInfo(const QString& nick, Server* server): 
KShared()
     m_printedOnline = false;
     m_changed = false;
 
-    if(!m_addressee.isEmpty())
-        
Konversation::Addressbook::self()->emitContactPresenceChanged(m_addressee.uid(),
 4);
-
     // reset nick color
     m_nickColor = 0;
 }
 
 NickInfo::~NickInfo()
 {
-    if(!m_addressee.isEmpty())
-        
Konversation::Addressbook::self()->emitContactPresenceChanged(m_addressee.uid(),
 1);
 }
 
 // Get properties of NickInfo object.
@@ -129,22 +118,6 @@ void NickInfo::setNickname(const QString& newNickname)
     Q_ASSERT(!newNickname.isEmpty());
     if(newNickname == m_nickname) return;
 
-    KABC::Addressee newaddressee = 
Konversation::Addressbook::self()->getKABCAddresseeFromNick(newNickname, 
m_owningServer->getServerName(), m_owningServer->getDisplayName());
-                                                  //We now know who this 
person is
-    if(m_addressee.isEmpty() && !newaddressee.isEmpty())
-    {
-                                                  //Associate the old nickname 
with new contact
-        
Konversation::Addressbook::self()->associateNick(newaddressee,m_nickname, 
m_owningServer->getServerName(), m_owningServer->getDisplayName());
-        Konversation::Addressbook::self()->saveAddressee(newaddressee);
-    }
-    else if(!m_addressee.isEmpty() && newaddressee.isEmpty())
-    {
-        Konversation::Addressbook::self()->associateNick(m_addressee, 
newNickname, m_owningServer->getServerName(), m_owningServer->getDisplayName());
-        Konversation::Addressbook::self()->saveAddressee(newaddressee);
-        newaddressee = m_addressee;
-    }
-
-    m_addressee = newaddressee;
     m_nickname = newNickname;
     m_loweredNickname = newNickname.toLower();
 
@@ -172,9 +145,6 @@ void NickInfo::setAway(bool state)
     m_away = state;
 
     startNickInfoChangedTimer();
-
-    if(!m_addressee.isEmpty())
-        
Konversation::Addressbook::self()->emitContactPresenceChanged(m_addressee.uid());
 }
 
 void NickInfo::setIdentified(bool identified)
@@ -221,29 +191,6 @@ void NickInfo::setOnlineSince(const QDateTime& datetime)
     startNickInfoChangedTimer();
 }
 
-
-KABC::Addressee NickInfo::getAddressee() const
-{
-    return m_addressee;
-}
-
-void NickInfo::refreshAddressee()
-{
-    //m_addressee might not have changed, but information inside it may have.
-    KABC::Addressee 
addressee=Konversation::Addressbook::self()->getKABCAddresseeFromNick(m_nickname,
 m_owningServer->getServerName(), m_owningServer->getDisplayName());
-    if(!addressee.isEmpty() && addressee.uid() != m_addressee.uid())
-    {
-        //This nick now belongs to a different addressee.  We need to update 
the status for both the old and new addressees.
-        
Konversation::Addressbook::self()->emitContactPresenceChanged(addressee.uid());
-    }
-    m_addressee = addressee;
-
-    startNickInfoChangedTimer();
-
-    if(!m_addressee.isEmpty())
-        
Konversation::Addressbook::self()->emitContactPresenceChanged(m_addressee.uid());
-}
-
 QString NickInfo::tooltip() const
 {
 
@@ -260,15 +207,7 @@ QString NickInfo::tooltip() const
 
 QString NickInfo::getBestAddresseeName()
 {
-    if(!m_addressee.formattedName().isEmpty())
-    {
-        return m_addressee.formattedName();
-    }
-    else if(!m_addressee.realName().isEmpty())
-    {
-        return m_addressee.realName();
-    }
-    else if(!getRealName().isEmpty())
+    if(!getRealName().isEmpty())
     {
         return getRealName();
     }
@@ -280,86 +219,6 @@ QString NickInfo::getBestAddresseeName()
 
 void NickInfo::tooltipTableData(QTextStream &tooltip) const
 {
-    tooltip << "<tr><td colspan=\"2\" valign=\"top\">";
-
-    KABC::Picture photo = m_addressee.photo();
-    KABC::Picture logo = m_addressee.logo();
-    bool isimage=false;
-    if(photo.isIntern())
-    {
-        Q3MimeSourceFactory::defaultFactory()->setImage( "photo", photo.data() 
);
-        tooltip << "<img src=\"photo\">";
-        isimage=true;
-    }
-    else if(!photo.url().isEmpty())
-    {
-        //JOHNFLUX FIXME TODO:
-        //Are there security problems with this?  loading from an external 
refrence?
-        //Assuming not.
-        tooltip << "<img src=\"" << photo.url() << "\">";
-        isimage=true;
-    }
-    if(logo.isIntern())
-    {
-        Q3MimeSourceFactory::defaultFactory()->setImage( "logo", logo.data() );
-        tooltip << "<img src=\"logo\">";
-        isimage=true;
-    }
-    else if(!logo.url().isEmpty())
-    {
-        //JOHNFLUX FIXME TODO:
-        //Are there security problems with this?  loading from an external 
refrence?
-        //Assuming not.
-        tooltip << "<img src=\"" << logo.url() << "\">";
-        isimage=true;
-    }
-    tooltip << "<b>" << (isimage?"":"<center>");
-    if(!m_addressee.formattedName().isEmpty())
-    {
-        tooltip << m_addressee.formattedName();
-    }
-    else if(!m_addressee.realName().isEmpty())
-    {
-        tooltip << m_addressee.realName();
-    }
-    else if(!getRealName().isEmpty() && getRealName().toLower() != 
loweredNickname())
-    {
-        QString escapedRealName( getRealName() );
-        escapedRealName.replace('<',"&lt;").replace('>',"&gt;");
-        tooltip << escapedRealName;
-    }
-    else
-    {
-        tooltip << getNickname();
-    }
-    if(m_identified) tooltip << i18n(" (identified)");
-    tooltip << (isimage?"":"</center>") << "</b>";
-
-    tooltip << "</td></tr>";
-    if(!m_addressee.emails().isEmpty())
-    {
-        tooltip << "<tr><td><b>" << i18n("Email") << ":</b></td><td>";
-        tooltip << m_addressee.emails().join(", ");
-        tooltip << "</td></tr>";
-    }
-
-    if(!m_addressee.organization().isEmpty())
-    {
-        tooltip << "<tr><td><b>" << m_addressee.organizationLabel() << 
":</b></td><td>" << m_addressee.organization() << "</td></tr>";
-    }
-    if(!m_addressee.role().isEmpty())
-    {
-        tooltip << "<tr><td><b>" << m_addressee.roleLabel() << 
":</b></td><td>" << m_addressee.role() << "</td></tr>";
-    }
-    KABC::PhoneNumber::List numbers = m_addressee.phoneNumbers();
-    for( KABC::PhoneNumber::List::ConstIterator it = numbers.constBegin(); it 
!= numbers.constEnd(); ++it)
-    {
-        tooltip << "<tr><td><b>" << (*it).typeLabel() << ":</b></td><td>" << 
(*it).number() << "</td></tr>";
-    }
-    if(!m_addressee.birthday().toString().isEmpty() )
-    {
-        tooltip << "<tr><td><b>" << m_addressee.birthdayLabel() << 
":</b></td><td>" << m_addressee.birthday().toString("ddd d MMMM yyyy") << 
"</td></tr>";
-    }
     if(!getHostmask().isEmpty())
     {
         tooltip << "<tr><td><b>" << i18n("Hostmask:") << "</b></td><td>" << 
getHostmask() << "</td></tr>";
diff --git a/src/irc/nickinfo.h b/src/irc/nickinfo.h
index 20b8ef1..4b8ea28 100644
--- a/src/irc/nickinfo.h
+++ b/src/irc/nickinfo.h
@@ -21,9 +21,6 @@
 
 #include <ksharedptr.h>
 
-#include <kabc/addressbook.h>
-
-
 class Server;
 
 /**
@@ -31,7 +28,7 @@ class Server;
   It is owned by the Server object and should NOT be deleted by anything other 
than Server.
 
   A NickInfo is _only_ for online (or away) nicks.  Not for offline nicks.
-  Offline (but watched or in addressbook) nicks are stored in the Server 
object.
+  Offline (but watched) nicks are stored in the Server object.
 
 */
 class NickInfo : public KShared
@@ -67,9 +64,6 @@ class NickInfo : public KShared
         /// Return the Server object that owns this NickInfo object.
         Server* getServer() const;
 
-        /// Return the kabc (kaddressbook) contact for this nick
-        KABC::Addressee getAddressee() const;
-
         /** Set properties of NickInfo object. */
         void setNickname(const QString& newNickname);
         /** Set properties of NickInfo object. Ignores the request is newmask 
is empty.*/
@@ -102,8 +96,8 @@ class NickInfo : public KShared
          */
         void tooltipTableData(QTextStream &tooltip) const;
 
-        /** Returns a full name for this contact. Tries to use the name out of 
addressbook.
-         *  If that is empty, uses the real name from whois.  If that fails, 
use nickname.
+        /** Returns a full name for this contact. Uses the real name from 
whois.
+         *  If that fails, use nickname.
          *
          *  @return A string to show the user for the name of this contact
          */
@@ -112,9 +106,6 @@ class NickInfo : public KShared
         void setPrintedOnline(bool printed);
         bool getPrintedOnline();
 
-        /// Refresh the addressee object connected to this nick.
-        void refreshAddressee();
-
         bool isChanged() const { return m_changed; }
         void setChanged(bool c) { m_changed = c; }
 
@@ -134,7 +125,6 @@ class NickInfo : public KShared
         QString m_netServer;
         QString m_netServerInfo;
         QDateTime m_onlineSince;
-        KABC::Addressee m_addressee;
         /** Whether this user is identified with nickserv.
          *  Found only by doing /whois nick
          */
diff --git a/src/irc/nicksonline.cpp b/src/irc/nicksonline.cpp
index 94356e6..f212d21 100644
--- a/src/irc/nicksonline.cpp
+++ b/src/irc/nicksonline.cpp
@@ -23,8 +23,6 @@
 #include "editnotifydialog.h"
 #include "images.h"
 #include "query.h"
-#include "linkaddressbook/linkaddressbookui.h"
-#include "linkaddressbook/addressbook.h"
 #include "mainwindow.h"
 #include "viewcontainer.h"
 #include "nicksonlineitem.h"
@@ -49,18 +47,6 @@ NicksOnline::NicksOnline(QWidget* parent): ChatWindow(parent)
     m_removeNickname = m_toolBar->addAction(KIcon("list-remove-user"), 
i18n("&Remove Nickname"));
     m_removeNickname->setWhatsThis(i18n("Click to remove a nick from the list 
of nicknames that appear on this screen."));
     m_toolBar->addSeparator();
-    m_newContact = m_toolBar->addAction(KIcon("contact-new"), i18n("Create New 
C&ontact..."));
-    m_editContact = m_toolBar->addAction(KIcon("document-edit"), i18n("Edit 
C&ontact..."));
-    m_editContact->setWhatsThis(i18n("Click to create, view, or edit the 
KAddressBook entry associated with the nickname selected above."));
-    m_toolBar->addSeparator();
-    m_chooseAssociation = m_toolBar->addAction(KIcon("office-address-book"), 
i18n("&Choose Association..."));
-    m_changeAssociation = m_toolBar->addAction(KIcon("office-address-book"), 
i18n("&Change Association..."));
-    m_changeAssociation->setWhatsThis(i18n("Click to associate the nickname 
selected above with an entry in KAddressBook."));
-    m_deleteAssociation = m_toolBar->addAction(KIcon("edit-delete"), 
i18n("&Delete Association"));
-    m_deleteAssociation->setWhatsThis(i18n("Click to remove the association 
between the nickname selected above and a KAddressBook entry."));
-    m_toolBar->addSeparator();
-    m_sendMail = m_toolBar->addAction(KIcon("mail-send"), i18n("&Send 
Email..."));
-    m_toolBar->addSeparator();
     m_whois = m_toolBar->addAction(KIcon("office-address-book"), 
i18n("&Whois"));
     m_openQuery = m_toolBar->addAction(KIcon("office-address-book"), 
i18n("Open &Query"));
     m_toolBar->addSeparator();
@@ -70,10 +56,9 @@ NicksOnline::NicksOnline(QWidget* parent): ChatWindow(parent)
     m_nickListView=new QTreeWidget(this);
 
     // Set to false every 8 seconds to permit a whois on watched nicks lacking 
information.
-    // Remove when server or addressbook does this automatically.
+    // Remove when server does this automatically.
     m_whoisRequested = true;
 
-    m_kabcIconSet = KIcon("office-address-book");
     m_onlineIcon = KIcon("im-user");
     m_offlineIcon = KIcon("im-user-offline");
     m_nickListView->setColumnCount(2);
@@ -86,8 +71,7 @@ NicksOnline::NicksOnline(QWidget* parent): ChatWindow(parent)
 
     QString nickListViewWT = i18n(
         "<p>These are all the nicknames on your Nickname Watch list, listed 
under the "
-        "server network they are connected to.  The list also includes the 
nicknames "
-        "in KAddressBook associated with the server network.</p>"
+        "server network they are connected to.</p>"
         "<p>The <b>Additional Information</b> column shows the information 
known "
         "for each nickname.</p>"
         "<p>The channels the nickname has joined are listed underneath each 
nickname.</p>"
@@ -222,23 +206,15 @@ QTreeWidgetItem* NicksOnline::findNetworkRoot(int 
serverGroupId)
 /**
  * Return a string containing formatted additional information about a nick.
  * @param nickInfo          A pointer to NickInfo structure for the nick.  May 
be Null.
- * @param addressee         Addressbook entry for the nick.  May be empty.
  * @return                  A string formatted for display containing the 
information
  *                          about the nick.
  * @return needWhois        True if a WHOIS needs to be performed on the nick
  *                          to get additional information.
  */
-QString NicksOnline::getNickAdditionalInfo(NickInfoPtr nickInfo, 
KABC::Addressee addressee,
-bool& needWhois)
+QString NicksOnline::getNickAdditionalInfo(NickInfoPtr nickInfo, bool& 
needWhois)
 {
-    QString info;
-    if (!addressee.isEmpty())
-    {
-        if (addressee.fullEmail().isEmpty())
-            info += addressee.realName();
-        else
-            info += addressee.fullEmail();
-    }
+    Q_UNUSED(needWhois)
+
     QString niInfo;
     if (nickInfo)
     {
@@ -261,9 +237,8 @@ bool& needWhois)
         if (!nickInfo->getOnlineSince().isNull())
             niInfo += i18n( " since %1", nickInfo->getPrettyOnlineSince() );
     }
-    needWhois = niInfo.isEmpty();
-    if (!info.isEmpty() && !needWhois) info += ' ';
-    return info + niInfo;
+
+    return niInfo;
 }
 
 /**
@@ -312,11 +287,9 @@ void NicksOnline::updateServerOnlineList(Server* servr)
             // Nick is online.
             // Which server did NickInfo come from?
             Server* server=nickInfo->getServer();
-            // Get addressbook entry (if any) for the nick.
-            KABC::Addressee addressee = nickInfo->getAddressee();
             // Construct additional information string for nick.
             bool needWhois = false;
-            QString nickAdditionalInfo = getNickAdditionalInfo(nickInfo, 
addressee, needWhois);
+            QString nickAdditionalInfo = getNickAdditionalInfo(nickInfo, 
needWhois);
             // Add to network if not already added.
             QTreeWidgetItem* nickRoot = findItemChild(networkRoot, nickname, 
NicksOnlineItem::NicknameItem);
             if (!nickRoot)
@@ -338,13 +311,6 @@ void NicksOnline::updateServerOnlineList(Server* servr)
                     m_whoisRequested = true;
                 }
             }
-            // Set Kabc icon if the nick is associated with an addressbook 
entry.
-            if (!addressee.isEmpty())
-                nickRoot->setIcon(nlvcKabc, QIcon(m_kabcIconSet.pixmap(
-                    KIconLoader::Small, QIcon::Normal, QIcon::On)));
-            else
-                nickRoot->setIcon(nlvcKabc, QIcon(m_kabcIconSet.pixmap(
-                    KIconLoader::Small, QIcon::Disabled, QIcon::Off)));
 
             QStringList channelList = server->getNickChannels(nickname);
             QStringList::iterator itEnd2 = channelList.end();
@@ -410,20 +376,7 @@ void NicksOnline::updateServerOnlineList(Server* servr)
             // Update icon
             nickitem->setIcon(nlvcNick, m_offlineIcon);
             nickRoot->setText(nlvcServerName, serverName);
-            // Get addressbook entry for the nick.
-            KABC::Addressee addressee = 
servr->getOfflineNickAddressee(nickname);
-            // Format additional information for the nick.
-            bool needWhois = false;
-            QString nickAdditionalInfo = getNickAdditionalInfo(NickInfoPtr(), 
addressee, needWhois);
-            nickRoot->setText(nlvcAdditionalInfo, i18nc("(Offline) nickname 
details (e.g. real name from address book)",
-                "(Offline) %1", nickAdditionalInfo));
-            // Set Kabc icon if the nick is associated with an addressbook 
entry.
-            if (!addressee.isEmpty())
-                nickRoot->setIcon(nlvcKabc, QIcon(m_kabcIconSet.pixmap(
-                    KIconLoader::Small, QIcon::Normal, QIcon::On)));
-            else
-                nickRoot->setIcon(nlvcKabc, QIcon(m_kabcIconSet.pixmap(
-                    KIconLoader::Small, QIcon::Disabled, QIcon::Off)));
+            nickRoot->setText(nlvcAdditionalInfo, QString());
         }
     }
     // Erase nicks no longer being watched.
@@ -566,7 +519,7 @@ void NicksOnline::refreshAllServerOnlineLists()
     {
         updateServerOnlineList(server);
     }
-    // Refresh addressbook buttons.
+    // Refresh buttons.
     slotNickListView_SelectionChanged();
 }
 
@@ -676,14 +629,13 @@ const QString& nickname)
 }
 
 /**
- * Perform an addressbook command (edit contact, create new contact,
- * change/delete association.)
+ * Perform a command.
  * @param id                The command id.  @ref CommandIDs.
  *
  * The operation is performed on the nickname at the currently-selected item in
  * the nicklistview.
  *
- * Also refreshes the nicklistview display to reflect the new addressbook state
+ * Also refreshes the nicklistview display to reflect the new state
  * for the nick.
  */
 void NicksOnline::doCommand(QAction* id)
@@ -737,70 +689,7 @@ void NicksOnline::doCommand(QAction* id)
 
     if (!server) return;
 
-    // Get NickInfo object corresponding to the nickname.
-    NickInfoPtr nickInfo = server->getNickInfo(nickname);
-    // Get addressbook entry for the nick.
-    KABC::Addressee addressee;
-
-    if(nickInfo)
-    {
-        addressee = nickInfo->getAddressee();
-    }
-    else
-    {
-        addressee = server->getOfflineNickAddressee(nickname);
-    }
-    if ( id == m_sendMail )
-            Konversation::Addressbook::self()->sendEmail(addressee);
-    else if (  id == m_editContact )
-            Konversation::Addressbook::self()->editAddressee(addressee.uid());
-    else if ( id == m_chooseAssociation || id == m_changeAssociation )
-    {
-        LinkAddressbookUI *linkaddressbookui = NULL;
-
-        if(nickInfo)
-        {
-            linkaddressbookui = new 
LinkAddressbookUI(server->getViewContainer()->getWindow(), 
nickInfo->getNickname(), server->getServerName(), server->getDisplayName(), 
nickInfo->getRealName());
-        }
-        else
-        {
-            linkaddressbookui = new 
LinkAddressbookUI(server->getViewContainer()->getWindow(), nickname, 
server->getServerName(), server->getDisplayName(), addressee.realName());
-        }
-
-        linkaddressbookui->show();
-    }
-    else if ( id == m_newContact || id == m_deleteAssociation )
-    {
-            Konversation::Addressbook *addressbook = 
Konversation::Addressbook::self();
-
-            if(addressbook && addressbook->getAndCheckTicket())
-            {
-                if(id == m_deleteAssociation)
-                {
-                    if (addressee.isEmpty())
-                    {
-                        return;
-                    }
-
-                    addressbook->unassociateNick(addressee, nickname, 
server->getServerName(), server->getDisplayName());
-                }
-                else
-                {
-                    addressee.setGivenName(nickname);
-                    addressee.setNickName(nickname);
-                    
addressbook->associateNickAndUnassociateFromEveryoneElse(addressee, nickname, 
server->getServerName(), server->getDisplayName());
-                }
-                if(addressbook->saveTicket())
-                {
-                    //saveTicket will refresh the addressees for us.
-                    if(id == m_newContact)
-                    {
-                        
Konversation::Addressbook::self()->editAddressee(addressee.uid());
-                    }
-                }
-            }
-    }
-    else if ( id == m_joinChannel )
+    if ( id == m_joinChannel )
     {
         if (m_nickListView->selectedItems().count() > 0)
         {
@@ -827,40 +716,6 @@ void NicksOnline::doCommand(QAction* id)
 }
 
 /**
- * Get the addressbook state of the nickname at the specified nicklistview 
item.
- * @param item              Item of the nicklistview.
- * @return                  Addressbook state.
- * 0 = not a nick, 1 = nick has no addressbook association, 2 = nick has 
association
- */
-int NicksOnline::getNickAddressbookState(QTreeWidgetItem* item)
-{
-    int nickState = nsNotANick;
-    QString serverName;
-    QString nickname;
-    if (getItemServerAndNick(item, serverName, nickname))
-    {
-        Server *server = 
Application::instance()->getConnectionManager()->getServerByName(serverName);
-        if (!server) return nsNotANick;
-        NickInfoPtr nickInfo = server->getNickInfo(nickname);
-        if (nickInfo)
-        {
-            if (nickInfo->getAddressee().isEmpty())
-                nickState = nsNoAddress;
-            else
-                nickState = nsHasAddress;
-        }
-        else
-        {
-            if (server->getOfflineNickAddressee(nickname).isEmpty())
-                nickState = nsNoAddress;
-            else
-                nickState = nsHasAddress;
-        }
-    }
-    return nickState;
-}
-
-/**
  * Sets up toolbar actions based on the given item.
  * @param item              Item of the nicklistview.
  */
@@ -868,14 +723,8 @@ void NicksOnline::setupToolbarActions(NicksOnlineItem 
*item)
 {
   // disable all actions
   m_removeNickname->setEnabled(false);
-  m_newContact->setEnabled(false);
-  m_editContact->setEnabled(false);
-  m_chooseAssociation->setEnabled(false);
-  m_changeAssociation->setEnabled(false);
-  m_deleteAssociation->setEnabled(false);
   m_whois->setEnabled(false);
   m_openQuery->setEnabled(false);
-  m_sendMail->setEnabled(false);
   m_joinChannel->setEnabled(false);
   // check for null
   if (item == 0)
@@ -888,19 +737,6 @@ void NicksOnline::setupToolbarActions(NicksOnlineItem 
*item)
     break;
   case NicksOnlineItem::NicknameItem:
     m_removeNickname->setEnabled(true);
-    int nickState = getNickAddressbookState(item);
-    if (nickState == nsNoAddress)
-    {
-      m_chooseAssociation->setEnabled(true);
-      m_newContact->setEnabled(true);
-    }
-    else if (nickState == nsHasAddress)
-    {
-      m_changeAssociation->setEnabled(true);
-      m_deleteAssociation->setEnabled(true);
-      m_editContact->setEnabled(true);
-      m_sendMail->setEnabled(true);
-    }
     if (!item->isOffline())
     {
       m_whois->setEnabled(true);
@@ -932,24 +768,6 @@ void NicksOnline::setupPopupMenuActions(NicksOnlineItem 
*item)
     break;
   case NicksOnlineItem::NicknameItem:
     m_popupMenu->insertAction(0, m_removeNickname);
-    int nickState = getNickAddressbookState(item);
-    if (nickState == nsNoAddress)
-    {
-      m_popupMenu->addSeparator();
-      m_popupMenu->insertAction(0, m_newContact);
-      m_popupMenu->addSeparator();
-      m_popupMenu->insertAction(0, m_chooseAssociation);
-    }
-    else if (nickState == nsHasAddress)
-    {
-      m_popupMenu->addSeparator();
-      m_popupMenu->insertAction(0, m_editContact);
-      m_popupMenu->addSeparator();
-      m_popupMenu->insertAction(0, m_changeAssociation);
-      m_popupMenu->insertAction(0, m_deleteAssociation);
-      m_popupMenu->addSeparator();
-      m_popupMenu->insertAction(0, m_sendMail);
-    }
     if (!item->isOffline())
     {
       m_popupMenu->addSeparator();
@@ -1034,35 +852,10 @@ void NicksOnline::refreshItem(QTreeWidgetItem* item)
         if (server)
         {
             NickInfoPtr nickInfo = server->getNickInfo(nickname);
-            KABC::Addressee addressee;
-            int nickState = nsNoAddress;
-            if (nickInfo)
-                addressee = nickInfo->getAddressee();
-            else
-                addressee = server->getOfflineNickAddressee(nickname);
-            if (!addressee.isEmpty())
-                nickState = nsHasAddress;
-
-            switch (nickState)
-            {
-                case nsNotANick:
-                    break;
-                case nsNoAddress:
-                {
-                    item->setIcon(nlvcKabc, QIcon(m_kabcIconSet.pixmap(
-                        KIconLoader::Small, QIcon::Disabled, QIcon::Off)));
-                    break;
-                }
-                case nsHasAddress:
-                {
-                    item->setIcon(nlvcKabc, QIcon(m_kabcIconSet.pixmap(
-                        KIconLoader::Small, QIcon::Normal, QIcon::On))); break;
-                }
-            }
             QString nickAdditionalInfo;
             bool needWhois = false;
             if (nickInfo)
-                nickAdditionalInfo = getNickAdditionalInfo(nickInfo, 
addressee, needWhois);
+                nickAdditionalInfo = getNickAdditionalInfo(nickInfo, 
needWhois);
             item->setText(nlvcAdditionalInfo, nickAdditionalInfo);
             if (m_nickListView->selectedItems().count() != 0 && item == 
m_nickListView->selectedItems().at(0))
                 
setupToolbarActions(dynamic_cast<NicksOnlineItem*>(m_nickListView->selectedItems().at(0)));
diff --git a/src/irc/nicksonline.h b/src/irc/nicksonline.h
index fbdd2cd..45c3ec0 100644
--- a/src/irc/nicksonline.h
+++ b/src/irc/nicksonline.h
@@ -42,16 +42,9 @@ class NicksOnline : public ChatWindow
             nlvcNetwork = 0,
             nlvcNick = 0,
             nlvcChannel = 0,
-            nlvcKabc = 1,
             nlvcAdditionalInfo = 1,
             nlvcServerName = 2                     // hidden
         };
-        enum NickState
-        {
-            nsNotANick = 0,                       // User didn't click on a 
nickname.
-            nsNoAddress = 1,                      // Nick does not have an 
addressbook association.
-            nsHasAddress = 2                      // Nick has an associated 
addressbook entry.
-        };
 
         explicit NicksOnline(QWidget* parent);
         ~NicksOnline();
@@ -153,14 +146,7 @@ class NicksOnline : public ChatWindow
          * @return needWhois        True if a WHOIS needs to be performed on 
the nick
          *                          to get additional information.
          */
-        QString getNickAdditionalInfo(NickInfoPtr nickInfo, KABC::Addressee 
addressee,
-            bool& needWhois);
-        /**
-         * Invokes the KAddressBook contact editor for the specified contact 
id.
-         * @param uid               Id of the contact.
-         * @return                  False if unable to invoke the Contact 
editor.
-         */
-        bool editAddressee(const QString &uid);
+        QString getNickAdditionalInfo(NickInfoPtr nickInfo, bool& needWhois);
         /**
          * Returns the server name and nickname of the specified nicklistview 
item.
          * @param item              The nicklistview item.
@@ -179,25 +165,17 @@ class NicksOnline : public ChatWindow
          */
         QTreeWidgetItem* getServerAndNickItem(const QString& serverName, const 
QString& nickname);
         /**
-         * Perform an addressbook command (edit contact, create new contact,
-         * change/delete association.)
+         * Perform an command.
          * @param id                The command id.  @ref CommandIDs.
          *
          * The operation is performed on the nickname at the 
currently-selected item in
          * the nicklistview.
          *
-         * Also refreshes the nicklistview display to reflect the new 
addressbook state
+         * Also refreshes the nicklistview display to reflect the new state
          * for the nick.
          */
         void doCommand(QAction* id);
         /**
-         * Get the addressbook state of the nickname at the specified 
nicklistview item.
-         * @param item              Item of the nicklistview.
-         * @return                  Addressbook state.
-         * 0 = not a nick, 1 = nick has no addressbook association, 2 = nick 
has association
-         */
-        int getNickAddressbookState(QTreeWidgetItem* item);
-        /**
          * Sets up toolbar actions based on the given item.
          * @param item              Item of the nicklistview.
          */
@@ -236,8 +214,6 @@ class NicksOnline : public ChatWindow
         QString c_offline;
         // Timer for refreshing display and generating WHOISes.
         QTimer* m_timer;
-        // Addressbook icon.
-        QIcon m_kabcIconSet;
         // Online nick icon
         QIcon m_onlineIcon;
         // Offline nick icon
@@ -249,14 +225,8 @@ class NicksOnline : public ChatWindow
 
     QAction* m_addNickname;
     QAction* m_removeNickname;
-    QAction* m_newContact;
-    QAction* m_editContact;
-    QAction* m_chooseAssociation;
-    QAction* m_changeAssociation;
-    QAction* m_deleteAssociation;
     QAction* m_whois;
     QAction* m_openQuery;
-    QAction* m_sendMail;
     QAction* m_joinChannel;
 
 };
diff --git a/src/irc/outputfilter.cpp b/src/irc/outputfilter.cpp
index 398abe6..ca7b3a3 100644
--- a/src/irc/outputfilter.cpp
+++ b/src/irc/outputfilter.cpp
@@ -22,7 +22,6 @@
 #include "server.h"
 #include "scriptlauncher.h"
 #include "irccharsets.h"
-#include "linkaddressbook/addressbook.h"
 #include "query.h"
 #include "viewcontainer.h"
 #include "outputfilterresolvejob.h"
diff --git a/src/irc/query.cpp b/src/irc/query.cpp
index feed704..e685a3b 100644
--- a/src/irc/query.cpp
+++ b/src/irc/query.cpp
@@ -47,22 +47,12 @@ Query::Query(QWidget* parent, const QString& _name) : 
ChatWindow(parent)
     awayState=false;
     KHBox* box = new KHBox(m_headerSplitter);
     m_headerSplitter->setStretchFactor(m_headerSplitter->indexOf(box), 0);
-    addresseeimage = new QLabel(box);
-    addresseeimage->setObjectName("query_image");
-    addresseeimage->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
-    addresseeimage->hide();
-    addresseelogoimage = new QLabel(box);
-    addresseelogoimage->setObjectName("query_logo_image");
-    addresseelogoimage->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
-    addresseelogoimage->hide();
 
     queryHostmask=new KSqueezedTextLabel(box);
     queryHostmask->setTextElideMode(Qt::ElideRight);
     queryHostmask->setObjectName("query_hostmask");
 
-    QString whatsthis = i18n("<qt><p>Some details of the person you are 
talking to in this query is shown in this bar.  The full name and hostmask is 
shown, along with any image or logo this person has associated with them in the 
KDE Address Book.</p><p>See the <i>Konversation Handbook</i> for information on 
associating a nick with a contact in the address book, and for an explanation 
of what the hostmask is.</p></qt>");
-    addresseeimage->setWhatsThis(whatsthis);
-    addresseelogoimage->setWhatsThis(whatsthis);
+    QString whatsthis = i18n("<qt><p>Some details of the person you are 
talking to in this query is shown in this bar. The full name and hostmask is 
shown.</p><p>See the <i>Konversation Handbook</i> for an explanation of what 
the hostmask is.</p></qt>");
     queryHostmask->setWhatsThis(whatsthis);
 
     IRCViewBox* ircViewBox = new IRCViewBox(m_headerSplitter);
@@ -371,43 +361,6 @@ void Query::nickInfoChanged()
             text += " (" + m_nickInfo->getAwayMessage() + ") ";
         queryHostmask->setText(Konversation::removeIrcMarkup(text));
 
-        KABC::Picture pic = m_nickInfo->getAddressee().photo();
-        if(pic.isIntern())
-        {
-            QPixmap qpixmap = 
QPixmap::fromImage(pic.data().scaledToHeight(queryHostmask->height(), 
Qt::SmoothTransformation));
-            if(!qpixmap.isNull())
-            {
-                addresseeimage->setPixmap(qpixmap);
-                addresseeimage->show();
-            }
-            else
-            {
-                addresseeimage->hide();
-            }
-        }
-        else
-        {
-            addresseeimage->hide();
-        }
-        KABC::Picture logo = m_nickInfo->getAddressee().logo();
-        if(logo.isIntern())
-        {
-            QPixmap qpixmap = 
QPixmap::fromImage(logo.data().scaledToHeight(queryHostmask->height(), 
Qt::SmoothTransformation));
-            if(!qpixmap.isNull())
-            {
-                addresseelogoimage->setPixmap(qpixmap);
-                addresseelogoimage->show();
-            }
-            else
-            {
-                addresseelogoimage->hide();
-            }
-        }
-        else
-        {
-            addresseelogoimage->hide();
-        }
-
         QString strTooltip;
         QTextStream tooltip( &strTooltip, QIODevice::WriteOnly );
 
@@ -419,14 +372,6 @@ void Query::nickInfoChanged()
 
         tooltip << "</table></qt>";
         queryHostmask->setToolTip(strTooltip);
-        addresseeimage->setToolTip(strTooltip);
-        addresseelogoimage->setToolTip(strTooltip);
-
-    }
-    else
-    {
-        addresseeimage->hide();
-        addresseelogoimage->hide();
     }
 
     emit updateQueryChrome(this,getName());
diff --git a/src/irc/query.h b/src/irc/query.h
index e059460..37301ae 100644
--- a/src/irc/query.h
+++ b/src/irc/query.h
@@ -108,8 +108,6 @@ class Query : public ChatWindow
 
         QSplitter* m_headerSplitter;
         KSqueezedTextLabel* queryHostmask;
-        QLabel* addresseeimage;
-        QLabel* addresseelogoimage;
         QLabel* blowfishLabel;
         AwayLabel* awayLabel;
         NickInfoPtr m_nickInfo;
diff --git a/src/irc/server.cpp b/src/irc/server.cpp
index 6f68264..fcd9cd0 100644
--- a/src/irc/server.cpp
+++ b/src/irc/server.cpp
@@ -33,7 +33,6 @@
 #include "viewcontainer.h"
 #include "rawlog.h"
 #include "channellistpanel.h"
-#include "addressbook.h"
 #include "scriptlauncher.h"
 #include "serverison.h"
 #include "notificationhandler.h"
@@ -141,9 +140,6 @@ Server::Server(QObject* parent, ConnectionSettings& 
settings) : QObject(parent)
     // TODO FIXME this disappeared in a merge, ensure it should have
     updateConnectionState(Konversation::SSNeverConnected);
 
-    connect(Konversation::Addressbook::self()->getAddressBook(), 
SIGNAL(addressBookChanged(AddressBook*)), this, 
SLOT(updateNickInfoAddressees()));
-    connect(Konversation::Addressbook::self(), SIGNAL(addresseesChanged()), 
this, SLOT(updateNickInfoAddressees()));
-
     m_nickInfoChangedTimer = new QTimer(this);
     m_nickInfoChangedTimer->setSingleShot(true);
     m_nickInfoChangedTimer->setInterval(3000);
@@ -918,7 +914,7 @@ void Server::connectionEstablished(const QString& ownHost)
 
     updateConnectionState(Konversation::SSConnected);
 
-    // Make a helper object to build ISON (notify) list and map offline nicks 
to addressbook.
+    // Make a helper object to build ISON (notify) list.
     // TODO: Give the object a kick to get it started?
     delete m_serverISON;
     m_serverISON = new ServerISON(this);
@@ -3010,8 +3006,6 @@ NickInfoPtr Server::setWatchedNickOnline(const QString& 
nickname)
     }
 
     emit watchedNickChanged(this, nickname, true);
-    KABC::Addressee addressee = nickInfo->getAddressee();
-    if (!addressee.isEmpty()) 
Konversation::Addressbook::self()->emitContactPresenceChanged(addressee.uid());
 
     appendMessageToFrontmost(i18nc("Message type", "Notify"), i18n("%1 is 
online (%2).", nickname, getServerName()), getStatusView());
 
@@ -3023,10 +3017,7 @@ NickInfoPtr Server::setWatchedNickOnline(const QString& 
nickname)
 
 void Server::setWatchedNickOffline(const QString& nickname, const NickInfoPtr 
nickInfo)
 {
-   if (nickInfo) {
-        KABC::Addressee addressee = nickInfo->getAddressee();
-        if (!addressee.isEmpty()) 
Konversation::Addressbook::self()->emitContactPresenceChanged(addressee.uid(), 
1);
-    }
+    Q_UNUSED(nickInfo)
 
     emit watchedNickChanged(this, nickname, false);
 
@@ -4020,14 +4011,6 @@ void Server::startAwayTimer()
     m_awayTime = QDateTime::currentDateTime().toTime_t();
 }
 
-KABC::Addressee Server::getOfflineNickAddressee(QString& nickname)
-{
-    if (m_serverISON)
-        return m_serverISON->getOfflineNickAddressee(nickname);
-    else
-        return KABC::Addressee();
-}
-
 void Server::enableIdentifyMsg(bool enabled)
 {
     m_identifyMsg = enabled;
@@ -4213,14 +4196,6 @@ QAbstractItemModel* Server::nickListModel() const
     return m_nickListModel;
 }
 
-void Server::updateNickInfoAddressees()
-{
-    foreach(NickInfoPtr nickInfo, m_allNicks)
-    {
-        nickInfo->refreshAddressee();
-    }
-}
-
 void Server::startNickInfoChangedTimer()
 {
     if(!m_nickInfoChangedTimer->isActive())
diff --git a/src/irc/server.h b/src/irc/server.h
index be9d72d..cdd244b 100644
--- a/src/irc/server.h
+++ b/src/irc/server.h
@@ -319,13 +319,6 @@ class Server : public QObject
          *                     or 99 if not known.  See channelnick.cpp for 
bit definitions.
          */
         ChannelNickPtr setChannelNick(const QString& channelName, const 
QString& nickname, unsigned int mode = 99);
-        /**
-         * Given the nickname of nick that is offline (or at least not known 
to be online),
-         * returns the addressbook entry (if any) for the nick.
-         * @param nickname       Desired nickname.  Case insensitive.
-         * @return               Addressbook entry of the nick or empty if not 
found.
-         */
-        KABC::Addressee getOfflineNickAddressee(QString& nickname);
 
         /**
          * Returns a QList of all channels
@@ -333,7 +326,7 @@ class Server : public QObject
         const QList<Channel *>& getChannelList() const { return m_channelList; 
}
 
         /**
-         * Returns a lower case list of all the nicks on the user watch list 
plus nicks in the addressbook.
+         * Returns a lower case list of all the nicks on the user watch list.
          */
         QStringList getWatchList();
         /**
@@ -603,9 +596,6 @@ class Server : public QObject
         /// Update the encoding shown in the mainwindow's actions
         void updateEncoding();
 
-        /// Update the NickInfos from the address book
-        void updateNickInfoAddressees();
-
         /** Called when the NickInfo changed timer times out.
           * Emits the nickInfoChanged() signal for all changed NickInfos
           */
@@ -658,8 +648,6 @@ class Server : public QObject
 
         /**
         * Display offline notification for a certain nickname. The function 
doesn't change NickInfo objects.
-        * If NickInfoPtr is given, then also the integration with KAddressBook 
is engaged (i.e. the
-        * nick is marked as away)
         * @param nickname           The nickname that is offline
         * @param nickInfo           Pointer to NickInfo for nick
         */
@@ -679,7 +667,6 @@ class Server : public QObject
          * Removes it from all channels on the joined and unjoined lists.
          * If the nick is in the watch list, and went offline, emits a signal,
          * posts a Notify message, and posts a KNotify.
-         * If the nick is in the addressbook, and went offline, informs 
addressbook of change.
          * If the nick goes offline, the NickInfo is deleted.
          *
          * @param nickname     The nickname.  Case sensitive.
@@ -794,8 +781,7 @@ class Server : public QObject
         /// Creates a list of known users and returns the one chosen by the 
user
         inline QString recipientNick() const;
 
-        /// Helper object to construct ISON (notify) list and map offline 
nicks to
-        /// addressbook.
+        /// Helper object to construct ISON (notify) list.
         ServerISON* m_serverISON;
         /// All nicks known to this server.  Note this is NOT a list of all 
nicks on the server.
         /// Any nick appearing in this list is online, but may not necessarily 
appear in
diff --git a/src/irc/serverison.cpp b/src/irc/serverison.cpp
index f737b51..635e081 100644
--- a/src/irc/serverison.cpp
+++ b/src/irc/serverison.cpp
@@ -6,10 +6,6 @@
 */
 
 /*
-  serverison.h  -  Class to give a list of all the nicks known to the
-                   addressbook and watchednick list that are on this
-           server.  There is one instance of this class for
-           each Server object.
   begin:     Fri Sep 03 2004
   copyright: (C) 2004 by John Tapsell
   email:     john at geola.co.uk
@@ -17,25 +13,13 @@
 
 #include "serverison.h"
 #include "server.h"
-#include "addressbook.h"
 #include "application.h"
 #include "nickinfo.h"
 #include "viewcontainer.h"
 
-#include <kabc/addressbook.h>
-#include <kabc/stdaddressbook.h>
-
-
 ServerISON::ServerISON(Server* server) : m_server(server)
 {
     m_ISONList_invalid = true;
-    //We need to know when the addressbook changes because if the info for an 
offline nick changes,
-    //we won't get a nickInfoChanged signal.
-
-    connect( Konversation::Addressbook::self()->getAddressBook(), 
SIGNAL(addressBookChanged(AddressBook*)),
-        this, SLOT(addressbookChanged()) );
-    connect( Konversation::Addressbook::self(), SIGNAL(addresseesChanged()),
-        this, SLOT(addressbookChanged()));
 
     connect( m_server, SIGNAL(nickInfoChanged(Server*,NickInfoPtr)),
         this, SLOT(nickInfoChanged(Server*,NickInfoPtr)));
@@ -65,108 +49,13 @@ QStringList ServerISON::getISONList()
     return m_ISONList;
 }
 
-QStringList ServerISON::getAddressees()
-{
-    if(m_ISONList_invalid)
-        recalculateAddressees();
-    return m_addresseesISON;
-}
-
-KABC::Addressee ServerISON::getOfflineNickAddressee(QString& nickname)
-{
-    QString lcNickname = nickname.toLower();
-    if(m_ISONList_invalid)
-        recalculateAddressees();
-    if (m_offlineNickToAddresseeMap.contains(lcNickname))
-        return m_offlineNickToAddresseeMap[lcNickname];
-    else
-        return KABC::Addressee();
-}
-
 void ServerISON::recalculateAddressees()
 {
     // If not watching nicks, no need to build notify list.
     if (Preferences::self()->useNotify())
     {
-        // Get all nicks known to be online.
-        const NickInfoMap* allNicks = m_server->getAllNicks();
-        // Build a map of online nicknames with associated addressbook entry,
-        // indexed by KABC::Addressee uid.
-        // Note that there can be more than one nick associated with an 
addressee.
-        QMap<QString,QStringList> addresseeToOnlineNickMap;
-        NickInfoMap::ConstIterator nickInfoItEnd = allNicks->constEnd();
-        for(NickInfoMap::ConstIterator nickInfoIt=allNicks->constBegin();
-            nickInfoIt != nickInfoItEnd; ++nickInfoIt)
-        {
-            NickInfoPtr nickInfo = (*nickInfoIt);
-            KABC::Addressee addressee = nickInfo->getAddressee();
-            if (!addressee.isEmpty())
-            {
-                QString uid = addressee.uid();
-                QStringList nicknames = addresseeToOnlineNickMap[uid];
-                nicknames.append(nickInfo->getNickname());
-                addresseeToOnlineNickMap[uid] = nicknames;
-            }
-        }
-
-        // Lowercase server name and server group.
-        QString lserverName = m_server->getServerName().toLower();
-        QString lserverGroup = m_server->getDisplayName().toLower();
-
-        // Build notify list from nicks in addressbook, eliminating dups (case 
insensitive).
         QMap<QString,QString> ISONMap;
-        m_offlineNickToAddresseeMap.clear();
 
-        for( KABC::AddressBook::Iterator it =
-            Konversation::Addressbook::self()->getAddressBook()->begin();
-            it != Konversation::Addressbook::self()->getAddressBook()->end(); 
++it )
-        {
-            if(Konversation::Addressbook::self()->hasAnyNicks(*it))
-            {
-                QString uid = (*it).uid();
-                // First check if we already know that this addressee is 
online.
-                // If so, add all the nicks of the addressee that are online, 
but do not
-                // add the offline nicks.  There is no point in monitoring 
such nicks.
-                if (addresseeToOnlineNickMap.contains(uid))
-                {
-                    QStringList nicknames = addresseeToOnlineNickMap[uid];
-                    QStringList::iterator itEnd = nicknames.end();
-
-                    for(QStringList::iterator it = nicknames.begin(); it != 
itEnd; ++it)
-                    {
-                        ISONMap.insert((*it).toLower(), (*it));
-                    }
-                }
-                else
-                {
-                    // If addressee is not known to be online, add all of the 
nicknames
-                    // of the addressee associated with this server or server 
group (if any)
-                    // to the notify list.
-                    // Simultaneously, build a map of all offline nicks and 
corresponding
-                    // KABC::Addressee, indexed by lowercase nickname.
-                    QStringList nicks = (*it).custom("messaging/irc", 
"All").split( QChar( 0xE000 ) );
-                    QStringList::ConstIterator nicksItEnd = nicks.constEnd();
-                    for( QStringList::ConstIterator nicksIt = 
nicks.constBegin();
-                        nicksIt != nicksItEnd; ++nicksIt )
-                    {
-                        QString lserverOrGroup = 
(*nicksIt).section(QChar(0xE120),1).toLower();
-                        if(lserverOrGroup == lserverName || lserverOrGroup == 
lserverGroup ||
-                            lserverOrGroup.isEmpty())
-                        {
-                            QString nickname = 
(*nicksIt).section(QChar(0xE120),0,0);
-                            QString lcNickname = nickname.toLower();
-                            ISONMap.insert(lcNickname, nickname);
-                            m_offlineNickToAddresseeMap.insert(lcNickname, 
*it);
-                        }
-                    }
-                }
-            }
-        }
-        // The part of the ISON list due to the addressbook.
-        m_addresseesISON = ISONMap.values();
-        // Merge with watch list from prefs, eliminating dups (case 
insensitive).
-        // TODO: Don't add nick on user watch list if nick is known to be 
online
-        // under a different nickname?
         QStringList prefsWatchList =
             Preferences::notifyListByGroupId(m_server->getServerGroup()->id());
         QStringList::iterator itEnd = prefsWatchList.end();
@@ -193,7 +82,6 @@ void ServerISON::recalculateAddressees()
     }
     else
     {
-        m_addresseesISON.clear();
         m_ISONList.clear();
     }
 
@@ -215,12 +103,6 @@ void ServerISON::nickInfoChanged(Server* /*server*/, const 
NickInfoPtr /*nickInf
 m_ISONList_invalid = true;
 }
 
-void ServerISON::addressbookChanged()
-{
-    //We need to call recalculateAddressees before returning m_ISONList
-    m_ISONList_invalid = true;
-}
-
 void ServerISON::slotChannelMembersChanged(Server* /*server*/, const QString& 
/*channelName*/,
 bool joined, bool parted, const QString& nickname)
 {
diff --git a/src/irc/serverison.h b/src/irc/serverison.h
index cebb0dc..ad840d7 100644
--- a/src/irc/serverison.h
+++ b/src/irc/serverison.h
@@ -7,9 +7,8 @@
 
 /*
   serverison.h  -  Class to give a list of all the nicks known to the
-                   addressbook and watchednick list that are on this
-           server.  There is one instance of this class for
-           each Server object.
+                   watchednick list that are on this server.  There is
+                   one instance of this class for each Server object.
   begin:     Fri Sep 03 2004
   copyright: (C) 2004 by John Tapsell
   email:     john at geola.co.uk
@@ -25,11 +24,10 @@
 
 #include "nickinfo.h"
 
+#include <QStringList>
 
 class Server;
 
-typedef QMap<QString,KABC::Addressee> OfflineNickToAddresseeMap;
-
 class ServerISON : public QObject
 {
     Q_OBJECT
@@ -39,12 +37,9 @@ class ServerISON : public QObject
         /**
          * Returns a lower case list of nicks whose online status is being 
tracked
          *
-         * Calls getAddressees() and merges with the Watch List from 
preferences.
          * The resulting nicks don't have the servername/servergroup attached.
          *
          * @returns              a lower case list of nicks whose online 
status is being tracked
-         *
-         * @see getAddressees()
          */
         QStringList getWatchList();
         /**
@@ -55,45 +50,15 @@ class ServerISON : public QObject
          */
         QStringList getISONList();
 
-        /**
-         * Returns _some_ of the nicks that the addressees have.
-         * It loops through all the addressees that have nickinfos.
-         *
-         *  - If that addressee has some nicks, and at least one of them is in 
a
-         *    channel we are in, then we know they are online, so don't add.
-         *  - Otherwise, if that addressee has some nicks, and we think they 
are
-         *    online, add the nick that they are currently online with.  This 
does
-         *    mean that if they change their nick, they will appear offline 
for the
-         *    duration between ISON's.
-         *  - Otherwise, add all the nicks we know the addressee has.
-         */
-        QStringList getAddressees();
-
-        /**
-         * Given the nickname of nick that is offline (or at least not known 
to be online),
-         * returns the addressbook entry (if any) for the nick.
-         * @param nickname       Desired nickname.  Case insensitive.
-         * @return               Addressbook entry of the nick or empty if not 
found.
-         */
-        KABC::Addressee getOfflineNickAddressee(QString& nickname);
-
     private slots:
-        void addressbookChanged();
         void nickInfoChanged(Server* server, const NickInfoPtr nickInfo);
         void slotServerGroupsChanged();
         void slotChannelMembersChanged(Server* server, const QString& 
channelName, bool joined, bool parted, const QString& nickname);
         void slotChannelJoinedOrUnjoined(Server* server, const QString& 
channelName, bool joined);
 
     private:
-        /** Map of all offline nicks in the addressbook associated with this 
server
-         *  or server group and their addressbook entry, indexed by lowercase 
nickname.
-         */
-        OfflineNickToAddresseeMap m_offlineNickToAddresseeMap;
-
         /// A pointer to the server we are a member of.
         Server* m_server;
-        /// List of nicks to watch that come from addressbook.
-        QStringList m_addresseesISON;
         /// List from above merged with Watch List from preferences.
         QStringList m_watchList;
         /// List from above but with nicks that are in joined channels 
eliminated.
@@ -103,8 +68,7 @@ class ServerISON : public QObject
         /// If this is true, then we need to call recalculateAddressee before 
returning m_ISONList
         bool m_ISONList_invalid;
         /**
-         * Rebuilds list of nicks to watch whenever an addressbook change 
occurs
-         * or preferences change (whenever m_ISONLIst_invalid is true).
+         * Rebuilds list of nicks to watch whenever a preferences change 
occurs (whenever m_ISONLIst_invalid is true).
          */
         void recalculateAddressees();
 
diff --git a/src/linkaddressbook/addressbook.cpp 
b/src/linkaddressbook/addressbook.cpp
deleted file mode 100644
index 20f3304..0000000
--- a/src/linkaddressbook/addressbook.cpp
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
-  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 class gives function that interact with kaddressbook.
-  begin:     Fri 2004-07-23
-  copyright: (C) 2004 by John Tapsell
-  email:     john at geola.co.uk
-*/
-
-#include "addressbook.h"
-#include "viewcontainer.h"
-#include "mainwindow.h"
-#include "server.h"
-#include "channel.h"
-#include "application.h"
-
-#include <QStringList>
-
-#include <KWindowSystem>
-
-
-namespace Konversation
-{
-    struct AddressbookSingleton
-    {
-        Addressbook addressBook;
-    };
-}
-
-K_GLOBAL_STATIC(Konversation::AddressbookSingleton, s_addessbook)
-
-namespace Konversation
-{
-    Addressbook::Addressbook()
-    {
-        addressBook = KABC::StdAddressBook::self(true);
-        m_ticket=NULL;
-    }
-    Addressbook::~Addressbook()
-    {
-    }
-
-    Addressbook *Addressbook::self()
-    {
-        return &s_addessbook->addressBook;
-    }
-
-    QStringList Addressbook::allContacts()
-    {
-        QStringList contactUIDS;
-        for( KABC::AddressBook::Iterator it = addressBook->begin(); it != 
addressBook->end(); ++it )
-            if(hasAnyNicks(*it)) contactUIDS.append((*it).uid());
-        return contactUIDS;
-    }
-    //Produces a string list of all the irc nicks that are known.
-    QStringList Addressbook::allContactsNicks()
-    {
-        QStringList contacts;
-        for( KABC::AddressBook::Iterator it = addressBook->begin(); it != 
addressBook->end(); ++it )
-            contacts += (*it).custom("messaging/irc", 
"All").split(QChar(0xE000),  QString::SkipEmptyParts);
-        return contacts;
-    }
-
-    QStringList Addressbook::onlineContacts()
-    {
-        QStringList contactUIDS;
-        for( KABC::AddressBook::Iterator it = addressBook->begin(); it != 
addressBook->end(); ++it )
-            if(isOnline(*it)) contactUIDS.append((*it).uid());
-
-        return contactUIDS;
-    }
-    QStringList Addressbook::reachableContacts()
-    {
-        return onlineContacts();
-    }
-    QStringList Addressbook::fileTransferContacts()
-    {
-        return onlineContacts();
-    }
-    bool Addressbook::isPresent(const QString &uid)
-    {
-        return hasAnyNicks(addressBook->findByUid(uid));
-    }
-    QString Addressbook::displayName(const QString &uid)
-    {
-        return getBestNick(addressBook->findByUid(uid));
-    }
-    QString Addressbook::presenceString(const QString &uid)
-    {
-        if(uid.isEmpty())
-        {
-            kDebug() << "Called with an empty uid";
-            return QString("Error");
-        }
-        switch( presenceStatus(uid))
-        {
-            case 0:
-                return "";
-            case 1:
-                return i18n("Offline");
-            case 2:
-                return i18n("Connecting");        //Shouldn't happen - not 
supported.
-            case 3:
-                return i18n("Away");
-            case 4:
-                return i18n("Online");
-        }
-        return i18n("Error");
-    }
-    int Addressbook::presenceStatus(const QString &uid)
-    {
-        return presenceStatusByAddressee(addressBook->findByUid(uid));
-    }
-
-    bool Addressbook::canReceiveFiles(const QString &uid)
-    {
-        if(uid.isEmpty())
-        {
-            kDebug() << "Called with empty uid";
-            return false;
-        }
-        int presence = presenceStatus(uid);
-
-        return (presence == 4) || (presence == 3);
-    }
-    bool Addressbook::canRespond(const QString &uid)
-    {
-        if(uid.isEmpty())
-        {
-            kDebug() << "Called with empty uid";
-            return false;
-        }
-        //this should return false if they are offline.
-        int result = presenceStatus(uid);
-        if(result == 3 || result == 4) return true;
-        return false;
-    }
-    QString Addressbook::locate(const QString &contactId, const QString 
&protocol)
-    {
-        if(contactId.isEmpty())
-        {
-            kDebug() << "Called with empty contactId";
-            return QString();
-        }
-        if(protocol != "messaging/irc")
-            return QString();
-
-        return getKABCAddresseeFromNick(contactId).uid();
-    }
-    QPixmap Addressbook::icon(const QString &uid)
-    {
-
-        Images* icons = Application::instance()->images();
-        QIcon currentIcon;
-        if(!isPresent(uid))
-            return QPixmap();
-
-        switch(presenceStatus(uid))
-        {
-            case 0:                               //Unknown
-            case 1:                               //Offline
-            case 2:                               //connecting - invalid for 
us?
-                currentIcon = icons->getKimproxyOffline();
-                break;
-            case 3:                               //Away
-                currentIcon = icons->getKimproxyAway();
-                break;
-            case 4:                               //Online
-                currentIcon = icons->getKimproxyOnline();
-                break;
-            default:
-                //error
-                kDebug() << "Unknown status " << uid;
-                return QPixmap();
-        }
-
-        QPixmap joinedIcon = currentIcon.pixmap(22, QIcon::Active, QIcon::On);
-        return joinedIcon;
-    }
-    QString Addressbook::context(const QString &uid)
-    {
-        if(uid.isEmpty())
-        {
-            kDebug() << "Called with empty uid";
-            return QString();
-        }
-        QString context;
-        return context;
-    }
-    QStringList Addressbook::protocols()
-    {
-        QStringList protocols;
-        protocols.append("messaging/irc");
-        return protocols;
-    }
-
-    // ACTORS
-    /**
-     * Send a single message to the specified addressee
-     * Any response will be handled by the IM client as a normal
-     * conversation.
-     * @param uid the KABC uid you want to chat with.
-     * @param message the message to send them.
-     */
-    void Addressbook::messageContact( const QString &uid, const QString& 
message )
-    {
-        if(uid.isEmpty())
-        {
-            focusAndShowErrorMessage(i18n("Another KDE application tried to 
use Konversation for instant messaging, but did not specify any contact to send 
the message to.  This is probably a bug in the other application."));
-            return;
-        }
-        KABC::Addressee addressee = addressBook->findByUid(uid);
-        if(addressee.isEmpty())
-        {
-            focusAndShowErrorMessage(i18n("Another KDE application tried to 
use Konversation for instant messaging, but Konversation could not find the 
specified contact in the KDE address book."));
-            return;
-        }
-        NickInfoPtr nickInfo = getNickInfo(addressee);
-        if(!nickInfo)
-        {
-            QString user = addressee.fullEmail();
-            if(!user.isEmpty()) user = " (" + user + ')';
-            focusAndShowErrorMessage(i18n("Another KDE application tried to 
use Konversation for instant messaging, but the requested user %1 is not 
online.",user));
-            return;
-        }
-
-        nickInfo->getServer()->dbusSay(nickInfo->getNickname(), message);
-    }
-
-    /**
-     * Open a chat to a contact, and optionally set some initial text
-     */
-    void Addressbook::messageNewContact( const QString &contactId, const 
QString &/*protocol*/ ) {
-    if(contactId.isEmpty() )
-    {
-        kDebug() << "Called with empty contactid";
-        focusAndShowErrorMessage(i18n("Another KDE application tried to use 
Konversation for instant messaging, but did not specify any contact to send the 
message to.  This is probably a bug in the other application."));
-        return;
-    }
-    messageContact(contactId, QString());
-}
-
-/**
- * Start a chat session with the specified addressee
- * @param uid the KABC uid you want to chat with.
- */
-void Addressbook::chatWithContact( const QString &uid )
-{
-    if(uid.isEmpty())
-    {
-        kDebug() << "Called with empty uid";
-        focusAndShowErrorMessage(i18n("Another KDE application tried to use 
Konversation for instant messaging, but did not specify any contact to send the 
message to.  This is probably a bug in the other application."));
-        return;
-    }
-    messageContact(uid, QString());
-}
-
-/**
- * Send the file to the contact
- * @param uid the KABC uid you are sending to.
- * @param sourceURL a KUrl to send.
- * @param altFileName an alternate filename describing the file
- * @param fileSize file size in bytes
- */
-void Addressbook::sendFile(const QString &uid, const KUrl &sourceURL, bool 
passive, const QString &altFileName, quint64 fileSize)
-{
-    if(uid.isEmpty())
-    {
-        focusAndShowErrorMessage(i18n("Another KDE application tried to use 
Konversation to send a file to a contact, but did not specify any contact to 
send the file to.  This is probably a bug in the other application."));
-        return;
-    }
-    KABC::Addressee addressee = addressBook->findByUid(uid);
-    if(addressee.isEmpty())
-    {
-        focusAndShowErrorMessage(i18n("Another KDE application tried to use 
Konversation to send a file to a contact, but Konversation could not find the 
specified contact in the KDE address book."));
-        return;
-    }
-    NickInfoPtr nickInfo = getNickInfo(addressee);
-    if(!nickInfo)
-    {
-        QString user = addressee.fullEmail();
-        if(!user.isEmpty()) user = " (" + user + ')';
-        focusAndShowErrorMessage(i18n("Another KDE application tried to use 
Konversation to send a file to a contact, but the requested user %1 is not 
currently online.",user));
-        return;
-    }
-    nickInfo->getServer()->addDccSend(nickInfo->getNickname(), sourceURL, 
passive, altFileName, fileSize);
-    QWidget *widget = nickInfo->getServer()->getViewContainer()->getWindow();
-    KWindowSystem::demandAttention(widget->winId());       //If activeWindow 
request is denied, at least demand attention!
-    KWindowSystem::activateWindow(widget->winId());        //May or may not 
work, depending on focus stealing prevention.
-
-}
-
-// MUTATORS
-// Contact list
-/**
- * Add a contact to the contact list
- * @param contactId the protocol specific identifier for the contact, eg UIN 
for ICQ, screenname for AIM, nick for IRC.
- * @param protocolId the protocol, eg one of "AIMProtocol", "MSNProtocol", 
"ICQProtocol", ...
- * @return whether the add succeeded.  False may signal already present, 
protocol not supported, or add operation not supported.
- */
-bool Addressbook::addContact( const QString &/*contactId*/, const QString 
&/*protocolId*/ ) {
-focusAndShowErrorMessage(i18n("Another KDE application tried to use 
Konversation to add a contact.  Konversation does support this."));
-return false;
-//Nicks are auto added if they are put in the addressbook - I don' think there 
is anything useful I can do.
-}
-
-void Addressbook::emitContactPresenceChanged(const QString &uid, int presence)
-{
-    if(uid.isEmpty())
-    {
-        //This warning below is annoying.  FIXME - disabled because it's too 
verbose
-        //             kDebug() << "Addressbook::emitContactPresenceChanged 
was called with empty uid";
-        return;
-    }
-    emit contactPresenceChanged(uid, 
QString::fromLatin1("org.kde.konversation"), presence);
-    // kDebug() << "Presence changed for uid " << uid << " to " << presence;
-}
-
-void Addressbook::emitContactPresenceChanged(const QString &uid)
-{
-    if(uid.isEmpty())
-    {
-        kDebug() << "Called with empty uid";
-        return;
-    };
-
-    emitContactPresenceChanged(uid, presenceStatus(uid));
-}
-
-}                                                 //NAMESPACE
-
-#include "addressbook.moc"
diff --git a/src/linkaddressbook/addressbook.h 
b/src/linkaddressbook/addressbook.h
deleted file mode 100644
index 96a820e..0000000
--- a/src/linkaddressbook/addressbook.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
-  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 class contains functions that interact with kaddressbook.
-  begin:     Fri 2004-07-23
-  copyright: (C) 2004 by John Tapsell
-  email:     john at geola.co.uk
-*/
-
-#ifndef ADDRESSBOOK_H
-#define ADDRESSBOOK_H
-
-#include <kabc/addressbook.h>
-#include <kabc/stdaddressbook.h>
-
-
-#include "../viewer/images.h"
-#include "../irc/nickinfo.h"
-#include "addressbook_base.h"
-
-namespace Konversation
-{
-    struct AddressbookSingleton;
-
-    class Addressbook : public AddressbookBase
-    {
-        Q_OBJECT
-        Q_CLASSINFO("D-Bus Interface", "org.kde.KIM")
-
-            friend struct AddressbookSingleton;
-
-            public:
-
-            virtual ~Addressbook();               // This needs to be public 
so it can be deleted by our static pointer
-            static Addressbook *self();
-
-        public slots:
-            QStringList allContactsNicks();
-            QStringList allContacts();
-            QStringList reachableContacts();
-            QStringList onlineContacts();
-            QStringList fileTransferContacts();
-            bool isPresent( const QString &uid );
-            QString displayName( const QString &uid );
-            QString presenceString( const QString &uid );
-            bool canReceiveFiles( const QString &uid );
-            bool canRespond( const QString &uid );
-            QString locate( const QString &contactId, const QString &protocol 
);
-            // metadata
-            QPixmap icon( const QString &uid );
-            QString context( const QString &uid );
-            virtual int presenceStatus(const QString &uid);
-            // App capabilities
-            QStringList protocols();
-
-            /**
-             * Message a contact by their metaContactId, aka their uid in KABC.
-             */
-            void messageContact( const QString &uid, const QString& message );
-
-            /**
-             * Open a chat to a contact, and optionally set some initial text
-             */
-            void messageNewContact(  const QString &contactId, const QString 
&protocolId );
-
-            /**
-             * Message a contact by their metaContactId, aka their uid in KABC.
-             */
-            void chatWithContact( const QString &uid );
-
-            /**
-             * Send the file to the contact
-             */
-            void sendFile(const QString &uid, const KUrl &sourceURL, bool 
passive,
-                const QString &altFileName = QString(), quint64 fileSize = 0);
-
-        public:
-            /**
-             * Lets outsiders tell us to emit presenceChanged signal.
-             */
-            void emitContactPresenceChanged( const QString &uid, int presence);
-            /**
-             * Lets outsiders tell us to emit presenceChanged signal.
-             */
-            void emitContactPresenceChanged(const QString &uid);
-
-        public slots:
-            bool addContact( const QString &contactId, const QString 
&protocolId );
-
-        signals:
-            void contactPresenceChanged( const QString &uid, const QString 
&appId, int presence );
-
-        protected:
-            Addressbook();
-    };
-
-}
-#endif
diff --git a/src/linkaddressbook/addressbook_base.cpp 
b/src/linkaddressbook/addressbook_base.cpp
deleted file mode 100644
index 6ee556f..0000000
--- a/src/linkaddressbook/addressbook_base.cpp
+++ /dev/null
@@ -1,517 +0,0 @@
-/*
-  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.
-*/
-
-/*
-  addressbook.cpp  - This class gives function that interact with kaddressbook.
-  begin:     Fri 2004-07-23
-  copyright: (C) 2004 by John Tapsell
-  email:     john at geola.co.uk
-*/
-
-#include "addressbook.h"
-#include "../irc/server.h"
-#include "../application.h"
-#include "../mainwindow.h"
-#include "../irc/channel.h"
-
-
-#include <KStringHandler>
-#include <KRun>
-#include <KMessageBox>
-#include <KToolInvocation>
-#include <KProcess>
-
-namespace Konversation
-{
-
-    AddressbookBase::AddressbookBase()
-    {
-        KABC::StdAddressBook::setAutomaticSave( false );
-        m_ticket=NULL;
-    }
-
-    AddressbookBase::~AddressbookBase()
-    {
-    }
-
-    KABC::AddressBook *AddressbookBase::getAddressBook() { return addressBook; 
}
-
-    KABC::Addressee AddressbookBase::getKABCAddresseeFromNick(const QString 
&ircnick, const QString &servername, const QString &servergroup)
-    {
-        KABC::AddressBook::Iterator it;
-
-        for( it = addressBook->begin(); it != addressBook->end(); ++it )
-        {
-            if(hasNick(*it, ircnick, servername, servergroup))
-                return (*it);
-        }
-        return KABC::Addressee();
-    }
-    KABC::Addressee AddressbookBase::getKABCAddresseeFromNick(const QString 
&nick_server)
-    {
-        KABC::AddressBook::Iterator it;
-
-        for( it = addressBook->begin(); it != addressBook->end(); ++it )
-        {
-            if(hasNick(*it, nick_server))
-                return (*it);
-        }
-        return KABC::Addressee();
-    }
-
-    bool AddressbookBase::hasNick(const KABC::Addressee &addressee, const 
QString &ircnick, const QString &servername, const QString &servergroup)
-    {
-
-        QString lnick = ircnick.toLower();
-        QString lnick_servername;
-        QString lnick_servergroup;
-        if(!servername.isEmpty())
-            lnick_servername = lnick + QChar(0xE120) + servername.toLower();
-        if(!servergroup.isEmpty())
-            lnick_servergroup = lnick + QChar(0xE120) + servergroup.toLower();
-
-        QString lit;
-        QStringList addresses = addressee.custom("messaging/irc", 
"All").split(QChar(0xE000), QString::SkipEmptyParts);
-        QStringList::iterator end = addresses.end();
-        for ( QStringList::iterator it = addresses.begin(); it != end; ++it )
-        {
-            lit = (*it).toLower();
-            if(lit == lnick || lit == lnick_servername || lit == 
lnick_servergroup)
-                return true;
-        }
-        return false;
-
-    }
-
-    QStringList AddressbookBase::allContactsNicksForServer(const QString 
&servername, const QString &servergroup)
-    {
-        QStringList contacts;
-        for( KABC::AddressBook::Iterator it = addressBook->begin(); it != 
addressBook->end(); ++it )
-            contacts += getNicks(*it, servername, servergroup);
-        return contacts;
-
-    }
-
-    QStringList AddressbookBase::getNicks(const KABC::Addressee &addressee, 
const QString &servername, const QString &servergroup)
-    {
-        QStringList nicks;
-
-        QString lservername = servername.toLower();
-        QString lservergroup = servergroup.toLower();
-
-        QStringList addresses = addressee.custom("messaging/irc", 
"All").split(QChar(0xE000), QString::SkipEmptyParts);
-        QStringList::iterator end = addresses.end();
-        for ( QStringList::iterator it = addresses.begin(); it != end; ++it )
-        {
-            if(!(*it).contains(QChar( 0xE120)))
-                nicks.append(*it);
-            else
-            {
-                QString it_server = (*it).section(QChar( 0xE120), 
0,0).toLower();
-                if(it_server == lservername || it_server == lservergroup)
-                    nicks.append((*it).section(QChar( 0xE120 ), 1,1));
-            }
-        }
-        return nicks;
-    }
-
-    bool AddressbookBase::hasNick(const KABC::Addressee &addressee, const 
QString &nick_server)
-    {
-        QString lnick_server = nick_server.toLower();
-        QStringList addresses = addressee.custom("messaging/irc", 
"All").split(QChar(0xE000), QString::SkipEmptyParts);
-        QStringList::iterator end = addresses.end();
-        for ( QStringList::iterator it = addresses.begin(); it != end; ++it )
-        {
-            QString it_server = (*it).section(QChar( 0xE120), 0,0).toLower();
-            if(it_server ==lnick_server)
-                return true;
-        }
-        return false;
-
-    }
-
-    QString AddressbookBase::getBestNick(const KABC::Addressee &addressee)
-    {
-        //Look for a nickinfo for this nick, and use that.  That way we turn a 
nick that is online.
-        NickInfoPtr nickInfo = getNickInfo(addressee);
-        if(nickInfo)
-            return nickInfo->getNickname();
-        //No online nickinfo - not connected to server maybe.  just return the 
first nick.
-
-        QStringList addresses = addressee.custom("messaging/irc", 
"All").split(QChar(0xE000), QString::SkipEmptyParts);
-        if(!addresses.empty())
-            return addresses.first();
-        //No irc nicks- nothing left to try - return null
-        return QString();
-    }
-
-    NickInfoPtr AddressbookBase::getNickInfo(const KABC::Addressee &addressee)
-    {
-        NickInfoPtr lastNickInfo;
-        QStringList addresses = addressee.custom("messaging/irc", 
"All").split(QChar(0xE000), QString::SkipEmptyParts);
-        QStringList::iterator end = addresses.end();
-        for ( QStringList::iterator it = addresses.begin(); it != end; ++it )
-        {
-            QString ircnick;
-            QString serverOrGroup;
-            Application::splitNick_Server(*it, ircnick, serverOrGroup);
-            NickInfoPtr nickInfo =
-                dynamic_cast<Application*>(kapp)->getNickInfo(ircnick, 
serverOrGroup);
-            if(nickInfo)
-            {
-                if(!nickInfo->isAway())
-                    return nickInfo;
-                //This nick is away.  Keep looking, but use it if we can't 
find one that's on
-                lastNickInfo = nickInfo;
-            }
-        }
-        //Use a nick that's either away, or non-existent.
-        return lastNickInfo;
-    }
-
-    bool AddressbookBase::hasAnyNicks(const KABC::Addressee &addressee)
-    {
-        return !addressee.custom("messaging/irc", "All").isEmpty();
-    }
-    void AddressbookBase::unassociateNick(KABC::Addressee &addressee, const 
QString &ircnick, const QString &servername, const QString &servergroup)
-    {
-
-        kDebug() << "in unassociatenick for '" << ircnick;
-        if(ircnick.isEmpty()) return;
-
-        QString lnick = ircnick.toLower();
-        QString lnick_servername;
-        QString lnick_servergroup;
-        if(!servername.isEmpty())
-            lnick_servername = lnick + QChar(0xE120) + servername.toLower();
-        if(!servergroup.isEmpty())
-            lnick_servergroup = lnick + QChar(0xE120) + servergroup.toLower();
-
-        //We should now have lnick = ircnick, and versions with servername and 
servergroup -
-        // like johnflux, johnflux at freenode, or johnflux at irc.kde.org    
except with the unicode
-        // separator char 0xe120 instead of the @
-
-        kDebug() << "nick" << ircnick;
-        bool changed = false;
-        if(addressee.isEmpty())
-        {
-            kDebug() << "Ignoring unassociation command for empty addressee 
for nick " << ircnick;
-        }
-        QString lit;
-        QStringList addresses = addressee.custom("messaging/irc", 
"All").split(QChar(0xE000), QString::SkipEmptyParts);
-        QStringList::iterator it = addresses.begin();
-        while(it != addresses.end())
-        {
-            lit = (*it).toLower();
-            if(lit == lnick || lit == lnick_servername || lit == 
lnick_servergroup)
-            {
-                changed = true;
-                it = addresses.erase(it);
-            }
-            else
-            {
-                ++it;
-            }
-        }
-        if(!changed)
-            return;
-
-        //if(!getAndCheckTicket())
-        //     return;
-        QString new_custom = addresses.join( QChar( 0xE000 ));
-        if(new_custom.isEmpty())
-            addressee.removeCustom("messaging/irc", "All");
-        else
-            addressee.insertCustom("messaging/irc", "All", new_custom);
-
-        addressBook->insertAddressee(addressee);
-        //saveTicket();
-    }
-    void AddressbookBase::focusAndShowErrorMessage(const QString &errorMsg)
-    {
-        static_cast<Application 
*>(kapp)->getMainWindow()->focusAndShowErrorMessage(errorMsg);
-    }
-    /**For a given contact, adds the ircnick if they don't already have it.  
If you pass an addressBook, the contact is inserted
-     * if it has changed. */
-    void AddressbookBase::associateNick(KABC::Addressee &addressee, const 
QString &ircnick, const QString &servername, const QString &servergroup)
-    {
-        //It's easiest to just remove it from the list if it's there already
-        unassociateNick(addressee, ircnick, servername, servergroup);
-        QString nick_server = ircnick;
-        if(!servergroup.isEmpty())
-            nick_server += QChar(0xE120) + servergroup;
-        else if(!servername.isEmpty())
-            nick_server += QChar(0xE120) + servername;
-        QStringList addresses = addressee.custom("messaging/irc", 
"All").split(QChar(0xE000), QString::SkipEmptyParts);
-        //For sanity reasons, don't let the number of irc nicks go above 10.
-        //To do this, just remove the irc nick at the end of the list.
-        if(addresses.count() >= 10)
-            addresses.pop_back();
-        addresses.append(nick_server);
-        addressee.insertCustom("messaging/irc", "All", addresses.join( QChar( 
0xE000 )));
-
-        addressBook->insertAddressee(addressee);
-    }
-    /** This function associates the nick for a person, then iterates over all 
the contacts unassociating the nick from everyone else. It saves the addressses 
that have changed.*/
-    bool 
AddressbookBase::associateNickAndUnassociateFromEveryoneElse(KABC::Addressee 
&addressee, const QString &ircnick, const QString &servername, const QString 
&servergroup)
-    {
-        for( KABC::AddressBook::Iterator it = addressBook->begin(); it != 
addressBook->end(); ++it )
-            if((*it).uid() != addressee.uid())
-                unassociateNick(*it, ircnick, servername, servergroup);
-        associateNick(addressee, ircnick, servername, servergroup);
-        return true;;
-    }
-
-    bool AddressbookBase::getAndCheckTicket()
-    {
-        if(m_ticket)
-        {
-            kError() << "Internal error - getting new ticket without saving 
old" << endl;
-            return false;
-        }
-        m_ticket = addressBook->requestSaveTicket();
-        if ( !m_ticket )
-        {
-            kError() << "Resource is locked by other application!" << endl;
-            //emit error
-            return false;
-        }
-        kDebug() << "gotTicketSuccessfully";
-        return true;
-    }
-    void AddressbookBase::releaseTicket()
-    {
-        addressBook->releaseSaveTicket(m_ticket);
-        m_ticket = NULL;
-    }
-
-    bool AddressbookBase::saveTicket()
-    {
-        if(!addressBook->save( m_ticket) )
-        {
-            kError() << "Saving failed!" << endl;
-            addressBook->releaseSaveTicket(m_ticket);
-            m_ticket = NULL;
-            return false;
-        }
-        kDebug() << "saveTicket() was successful";
-        m_ticket= NULL;
-        emit addresseesChanged();
-        return true;
-    }
-
-    bool AddressbookBase::saveAddressbook()
-    {
-        if(m_ticket)
-        {
-            kError() << "Internal error - getting new ticket without saving 
old" << endl;
-            return false;
-        }
-        m_ticket = addressBook->requestSaveTicket();
-        if ( !m_ticket )
-        {
-            kError() << "Resource is locked by other application!" << endl;
-            return false;
-        }
-        else
-        {
-            if ( !addressBook->save( m_ticket ) )
-            {
-                kError() << "Saving failed!" << endl;
-                addressBook->releaseSaveTicket(m_ticket);
-                m_ticket = NULL;
-                return false;
-            }
-        }
-        kDebug() << "Save was successful";
-        m_ticket = NULL;
-        emit addresseesChanged();
-        return true;
-    }
-
-    bool AddressbookBase::saveAddressee(KABC::Addressee &addressee)
-    {
-        Q_ASSERT(&addressee);
-        addressBook->insertAddressee(addressee);
-        bool success = saveAddressbook();
-        if(success)
-            emitContactPresenceChanged(addressee.uid(), 
presenceStatusByAddressee(addressee));
-        return success;
-    }
-
-    /**
-     * Indicate the presence as a number.  Checks all the nicks that that 
person has.
-     * If we find them, return 4 (online).
-     * If we are connected to any of the servers that they are on, and we 
don't find them, return 1 (offline)
-     * If we find them, but they are set to away then return 3 (away)
-     * If we are connected to none of the servers that they are on, return 0 
(unknown)
-     * @param addressee Addressbook contact you want to know of the presence of
-     * @return 0 (unknown), 1 (offline), 3 (away), 4 (online)
-     */
-    int AddressbookBase::presenceStatusByAddressee(const KABC::Addressee 
&addressee)
-    {
-        Q_ASSERT(&addressee);
-        NickInfoPtr nickInfo = getNickInfo(addressee);
-
-        if(!nickInfo)
-        {
-            if(hasAnyNicks(addressee))
-                return 1;                         //either offline, or we 
aren't on the same server.
-            else
-                return 0;                         //Not known to us
-        }
-        if(nickInfo->isAway()) return 3;
-        return 4;
-
-    }
-    bool AddressbookBase::isOnline(KABC::Addressee &addressee)
-    {
-        return !!getNickInfo(addressee);
-    }
-
-    bool AddressbookBase::editAddressee(const QString &uid)
-    {
-        Q_ASSERT(!uid.isEmpty());
-        //FIXME:  This hack can be removed.  I fixed the below mentioned bug 
in kde 3.4 cvs - 2005-01-02
-        //
-        //Because of stupid bugs in kaddressbook, first load kaddressbook 
using startServiceByDesktopPath
-        // then call it on the command line to actually put it in edit mode.  
This is stupid :(
-        KToolInvocation::startServiceByDesktopName( "kaddressbook" );
-
-        KProcess *proc = new KProcess;
-        *proc << "kaddressbook";
-        *proc << "--editor-only" << "--uid" << uid;
-        kDebug() << "running kaddressbook --editor-only --uid " << uid;
-        if(!proc->startDetached())
-        {
-            KMessageBox::error(0, i18n("Could not run the address book program 
(kaddressbook) - this is most likely because it is not installed.  Please 
install the 'kdepim' packages."));
-            return false;
-        }
-        return true;
-    }
-
-    bool AddressbookBase::sendEmail(const KABC::Addressee &addressee)
-    {
-        if(addressee.preferredEmail().isEmpty())
-        {
-            KMessageBox::sorry(0, i18n("The contact that you have selected 
does not have an email address associated with them. "), i18n("Cannot Send 
Email"));
-            return false;
-        }
-        return runEmailProgram(addressee.fullEmail());
-    }
-
-    bool AddressbookBase::runEmailProgram(const QString &mailtoaddress)
-    {
-        KRun *proc = new KRun(KUrl(QString("mailto:";) + 
KStringHandler::from8Bit(mailtoaddress.toAscii())),0);
-        kDebug() << "Sending email to " << mailtoaddress;
-        if(proc->hasError())
-        {
-            KMessageBox::error(0, i18n("Could not run your email program.  
This is possibly because one is not installed.  To install the KDE email 
program (kmail) please install the 'kdepim' packages."));
-            return false;
-        }
-        return true;
-
-    }
-    bool AddressbookBase::sendEmail(const NickInfoList& nicks)
-    {
-        if(nicks.isEmpty())
-            return false;
-
-        QString mailto;
-
-        QStringList nicksWithoutAddressee;
-        QStringList nicksWithoutEmails;
-        QStringList nicksWithEmails;
-
-        foreach(NickInfoPtr nickInfo, nicks)
-        {
-            if (nickInfo.isNull())
-                continue;
-
-            KABC::Addressee addr = nickInfo->getAddressee();
-            if(addr.isEmpty())
-            {
-                nicksWithoutAddressee.append(nickInfo->getNickname());
-            }
-            else if(addr.preferredEmail().isEmpty())
-            {
-                nicksWithoutEmails.append(nickInfo->getNickname());
-            }
-            else
-            {
-                nicksWithEmails.append(nickInfo->getNickname());
-                if(!mailto.isEmpty())
-                    mailto += ", ";
-                mailto += addr.fullEmail();
-            }
-        }
-        if(!nicksWithoutAddressee.isEmpty() || !nicksWithoutEmails.isEmpty())
-        {
-            QString message;
-            if(nicksWithoutEmails.isEmpty())
-            {
-                if(nicksWithEmails.isEmpty())
-                {
-                    if(nicksWithoutAddressee.count() > 1)
-                        message = i18n("None of the selected contacts are 
associated with address book entries. ");
-                    else
-                        message = i18n("The selected contact is not associated 
with an address book entry. ");
-                }
-                else
-                {
-                    if(nicksWithoutAddressee.count() > 1)
-                        message = i18n("Some of the contacts (%1) that you 
have selected are not associated with address book entries. 
",nicksWithoutAddressee.join(", "));
-                    else
-                        message = i18n("One of the contacts (%1) that you have 
selected is not associated with an address book entry. 
",nicksWithoutAddressee.join(", "));
-                }
-                message += i18n("You can right click on a contact and choose 
to edit the Address Book Associations to link them to a contact in your address 
book.");
-            }
-            else if(nicksWithoutAddressee.isEmpty())
-            {
-                if(nicksWithEmails.isEmpty())
-                {
-                    if(nicksWithoutEmails.count() > 1)
-                        message = i18n("None of the selected contacts have an 
email address associated with them. ");
-                    else
-                        message = i18n("The selected contact does not have an 
associated email address. ");
-                }
-                else
-                {
-                    if(nicksWithoutEmails.count() > 1)
-                        message = i18n("Some of the contacts (%1) that you 
have selected do not have email addresses associated with them. 
",nicksWithoutEmails.join(", "));
-                    else
-                        message = i18n("One of the contacts (%1) that you have 
selected does not have an email address associated with them. 
",nicksWithoutEmails.join(", "));
-                }
-                message += i18n("You can right click on a contact and edit the 
corresponding address book entry to add an email address for them.");
-            }
-            else
-            {
-                message = i18n("Some of the contacts (%1) that you have 
selected are not associated with address book entries, and some of the contacts 
(%2) do not have email addresses associated with them.  
",nicksWithoutAddressee.join(", "),nicksWithoutEmails.join(", "));
-                message += i18n("For the former contacts, this can be resolved 
by right clicking on a contact and choosing to edit the Address Book 
Associations, thereby linking them to a contact in your address book.  For the 
latter, by choosing to editing the corresponding address book contact you can 
specify an email address for them.");
-            }
-            if(nicksWithEmails.isEmpty())
-            {
-                KMessageBox::sorry(0, message, i18n("Cannot Send Email"));
-                return false;
-            }
-            else
-            {
-                message += i18n("\nDo you want to send an email anyway to the 
nicks that do have email addresses?");
-                int result = KMessageBox::questionYesNo(0, message, i18n("Send 
Email"), KGuiItem(i18n("&Send Email...")), KGuiItem(i18n("&Cancel")));
-                if(result == KMessageBox::No)
-                {
-                    return false;
-                }
-            }
-        }
-
-        return runEmailProgram(mailto);
-    }
-
-}                                                 // NAMESPACE
-
-#include "addressbook_base.moc"
diff --git a/src/linkaddressbook/addressbook_base.h 
b/src/linkaddressbook/addressbook_base.h
deleted file mode 100644
index 4294661..0000000
--- a/src/linkaddressbook/addressbook_base.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
-  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.
-*/
-
-/*
-  addressbook.cpp  - This class contains functions that interact with 
kaddressbook.
-  begin:     Fri 2004-07-23
-  copyright: (C) 2004 by John Tapsell
-  email:     john at geola.co.uk
-*/
-
-#ifndef ADDRESSBOOKBASE_H
-#define ADDRESSBOOKBASE_H
-
-#include "../viewer/images.h"
-#include "../irc/nickinfo.h"
-#include "../irc/channelnick.h"
-
-#include <QObject>
-
-
-#include <kabc/addressbook.h>
-#include <kabc/stdaddressbook.h>
-
-
-namespace Konversation
-{
-    class AddressbookBase : public QObject//, public KIMIface
-    {
-        Q_OBJECT
-            public:
-            virtual ~AddressbookBase();           // This needs to be public 
so it can be deleted by our static pointer
-            KABC::Addressee getKABCAddresseeFromNick(const QString &ircnick, 
const QString &servername, const QString &servergroup);
-            KABC::Addressee getKABCAddresseeFromNick(const QString 
&nick_server);
-            bool hasNick(const KABC::Addressee &addressee, const QString 
&ircnick, const QString &servername, const QString &servergroup);
-            bool hasNick(const KABC::Addressee &addressee, const QString 
&nick_server);
-
-            /** For a given contact, remove the ircnick if they have it. If you
-             *  pass an addressBook, the contact is inserted if it has changed.
-             */
-            void unassociateNick(KABC::Addressee &addressee, const QString 
&ircnick, const QString &servername, const QString &servergroup);
-            void associateNick(KABC::Addressee &addressee, const QString 
&ircnick, const QString &servername, const QString &servergroup);
-            bool associateNickAndUnassociateFromEveryoneElse(KABC::Addressee 
&addressee, const QString &ircnick, const QString &servername, const QString 
&servergroup);
-            /** If this user is online, return one of the nicks that they are
-             * using.  Otherwise return the first nick listed.
-             * If there are multiple matches, it will prefer ones that are not 
set to away.
-             * @return online nick, first nick, or QString::null if they 
aren't known at all.
-             */
-            QString getBestNick(const KABC::Addressee &addressee);
-            bool hasAnyNicks(const KABC::Addressee &addresse);
-            int presenceStatusByAddressee(const KABC::Addressee &addressee);
-            bool isOnline(KABC::Addressee &addressee);
-            bool getAndCheckTicket();
-            bool saveTicket();
-            void releaseTicket();
-            bool saveAddressee(KABC::Addressee &addressee);
-            bool saveAddressbook();
-
-            QStringList allContactsNicksForServer(const QString &servername, 
const QString &servergroup);
-            QStringList getNicks(const KABC::Addressee &addressee, const 
QString &servername, const QString &servergroup);
-
-            KABC::AddressBook *getAddressBook();
-
-            /**  Return an online NickInfo for this addressee.
-             *  If there are multiple matches, it tries to pick one that is 
not away.
-             *  Note: No NickInfo is returned if the addressee is offline.
-             *  NickInfo's are for online and away nicks only.
-             *  @param addressee The addressee to get a nickInfo for
-             *  @return A nickInfo.  It tries hard to return a nickInfo that 
is not away if one exists.
-             */
-            static NickInfoPtr getNickInfo(const KABC::Addressee &addressee);
-            /**
-             * Lets outsiders tell us to emit presenceChanged signal.
-             */
-            virtual void emitContactPresenceChanged(const QString &uid, int 
presence) = 0;
-            /**
-             * Lets outsiders tell us to emit presenceChanged signal.
-             */
-            virtual void emitContactPresenceChanged(const QString &uid) = 0;
-
-            /**
-             *  Run kmail (or whatever the users email client is)
-             *  to create a single email addressed to all of the nicks passed 
in.
-             *  Gives an error dialog to the user if any of the contacts don't 
have an
-             *  email address associated, and gives the user the option to 
continue
-             *  with the contacts that did have email addresses.
-             */
-            bool sendEmail(const NickInfoList& nicks);
-            /**
-             *  Run kmail (or whatever the users email client is)
-             *  to create a single email addressed to the addressee passed in.
-             *  Gives an error dialog to the user if the addressee doesn't 
have an email address associated.
-             */
-            bool sendEmail(const KABC::Addressee &addressee);
-            /**
-             *  Run kaddressbook to edit the addressee passed in.
-             */
-            bool editAddressee(const QString &uid);
-            /**
-             *  Run the users email program (e.g. kmail) passing "mailto:"; + 
mailtoaddress.
-             *  Note that mailto:  will be prepended for you.
-             *  @param mailtoaddress A comma delimited set of email address 
topass as "mailto:";
-             *  @return True if there were no problems running the email 
program.  An error will be shown to the user if there was.
-             */
-            bool runEmailProgram(const QString &mailtoaddress);
-
-            /** Just calls 
KonversationMainWindow::focusAndShowErrorMessage(const QString *errorMsg)
-             *
-             *  @see KonversationMainWindow::focusAndShowErrorMessage(const 
QString *errorMsg)
-             */
-            void focusAndShowErrorMessage(const QString &errorMsg);
-            signals:
-            void addresseesChanged();
-
-        protected:
-            AddressbookBase();
-            KABC::AddressBook* addressBook;
-            KABC::Ticket *m_ticket;
-    };
-
-}                                                 //NAMESPACE
-#endif
diff --git a/src/linkaddressbook/addresseeitem.cpp 
b/src/linkaddressbook/addresseeitem.cpp
deleted file mode 100644
index 76c200b..0000000
--- a/src/linkaddressbook/addresseeitem.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-    Copyright (c) 2001 Cornelius Schumacher <schumacher 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 Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/
-
-#include "addresseeitem.h"
-
-#include <QPushButton>
-#include <QRegExp>
-
-
-AddresseeItem::AddresseeItem( QTreeWidget *parent, const KABC::Addressee 
&addressee) :
-QTreeWidgetItem( parent ),
-mAddressee( addressee )
-{
-    //We can't save showphoto because we don't have a d pointer
-    KABC::Picture pic = mAddressee.photo();
-    if(!pic.isIntern())
-        pic = mAddressee.logo();
-    if(pic.isIntern())
-    {
-                                                  //60 pixels seems okay.. 
kmail uses 60 btw
-        QIcon icon( QPixmap::fromImage( pic.data().scaledToWidth(60) ) );
-        setIcon( Photo, icon );
-    }
-
-    setText( Name, addressee.realName() );
-    setText( Email, addressee.preferredEmail() );
-}
-
-QString AddresseeItem::key( int column, bool ) const
-{
-    if (column == Email)
-    {
-        QString value = text(Email);
-        QRegExp emailRe("<\\S*>");
-        int match = emailRe.indexIn(value);
-        if (match > -1)
-            value = value.mid(match + 1, emailRe.matchedLength() - 2);
-
-        return value.toLower();
-    }
-
-    return text(column).toLower();
-}
diff --git a/src/linkaddressbook/addresseeitem.h 
b/src/linkaddressbook/addresseeitem.h
deleted file mode 100644
index 516db08..0000000
--- a/src/linkaddressbook/addresseeitem.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-    This file is part of libkabc.
-    Copyright (c) 2001 Cornelius Schumacher <schumacher 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 Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/
-
-#ifndef ADDRESSEEITEM_H
-#define ADDRESSEEITEM_H
-
-
-#include <kabc/addressbook.h>
-
-#include <QTreeWidget>
-
-
-/**
-  @short Special ListViewItem
-*/
-class AddresseeItem : public QTreeWidgetItem
-{
-    public:
-
-        /**
-          Type of column
-          @li @p Name -  Name in Addressee
-          @li @p Email - Email in Addressee
-        */
-        enum columns { Photo =0, Name = 1, Email = 2 };
-
-        /**
-          Constructor.
-
-          @param parent    The parent listview.
-          @param addressee The associated addressee.
-        */
-        AddresseeItem( QTreeWidget *parent, const KABC::Addressee &addressee );
-
-        /**
-          Returns the addressee.
-        */
-        KABC::Addressee addressee() const { return mAddressee; }
-
-        /**
-          Method used by QListView to sort the items.
-        */
-        virtual QString key( int column, bool ascending ) const;
-
-    private:
-        KABC::Addressee mAddressee;
-};
-
-#endif /* ADDRESSEEITEM_H */
diff --git a/src/linkaddressbook/kimiface.h b/src/linkaddressbook/kimiface.h
deleted file mode 100644
index 4d8f960..0000000
--- a/src/linkaddressbook/kimiface.h
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
-    kimiface.h - KDE Instant Messenger DCOP Interface
-
-    Copyright (c) 2004    Will Stephenson       <lists at 
stevello.free-online.co.uk>
-
-    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 Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/
-
-#ifndef KIMIFACE_H
-#define KIMIFACE_H
-
-#include <QPixmap>
-
-#include <Q3CString>
-
-#include <KUrl>
-
-/**
- * Generic DCOP interface for KDE instant messenger applications
- * Note one omission of this interface is the lack of control over the range 
of values used for protocols' names.
- * @author Will Stephenson <lists at stevello.free-online.co.uk>
- */
-class KIMIface : virtual public DCOPObject
-{
-    K_DCOP
-
-        k_dcop:
-    // ACCESSORS
-    // contact list
-    /**
-     * Obtain a list of IM-contactable entries in the KDE
-     * address book.
-     * @return a list of KABC uids.
-     */
-    virtual QStringList allContacts() = 0;
-    /**
-     * Obtain a list of  KDE address book entries who are
-     * currently reachable.
-     * @return a list of KABC uids who can receive a message, even if online.
-     */
-    virtual QStringList reachableContacts() = 0;
-    /**
-     * Obtain a list of  KDE address book entries who are
-     * currently online.
-     * @return a list of KABC uids who are online with unspecified presence.
-     */
-    virtual QStringList onlineContacts() = 0;
-    /**
-     * Obtain a list of  KDE address book entries who may
-     * receive file transfers.
-     * @return a list of KABC uids capable of file transfer.
-     */
-    virtual QStringList fileTransferContacts() = 0;
-
-    // individual
-    /**
-     * Confirm if a given KABC uid is known to KIMProxy
-     * @param uid the KABC uid you are interested in.
-     * @return whether one of the chat programs KIMProxy talks to knows of 
this KABC uid.
-     */
-    virtual bool isPresent( const QString & uid ) = 0;
-    /**
-     * Obtain the IM app's idea of the contact's display name
-     * Useful if KABC lookups may be too slow
-     * @param uid KABC uid.
-     * @return The corresponding display name.
-     */
-    virtual QString displayName( const QString & uid ) = 0;
-    /**
-     * Obtain the IM presence as a i18ned string for the specified addressee
-     * @param uid the KABC uid you want the presence for.
-     * @return the i18ned string describing presence.
-     */
-    virtual QString presenceString( const QString & uid ) = 0;
-    /**
-     * Obtain the IM presence as a number (see KIMIface) for the specified 
addressee
-     * @param uid the KABC uid you want the presence for.
-     * @return a numeric representation of presence - currently one of 0 
(Unknown), 1 (Offline), 2 (Connecting), 3 (Away), 4 (Online)
-     */
-    virtual int presenceStatus( const QString & uid ) = 0;
-    /**
-     * Indicate if a given uid can receive files
-     * @param uid the KABC uid you are interested in.
-     * @return Whether the specified addressee can receive files.
-     */
-    virtual bool canReceiveFiles( const QString & uid ) = 0;
-    /**
-     * Some media are unidirectional (eg, sending SMS via a web interface).
-     * @param uid the KABC uid you are interested in.
-     * @return Whether the specified addressee can respond.
-     */
-    virtual bool canRespond( const QString & uid ) = 0;
-    /**
-     * Get the KABC uid corresponding to the supplied IM address
-     * Protocols should be
-     * @param contactId the protocol specific identifier for the contact, eg 
UIN for ICQ, screenname for AIM, nick for IRC.
-     * @param protocol the protocol, eg one of "AIMProtocol", "MSNProtocol", 
"ICQProtocol",
-     * @return a KABC uid or null if none found/
-     */
-    virtual QString locate( const QString & contactId, const QString & 
protocol ) = 0;
-    // metadata
-    /**
-     * Obtain the icon representing IM presence for the specified addressee
-     * @param uid the KABC uid you want the presence for.
-     * @return a pixmap representing the uid's presence.
-     */
-    virtual QPixmap icon( const QString & uid ) = 0;
-    /**
-     * Get the supplied addressee's current context (home, work, or any).
-     * @param uid the KABC uid you want the context for.
-     * @return A QString describing the context, or null if not supported.
-     */
-    virtual QString context( const QString & uid ) = 0;
-    // App capabilities
-    /**
-     * Discover what protocols the application supports
-     * @return the set of protocols that the application supports
-     */
-    virtual QStringList protocols() = 0;
-
-    // ACTORS
-    /**
-     * Send a single message to the specified addressee
-     * Any response will be handled by the IM client as a normal
-     * conversation.
-     * @param uid the KABC uid you want to chat with.
-     * @param message the message to send them.
-     */
-    virtual void messageContact( const QString &uid, const QString& message ) 
= 0;
-
-    /**
-     * Open a chat to a contact, and optionally set some initial text
-     */
-    virtual void messageNewContact( const QString &contactId, const QString 
&protocol ) = 0;
-
-    /**
-     * Start a chat session with the specified addressee
-     * @param uid the KABC uid you want to chat with.
-     */
-    virtual void chatWithContact( const QString &uid ) = 0;
-
-    /**
-     * Send the file to the contact
-     * @param uid the KABC uid you are sending to.
-     * @param sourceURL a KUrl to send.
-     * @param altFileName an alternate filename describing the file
-     * @param fileSize file size in bytes
-     */
-    virtual void sendFile(const QString &uid, const KUrl &sourceURL,
-        const QString &altFileName = QString(), uint fileSize = 0) = 0;
-
-    // MUTATORS
-    // Contact list
-    /**
-     * Add a contact to the contact list
-     * @param contactId the protocol specific identifier for the contact, eg 
UIN for ICQ, screenname for AIM, nick for IRC.
-     * @param protocol the protocol, eg one of "AIMProtocol", "MSNProtocol", 
"ICQProtocol", ...
-     * @return whether the add succeeded.  False may signal already present, 
protocol not supported, or add operation not supported.
-     */
-    virtual bool addContact( const QString &contactId, const QString &protocol 
) = 0;
-    // SIGNALS
-    k_dcop_signals:
-    /**
-     * Indicates that a contact's presence has changed
-     * @param uid the contact whose presence changed.
-     * @param appId the dcop application id of the program the signal 
originates from.
-     * @param presence the new numeric presence @ref presenceStatus
-     */
-    void contactPresenceChanged( QString uid, Q3CString appId, int presence );
-};
-#endif
-
-/*
- * Local variables:
- * c-indentation-style: k&r
- * c-basic-offset: 8
- * indent-tabs-mode: t
- * End:
- */
-// vim: set noet ts=4 sts=4 sw=4:
diff --git a/src/linkaddressbook/linkaddressbookui.cpp 
b/src/linkaddressbook/linkaddressbookui.cpp
deleted file mode 100644
index c6f6a6d..0000000
--- a/src/linkaddressbook/linkaddressbookui.cpp
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
-   Kontact's Link IRC Nick to Addressbook contact Wizard
-
-   This code was shamelessly stolen from kopete's add new contact wizard.
-
-    Copyright (c) 2004 by John Tapsell           <john at geola.co.uk>
-
-    Copyright (c) 2003 by Will Stephenson        <will at 
stevello.free-online.co.uk>
-    Copyright (c) 2002 by Nick Betcher           <nbetcher at kde.org>
-    Copyright (c) 2002 by Duncan Mac-Vicar Prett <duncan at kde.org>
-
-Kopete    (c) 2002-2004 by the Kopete developers  <kopete-devel at kde.org>
-
-*************************************************************************
-*                                                                       *
-* This program is free software; you can redistribute it and/or modify  *
-* it under the terms of the GNU General Public License as published by  *
-* the Free Software Foundation; either version 2 of the License, or     *
-* (at your option) any later version.                                   *
-*                                                                       *
-*************************************************************************
-*/
-
-#include "linkaddressbookui.h"
-#include "addressbook.h"
-#include "addresseeitem.h"
-
-#include <KInputDialog>
-
-
-LinkAddressbookUI::LinkAddressbookUI( QWidget *parent, const QString &ircnick, 
const QString &servername, const QString &servergroup, const QString 
&suggested_realname )
-: KDialog(parent)
-{
-    setCaption( i18n("Link IRC Nick to Address Book Contact") );
-    setButtons( KDialog::Ok|KDialog::Cancel|KDialog::Help );
-    setDefaultButton( KDialog::Ok );
-
-    m_ui.setupUi(mainWidget());
-
-    enableButtonOk(false);
-    setHelp("linkaddressbook");
-    m_addressBook = Konversation::Addressbook::self()->getAddressBook();
-
-    // Addressee validation connections
-    connect( m_ui.addAddresseeButton, SIGNAL(clicked()), 
SLOT(slotAddAddresseeClicked()) );
-    connect( m_ui.addresseeListView, SIGNAL(itemSelectionChanged()), 
SLOT(slotAddresseeSelectionChanged()) );
-    connect( m_addressBook, SIGNAL(addressBookChanged(AddressBook*)), this, 
SLOT(slotLoadAddressees()) );
-    connect( Konversation::Addressbook::self(), SIGNAL(addresseesChanged()), 
this, SLOT(slotLoadAddressees()));
-
-    //We should add a clear KAction here.  But we can't really do that with a 
designer file :\  this sucks
-
-    m_ircnick = ircnick;
-    m_lower_ircnick = m_ircnick.toLower();
-    m_servername = servername;
-    m_servergroup = servergroup;
-    m_suggested_realname = suggested_realname;
-
-    m_ui.addresseeListView->headerItem()->setIcon(2, KIcon("mail-message"));
-    m_ui.addresseeListView->headerItem()->setText(2, i18n("Email") );
-
-    if(m_suggested_realname.isEmpty()) m_suggested_realname = 
suggested_realname;
-    Q_ASSERT(!ircnick.isEmpty());
-    m_ui.kListViewSearchLine->setTreeWidget(m_ui.addresseeListView);
-    slotLoadAddressees();
-
-                                                  //Photo is 60, and it's nice 
to have a small gap, imho
-    m_ui.addresseeListView->setColumnWidth(0, 63);
-    connect( this, SIGNAL(okClicked()), this, SLOT(slotOk()) );
-    connect( this, SIGNAL(cancelClicked()), this, SLOT(slotCancel()) );
-}
-
-LinkAddressbookUI::~LinkAddressbookUI()
-{
-}
-
-/**  Read in contacts from addressbook, and select the contact that is for our 
nick. */
-void LinkAddressbookUI::slotLoadAddressees()
-{
-    m_ui.addresseeListView->clear();
-
-    QString realname;
-    int num_contacts_with_nick=0;                 //There shouldn't be more 
than 1 contact with this irc nick.  Warn the user if there is.
-
-    KABC::AddressBook::Iterator it;
-    for( it = m_addressBook->begin(); it != m_addressBook->end(); ++it )
-        if(Konversation::Addressbook::self()->hasNick(*it, m_lower_ircnick, 
m_servername, m_servergroup))
-    {
-        realname = (*it).realName();
-        num_contacts_with_nick++;
-        (new AddresseeItem( m_ui.addresseeListView, (*it) 
))->setSelected(true);
-    } else
-    /*AddresseeItem *item =*/ new AddresseeItem( m_ui.addresseeListView, 
(*it));
-
-    if(num_contacts_with_nick == 0)
-        m_ui.lblHeader->setText(i18n("Choose the person who '%1' 
is.",m_ircnick));
-    else if(num_contacts_with_nick == 1 && realname.isEmpty())
-        m_ui.lblHeader->setText(i18n("Currently '%1' is associated with a 
contact.",m_ircnick));
-    else if(num_contacts_with_nick == 1 && !realname.isEmpty())
-        m_ui.lblHeader->setText(i18n("Currently '%1' is associated with 
contact '%2'.",m_ircnick,realname));
-    else
-        m_ui.lblHeader->setText(i18n("<qt><b>Warning:</b> '%1' is currently 
being listed as belonging to multiple contacts.  Please select the correct 
contact.</qt>",m_ircnick));
-
-}
-
-void LinkAddressbookUI::slotAddAddresseeClicked()
-{
-    // Pop up add addressee dialog
-    if(!Konversation::Addressbook::self()->getAndCheckTicket()) return;
-    QString addresseeName = KInputDialog::getText( i18n( "New Address Book 
Entry" ),
-        i18n( "Name the new entry:" ),
-        m_suggested_realname, 0, this );
-
-    if ( !addresseeName.isEmpty() )
-    {
-        KABC::Addressee addr;
-        addr.setNameFromString( addresseeName );
-        m_addressBook->insertAddressee(addr);
-        Konversation::Addressbook::self()->saveTicket();
-        slotLoadAddressees();
-    }
-    else
-    {
-        Konversation::Addressbook::self()->releaseTicket();
-    }
-}
-
-void LinkAddressbookUI::slotAddresseeSelectionChanged()
-{
-    enableButtonOk(m_ui.addresseeListView->selectedItems().count() != 0);
-}
-
-void LinkAddressbookUI::slotOk()
-{
-    //// set the KABC uid in the metacontact
-    AddresseeItem *item = 0L;
-    QTreeWidgetItem *selectedItem = 
(m_ui.addresseeListView->selectedItems().count() != 0 ? 
m_ui.addresseeListView->selectedItems().at(0) : 0);
-    item = static_cast<AddresseeItem *>( selectedItem );
-
-    KABC::Addressee addr;
-    if ( item )
-    {
-
-        addr = item->addressee();
-        if(!Konversation::Addressbook::self()->getAndCheckTicket())
-        {
-            return;
-        }
-        
Konversation::Addressbook::self()->associateNickAndUnassociateFromEveryoneElse(addr,
 m_ircnick, m_servername, m_servergroup);
-        if(!Konversation::Addressbook::self()->saveTicket())
-        {
-            return;
-        }
-    }
-    disconnect( m_addressBook, SIGNAL(addressBookChanged(AddressBook*)), this, 
SLOT(slotLoadAddressees()) );
-    deleteLater();
-    accept();
-}
-
-void LinkAddressbookUI::slotCancel()
-{
-    disconnect( m_addressBook, SIGNAL(addressBookChanged(AddressBook*)), this, 
SLOT(slotLoadAddressees()) );
-    deleteLater();
-    reject();
-}
-
-#include "linkaddressbookui.moc"
-
-// vim: set noet ts=4 sts=4 sw=4:
diff --git a/src/linkaddressbook/linkaddressbookui.h 
b/src/linkaddressbook/linkaddressbookui.h
deleted file mode 100644
index fc602d0..0000000
--- a/src/linkaddressbook/linkaddressbookui.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-    linkaddressbookwizard.h - Kontact's Link IRC Nick to Addressbook contact 
Wizard
-
-    This code was shamelessly stolen from kopete's add new contact wizard.
-
-    Copyright (c) 2004 by John Tapsell                  <john at geola.co.uk>
-
-    Copyright (c) 2003 by Will Stephenson        <will at 
stevello.free-online.co.uk>
-    Copyright (c) 2002 by Nick Betcher           <nbetcher at kde.org>
-    Copyright (c) 2002 by Duncan Mac-Vicar Prett <duncan at kde.org>
-
-Kopete    (c) 2002-2004 by the Kopete developers  <kopete-devel at kde.org>
-
-*************************************************************************
-*                                                                       *
-* This program is free software; you can redistribute it and/or modify  *
-* it under the terms of the GNU General Public License as published by  *
-* the Free Software Foundation; either version 2 of the License, or     *
-* (at your option) any later version.                                   *
-*                                                                       *
-*************************************************************************
-*/
-
-#ifndef LINKADDRESSBOOKUI_H
-#define LINKADDRESSBOOKUI_H
-
-
-#include <kdialog.h>
-#include <kabc/addressbook.h>
-
-#include "ui_linkaddressbookui_base.h"
-
-
-class LinkAddressbookUI : public KDialog
-{
-    Q_OBJECT
-
-        public:
-        LinkAddressbookUI( QWidget *parent, const QString &ircnick, const 
QString &servername, const QString &servergroup, const QString 
&suggested_realname);
-        ~LinkAddressbookUI();
-
-    private:
-        KABC::AddressBook* m_addressBook;
-        QString m_ircnick;
-        QString m_lower_ircnick;                  //Same as above, but in 
lower case, for comparisons.
-        QString m_servername;
-        QString m_servergroup;
-        QString m_suggested_realname;
-        Ui::LinkAddressbookUI_Base m_ui;
-
-    protected slots:
-        virtual void slotOk();
-        virtual void slotCancel();
-        void slotAddAddresseeClicked();
-        void slotAddresseeSelectionChanged();
-        /**
-         * Utility function, populates the addressee list
-         */
-        void slotLoadAddressees();
-
-};
-#endif
-
-// vim: set noet ts=4 sts=4 sw=4:
diff --git a/src/linkaddressbook/linkaddressbookui_base.ui 
b/src/linkaddressbook/linkaddressbookui_base.ui
deleted file mode 100644
index 6a94b3e..0000000
--- a/src/linkaddressbook/linkaddressbookui_base.ui
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>LinkAddressbookUI_Base</class>
- <widget class="QWidget" name="LinkAddressbookUI_Base">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>510</width>
-    <height>347</height>
-   </rect>
-  </property>
-  <property name="sizePolicy">
-   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
-    <horstretch>0</horstretch>
-    <verstretch>0</verstretch>
-   </sizepolicy>
-  </property>
-  <layout class="QGridLayout">
-   <property name="margin">
-    <number>0</number>
-   </property>
-   <item row="3" column="1">
-    <spacer name="spacer11">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="sizeType">
-      <enum>QSizePolicy::Expanding</enum>
-     </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>405</width>
-       <height>20</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="3" column="0">
-    <widget class="QPushButton" name="addAddresseeButton">
-     <property name="toolTip">
-      <string>Create a new entry in your address book</string>
-     </property>
-     <property name="text">
-      <string>Create New &amp;Entry...</string>
-     </property>
-    </widget>
-   </item>
-   <item row="0" column="0" colspan="2">
-    <widget class="QLabel" name="lblHeader" native="true">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Maximum">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-    </widget>
-   </item>
-   <item row="2" column="0" colspan="2">
-    <widget class="QTreeWidget" name="addresseeListView">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-       <horstretch>0</horstretch>
-       <verstretch>10</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="toolTip">
-      <string>Select the contact you want to communicate with via Instant 
Messaging</string>
-     </property>
-     <property name="iconSize">
-      <size>
-       <width>1080</width>
-       <height>60</height>
-      </size>
-     </property>
-     <property name="rootIsDecorated">
-      <bool>false</bool>
-     </property>
-     <property name="sortingEnabled">
-      <bool>true</bool>
-     </property>
-     <property name="allColumnsShowFocus">
-      <bool>true</bool>
-     </property>
-     <column>
-      <property name="text">
-       <string>Photo</string>
-      </property>
-     </column>
-     <column>
-      <property name="text">
-       <string>Name</string>
-      </property>
-     </column>
-     <column>
-      <property name="text">
-       <string>Email</string>
-      </property>
-     </column>
-    </widget>
-   </item>
-   <item row="1" column="0" colspan="2">
-    <layout class="QHBoxLayout">
-     <item>
-      <widget class="QLabel" name="lblSearch">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="text">
-        <string>S&amp;earch:</string>
-       </property>
-       <property name="wordWrap">
-        <bool>false</bool>
-       </property>
-       <property name="buddy">
-        <cstring>kListViewSearchLine</cstring>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="KTreeWidgetSearchLine" name="kListViewSearchLine"/>
-     </item>
-    </layout>
-   </item>
-  </layout>
- </widget>
- <layoutdefault spacing="6" margin="11"/>
- <layoutfunction spacing="KDialog::spacingHint" margin="KDialog::marginHint"/>
- <customwidgets>
-  <customwidget>
-   <class>KTreeWidgetSearchLine</class>
-   <extends>KLineEdit</extends>
-   <header>ktreewidgetsearchline.h</header>
-  </customwidget>
-  <customwidget>
-   <class>KLineEdit</class>
-   <extends>QLineEdit</extends>
-   <header>klineedit.h</header>
-  </customwidget>
- </customwidgets>
- <includes>
-  <include location="local">kactivelabel.h</include>
-  <include location="local">ktreewidgetsearchline.h</include>
- </includes>
- <resources/>
- <connections/>
-</ui>
diff --git a/src/main.cpp b/src/main.cpp
index 4ad8d40..0cccaf5 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -17,6 +17,7 @@
 #include "version.h"
 #include "commit.h"
 
+#include <QMutex>
 #include <QWaitCondition>
 
 #include <KCmdLineArgs>
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index dce9b28..7724606 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -15,7 +15,6 @@
 
 #include "mainwindow.h"
 #include "application.h"
-#include "linkaddressbook/addressbook.h"
 #include "settingsdialog.h"
 #include "viewcontainer.h"
 #include "statusbar.h"
@@ -43,8 +42,6 @@
 #include <kdeversion.h>
 #include <KMenu>
 #include <KWindowSystem>
-#include <kabc/addressbook.h>
-#include <kabc/errorhandler.h>
 #include <KShortcutsDialog>
 #include <KStandardShortcut>
 #include <KActionMenu>
@@ -536,13 +533,6 @@ MainWindow::MainWindow() : KXmlGuiWindow(0)
     m_showMenuBarAction->setChecked(Preferences::self()->showMenuBar());
     toggleMenubar(true);
 
-
-    // set up KABC with a nice gui error dialog
-    KABC::GuiErrorHandler *m_guiErrorHandler = new KABC::GuiErrorHandler(this);
-    //kapp->dcopClient()->setAcceptCalls( false );
-    
Konversation::Addressbook::self()->getAddressBook()->setErrorHandler(m_guiErrorHandler);
-    //kapp->dcopClient()->setAcceptCalls( true );
-
     if (Preferences::self()->useNotify() && 
Preferences::self()->openWatchedNicksAtStartup())
         m_viewContainer->openNicksOnlinePanel();
 
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 6edb4be..9520fae 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -51,9 +51,6 @@ class MainWindow : public KXmlGuiWindow
         Konversation::TrayIcon* systemTrayIcon() const { return m_trayIcon; }
 
         /** Some errors need to be shown, even when konversation is minimized.
-         *  For example, when a kimiface call is received to query a person,
-         *  (e.g. the user choses "Chat with X" in kmail) but that person isn't
-         *  recognised, we need to give immediate feedback to the user.
          */
         void focusAndShowErrorMessage(const QString &errorMsg);
 
diff --git a/src/viewer/images.cpp b/src/viewer/images.cpp
index fc0b6df..0dbe003 100644
--- a/src/viewer/images.cpp
+++ b/src/viewer/images.cpp
@@ -123,17 +123,12 @@ Images::Images()
 {
     initializeLeds();
     initializeNickIcons();
-    initializeKimifaceIcons();
 }
 
 Images::~Images()
 {
 }
 
-QIcon Images::getKimproxyAway() const { return kimproxyAway; }
-QIcon Images::getKimproxyOnline() const { return kimproxyOnline; }
-QIcon Images::getKimproxyOffline() const { return kimproxyOffline; }
-
 QPixmap Images::getNickIcon(NickPrivilege privilege,bool isAway) const
 {
     return nickIcons[privilege][isAway?1:0];
@@ -172,13 +167,6 @@ void Images::initializeLeds()
     m_highlightsLedOn = getLed(m_highlightsColor,true);
 }
 
-void Images::initializeKimifaceIcons()
-{
-    kimproxyAway = KIcon("kimproxyaway");
-    kimproxyOnline = KIcon("kimproxyonline");
-    kimproxyOffline = KIcon("kimproxyoffline");
-}
-
 // NickIcons
 
 void Images::initializeNickIcons()
diff --git a/src/viewer/images.h b/src/viewer/images.h
index 7e9969f..e8bb5ae 100644
--- a/src/viewer/images.h
+++ b/src/viewer/images.h
@@ -54,10 +54,6 @@ class Images : public QObject
         QIcon getNickLed();
         QIcon getHighlightsLed();
 
-        QIcon getKimproxyAway() const;
-        QIcon getKimproxyOnline() const;
-        QIcon getKimproxyOffline() const;
-
         QPixmap getNickIcon(NickPrivilege privilege,bool isAway=false) const;
         QString getNickIconPath(NickPrivilege privilege) const;
         QString getNickIconAwayPath() const;
@@ -65,7 +61,6 @@ class Images : public QObject
 
     protected:
         void initializeLeds();
-        void initializeKimifaceIcons();
 
         QIcon m_serverLedOn;
         QIcon m_serverLedOff;
@@ -86,11 +81,6 @@ class Images : public QObject
         QColor m_eventsColor;
         QColor m_nickColor;
         QColor m_highlightsColor;
-
-        QIcon kimproxyAway;
-        QIcon kimproxyOnline;
-        QIcon kimproxyOffline;
-
                                                   // [privilege][away]
         QPixmap nickIcons[_NickPrivilege_COUNT][2];
         QString nickIconPaths[_NickPrivilege_COUNT];
diff --git a/src/viewer/irccontextmenus.cpp b/src/viewer/irccontextmenus.cpp
index 92bd69b..c22f39c 100644
--- a/src/viewer/irccontextmenus.cpp
+++ b/src/viewer/irccontextmenus.cpp
@@ -25,8 +25,6 @@
 #include "nick.h"
 #include "server.h"
 #include "ircinput.h"
-#include "linkaddressbook/addressbook.h"
-#include "linkaddressbook/linkaddressbookui.h"
 
 #include <QClipboard>
 
@@ -90,7 +88,6 @@ IrcContextMenus::~IrcContextMenus()
     delete m_textMenu;
     delete m_channelMenu;
     delete m_nickMenu;
-    delete m_addressBookMenu;
     delete m_quickButtonMenu;
     delete m_topicHistoryMenu;
 }
@@ -464,17 +461,6 @@ void IrcContextMenus::createSharedNickSettingsActions()
     m_sharedNickSettingsActions << m_addNotifyAction;
     m_removeNotifyAction = createAction(RemoveNotify, 
KIcon("list-remove-user"), i18n("Remove From Watched Nicks"));
     m_sharedNickSettingsActions << m_removeNotifyAction;
-
-    m_addressBookMenu = new KMenu();
-    m_addressBookMenu->setIcon(KIcon("office-address-book"));
-    m_sharedNickSettingsActions << m_addressBookMenu->menuAction();
-    m_addressBookNewAction = createAction(AddressbookNew, 
KIcon("contact-new"));
-    m_addressBookChangeAction = createAction(AddressbookChange, 
KIcon("office-address-book"));
-    m_addressBookEditAction = createAction(AddressbookEdit, 
KIcon("document-edit"));
-    m_addressBookDeleteAction = createAction(AddressbookDelete, 
KIcon("edit-delete"));
-
-    m_sendMailAction = createAction(SendEmail, KIcon("mail-send"), ("&Send 
Email..."));
-    m_sharedNickSettingsActions << m_sendMailAction;
 }
 
 void IrcContextMenus::createSharedDccActions()
@@ -700,104 +686,6 @@ void IrcContextMenus::processNickAction(int actionId, 
Server* server, const QStr
         case StartDccWhiteboard:
             commandToServer(server, "dcc whiteboard %1", nicks);
             break;
-        case AddressbookEdit:
-        {
-            foreach(const QString& nick, nicks)
-            {
-                NickInfoPtr nickInfo = server->getNickInfo(nick);
-
-                if (nickInfo.isNull())
-                    continue;
-
-                KABC::Addressee addressee = nickInfo->getAddressee();
-
-                if(addressee.isEmpty())
-                    break;
-
-                
Konversation::Addressbook::self()->editAddressee(addressee.uid());
-            }
-
-            break;
-        }
-        case AddressbookNew:
-        case AddressbookDelete:
-        {
-            Konversation::Addressbook* addressbook = 
Konversation::Addressbook::self();
-
-            // Handle all the selected nicks in one go. Either they all save, 
or none do.
-            if (addressbook->getAndCheckTicket())
-            {
-                foreach(const QString& nick, nicks)
-                {
-                    NickInfoPtr nickInfo = server->getNickInfo(nick);
-
-                    if (nickInfo.isNull())
-                        continue;
-
-                    if (actionId == AddressbookDelete)
-                    {
-                        KABC::Addressee addr = nickInfo->getAddressee();
-
-                        addressbook->unassociateNick(addr, nick, 
server->getServerName(), server->getDisplayName());
-                    }
-                    else
-                    {
-                        // Make new addressbook contact.
-                        KABC::Addressee addr;
-
-                        if (nickInfo->getRealName().isEmpty())
-                            addr.setGivenName(nickInfo->getNickname());
-                        else
-                            addr.setGivenName(nickInfo->getRealName());
-
-                        addr.setNickName(nick);
-
-                        
addressbook->associateNickAndUnassociateFromEveryoneElse(addr, nick, 
server->getServerName(),
-                            server->getDisplayName());
-                    }
-                }
-
-                // This will refresh the nicks automatically for us. At least, 
if it doesn't, it's a bug :)
-                addressbook->saveTicket();
-            }
-
-            break;
-        }
-        case AddressbookChange:
-        {
-            foreach(const QString& nick, nicks)
-            {
-                NickInfoPtr nickInfo = server->getNickInfo(nick);
-
-                if (nickInfo.isNull())
-                    continue;
-
-                LinkAddressbookUI* linkaddressbookui = new 
LinkAddressbookUI(Application::instance()->getMainWindow(),
-                    nick, server->getServerName(), server->getDisplayName(), 
nickInfo->getRealName());
-
-                linkaddressbookui->show();
-            }
-            break;
-        }
-        case SendEmail:
-        {
-            NickInfoList nickInfos;
-
-            foreach(const QString& nick, nicks)
-            {
-                NickInfoPtr nickInfo = server->getNickInfo(nick);
-
-                if (nickInfo.isNull())
-                    continue;
-
-                nickInfos.append(nickInfo);
-            }
-
-            if (!nickInfos.isEmpty())
-                Konversation::Addressbook::self()->sendEmail(nickInfos);
-
-            break;
-        }
         default:
             break;
     }
@@ -858,93 +746,6 @@ void 
IrcContextMenus::updateSharedNickSettingsActions(Server* server, const QStr
     self()->m_addNotifyAction->setVisible(serverGroupId == -1 || 
addNotifyCounter);
     self()->m_addNotifyAction->setEnabled(serverGroupId != -1);
     self()->m_removeNotifyAction->setVisible(removeNotifyCounter);
-
-    updateAddressBookActions(server, nicks);
-}
-
-void IrcContextMenus::updateAddressBookActions(Server* server, const 
QStringList& nicks)
-{
-    KMenu* addressBookMenu = self()->m_addressBookMenu;
-
-    addressBookMenu->setTitle(i18np("Address Book Association", "Address Book 
Associations", nicks.count()));
-
-    addressBookMenu->clear();
-
-    bool existingAssociation = false;
-    bool noAssociation = false;
-    bool emailAddress = false;
-
-    foreach(const QString& nick, nicks)
-    {
-        NickInfoPtr nickInfo =  server->getNickInfo(nick);
-
-        if (nickInfo.isNull())
-            continue;
-
-        KABC::Addressee addr = nickInfo->getAddressee();
-
-        if (addr.isEmpty())
-        {
-            noAssociation = true;
-
-            if (existingAssociation && emailAddress)
-                break;
-        }
-        else
-        {
-            if (!emailAddress && !addr.preferredEmail().isEmpty())
-                emailAddress = true;
-
-            existingAssociation = true;
-
-            if (noAssociation && emailAddress)
-                break;
-        }
-    }
-    if (!noAssociation && existingAssociation)
-    {
-       self()->m_addressBookEditAction->setText(i18np("Edit Contact...",
-            "Edit Contacts...", nicks.count()));
-        addressBookMenu->addAction(self()->m_addressBookEditAction);
-        addressBookMenu->addSeparator();
-    }
-
-    if (noAssociation && existingAssociation)
-    {
-        self()->m_addressBookChangeAction->setText(i18np("Choose/Change 
Association...",
-            "Choose/Change Associations...", nicks.count()));
-        addressBookMenu->addAction(self()->m_addressBookChangeAction);
-    }
-    else if (noAssociation)
-    {
-        self()->m_addressBookChangeAction->setText(i18np("Choose Contact...",
-            "Choose Contacts...", nicks.count()));
-        addressBookMenu->addAction(self()->m_addressBookChangeAction);
-    }
-    else
-    {
-        self()->m_addressBookChangeAction->setText(i18np("Change 
Association...",
-            "Change Associations...", nicks.count()));
-        addressBookMenu->addAction(self()->m_addressBookChangeAction);
-    }
-
-    if (noAssociation && !existingAssociation)
-    {
-        self()->m_addressBookNewAction->setText(i18np("Create New Contact...",
-            "Create New Contacts...", nicks.count()));
-        addressBookMenu->addAction(self()->m_addressBookNewAction);
-    }
-
-    if (existingAssociation)
-    {
-        self()->m_addressBookDeleteAction->setText(i18np("Delete Association",
-            "Delete Associations", nicks.count()));
-        addressBookMenu->addAction(self()->m_addressBookDeleteAction);
-    }
-
-    self()->m_sendMailAction->setEnabled(emailAddress);
-
-    addressBookMenu->menuAction()->setVisible(true);
 }
 
 void IrcContextMenus::processLinkAction(int  actionId, const QString& link)
diff --git a/src/viewer/irccontextmenus.h b/src/viewer/irccontextmenus.h
index 6990841..048f1ca 100644
--- a/src/viewer/irccontextmenus.h
+++ b/src/viewer/irccontextmenus.h
@@ -55,7 +55,6 @@ class IrcContextMenus : public QObject
             IgnoreNick, UnignoreNick,
             AddNotify, RemoveNotify,
             DccSend, StartDccChat, StartDccWhiteboard,
-            AddressbookNew, AddressbookChange, AddressbookEdit, 
AddressbookDelete, SendEmail
         };
 
         enum MenuOption
@@ -131,13 +130,6 @@ class IrcContextMenus : public QObject
         QAction* m_unignoreAction;
         QAction* m_addNotifyAction;
         QAction* m_removeNotifyAction;
-        static void updateAddressBookActions(Server* server, const 
QStringList& nicks);
-        KMenu* m_addressBookMenu;
-        QAction* m_addressBookNewAction;
-        QAction* m_addressBookChangeAction;
-        QAction* m_addressBookEditAction;
-        QAction* m_addressBookDeleteAction;
-        QAction* m_sendMailAction;
         void createSharedDccActions();
         QList<QAction*> m_sharedDccActions;
 

Reply via email to