diff --git a/sflphone_kde/Call.cpp b/sflphone_kde/Call.cpp
index 4f2ad96ab9832604d03c1903e728941fded9630e..f9edbac64780ba379995ea37dc4faac574bb4881 100644
--- a/sflphone_kde/Call.cpp
+++ b/sflphone_kde/Call.cpp
@@ -8,6 +8,14 @@ Call::Call(call_state startState, QString callId)
 	this->item = new QListWidgetItem("");
 }
 
+Call::Call(call_state startState, QString callId, QString from, Account & account)
+{
+	this->automate = new Automate(startState);
+	this->id = callId;
+	this->item = new QListWidgetItem(from);
+	this->account = & account;
+}
+
 Call::~Call()
 {
 	delete item;
@@ -20,6 +28,12 @@ Call * Call::buildDialingCall(QString callId)
 	return call;
 }
 
+Call * Call::buildIncomingCall(QString callId, QString from, Account & account)
+{
+	Call * call = new Call(CALL_STATE_INCOMING, callId, from, account);
+	return call;
+}
+
 QListWidgetItem * Call::getItem()
 {
 	return item;
diff --git a/sflphone_kde/Call.h b/sflphone_kde/Call.h
index cd03f6f6ea2e8143fff1b79fce16cb08e02bd540..2a8a25ef62b947f0f6b4cd7e61ac8c266dfc48f9 100644
--- a/sflphone_kde/Call.h
+++ b/sflphone_kde/Call.h
@@ -10,7 +10,7 @@
 class Call
 {
 private:
-	//Account * account;
+	Account * account;
 	QString id;
 	QString from;
 	QString to;
@@ -25,7 +25,8 @@ private:
 public:
 	
 	~Call();
-	static Call * buildDialingCall(QString calllId);
+	static Call * buildDialingCall(QString callId);
+	static Call * buildIncomingCall(QString callId, QString from, Account & account);
 	QListWidgetItem * getItem();
 	call_state getState() const;
 	QString getCallId();
diff --git a/sflphone_kde/CallList.cpp b/sflphone_kde/CallList.cpp
index 7d39d88af372aad050c7e5dd536a3f60ccfbe7d1..d4461fdb4cdf8aecdfeb178a408872aa0070f835 100644
--- a/sflphone_kde/CallList.cpp
+++ b/sflphone_kde/CallList.cpp
@@ -36,4 +36,11 @@ QListWidgetItem * CallList::addDialingCall()
 	Call * call = Call::buildDialingCall(getAndIncCallId());
 	calls->append(call);
 	return call->getItem();
+}
+
+QListWidgetItem * CallList::addIncomingCall(QString callId, QString from, Account & account)
+{
+	Call * call = Call::buildIncomingCall(callId, from, account);
+	calls->append(call);
+	return call->getItem();
 }
\ No newline at end of file
diff --git a/sflphone_kde/CallList.h b/sflphone_kde/CallList.h
index 2817f5c74f567b729d197e0d6ed7448b8e23d992..7f43e6dc6deb1d23ffcd53a4fdac1cc9ef1a4441 100644
--- a/sflphone_kde/CallList.h
+++ b/sflphone_kde/CallList.h
@@ -17,6 +17,7 @@ public:
 	Call * operator[](QListWidgetItem * item);
 
 	QListWidgetItem * addDialingCall();
+	QListWidgetItem * addIncomingCall(QString callId, QString from, Account & account);
 
 	QString getAndIncCallId();
 	int size();
diff --git a/sflphone_kde/SFLPhone.cpp b/sflphone_kde/SFLPhone.cpp
index 53b0b86b7cf55082605f2782708709ed9436bc6d..95cab2bbc4985804f044eb9ba871f396a086d542 100644
--- a/sflphone_kde/SFLPhone.cpp
+++ b/sflphone_kde/SFLPhone.cpp
@@ -12,6 +12,23 @@ SFLPhone::SFLPhone(QMainWindow *parent) : QMainWindow(parent)
     
 	configDialog = new ConfigurationDialog(this);
 	configDialog->setModal(true);
+	
+	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	connect(&callManager, SIGNAL(callStateChanged(const QString &, const QString &)),
+	        this,         SLOT(on_callStateChanged(const QString &, const QString &)));
+	connect(&callManager, SIGNAL(error(MapStringString)),
+	        this,         SLOT(on_error(MapStringString)));
+	connect(&callManager, SIGNAL(incomingCall(const QString &, const QString &, const QString &)),
+	        this,         SLOT(on_incomingCall(const QString &, const QString &, const QString &)));
+	connect(&callManager, SIGNAL(incomingMessage(const QString &, const QString &)),
+	        this,         SLOT(on_incomingMessage(const QString &, const QString &)));
+	connect(&callManager, SIGNAL(voiceMailNotify(const QString &, int)),
+	        this,         SLOT(on_voiceMailNotify(const QString &, int)));
+	connect(&callManager, SIGNAL(volumeChanged(const QString &, double)),
+	        this,         SLOT(on_volumeChanged(const QString &, double)));
+   //QDBusConnection::sessionBus().connect("org.sflphone.SFLphone", "/org/sflphone/SFLphone/CallManager", "org.sflphone.SFLphone.CallManager", "incomingCall",
+   //             this, SLOT(on_incomingCall(const QString &accountID, const QString &callID, const QString &from)));
+
     
 	loadWindow();
 
@@ -28,22 +45,55 @@ void SFLPhone::loadWindow()
 	actionAfficher_les_barres_de_volume->setChecked(daemon.getVolumeControls());
 	actionAfficher_le_clavier->setChecked(daemon.getDialpad());
 	updateWindowCallState();
+	updateRecordButton();
+	updateVolumeButton();
+	updateRecordBar();
+	updateVolumeBar();
+	updateVolumeControls();
+	updateDialpad();
 }
 
-void SFLPhone::on_actionAfficher_les_barres_de_volume_toggled()
+QString SFLPhone::firstAccount()
 {
 	ConfigurationManagerInterface & daemon = ConfigurationManagerInterfaceSingleton::getInstance();
-	daemon.setVolumeControls();
+	//ask for the list of accounts ids to the daemon
+	QStringList accountIds = daemon.getAccountList().value();
+	for (int i = 0; i < accountIds.size(); ++i){
+		MapStringString accountDetails = daemon.getAccountDetails(accountIds[i]);
+		if(accountDetails[QString(ACCOUNT_STATUS)] == QString(ACCOUNT_STATE_REGISTERED))
+		{
+			return accountIds[i];
+		}
+	}
+	return "";
 }
 
-void SFLPhone::on_actionAfficher_le_clavier_toggled()
+void SFLPhone::typeChar(QChar c)
 {
-	ConfigurationManagerInterface & daemon = ConfigurationManagerInterfaceSingleton::getInstance();
-	daemon.setDialpad();
+	QListWidgetItem * item = listWidget_callList->currentItem();
+	if(!item)
+	{
+		qDebug() << "Typing when no item is selected. Opening an item.";
+		item = callList->addDialingCall();
+		listWidget_callList->addItem(item);
+		listWidget_callList->setCurrentRow(listWidget_callList->count() - 1);
+	}
+	listWidget_callList->currentItem()->setText(listWidget_callList->currentItem()->text() + c);
+}
+
+void SFLPhone::action(QListWidgetItem * item, call_action action)
+{
+	(*callList)[item]->action(action, item->text());
+	updateWindowCallState();
 }
 
+/*******************************************
+******** Update Display Functions **********
+*******************************************/
+
 void SFLPhone::updateWindowCallState()
 {
+	qDebug() << "updateWindowCallState";
 	QListWidgetItem * item = listWidget_callList->currentItem();
 	
 	bool enabledActions[5]= {true,true,true,true,true};
@@ -151,27 +201,108 @@ void SFLPhone::updateWindowCallState()
 	actionRaccrocher->setIcon(QIcon(buttonIconFiles[1]));
 	actionMettre_en_attente->setIcon(QIcon(buttonIconFiles[2]));
 	
-	//actionTransferer->setChecked(transfer);
+	actionTransferer->setChecked(transfer);
 	//actionRecord->setChecked(record);
 }
 
-void SFLPhone::typeChar(QChar c)
+void SFLPhone::updateRecordButton()
 {
-	QListWidgetItem * item = listWidget_callList->currentItem();
-	if(!item)
+	qDebug() << "updateRecordButton";
+	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	double recVol = callManager.getVolume(RECORD_DEVICE);
+	if(recVol == 0.00)
 	{
-		qDebug() << "Typing when no item is selected. Opening an item.";
-		item = callList->addDialingCall();
-		listWidget_callList->addItem(item);
-		listWidget_callList->setCurrentRow(listWidget_callList->count() - 1);
+		toolButton_recVol->setIcon(QIcon(ICON_REC_VOL_0));
 	}
-	listWidget_callList->currentItem()->setText(listWidget_callList->currentItem()->text() + c);
+	else if(recVol < 0.33)
+	{
+		toolButton_recVol->setIcon(QIcon(ICON_REC_VOL_1));
+	}
+	else if(recVol < 0.67)
+	{
+		toolButton_recVol->setIcon(QIcon(ICON_REC_VOL_2));
+	}
+	else
+	{
+		toolButton_recVol->setIcon(QIcon(ICON_REC_VOL_3));
+	}
+	if(recVol > 0)
+		toolButton_recVol->setChecked(false);
+}
+void SFLPhone::updateVolumeButton()
+{
+	qDebug() << "updateVolumeButton";
+	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	double sndVol = callManager.getVolume(SOUND_DEVICE);
+	if(sndVol == 0.00)
+	{
+		toolButton_sndVol->setIcon(QIcon(ICON_SND_VOL_0));
+	}
+	else if(sndVol < 0.33)
+	{
+		toolButton_sndVol->setIcon(QIcon(ICON_SND_VOL_1));
+	}
+	else if(sndVol < 0.67)
+	{
+		toolButton_sndVol->setIcon(QIcon(ICON_SND_VOL_2));
+	}
+	else
+	{
+		toolButton_sndVol->setIcon(QIcon(ICON_SND_VOL_3));
+	}
+	if(sndVol > 0)
+		toolButton_sndVol->setChecked(false);
+}
+void SFLPhone::updateRecordBar()
+{
+	qDebug() << "updateRecordBar";
+	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	double recVol = callManager.getVolume(RECORD_DEVICE);
+	slider_recVol->setValue((int)(recVol * 100));
+}
+void SFLPhone::updateVolumeBar()
+{
+	qDebug() << "updateVolumeBar";
+	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	double sndVol = callManager.getVolume(SOUND_DEVICE);
+	slider_sndVol->setValue((int)(sndVol * 100));
 }
 
-void SFLPhone::action(QListWidgetItem * item, call_action action)
+void SFLPhone::updateVolumeControls()
 {
-	(*callList)[item]->action(action, item->text());
-	updateWindowCallState();
+	qDebug() << "updateVolumeControls";
+	ConfigurationManagerInterface & daemon = ConfigurationManagerInterfaceSingleton::getInstance();
+	int display = daemon.getVolumeControls();
+	widget_recVol->setVisible(display);
+	widget_sndVol->setVisible(display);
+}
+
+void SFLPhone::updateDialpad()
+{
+	qDebug() << "updateDialpad";
+	ConfigurationManagerInterface & daemon = ConfigurationManagerInterfaceSingleton::getInstance();
+	int display = daemon.getDialpad();
+	widget_dialpad->setVisible(display);
+}
+
+
+
+/************************************************************
+************            Autoconnect             *************
+************************************************************/
+
+void SFLPhone::on_actionAfficher_les_barres_de_volume_toggled()
+{
+	ConfigurationManagerInterface & daemon = ConfigurationManagerInterfaceSingleton::getInstance();
+	daemon.setVolumeControls();
+	updateVolumeControls();
+}
+
+void SFLPhone::on_actionAfficher_le_clavier_toggled()
+{
+	ConfigurationManagerInterface & daemon = ConfigurationManagerInterfaceSingleton::getInstance();
+	daemon.setDialpad();
+	updateDialpad();
 }
 
 void SFLPhone::on_pushButton_1_clicked()      { typeChar('1'); }
@@ -187,6 +318,82 @@ void SFLPhone::on_pushButton_0_clicked()      { typeChar('0'); }
 void SFLPhone::on_pushButton_diese_clicked()  { typeChar('#'); }
 void SFLPhone::on_pushButton_etoile_clicked() { typeChar('*'); }
 
+void SFLPhone::on_slider_recVol_valueChanged(int value)
+{
+	qDebug() << "on_slider_recVol_valueChanged(" << value << ")";
+	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	callManager.setVolume(RECORD_DEVICE, (double)value / 100.0);
+	updateRecordButton();
+}
+void SFLPhone::on_slider_sndVol_valueChanged(int value)
+{
+	qDebug() << "on_slider_sndVol_valueChanged(" << value << ")";
+	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	callManager.setVolume(SOUND_DEVICE, (double)value / 100.0);
+	updateVolumeButton();
+}
+	
+void SFLPhone::on_toolButton_recVol_clicked()
+{
+	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	qDebug() << "on_toolButton_recVol_clicked().";
+	if(! toolButton_recVol->isChecked())
+	{
+		qDebug() << "checked";
+		toolButton_recVol->setChecked(false);
+		slider_recVol->setEnabled(true);
+		callManager.setVolume(RECORD_DEVICE, (double)slider_recVol->value() / 100.0);
+	}
+	else
+	{
+		qDebug() << "unchecked";
+		toolButton_recVol->setChecked(true);
+		slider_recVol->setEnabled(false);
+		callManager.setVolume(RECORD_DEVICE, 0.0);
+	}
+	updateRecordButton();
+	/*
+	qDebug() << "on_toolButton_recVol_clicked(). checked = " << toolButton_recVol->isChecked();
+	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	toolButton_recVol->setChecked(toolButton_recVol->isChecked());
+	//toolButton_recVol->setChecked(true);
+	slider_recVol->setEnabled(! toolButton_recVol->isChecked());
+	callManager.setVolume(RECORD_DEVICE, toolButton_recVol->isChecked() ? (double)slider_recVol->value() / 100.0 : 0.0);
+	updateRecordButton();
+	*/
+}
+
+void SFLPhone::on_toolButton_sndVol_clicked()
+{
+	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	qDebug() << "on_toolButton_sndVol_clicked().";
+	if(! toolButton_sndVol->isChecked())
+	{
+		qDebug() << "checked";
+		toolButton_sndVol->setChecked(false);
+		slider_sndVol->setEnabled(true);
+		callManager.setVolume(SOUND_DEVICE, (double)slider_sndVol->value() / 100.0);
+	}
+	else
+	{
+		qDebug() << "unchecked";
+		toolButton_sndVol->setChecked(true);
+		slider_sndVol->setEnabled(false);
+		callManager.setVolume(SOUND_DEVICE, 0.0);
+	}
+	updateVolumeButton();
+	/*
+	qDebug() << "on_toolButton_sndVol_clicked(). checked = " << toolButton_recVol->isChecked();
+	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
+	toolButton_sndVol->setChecked(toolButton_sndVol->isChecked());
+	slider_sndVol->setEnabled(! toolButton_sndVol->isChecked());
+	//callManager.setVolume(SOUND_DEVICE, toolButton_recVol->isChecked() ? 0.0 : (double)slider_sndVol->value() / 100.0);
+	callManager.setVolume(SOUND_DEVICE, 0.0);
+	updateVolumeButton();
+	*/
+}
+
+
 void SFLPhone::on_listWidget_callList_currentItemChanged()
 {
 	updateWindowCallState();
@@ -291,24 +498,46 @@ void SFLPhone::on_actionBoite_vocale_triggered()
 
 }
 
-void SFLPhone::on_actionAbout()
+void SFLPhone::on_callStateChanged(const QString &callID, const QString &state)
 {
+	qDebug() << "on_callStateChanged !";
+}
 
+void SFLPhone::on_error(MapStringString details)
+{
+	qDebug() << "on_error !";
 }
 
-QString SFLPhone::firstAccount()
+void SFLPhone::on_incomingCall(const QString &accountID, const QString &callID, const QString &from)
 {
-	ConfigurationManagerInterface & daemon = ConfigurationManagerInterfaceSingleton::getInstance();
-	//ask for the list of accounts ids to the daemon
-	QStringList accountIds = daemon.getAccountList().value();
-	for (int i = 0; i < accountIds.size(); ++i){
-		MapStringString accountDetails = daemon.getAccountDetails(accountIds[i]);
-		if(accountDetails[QString(ACCOUNT_STATUS)] == QString(ACCOUNT_STATE_REGISTERED))
-		{
-			return accountIds[i];
-		}
-	}
-	return "";
+	qDebug() << "Incoming Call !";
+}
+
+void SFLPhone::on_incomingMessage(const QString &accountID, const QString &message)
+{
+	qDebug() << "on_incomingMessage !";
 }
 
+void SFLPhone::on_voiceMailNotify(const QString &accountID, int count)
+{
+	qDebug() << "on_voiceMailNotify !";
+}
+
+void SFLPhone::on_volumeChanged(const QString &device, double value)
+{
+	qDebug() << "on_volumeChanged !";
+	if(! (toolButton_recVol->isChecked() && value == 0.0))
+		updateRecordBar();
+	if(! (toolButton_sndVol->isChecked() && value == 0.0))
+		updateVolumeBar();
+}
+
+
+/*void SFLPhone::on_actionAbout()
+{
+
+}*/
+
+
+
 
diff --git a/sflphone_kde/SFLPhone.h b/sflphone_kde/SFLPhone.h
index 3ae81d393f62be27a1e0fff084e2676f475975f7..2502d7bb91d6d3ecb7cb57d01bcf12d651b414c1 100644
--- a/sflphone_kde/SFLPhone.h
+++ b/sflphone_kde/SFLPhone.h
@@ -21,14 +21,20 @@ public:
 	SFLPhone(QMainWindow *parent = 0);
 	~SFLPhone();
 	void loadWindow();
-	QAbstractButton * getDialpadButton(int ind);
 	static QString firstAccount();
 
 private slots:
 	void typeChar(QChar c);
 	void action(QListWidgetItem * item, call_action action);
+	
 	void updateWindowCallState();
-
+	void updateRecordButton();
+	void updateVolumeButton();
+	void updateRecordBar();
+	void updateVolumeBar();
+	void updateVolumeControls();
+	void updateDialpad();
+	
 	void on_actionAfficher_les_barres_de_volume_toggled();
 	void on_actionAfficher_le_clavier_toggled();
 	void on_actionConfigurer_les_comptes_triggered();
@@ -41,7 +47,9 @@ private slots:
 	void on_actionRecord_triggered();
 	void on_actionHistorique_triggered();
 	void on_actionBoite_vocale_triggered();
-	void on_actionAbout();
+	//void on_actionAbout();
+	
+
 
 	void on_pushButton_1_clicked();
 	void on_pushButton_2_clicked();
@@ -56,8 +64,21 @@ private slots:
 	void on_pushButton_diese_clicked();
 	void on_pushButton_etoile_clicked();
 	
+	void on_slider_recVol_valueChanged(int value);
+	void on_slider_sndVol_valueChanged(int value);
+	
+	void on_toolButton_recVol_clicked();
+	void on_toolButton_sndVol_clicked();
+	
 	void on_listWidget_callList_currentItemChanged();
 
+	void on_callStateChanged(const QString &callID, const QString &state);
+	void on_error(MapStringString details);
+	void on_incomingCall(const QString &accountID, const QString &callID, const QString &from);
+	void on_incomingMessage(const QString &accountID, const QString &message);
+	void on_voiceMailNotify(const QString &accountID, int count);
+	void on_volumeChanged(const QString &device, double value);
+
 };
 
 #endif
diff --git a/sflphone_kde/main.cpp b/sflphone_kde/main.cpp
index 1ea20a93f077c932268db05df9dd5a837ca4850e..da4fa231ffab1fbf77f8a6ccd23904fbcea4d385 100644
--- a/sflphone_kde/main.cpp
+++ b/sflphone_kde/main.cpp
@@ -16,6 +16,8 @@ int main(int argc, char *argv[])
 		app.installTranslator(&translator);
 	
 		SFLPhone fenetre;
+		
+
 		fenetre.show();
 	
 		return app.exec();	
diff --git a/sflphone_kde/resources.qrc b/sflphone_kde/resources.qrc
new file mode 100644
index 0000000000000000000000000000000000000000..5a7a305aab08d9d5de3eb871a314de5efaacc8f5
--- /dev/null
+++ b/sflphone_kde/resources.qrc
@@ -0,0 +1,88 @@
+<RCC>
+  <qresource prefix="images" >
+    <file>icons/accept.svg</file>
+    <file>icons/busy.svg</file>
+    <file>icons/call.svg</file>
+    <file>icons/current.svg</file>
+    <file>icons/dial.svg</file>
+    <file>icons/fail.svg</file>
+    <file>icons/hang_up.svg</file>
+    <file>icons/history2.svg</file>
+    <file>icons/history.svg</file>
+    <file>icons/hold.svg</file>
+    <file>icons/icon_accept.svg</file>
+    <file>icons/icon_call.svg</file>
+    <file>icons/icon_dialpad_off.svg</file>
+    <file>icons/icon_dialpad.svg</file>
+    <file>icons/icon_hangup.svg</file>
+    <file>icons/icon_hold.svg</file>
+    <file>icons/icon_rec.svg</file>
+    <file>icons/icon_unhold.svg</file>
+    <file>icons/icon_volume_off.svg</file>
+    <file>icons/icon_volume.svg</file>
+    <file>icons/incoming.svg</file>
+    <file>icons/mailbox.svg</file>
+    <file>icons/Makefile</file>
+    <file>icons/Makefile.am</file>
+    <file>icons/Makefile.in</file>
+    <file>icons/mic_25.svg</file>
+    <file>icons/mic_50.svg</file>
+    <file>icons/mic_75.svg</file>
+    <file>icons/mic.svg</file>
+    <file>icons/missed.svg</file>
+    <file>icons/outgoing.svg</file>
+    <file>icons/rec_call.svg</file>
+    <file>icons/refuse.svg</file>
+    <file>icons/ring.svg</file>
+    <file>icons/sflphone.png</file>
+    <file>icons/speaker_25.svg</file>
+    <file>icons/speaker_50.svg</file>
+    <file>icons/speaker_75.svg</file>
+    <file>icons/speaker.svg</file>
+    <file>icons/stock_person.svg</file>
+    <file>icons/transfert.svg</file>
+    <file>icons/unhold.svg</file>
+    <file>icons/accept.svg</file>
+    <file>icons/busy.svg</file>
+    <file>icons/call.svg</file>
+    <file>icons/current.svg</file>
+    <file>icons/dial.svg</file>
+    <file>icons/fail.svg</file>
+    <file>icons/hang_up.svg</file>
+    <file>icons/history2.svg</file>
+    <file>icons/history.svg</file>
+    <file>icons/hold.svg</file>
+    <file>icons/icon_accept.svg</file>
+    <file>icons/icon_call.svg</file>
+    <file>icons/icon_dialpad_off.svg</file>
+    <file>icons/icon_dialpad.svg</file>
+    <file>icons/icon_hangup.svg</file>
+    <file>icons/icon_hold.svg</file>
+    <file>icons/icon_rec.svg</file>
+    <file>icons/icon_unhold.svg</file>
+    <file>icons/icon_volume_off.svg</file>
+    <file>icons/icon_volume.svg</file>
+    <file>icons/incoming.svg</file>
+    <file>icons/mailbox.svg</file>
+    <file>icons/Makefile</file>
+    <file>icons/Makefile.am</file>
+    <file>icons/Makefile.in</file>
+    <file>icons/mic_25.svg</file>
+    <file>icons/mic_50.svg</file>
+    <file>icons/mic_75.svg</file>
+    <file>icons/mic.svg</file>
+    <file>icons/missed.svg</file>
+    <file>icons/outgoing.svg</file>
+    <file>icons/rec_call.svg</file>
+    <file>icons/refuse.svg</file>
+    <file>icons/ring.svg</file>
+    <file>icons/sflphone.png</file>
+    <file>icons/speaker_25.svg</file>
+    <file>icons/speaker_50.svg</file>
+    <file>icons/speaker_75.svg</file>
+    <file>icons/speaker.svg</file>
+    <file>icons/stock_person.svg</file>
+    <file>icons/transfert.svg</file>
+    <file>icons/unhold.svg</file>
+  </qresource>
+</RCC>
diff --git a/sflphone_kde/sflphone-qt.ui b/sflphone_kde/sflphone-qt.ui
index 944f60098dadf3a9b741ee2f2faf04ff90fce903..90b148150684c226080f586d2a7bf56d3640be57 100644
--- a/sflphone_kde/sflphone-qt.ui
+++ b/sflphone_kde/sflphone-qt.ui
@@ -26,67 +26,77 @@
        <number>0</number>
       </property>
       <item>
-       <layout class="QVBoxLayout" name="verticalLayout_2" >
-        <property name="spacing" >
-         <number>0</number>
+       <widget class="QWidget" native="1" name="widget_recVol" >
+        <property name="layoutDirection" >
+         <enum>Qt::RightToLeft</enum>
         </property>
-        <property name="sizeConstraint" >
-         <enum>QLayout::SetDefaultConstraint</enum>
-        </property>
-        <property name="rightMargin" >
-         <number>0</number>
-        </property>
-        <item>
-         <widget class="QSlider" name="verticalSlider_2" >
-          <property name="sizePolicy" >
-           <sizepolicy vsizetype="Expanding" hsizetype="Fixed" >
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="minimumSize" >
-           <size>
-            <width>0</width>
-            <height>50</height>
-           </size>
-          </property>
-          <property name="layoutDirection" >
-           <enum>Qt::RightToLeft</enum>
-          </property>
-          <property name="autoFillBackground" >
-           <bool>false</bool>
-          </property>
-          <property name="orientation" >
-           <enum>Qt::Vertical</enum>
-          </property>
-          <property name="invertedAppearance" >
-           <bool>false</bool>
-          </property>
-          <property name="invertedControls" >
-           <bool>false</bool>
-          </property>
-          <property name="tickPosition" >
-           <enum>QSlider::NoTicks</enum>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QToolButton" name="toolButton" >
-          <property name="text" >
-           <string>...</string>
-          </property>
-          <property name="icon" >
-           <iconset>
-            <normaloff>:/Images/mic_75.svg</normaloff>:/Images/mic_75.svg</iconset>
-          </property>
-         </widget>
-        </item>
-       </layout>
+        <layout class="QVBoxLayout" name="verticalLayout_4" >
+         <property name="spacing" >
+          <number>0</number>
+         </property>
+         <property name="margin" >
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QSlider" name="slider_recVol" >
+           <property name="sizePolicy" >
+            <sizepolicy vsizetype="Expanding" hsizetype="Fixed" >
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="minimumSize" >
+            <size>
+             <width>0</width>
+             <height>50</height>
+            </size>
+           </property>
+           <property name="layoutDirection" >
+            <enum>Qt::RightToLeft</enum>
+           </property>
+           <property name="autoFillBackground" >
+            <bool>false</bool>
+           </property>
+           <property name="maximum" >
+            <number>100</number>
+           </property>
+           <property name="orientation" >
+            <enum>Qt::Vertical</enum>
+           </property>
+           <property name="invertedAppearance" >
+            <bool>false</bool>
+           </property>
+           <property name="invertedControls" >
+            <bool>false</bool>
+           </property>
+           <property name="tickPosition" >
+            <enum>QSlider::NoTicks</enum>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="toolButton_recVol" >
+           <property name="text" >
+            <string>...</string>
+           </property>
+           <property name="icon" >
+            <iconset>
+             <normaloff>:/Images/mic_75.svg</normaloff>:/Images/mic_75.svg</iconset>
+           </property>
+           <property name="checkable" >
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+        <zorder>toolButton_recVol</zorder>
+        <zorder>slider_recVol</zorder>
+       </widget>
       </item>
       <item>
-       <widget class="QWidget" native="1" name="widget" >
+       <widget class="QWidget" native="1" name="widget_dialpad" >
         <layout class="QGridLayout" name="gridLayout" >
-         <item row="0" column="0" >
+         <item row="0" column="1" >
           <widget class="QPushButton" name="pushButton_1" >
            <property name="sizePolicy" >
             <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
@@ -99,7 +109,7 @@
            </property>
           </widget>
          </item>
-         <item row="0" column="1" >
+         <item row="0" column="2" >
           <widget class="QPushButton" name="pushButton_2" >
            <property name="sizePolicy" >
             <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
@@ -115,7 +125,7 @@
            </property>
           </widget>
          </item>
-         <item row="0" column="2" >
+         <item row="0" column="3" >
           <widget class="QPushButton" name="pushButton_3" >
            <property name="sizePolicy" >
             <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
@@ -128,7 +138,7 @@
            </property>
           </widget>
          </item>
-         <item row="1" column="0" >
+         <item row="1" column="1" >
           <widget class="QPushButton" name="pushButton_4" >
            <property name="sizePolicy" >
             <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
@@ -141,7 +151,7 @@
            </property>
           </widget>
          </item>
-         <item row="1" column="1" >
+         <item row="1" column="2" >
           <widget class="QPushButton" name="pushButton_5" >
            <property name="sizePolicy" >
             <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
@@ -154,7 +164,7 @@
            </property>
           </widget>
          </item>
-         <item row="1" column="2" >
+         <item row="1" column="3" >
           <widget class="QPushButton" name="pushButton_6" >
            <property name="sizePolicy" >
             <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
@@ -167,7 +177,7 @@
            </property>
           </widget>
          </item>
-         <item row="2" column="0" >
+         <item row="2" column="1" >
           <widget class="QPushButton" name="pushButton_7" >
            <property name="sizePolicy" >
             <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
@@ -180,7 +190,7 @@
            </property>
           </widget>
          </item>
-         <item row="2" column="1" >
+         <item row="2" column="2" >
           <widget class="QPushButton" name="pushButton_8" >
            <property name="sizePolicy" >
             <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
@@ -193,7 +203,7 @@
            </property>
           </widget>
          </item>
-         <item row="2" column="2" >
+         <item row="2" column="3" >
           <widget class="QPushButton" name="pushButton_9" >
            <property name="sizePolicy" >
             <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
@@ -206,7 +216,7 @@
            </property>
           </widget>
          </item>
-         <item row="3" column="0" >
+         <item row="3" column="1" >
           <widget class="QPushButton" name="pushButton_etoile" >
            <property name="sizePolicy" >
             <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
@@ -219,7 +229,7 @@
            </property>
           </widget>
          </item>
-         <item row="3" column="1" >
+         <item row="3" column="2" >
           <widget class="QPushButton" name="pushButton_0" >
            <property name="sizePolicy" >
             <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
@@ -232,7 +242,7 @@
            </property>
           </widget>
          </item>
-         <item row="3" column="2" >
+         <item row="3" column="3" >
           <widget class="QPushButton" name="pushButton_diese" >
            <property name="sizePolicy" >
             <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
@@ -249,56 +259,64 @@
        </widget>
       </item>
       <item>
-       <layout class="QVBoxLayout" name="verticalLayout_3" >
-        <property name="spacing" >
-         <number>4</number>
-        </property>
-        <property name="sizeConstraint" >
-         <enum>QLayout::SetDefaultConstraint</enum>
-        </property>
-        <property name="rightMargin" >
-         <number>0</number>
-        </property>
-        <item>
-         <widget class="QSlider" name="verticalSlider_3" >
-          <property name="sizePolicy" >
-           <sizepolicy vsizetype="Expanding" hsizetype="Fixed" >
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="minimumSize" >
-           <size>
-            <width>0</width>
-            <height>50</height>
-           </size>
-          </property>
-          <property name="layoutDirection" >
-           <enum>Qt::LeftToRight</enum>
-          </property>
-          <property name="autoFillBackground" >
-           <bool>false</bool>
-          </property>
-          <property name="orientation" >
-           <enum>Qt::Vertical</enum>
-          </property>
-          <property name="tickPosition" >
-           <enum>QSlider::NoTicks</enum>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QToolButton" name="toolButton_2" >
-          <property name="text" >
-           <string>...</string>
-          </property>
-          <property name="icon" >
-           <iconset>
-            <normaloff>:/Images/speaker_75.svg</normaloff>:/Images/speaker_75.svg</iconset>
-          </property>
-         </widget>
-        </item>
-       </layout>
+       <widget class="QWidget" native="1" name="widget_sndVol" >
+        <layout class="QVBoxLayout" name="verticalLayout_2" >
+         <property name="spacing" >
+          <number>0</number>
+         </property>
+         <property name="margin" >
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QSlider" name="slider_sndVol" >
+           <property name="sizePolicy" >
+            <sizepolicy vsizetype="Expanding" hsizetype="Fixed" >
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="minimumSize" >
+            <size>
+             <width>0</width>
+             <height>50</height>
+            </size>
+           </property>
+           <property name="layoutDirection" >
+            <enum>Qt::LeftToRight</enum>
+           </property>
+           <property name="autoFillBackground" >
+            <bool>false</bool>
+           </property>
+           <property name="maximum" >
+            <number>100</number>
+           </property>
+           <property name="orientation" >
+            <enum>Qt::Vertical</enum>
+           </property>
+           <property name="tickPosition" >
+            <enum>QSlider::NoTicks</enum>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="toolButton_sndVol" >
+           <property name="text" >
+            <string>...</string>
+           </property>
+           <property name="icon" >
+            <iconset>
+             <normaloff>:/Images/speaker_75.svg</normaloff>:/Images/speaker_75.svg</iconset>
+           </property>
+           <property name="checkable" >
+            <bool>true</bool>
+           </property>
+           <property name="checked" >
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
       </item>
      </layout>
     </item>
diff --git a/sflphone_kde/sflphone_const.h b/sflphone_kde/sflphone_const.h
index 93f56bbc128777c890c6234a1c24321410cf02ac..6712987d46da39236b2864a0c5eb9f6d085ba394 100644
--- a/sflphone_kde/sflphone_const.h
+++ b/sflphone_kde/sflphone_const.h
@@ -57,6 +57,19 @@
 #define ICON_REFUSE ":/images/icons/refuse.svg"
 #define ICON_EXEC_TRANSF ":/images/icons/call.svg"
 
+#define ICON_REC_VOL_0 ":/images/icons/mic.svg"
+#define ICON_REC_VOL_1 ":/images/icons/mic_25.svg"
+#define ICON_REC_VOL_2 ":/images/icons/mic_50.svg"
+#define ICON_REC_VOL_3 ":/images/icons/mic_75.svg"
+
+#define ICON_SND_VOL_0 ":/images/icons/speaker.svg"
+#define ICON_SND_VOL_1 ":/images/icons/speaker_25.svg"
+#define ICON_SND_VOL_2 ":/images/icons/speaker_50.svg"
+#define ICON_SND_VOL_3 ":/images/icons/speaker_75.svg"
+
+#define RECORD_DEVICE "mic"
+#define SOUND_DEVICE "speaker"
+
 #define ACCOUNT_TYPE          "Account.type"
 #define ACCOUNT_ALIAS		   "Account.alias"
 #define ACCOUNT_ENABLED		   "Account.enable"
diff --git a/sflphone_kde/sflphone_kde.kdevelop.pcs b/sflphone_kde/sflphone_kde.kdevelop.pcs
index c5020e28ff72d6064ad325af97884b8f7e129b73..138d43272375023ed724ff6185edf28f20cf4bae 100644
Binary files a/sflphone_kde/sflphone_kde.kdevelop.pcs and b/sflphone_kde/sflphone_kde.kdevelop.pcs differ
diff --git a/sflphone_kde/sflphone_kde.kdevses b/sflphone_kde/sflphone_kde.kdevses
index d7f8147c1accdf4876f19cbede90b1da6f5d0c0a..4e3fa3cbed4e3bd42862f85cb218fe3d2a328dcd 100644
--- a/sflphone_kde/sflphone_kde.kdevses
+++ b/sflphone_kde/sflphone_kde.kdevses
@@ -1,37 +1,31 @@
 <?xml version = '1.0' encoding = 'UTF-8'?>
 <!DOCTYPE KDevPrjSession>
 <KDevPrjSession>
- <DocsAndViews NumberOfDocuments="10" >
+ <DocsAndViews NumberOfDocuments="8" >
   <Doc0 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/SFLPhone.cpp" >
-   <View0 Encoding="" Type="Source" />
+   <View0 Encoding="" line="526" Type="Source" />
   </Doc0>
-  <Doc1 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/SFLPhone.h" >
-   <View0 Encoding="" Type="Source" />
+  <Doc1 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/callmanager_interface_singleton.cpp" >
+   <View0 Encoding="" line="0" Type="Source" />
   </Doc1>
-  <Doc2 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/Automate.cpp" >
-   <View0 Encoding="" Type="Source" />
+  <Doc2 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/callmanager_interface_p.h" >
+   <View0 Encoding="" line="135" Type="Source" />
   </Doc2>
-  <Doc3 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/Automate.h" >
-   <View0 Encoding="" Type="Source" />
+  <Doc3 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/callmanager_interface.cpp" >
+   <View0 Encoding="" line="17" Type="Source" />
   </Doc3>
-  <Doc4 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/CallList.h" >
-   <View0 Encoding="" Type="Source" />
+  <Doc4 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/main.cpp" >
+   <View0 Encoding="" line="19" Type="Source" />
   </Doc4>
-  <Doc5 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/CallList.cpp" >
-   <View0 Encoding="" Type="Source" />
+  <Doc5 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/SFLPhone.h" >
+   <View0 Encoding="" line="74" Type="Source" />
   </Doc5>
-  <Doc6 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/Call.h" >
-   <View0 Encoding="" Type="Source" />
+  <Doc6 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/callmanager-introspec.xml" >
+   <View0 Encoding="" line="78" Type="Source" />
   </Doc6>
-  <Doc7 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/Call.cpp" >
-   <View0 Encoding="" Type="Source" />
+  <Doc7 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/build/moc_SFLPhone.cpp" >
+   <View0 Encoding="" line="191" Type="Source" />
   </Doc7>
-  <Doc8 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/sflphone_const.h" >
-   <View0 Encoding="" Type="Source" />
-  </Doc8>
-  <Doc9 NumberOfViews="1" URL="file:///home/jquentin/sflphone/sflphone_kde/CMakeLists.txt" >
-   <View0 Encoding="" line="22" Type="Source" />
-  </Doc9>
  </DocsAndViews>
  <pluginList>
   <kdevdebugger>