Index: addbookmarks/addbookmarksprefssettings.cpp
===================================================================
--- addbookmarks/addbookmarksprefssettings.cpp	(revision 564141)
+++ addbookmarks/addbookmarksprefssettings.cpp	(working copy)
@@ -68,9 +68,9 @@
 		case Always:
 			return true;
 		case SelectedContacts:
-			return ( m_contactslist.find( nickname ) != m_contactslist.end() );
+			return ( m_contactslist.indexOf( nickname ) != -1 );
 		case UnselectedContacts:
-			return ( m_contactslist.find( nickname ) == m_contactslist.end() );
+			return ( m_contactslist.indexOf( nickname ) == -1 );
 		}
 	}
 	return false;
Index: addbookmarks/addbookmarkspreferences.cpp
===================================================================
--- addbookmarks/addbookmarkspreferences.cpp	(revision 564141)
+++ addbookmarks/addbookmarkspreferences.cpp	(working copy)
@@ -16,12 +16,10 @@
 #include <kopetepluginmanager.h>
 #include <kopetecontactlist.h>
 #include <qlayout.h>
-#include <q3buttongroup.h>
-#include <q3listbox.h>
 #include <qnamespace.h>
 #include <qradiobutton.h>
-//Added by qt3to4:
-#include <Q3VBoxLayout>
+#include <QButtonGroup>
+#include <QStringListModel>
 
 
 typedef KGenericFactory<BookmarksPreferences> BookmarksPreferencesFactory;
@@ -36,12 +34,19 @@
 	p_dialog->setupUi( w );
 	l->addWidget( w );
 
+	p_buttonGroup = new QButtonGroup( this );
+	p_buttonGroup->addButton( p_dialog->yesButton, BookmarksPrefsSettings::Always );
+	p_buttonGroup->addButton( p_dialog->noButton, BookmarksPrefsSettings::Never );
+	p_buttonGroup->addButton( p_dialog->onlySelectedButton, BookmarksPrefsSettings::SelectedContacts );
+	p_buttonGroup->addButton( p_dialog->onlyNotSelectedButton, BookmarksPrefsSettings::UnselectedContacts );
+	
+	p_contactsListModel = new QStringListModel();
+	p_dialog->contactList->setModel( p_contactsListModel );
+
 	load();
-	connect( p_dialog->yesButton, SIGNAL( toggled(bool) ), this, SLOT( slotSetStatusChanged() ));
-	connect( p_dialog->noButton, SIGNAL( toggled(bool) ), this, SLOT( slotSetStatusChanged() ));
-	connect( p_dialog->onlySelectedButton, SIGNAL( toggled(bool) ), this, SLOT( slotSetStatusChanged() ));
-	connect( p_dialog->onlyNotSelectedButton, SIGNAL( toggled(bool) ), this, SLOT( slotSetStatusChanged() ));
-	connect( p_dialog->contactList, SIGNAL( selectionChanged() ), this, SLOT( slotSetStatusChanged() ));
+	connect( p_buttonGroup, SIGNAL( buttonClicked ( int ) ), this, SLOT( slotSetStatusChanged() ));
+	connect( p_dialog->contactList, SIGNAL( selectionChanged( const QItemSelection&, const QItemSelection& ) ),
+	         this, SLOT( slotSetStatusChanged() ));
 	connect( this, SIGNAL(PreferencesChanged()), Kopete::PluginManager::self()->plugin("kopete_addbookmarks") , SLOT(slotReloadSettings()));
 }
 
@@ -49,22 +54,20 @@
 BookmarksPreferences::~BookmarksPreferences()
 {
 	delete p_dialog;
+	delete p_contactsListModel;
 }
 
 void BookmarksPreferences::save()
 {
-	QStringList list;
-	QStringList::iterator it;
+	m_settings.setFolderForEachContact( (BookmarksPrefsSettings::UseSubfolders)p_buttonGroup->checkedId() );
+	if ( m_settings.isFolderForEachContact() == BookmarksPrefsSettings::SelectedContacts ||
+		 m_settings.isFolderForEachContact() == BookmarksPrefsSettings::UnselectedContacts )
+	{
+		QStringList list;
+		QModelIndexList indexList = p_dialog->contactList->selectionModel()->selectedIndexes();
+		foreach( QModelIndex index, indexList )
+			list += p_contactsListModel->data( index, Qt::DisplayRole ).toString();
 
-
-	m_settings.setFolderForEachContact( (BookmarksPrefsSettings::UseSubfolders)p_dialog->buttonGroup1->selectedId() );
-	if ( m_settings.isFolderForEachContact() == BookmarksPrefsSettings::SelectedContacts ||
-				m_settings.isFolderForEachContact() == BookmarksPrefsSettings::UnselectedContacts ) {
-		for( uint i = 0; i < p_dialog->contactList->count() ; ++i ){
-			if( p_dialog->contactList->isSelected( i ) ){
-				list += p_dialog->contactList->text( i );
-			}
-		}
 		m_settings.setContactsList( list );
 	}
 	m_settings.save();
@@ -74,7 +77,8 @@
 
 void BookmarksPreferences::slotSetStatusChanged()
 {
-	if ( p_dialog->buttonGroup1->selectedId() == 1  || p_dialog->buttonGroup1->selectedId() == 0)
+	if ( p_buttonGroup->checkedId() == BookmarksPrefsSettings::Always ||
+	     p_buttonGroup->checkedId() == BookmarksPrefsSettings::Never )
 		p_dialog->contactList->setEnabled(false);
 	else
 		p_dialog->contactList->setEnabled(true);
@@ -84,25 +88,29 @@
 
 void BookmarksPreferences::load()
 {
-	QStringList list;
-	QStringList::iterator it;
-	Q3ListBoxItem* item;
-	
 	m_settings.load();
-	p_dialog->buttonGroup1->setButton(m_settings.isFolderForEachContact());
+	QAbstractButton *button = p_buttonGroup->button( m_settings.isFolderForEachContact() );
+	if ( button )
+		button->setChecked( true );
 
-	if( p_dialog->contactList->count() == 0 ){
-		QStringList contacts = Kopete::ContactList::self()->contacts();
-		contacts.sort();
-		p_dialog->contactList->insertStringList( contacts );
-	}
-	p_dialog->contactList->clearSelection();
+	QStringList contactsList = Kopete::ContactList::self()->contacts();
+	contactsList.sort();
+	p_contactsListModel->setStringList( contactsList );
+
 	p_dialog->contactList->setEnabled( m_settings.isFolderForEachContact() == BookmarksPrefsSettings::SelectedContacts ||
-			 m_settings.isFolderForEachContact() == BookmarksPrefsSettings::UnselectedContacts );
-	list = m_settings.getContactsList();
-	for( it = list.begin() ; it != list.end() ; ++it){
-		if ( ( item = p_dialog->contactList->findItem(*it, Q3ListBox::ExactMatch ) ) ){
-			p_dialog->contactList->setSelected( item, true );
+	                                   m_settings.isFolderForEachContact() == BookmarksPrefsSettings::UnselectedContacts );
+
+	QItemSelectionModel *selectionModel = p_dialog->contactList->selectionModel();
+	selectionModel->clearSelection();
+
+	QStringList selectedContactsList = m_settings.getContactsList();
+	foreach( QString contact, selectedContactsList )
+	{
+		int row = contactsList.indexOf( contact );
+		if ( row != -1 )
+		{
+			QModelIndex index = p_contactsListModel->index( row, 0, QModelIndex() );
+			selectionModel->select( index, QItemSelectionModel::Select );
 		}
 	}
 	emit KCModule::changed(false);
Index: addbookmarks/addbookmarkspreferences.h
===================================================================
--- addbookmarks/addbookmarkspreferences.h	(revision 564141)
+++ addbookmarks/addbookmarkspreferences.h	(working copy)
@@ -15,6 +15,9 @@
 #include <kcmodule.h>
 #include "addbookmarksprefssettings.h"
 
+class QButtonGroup;
+class QStringListModel;
+
 namespace Ui { class BookmarksPrefsUI; }
 
 /**
@@ -36,6 +39,8 @@
     
 private:
     Ui::BookmarksPrefsUI *p_dialog;
+    QButtonGroup* p_buttonGroup;
+    QStringListModel *p_contactsListModel;
     BookmarksPrefsSettings m_settings;
 
 private slots:
Index: addbookmarks/addbookmarksprefsui.ui
===================================================================
--- addbookmarks/addbookmarksprefsui.ui	(revision 564141)
+++ addbookmarks/addbookmarksprefsui.ui	(working copy)
@@ -20,19 +20,16 @@
     <number>6</number>
    </property>
    <item>
-    <widget class="Q3ButtonGroup" name="buttonGroup1" >
+    <widget class="QGroupBox" name="buttonGroup1" >
      <property name="title" >
       <string>Use Subfolder for Each Contact</string>
      </property>
-     <property name="orientation" >
-      <enum>Qt::Vertical</enum>
-     </property>
      <layout class="QVBoxLayout" >
       <property name="margin" >
-       <number>0</number>
+       <number>9</number>
       </property>
       <property name="spacing" >
-       <number>0</number>
+       <number>6</number>
       </property>
       <item>
        <widget class="QRadioButton" name="yesButton" >
@@ -84,28 +81,19 @@
     </widget>
    </item>
    <item>
-    <widget class="Q3ListBox" name="contactList" />
+    <widget class="QListView" name="contactList" >
+     <property name="editTriggers" >
+      <set>QAbstractItemView::NoEditTriggers</set>
+     </property>
+     <property name="selectionMode" >
+      <enum>QAbstractItemView::ExtendedSelection</enum>
+     </property>
+    </widget>
    </item>
   </layout>
  </widget>
  <layoutdefault spacing="6" margin="11" />
  <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
- <customwidgets>
-  <customwidget>
-   <class>Q3ButtonGroup</class>
-   <extends></extends>
-   <header>Qt3Support/Q3ButtonGroup</header>
-   <container>1</container>
-   <pixmap></pixmap>
-  </customwidget>
-  <customwidget>
-   <class>Q3ListBox</class>
-   <extends></extends>
-   <header>q3listbox.h</header>
-   <container>0</container>
-   <pixmap></pixmap>
-  </customwidget>
- </customwidgets>
  <resources/>
  <connections/>
 </ui>
