diff --git a/kde/src/widgets/ContactDock.cpp b/kde/src/widgets/ContactDock.cpp
index 9e832639870c6101e452bb46c55016498f1c00f9..2ab3736dc9d0961f4d1b17280637b41bbcdc0f82 100644
--- a/kde/src/widgets/ContactDock.cpp
+++ b/kde/src/widgets/ContactDock.cpp
@@ -1,6 +1,10 @@
+
 #include "ContactDock.h"
 
 #include <QtGui/QVBoxLayout>
+#include <QtGui/QTableWidget>
+#include <QtGui/QTreeWidget>
+#include <QtGui/QHeaderView>
 
 #include <akonadi/collectionfilterproxymodel.h>
 #include <akonadi/contact/contactstreemodel.h>
@@ -15,168 +19,138 @@
 #include <kabc/field.h>
 #include <kabc/vcardline.h>
 #include <kabc/contactgroup.h>
+#include <kabc/phonenumber.h>
 #include <akonadi/itemfetchscope.h>
 #include <akonadi/entitydisplayattribute.h>
 #include <akonadi/recursiveitemfetchjob.h>
 #include <kicon.h>
 
+#include "ContactItemWidget.h"
+
+class QNumericTreeWidgetItem : public QTreeWidgetItem {
+   public:
+      QNumericTreeWidgetItem(QTreeWidget* parent):QTreeWidgetItem(parent),widget(0),weight(-1){}
+      QNumericTreeWidgetItem(QTreeWidgetItem* parent):QTreeWidgetItem(parent),widget(0),weight(-1){}
+      ContactItemWidget* widget;
+      int weight;
+   private:
+      bool operator<(const QTreeWidgetItem & other) const {
+         int column = treeWidget()->sortColumn();
+         //if (dynamic_cast<QNumericTreeWidgetItem*>((QTreeWidgetItem*)&other)) {
+            //if (widget !=0 && dynamic_cast<QNumericTreeWidgetItem*>((QTreeWidgetItem*)&other)->widget != 0)
+            //   return widget->getTimeStamp() < dynamic_cast<QNumericTreeWidgetItem*>((QTreeWidgetItem*)&other)->widget->getTimeStamp();
+            //else if (weight > 0 && dynamic_cast<QNumericTreeWidgetItem*>((QTreeWidgetItem*)&other)->weight > 0)
+            //   return weight > dynamic_cast<QNumericTreeWidgetItem*>((QTreeWidgetItem*)&other)->weight;
+         //}
+         return text(column) < other.text(column);
+      }
+};
+
 ContactDock::ContactDock(QWidget* parent) : QDockWidget(parent)
 {
-   
-   setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
-   setMinimumSize(250,0);
-   
-   m_pCollViewCV = new Akonadi::EntityTreeView();
-   m_pItemView   = new Akonadi::ItemView();
-   m_pFilterLE   = new KLineEdit();
-   m_pCollCCB    = new Akonadi::CollectionComboBox;
-   m_pSplitter   = new QSplitter(Qt::Vertical,this);
+   m_pFilterLE     = new KLineEdit();
+   m_pCollCCB      = new Akonadi::CollectionComboBox;
+   m_pSplitter     = new QSplitter(Qt::Vertical,this);
+   m_pSortByCBB    = new QComboBox(this);
+   m_pContactView  = new QTreeWidget(this);
+   m_pCallView     = new QTableWidget(this);
+
+   QStringList sortType;
+   sortType << "Name" << "Organisation" << "Phone number type" << "Rencently used" << "Group";
+   m_pSortByCBB->addItems(sortType);
 
    QWidget* mainWidget = new QWidget(this);
    setWidget(mainWidget);
 
+   m_pContactView->headerItem()->setText(0,"Contacts");
+   m_pContactView->header()->setClickable(true);
+   m_pContactView->header()->setSortIndicatorShown(true);
+
+   m_pContactView->setAlternatingRowColors(true);
+
+   m_pFilterLE->setPlaceholderText("Filter");
+   m_pFilterLE->setClearButtonShown(true);
+
    QVBoxLayout* mainLayout = new QVBoxLayout(mainWidget);
 
    mainLayout->addWidget(m_pCollCCB);
+   mainLayout->addWidget(m_pSortByCBB);
    mainLayout->addWidget(m_pSplitter);
-   m_pSplitter->addWidget(m_pCollViewCV);
-   m_pSplitter->addWidget(m_pItemView);
+   m_pSplitter->addWidget(m_pContactView);
+   m_pSplitter->addWidget(m_pCallView);
    mainLayout->addWidget(m_pFilterLE);
-   
+
    m_pSplitter->setChildrenCollapsible(true);
    m_pSplitter->setStretchFactor(0,7);
-   
+
    m_pCollCCB->setMimeTypeFilter( QStringList() << KABC::Addressee::mimeType() );
    m_pCollCCB->setAccessRightsFilter( Akonadi::Collection::ReadOnly );
-
-
-      /////////////
-
-      // use a separated session for this model
+   
    Akonadi::Session *session = new Akonadi::Session( "SFLPhone::instance" );
 
-   Akonadi::ItemFetchScope scope;
-   // fetch all content of the contacts, including images
-   scope.fetchFullPayload( true );
-   // fetch the EntityDisplayAttribute, which contains custom names and icons
-   scope.fetchAttribute<Akonadi::EntityDisplayAttribute>();
-
-   Akonadi::ChangeRecorder *changeRecorder = new Akonadi::ChangeRecorder;
-   changeRecorder->setSession( session );
-   // include fetching the collection tree
-   changeRecorder->fetchCollection( true );
-   // set the fetch scope that shall be used
-   changeRecorder->setItemFetchScope( scope );
-   // monitor all collections below the root collection for changes
-   changeRecorder->setCollectionMonitored( Akonadi::Collection::root() );
-   // list only contacts and contact groups
-   changeRecorder->setMimeTypeMonitored( KABC::Addressee::mimeType(), true );
-   changeRecorder->setMimeTypeMonitored( KABC::ContactGroup::mimeType(), true );
-
-   Akonadi::ContactsTreeModel *model = new Akonadi::ContactsTreeModel( changeRecorder );
-
-   Akonadi::ContactsTreeModel::Columns columns;
-   columns << Akonadi::ContactsTreeModel::FullName;
-   columns << Akonadi::ContactsTreeModel::AllEmails;
-   model->setColumns( columns );
-
-   //////////////
-
-   for (int i=0;i<model->rowCount();i++) {
-       qDebug() << "\n\n\nChild:" << model->hasChildren(model->index(i,0)) << "Model:" << model->rowCount(model->index(i,0));
-   }
-   qDebug() << "\n\n\nChild:" << model->hasChildren(model->index(0,0)) << "Model:" << model->rowCount(model->index(0,0));
-   qDebug() << "\n\n\nChild:" << model->hasChildren(model->index(1,0)) << "Model:" << model->rowCount(model->index(1,0));
-
-      //qDebug() << "Model:" << *model;
-
-      m_pCollViewCV->setModel( model );
-      m_pItemView->setModel( model );
-      
-      connect (m_pCollCCB, SIGNAL(currentChanged(Akonadi::Collection)),this,SLOT(collectAddressBookContacts()));
-      
-      
-   //collectAllContacts(model);
-   collectAddressBookContacts();
-   
+   connect (m_pCollCCB, SIGNAL(currentChanged(Akonadi::Collection)),this,SLOT(reloadContact()));
    setWindowTitle("Contact");
-   //setDockIcon(KIcon("resource-group"));
 }
 
 ContactDock::~ContactDock()
 {
-   
-}
 
-KABC::Addressee::List ContactDock::collectAllContacts(Akonadi::ContactsTreeModel *mModel) const
-{
-  KABC::Addressee::List contacts;
-  for ( int i = 0; i < mModel->rowCount(); ++i ) {
-    const QModelIndex index = mModel->index( i, 0 );
-    if ( index.isValid() ) {
-      const Akonadi::Item item = index.data( Akonadi::EntityTreeModel::ItemRole ).value<Akonadi::Item>();
-      if ( item.isValid() && item.hasPayload<KABC::Addressee>() ) {
-        contacts.append( item.payload<KABC::Addressee>() );
-	qDebug() << item.payload<KABC::Addressee>().toString();
-      }
-    }
-  }
-  return contacts;
 }
 
 KABC::Addressee::List ContactDock::collectAddressBookContacts() const
 {
-   
-   qDebug() << "In colect\n\n\n\n\n";
-  KABC::Addressee::List contacts;
-
-  
-  const Akonadi::Collection collection = m_pCollCCB->currentCollection();
-  if ( !collection.isValid() ) {
-     qDebug() << "The current collection is not valid";
-    return contacts;
-  }
-  qDebug() << "Valid collection";
-
-  //if ( mAddressBookSelectionRecursive->isChecked() ) {
-    Akonadi::RecursiveItemFetchJob *job = new Akonadi::RecursiveItemFetchJob( collection, QStringList() << KABC::Addressee::mimeType() << KABC::ContactGroup::mimeType());
-    job->fetchScope().fetchFullPayload();
-//qDebug() << "Begin \n\n\n";
-    if ( job->exec() ) {
-       
+   KABC::Addressee::List contacts;
+   const Akonadi::Collection collection = m_pCollCCB->currentCollection();
+   if ( !collection.isValid() ) {
+      qDebug() << "The current collection is not valid";
+      return contacts;
+   }
+
+   Akonadi::RecursiveItemFetchJob *job = new Akonadi::RecursiveItemFetchJob( collection, QStringList() << KABC::Addressee::mimeType() << KABC::ContactGroup::mimeType());
+   job->fetchScope().fetchFullPayload();
+   if ( job->exec() ) {
+
       const Akonadi::Item::List items = job->items();
 
       foreach ( const Akonadi::Item &item, items ) {
-	 //qDebug() << "In for" << item.payloadData() << item.mimeType();
-        if ( item.hasPayload<KABC::ContactGroup>() ) {
-          //contacts.append( item.payload<KABC::ContactGroup>() );
-	  qDebug() << "Group:" << item.payload<KABC::ContactGroup>().name();
-        }
-        if ( item.hasPayload<KABC::Addressee>() ) {
-          //contacts.append( item.payload<KABC::ContactGroup>() );
-	  qDebug() << "Addressee:" << item.payload<KABC::Addressee>().name();
-        }
-//         if ( item.hasPayload<KABC::Field>() ) {
-//           //contacts.append( item.payload<KABC::VCard>() );
-// 	  qDebug() << "VCard:" << item.payload<KABC::VCardFormat>().identifiers();
-//         }
+         if ( item.hasPayload<KABC::ContactGroup>() ) {
+            
+            qDebug() << "Group:" << item.payload<KABC::ContactGroup>().name();
+         }
+         if ( item.hasPayload<KABC::Addressee>() ) {
+            contacts << item.payload<KABC::Addressee>();
+            qDebug() << "Addressee:" << item.payload<KABC::Addressee>().givenName();
+         }
       }
-    }
-//   } else {
-//     Akonadi::ItemFetchJob *job = new Akonadi::ItemFetchJob( collection );
-//     job->fetchScope().fetchFullPayload();
-// 
-//     if ( job->exec() ) {
-//       const Akonadi::Item::List items = job->items();
-// 
-//       foreach ( const Akonadi::Item &item, items ) {
-//         if ( item.hasPayload<KABC::Addressee>() ) {
-//           contacts.append( item.payload<KABC::Addressee>() );
-//         }
-//       }
-//     }
-//   }
-
-  qDebug() << "End collect \n\n\n";
-  return contacts;
+   }
+
+   qDebug() << "End collect "<< contacts.size() << "\n\n\n";
+   return contacts;
 }
+
+void ContactDock::reloadContact()
+{
+   KABC::Addressee::List list = collectAddressBookContacts();
+
+   qDebug() << "About to display items" << list.size();
+   foreach (KABC::Addressee addr, list) {
+      qDebug() << "In list:";
+      ContactItemWidget* aContact  = new ContactItemWidget(m_pContactView);
+      QNumericTreeWidgetItem* item = new QNumericTreeWidgetItem(m_pContactView);
+      item->widget = aContact;
+      aContact->setItem(item);
+      aContact->setContact(addr);
+
+      KABC::PhoneNumber::List numbers =  aContact->getCallNumbers();
+      if (aContact->getCallNumbers().count() > 1) {
+         foreach (KABC::PhoneNumber number, numbers) {
+            QNumericTreeWidgetItem* item2 = new QNumericTreeWidgetItem(item);
+            QLabel* numberL = new QLabel("<b>"+number.typeLabel()+":</b>"+number.number());
+            m_pContactView->setItemWidget(item2,0,numberL);
+         }
+      }
+
+      m_pContactView->addTopLevelItem(item);
+      m_pContactView->setItemWidget(item,0,aContact);
+   }
+}
\ No newline at end of file
diff --git a/kde/src/widgets/ContactDock.h b/kde/src/widgets/ContactDock.h
index 249b9dac01b23461ffa7f9e97ee3b24685872d2d..fe9419e6405e601afb60fa45677ab98ceeb8eb4a 100644
--- a/kde/src/widgets/ContactDock.h
+++ b/kde/src/widgets/ContactDock.h
@@ -6,12 +6,14 @@
 
 #include <akonadi/entitytreeview.h>
 #include <akonadi/itemview.h>
-//#include <akonadi/contactgroupviewer.h>
 #include <klineedit.h>
 #include <kabc/addressee.h>
 #include <akonadi/contact/contactstreemodel.h>
 #include <akonadi/collectioncombobox.h>
 
+class QTreeWidget;
+class QTableWidget;
+class QComboBox;
 
 class ContactDock : public QDockWidget {
    Q_OBJECT
@@ -19,15 +21,17 @@ public:
    ContactDock(QWidget* parent);
    virtual ~ContactDock();
 private:
-   KABC::Addressee::List collectAllContacts(Akonadi::ContactsTreeModel *mModel) const;
-   Akonadi::EntityTreeView* m_pCollViewCV;
-   Akonadi::ItemView*       m_pItemView;
-   KLineEdit*               m_pFilterLE;
+   KLineEdit*                   m_pFilterLE;
    Akonadi::CollectionComboBox* m_pCollCCB;
-   QSplitter* m_pSplitter;
+   QSplitter*                   m_pSplitter;
+   QTreeWidget*                 m_pContactView;
+   QTableWidget*                m_pCallView;
+   QComboBox*                   m_pSortByCBB;
 
 public slots:
    KABC::Addressee::List collectAddressBookContacts() const;
+private slots:
+   void reloadContact();
 };
 
 #endif
\ No newline at end of file
diff --git a/kde/src/widgets/ContactItemWidget.cpp b/kde/src/widgets/ContactItemWidget.cpp
index e78c624141a498e91f492f35afb20b5ecaebb81b..1484b5264e77539020259386ad32d7230651cb8f 100644
--- a/kde/src/widgets/ContactItemWidget.cpp
+++ b/kde/src/widgets/ContactItemWidget.cpp
@@ -1,6 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2009-2010 by Savoir-Faire Linux                         *
- *   Author : Jérémy Quentin <jeremy.quentin@savoirfairelinux.com>         *
+ *   Author : Mathieu Leduc-Hamel mathieu.leduc-hamel@savoirfairelinux.com *
  *            Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com>*
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -18,84 +17,132 @@
  *   Free Software Foundation, Inc.,                                       *
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
-#include "ContactItemWidget.h"
 
-#include <QtCore/QString>
-#include <QtGui/QVBoxLayout>
-#include <QtCore/QDebug>
-#include <QtGui/QSpacerItem>
+#include <QtCore/QStringList>
+#include <QtGui/QGridLayout>
+
+#include <klocale.h>
+#include <kdebug.h>
+#include <unistd.h>
 
 #include "lib/sflphone_const.h"
+#include "ContactItemWidget.h"
 
-ContactItemWidget::ContactItemWidget(const Contact * contact, bool displayPhoto, QWidget *parent)
- : QWidget(parent)
+ContactItemWidget::ContactItemWidget(QWidget *parent)
+   : QWidget(parent), init(false)
 {
-   Q_UNUSED(contact);
-   Q_UNUSED(displayPhoto);
-//    if(!contact->getNickName().isEmpty()) {
-//       contactName = new QLabel(contact->getNickName());
-//    }
-//    else {
-//       contactName = new QLabel(contact->getFirstName());
-//    }
-//    if(displayPhoto) {
-//       if(!contact->getPhoto()->isEmpty()) {
-//          QPixmap pixmap;
-//          if(contact->getPhoto()->isIntern()) {
-//             contactPhoto = new QLabel();
-//             pixmap = QPixmap::fromImage(contact->getPhoto()->data());
-//          }
-//          else {
-//             contactPhoto = new QLabel();
-//             pixmap = QPixmap(contact->getPhoto()->url());
-//          }
-//          if(pixmap.height() > pixmap.width())
-//             contactPhoto->setPixmap(pixmap.scaledToHeight(CONTACT_ITEM_HEIGHT-4));
-//          else
-//             contactPhoto->setPixmap(pixmap.scaledToWidth(CONTACT_ITEM_HEIGHT-4));
-//       }
-//       else {
-//          contactPhoto = new QLabel();
-//          contactPhoto->setMinimumSize(CONTACT_ITEM_HEIGHT-4, 0);
-//       }
-//    }
-//    contactType = new QLabel(PhoneNumber::typeLabel(contact->getType()));
-//    contactNumber = new QLabel(contact->getPhoneNumber());
-//    QSpacerItem * horizontalSpacer = new QSpacerItem(16777215, 20, QSizePolicy::Preferred, QSizePolicy::Minimum);
-//    QHBoxLayout * hlayout = new QHBoxLayout(this);
-//    QVBoxLayout * vlayout = new QVBoxLayout();
-//    hlayout->setMargin(1);
-//    hlayout->setSpacing(4);
-//    vlayout->setMargin(1);
-//    vlayout->setSpacing(2);
-//    vlayout->addWidget(contactName);
-//    vlayout->addWidget(contactNumber);
-//    if(displayPhoto) {
-//       hlayout->addWidget(contactPhoto);
-//    }
-//    hlayout->addLayout(vlayout);
-//    hlayout->addItem(horizontalSpacer);
-//    hlayout->addWidget(contactType);
-//    this->setLayout(hlayout);
-}
 
+}
 
 ContactItemWidget::~ContactItemWidget()
 {
-   delete contactName;
-   delete contactNumber;
-//    delete contactPhoto;
-   delete contactType;
+
+}
+
+void ContactItemWidget::setContact(KABC::Addressee& contact)
+{
+   m_pContactKA = contact;
+   m_pIconL = new QLabel(this);
+   m_pContactNameL = new QLabel();
+   m_pOrganizationL = new QLabel(this);
+   m_pEmailL = new QLabel();
+   m_pCallNumberL = new QLabel(this);
+   
+   m_pIconL->setMinimumSize(70,48);
+   m_pIconL->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
+
+   QSpacerItem* verticalSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Expanding);
+
+   m_pIconL->setMaximumSize(48,9999);
+   m_pIconL->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+
+   m_pIconL->setPixmap(QPixmap(KIcon("user-identity").pixmap(QSize(48,48))));
+
+   QGridLayout* mainLayout = new QGridLayout(this);
+   mainLayout->setContentsMargins(0,0,0,0);
+   mainLayout->addWidget(m_pIconL,0,0,4,1);
+   mainLayout->addWidget(m_pContactNameL,0,1);
+   mainLayout->addWidget(m_pOrganizationL,1,1);
+   mainLayout->addWidget(m_pCallNumberL,2,1);
+   mainLayout->addWidget(m_pEmailL,3,1);
+   mainLayout->addItem(verticalSpacer,4,1);
+
+   setLayout(mainLayout);
+   setMinimumSize(QSize(50, 30));
+
+   updated();
 }
 
+void ContactItemWidget::updated()
+{
+   m_pContactNameL->setText("<b>"+m_pContactKA.formattedName()+"</b>");
+   if (!m_pContactKA.organization().isEmpty()) {
+      m_pOrganizationL->setText(m_pContactKA.organization());
+   }
+   else {
+      m_pOrganizationL->setVisible(false);
+   }
+
+   if (!getEmail().isEmpty()) {
+      m_pEmailL->setText(getEmail());
+   }
+   else {
+      m_pEmailL->setVisible(false);
+   }
+   
+   KABC::PhoneNumber::List numbers = m_pContactKA.phoneNumbers();
+   foreach (KABC::PhoneNumber number, numbers) {
+      qDebug() << "Phone:" << number.number() << number.typeLabel();
+   }
+
+   if (getCallNumbers().count() == 1)
+      m_pCallNumberL->setText(getCallNumbers()[0].number());
+   else
+      m_pCallNumberL->setText(QString::number(getCallNumbers().count())+" numbers");
+   
+   QImage photo = m_pContactKA.photo().data();
+   if (photo.isNull())
+      m_pIconL->setPixmap(QPixmap(KIcon("user-identity").pixmap(QSize(48,48))));
+   else
+      m_pIconL->setPixmap(QPixmap::fromImage( m_pContactKA.photo().data()).scaled(QSize(48,48)));;
+}
+
+QPixmap* ContactItemWidget::getIcon()
+{
+   return new QPixmap();
+}
 
 QString ContactItemWidget::getContactName()
 {
-   return contactName->text();
+   return m_pContactKA.formattedName();
 }
 
-QString ContactItemWidget::getContactNumber()
+KABC::PhoneNumber::List ContactItemWidget::getCallNumbers()
 {
-   return contactNumber->text();
+   return m_pContactKA.phoneNumbers();
 }
 
+QString ContactItemWidget::getOrganization()
+{
+   return m_pContactKA.organization();
+}
+
+QString ContactItemWidget::getEmail()
+{
+   return m_pContactKA.fullEmail();
+}
+
+QString ContactItemWidget::getPicture()
+{
+   return m_pContactKA.photo().url();
+}
+
+QTreeWidgetItem* ContactItemWidget::getItem()
+{
+   return m_pItem;
+}
+
+void ContactItemWidget::setItem(QTreeWidgetItem* item)
+{
+   m_pItem = item;
+}
\ No newline at end of file
diff --git a/kde/src/widgets/ContactItemWidget.h b/kde/src/widgets/ContactItemWidget.h
index f8080155e59c3dc72d3362619894d1166031077d..4e55cb4db0b2160a54e450caba464acdd7d934ec 100644
--- a/kde/src/widgets/ContactItemWidget.h
+++ b/kde/src/widgets/ContactItemWidget.h
@@ -1,6 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2009-2010 by Savoir-Faire Linux                         *
- *   Author : Jérémy Quentin <jeremy.quentin@savoirfairelinux.com>         *
+ *   Author : Mathieu Leduc-Hamel mathieu.leduc-hamel@savoirfairelinux.com *
  *            Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com>*
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -18,38 +17,62 @@
  *   Free Software Foundation, Inc.,                                       *
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
+
 #ifndef CONTACTITEMWIDGET_H
 #define CONTACTITEMWIDGET_H
 
-#include <QWidget>
+#include <QtCore/QList>
+#include <QtCore/QVariant>
+#include <QtCore/QVector>
+
+#include <QtGui/QWidget>
 #include <QtGui/QLabel>
-#include "lib/Contact.h"
+#include <QtGui/QSpacerItem>
+#include <QtGui/QHBoxLayout>
+#include <QtGui/QVBoxLayout>
+#include <KIcon>
+#include <kabc/addressee.h>
+#include <kabc/picture.h>
+#include <kabc/phonenumber.h>
 
-class Contact;
+class QTreeWidgetItem;
 
-/**
-   @author Jérémy Quentin <jeremy.quentin@savoirfairelinux.com>
-*/
 class ContactItemWidget : public QWidget
 {
-Q_OBJECT
-
-private:
-   QLabel * contactName;
-   QLabel * contactNumber;
-   QLabel * contactPhoto;
-   QLabel * contactType;
-   
-public:
-
-   //Constructors & Destructors
-   ContactItemWidget(const Contact * contact, bool displayPhoto, QWidget *parent = 0);
-   ~ContactItemWidget();
-   
-   //Getters
-   QString getContactName();
-   QString getContactNumber();
-
-};
-
-#endif
+   Q_OBJECT
+ public:
+    ContactItemWidget(QWidget* parent =0);
+    ~ContactItemWidget();
+
+    KABC::Addressee* contact() const;
+    void setContact(KABC::Addressee& contact);
+    static const char * callStateIcons[12];
+
+    QPixmap* getIcon();
+    QString  getContactName();
+    KABC::PhoneNumber::List getCallNumbers();
+    QString  getOrganization();
+    QString  getEmail();
+    QString  getPicture();
+    QTreeWidgetItem* getItem();
+
+    void setItem(QTreeWidgetItem* item);
+
+ private:
+    KABC::Addressee m_pContactKA;
+
+    QLabel* m_pIconL;
+    QLabel* m_pContactNameL;
+    QLabel* m_pCallNumberL;
+    QLabel* m_pOrganizationL;
+    QLabel* m_pEmailL;
+
+    QTreeWidgetItem* m_pItem;
+
+    bool init;
+
+public slots:
+   void updated();
+ };
+
+#endif // CALLTREE_ITEM_H
diff --git a/kde/src/widgets/HistoryDock.cpp b/kde/src/widgets/HistoryDock.cpp
index 456abb3efd40907e69b079dcf8774450df19e715..31bbb4bbba243ee831d2cf84d7ec3f9f347238e5 100644
--- a/kde/src/widgets/HistoryDock.cpp
+++ b/kde/src/widgets/HistoryDock.cpp
@@ -59,6 +59,10 @@ HistoryDock::HistoryDock(QWidget* parent) : QDockWidget(parent)
    m_pItemView->headerItem()->setText(0,"Calls");
    m_pItemView->header()->setClickable(true);
    m_pItemView->header()->setSortIndicatorShown(true);
+   m_pItemView->setAlternatingRowColors(true);
+
+   m_pFilterLE->setPlaceholderText("Filter");
+   m_pFilterLE->setClearButtonShown(true);
    
    QStringList sortBy;
    sortBy << "Date" << "Name" << "Popularity" << "Duration";