diff --git a/sflphone-client-kde/data/sflphone-client-kdeui.rc b/sflphone-client-kde/data/sflphone-client-kdeui.rc
index a9111dba1061b649b2f2ba81eed118ba4deef20a..4402357f0571e624558ff8a88f7497ed08a03501 100644
--- a/sflphone-client-kde/data/sflphone-client-kdeui.rc
+++ b/sflphone-client-kde/data/sflphone-client-kdeui.rc
@@ -17,12 +17,12 @@
 			<Action name="action_hold" />
 			<Action name="action_transfer" />
 			<Action name="action_record" />
+			<Action name="action_mailBox" />
 			<Separator />
+			<Action name="action_main" />
 			<Action name="action_history" />
 			<Action name="action_addressBook" />
 			<Separator />
-			<Action name="action_mailBox" />
-			<Separator />
 			<Action name="action_close" />
 			<Separator />
 			<Action name="action_quit" />
@@ -32,24 +32,24 @@
 			<Action name="action_displayVolumeControls" />
 			<Action name="action_displayDialpad" />
 			<Separator />
-<!-- 			<Action name="action_configureAccounts" /> -->
-<!-- 			<Action name="action_configureAudio" /> -->
 			<Action name="action_configureSflPhone" />
 			<Separator />
 			<Action name="action_accountCreationWizard" />
 		</Menu>
 	</MenuBar>
 	
-	<!--<ToolBar name="mainToolBar" position="Top" noMerge="1" fullWidth="true" newline="true" >
+	<ToolBar name="callsToolBar" iconText="icononly" position="Top" noMerge="1" fullWidth="true" newline="true" >
 		<Action name="action_accept" />
 		<Action name="action_refuse" />
 		<Action name="action_hold" />
 		<Action name="action_transfer" />
 		<Action name="action_record" />
-		<Separator />
+		<Action name="action_mailBox" />
+	</ToolBar>
+	
+	<ToolBar name="screenToolBar" iconText="icononly" position="Top" noMerge="1" fullWidth="true" newline="true" >
+		<Action name="action_main" />
 		<Action name="action_history" />
 		<Action name="action_addressBook" />
-		<Separator />
-		<Action name="action_mailBox" />
-	</ToolBar>	-->
+	</ToolBar>	
 </gui>
\ No newline at end of file
diff --git a/sflphone-client-kde/src/SFLPhone.cpp b/sflphone-client-kde/src/SFLPhone.cpp
index a0c03e85e15028e24a810a5924a748f7c50f8648..48ebe899897630020606eff4d75aa7ee27e9c22e 100644
--- a/sflphone-client-kde/src/SFLPhone.cpp
+++ b/sflphone-client-kde/src/SFLPhone.cpp
@@ -52,34 +52,17 @@ SFLPhone::SFLPhone(QWidget *parent)
 
     // tell the KXmlGuiWindow that this is indeed the main widget
 		setCentralWidget(view);
-   
-
-    // add a status bar
-//    statusBar()->show();
-
 
 		setWindowIcon(QIcon(ICON_SFLPHONE));
 		setWindowTitle(i18n("SFLphone"));
 		
 		setupActions();
 		
-		qDebug() << "currentPath = " << QDir::currentPath() ;
-		
-		
-		
-		QString rcFilePath = QString(DATA_INSTALL_DIR) + "/sflphone-client-kde/sflphone-client-kdeui.rc";
-		if(! QFile::exists(rcFilePath))
-		{
-			QDir dir;
-			dir.cdUp();
-			dir.cd("data");
-			rcFilePath = dir.filePath("sflphone-client-kdeui.rc");
-		}
-		qDebug() << "rcFilePath = " << rcFilePath ;
-		createGUI(rcFilePath);
 		setObjectNames();
-      QMetaObject::connectSlotsByName(this);
-	   view->updateStatusMessage();
+		QMetaObject::connectSlotsByName(this);
+	   view->on_stackedWidget_screen_currentChanged(SCREEN_MAIN);
+	   view->loadWindow();
+	   
 	   
 		move(QCursor::pos().x() - geometry().width()/2, QCursor::pos().y() - geometry().height()/2);
 	   if( ! configurationManager.isStartHidden())
@@ -90,8 +73,7 @@ SFLPhone::SFLPhone(QWidget *parent)
 	   if(configurationManager.getAccountList().value().isEmpty())
 		{
 			(new AccountWizard())->show();
-		}
-	   
+		}   
 } 
 
 SFLPhone::~SFLPhone()
@@ -108,46 +90,75 @@ void SFLPhone::setObjectNames()
 void SFLPhone::setupActions()
 {
 	qDebug() << "setupActions";
+	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
+	
+	action_accept = new KAction(this);
+	action_refuse = new KAction(this);
+	action_hold = new KAction(this);
+	action_transfer = new KAction(this);
+	action_record = new KAction(this);
+	action_mailBox = new KAction(this);
+	
+	action_screen = new QActionGroup(this);
+	action_screen->setExclusive(true);
+	action_main = new KAction(KIcon(QIcon(ICON_SCREEN_MAIN)), i18n("Main screen"), action_screen);
+	action_history = new KAction(KIcon(QIcon(ICON_SCREEN_HISTORY)), i18n("Call history"), action_screen);
+	action_addressBook = new KAction(KIcon(QIcon(ICON_SCREEN_ADDRESS)), i18n("Address book"), action_screen);
+	action_main->setCheckable(true);
+	action_history->setCheckable(true);
+	action_addressBook->setCheckable(true);
+	action_main->setChecked(true);
+	action_screen->addAction(action_main);
+	action_screen->addAction(action_history);
+	action_screen->addAction(action_addressBook);
+	
+	action_close = KStandardAction::close(this, SLOT(close()), this);
+	action_quit = KStandardAction::quit(this, SLOT(quitButton()), this);
+	
+	action_configureSflPhone = KStandardAction::preferences(view, SLOT(configureSflPhone()), this);
+	action_configureSflPhone->setText(i18n("Configure SFLphone"));
+	
+	action_displayVolumeControls = new KAction(KIcon(QIcon(ICON_DISPLAY_VOLUME_CONSTROLS)), i18n("Display volume controls"), this);
+	action_displayDialpad = new KAction(KIcon(QIcon(ICON_DISPLAY_DIALPAD)), i18n("Display dialpad"), this);
+	action_displayVolumeControls->setChecked(configurationManager.getVolumeControls());
+	action_displayDialpad->setChecked(configurationManager.getDialpad());
+	action_accountCreationWizard = new KAction(i18n("Account creation wizard"), this);
+	
+	connect(action_accept,                SIGNAL(triggered()),          view, SLOT(accept()));
+	connect(action_refuse,                SIGNAL(triggered()),          view, SLOT(refuse()));
+	connect(action_hold,                  SIGNAL(triggered()),          view, SLOT(hold()));
+	connect(action_transfer,              SIGNAL(triggered()),          view, SLOT(transfer()));
+	connect(action_record,                SIGNAL(triggered()),          view, SLOT(record()));
+	connect(action_screen,                SIGNAL(triggered(QAction *)), this, SLOT(updateScreen(QAction *)));
+	connect(action_mailBox,               SIGNAL(triggered()),          view, SLOT(mailBox()));
+	connect(action_displayVolumeControls, SIGNAL(triggered()),          view, SLOT(displayVolumeControls()));
+	connect(action_displayDialpad,        SIGNAL(triggered()),          view, SLOT(displayDialpad()));
+	connect(action_accountCreationWizard, SIGNAL(triggered()),          view, SLOT(accountCreationWizard()));
 	
-	actionCollection()->addAction("action_accept", view->action_accept);
-	actionCollection()->addAction("action_refuse", view->action_refuse);
-	actionCollection()->addAction("action_hold", view->action_hold);
-	actionCollection()->addAction("action_transfer", view->action_transfer);
-	actionCollection()->addAction("action_record", view->action_record);
-	actionCollection()->addAction("action_history", view->action_history);
-	actionCollection()->addAction("action_addressBook", view->action_addressBook);
-	actionCollection()->addAction("action_mailBox", view->action_mailBox);
-	KAction * action_close = KStandardAction::close(this, SLOT(close()), 0);
+	action_screen->addAction(action_main);
+	action_screen->addAction(action_history);
+	action_screen->addAction(action_addressBook);
+	
+	actionCollection()->addAction("action_accept", action_accept);
+	actionCollection()->addAction("action_refuse", action_refuse);
+	actionCollection()->addAction("action_hold", action_hold);
+	actionCollection()->addAction("action_transfer", action_transfer);
+	actionCollection()->addAction("action_record", action_record);
+	actionCollection()->addAction("action_main", action_main);
+	actionCollection()->addAction("action_history", action_history);
+	actionCollection()->addAction("action_addressBook", action_addressBook);
+	actionCollection()->addAction("action_mailBox", action_mailBox);
 	actionCollection()->addAction("action_close", action_close);
-	KAction * action_quit = KStandardAction::quit(this, SLOT(quitButton()), 0);
 	actionCollection()->addAction("action_quit", action_quit);
 	
-	
-	actionCollection()->addAction("action_displayVolumeControls", view->action_displayVolumeControls);
-	actionCollection()->addAction("action_displayDialpad", view->action_displayDialpad);
-	actionCollection()->addAction("action_configureSflPhone", view->action_configureSflPhone);
-// 	actionCollection()->addAction("action_configureAccounts", view->action_configureAccounts);
-// 	actionCollection()->addAction("action_configureAudio", view->action_configureAudio);
-	actionCollection()->addAction("action_accountCreationWizard", view->action_accountCreationWizard);
+	actionCollection()->addAction("action_displayVolumeControls", action_displayVolumeControls);
+	actionCollection()->addAction("action_displayDialpad", action_displayDialpad);
+	actionCollection()->addAction("action_configureSflPhone", action_configureSflPhone);
+	actionCollection()->addAction("action_accountCreationWizard", action_accountCreationWizard);
 	
 	statusBarWidget = new QLabel();
 	statusBar()->addWidget(statusBarWidget);
 	
-	QToolBar * toolbar = new QToolBar(this);
-	this->addToolBar(Qt::TopToolBarArea, toolbar);
-	toolbar->addAction(view->action_accept);
-	toolbar->addAction(view->action_refuse);
-	toolbar->addAction(view->action_hold);
-	toolbar->addAction(view->action_transfer);
-	toolbar->addAction(view->action_record);
-	toolbar->addSeparator();
-	toolbar->addAction(view->action_history);
-	toolbar->addAction(view->action_addressBook);
-	toolbar->addSeparator();
-	toolbar->addAction(view->action_mailBox);
-	toolbar->setIconSize(QSize(TOOLBAR_SIZE,TOOLBAR_SIZE));
-	
-	
  	trayIconMenu = new QMenu(this);
  	trayIconMenu->addAction(action_quit);
 
@@ -156,6 +167,17 @@ void SFLPhone::setupActions()
 	trayIcon->show();
 	
 	iconChanged = false;
+	
+	QString rcFilePath = QString(DATA_INSTALL_DIR) + "/sflphone-client-kde/sflphone-client-kdeui.rc";
+	if(! QFile::exists(rcFilePath))
+	{
+		QDir dir;
+		dir.cdUp();
+		dir.cd("data");
+		rcFilePath = dir.filePath("sflphone-client-kdeui.rc");
+	}
+	qDebug() << "rcFilePath = " << rcFilePath ;
+	createGUI(rcFilePath);
 
 }
 
@@ -252,9 +274,102 @@ void SFLPhone::on_trayIcon_activated(QSystemTrayIcon::ActivationReason reason)
 }
 
 
-void SFLPhone::on_view_statusMessageChanged(const QString & message)
+void SFLPhone::on_view_statusMessageChangeAsked(const QString & message)
 {
-	qDebug() << "on_view_statusMessageChanged : " + message;
+	qDebug() << "on_view_statusMessageChangeAsked : " + message;
 	statusBarWidget->setText(message);
 }
 
+void SFLPhone::on_view_windowTitleChangeAsked(const QString & message)
+{
+	qDebug() << "on_view_windowTitleChangeAsked : " + message;
+	setWindowTitle(message);
+}
+
+void SFLPhone::on_view_enabledActionsChangeAsked(const bool * enabledActions)
+{
+	qDebug() << "on_view_enabledActionsChangeAsked";
+	action_accept->setEnabled(enabledActions[SFLPhone::Accept]);
+	action_refuse->setEnabled(enabledActions[SFLPhone::Refuse]);
+	action_hold->setEnabled(enabledActions[SFLPhone::Hold]);
+	action_transfer->setEnabled(enabledActions[SFLPhone::Transfer]);
+	action_record->setEnabled(enabledActions[SFLPhone::Record]);
+	action_mailBox->setEnabled(enabledActions[SFLPhone::Mailbox]);
+}
+
+void SFLPhone::on_view_actionIconsChangeAsked(const QString * actionIcons)
+{
+	qDebug() << "on_view_actionIconsChangeAsked";
+	action_accept->setIcon(QIcon(actionIcons[SFLPhone::Accept]));
+	action_refuse->setIcon(QIcon(actionIcons[SFLPhone::Refuse]));
+	action_hold->setIcon(QIcon(actionIcons[SFLPhone::Hold]));
+	action_transfer->setIcon(QIcon(actionIcons[SFLPhone::Transfer]));
+	action_record->setIcon(QIcon(actionIcons[SFLPhone::Record]));
+	action_mailBox->setIcon(QIcon(actionIcons[SFLPhone::Mailbox]));
+}
+
+void SFLPhone::on_view_actionTextsChangeAsked(const QString * actionTexts)
+{
+	qDebug() << "on_view_actionTextsChangeAsked";
+	action_accept->setText(actionTexts[SFLPhone::Accept]);
+	action_refuse->setText(actionTexts[SFLPhone::Refuse]);
+	action_hold->setText(actionTexts[SFLPhone::Hold]);
+	action_transfer->setText(actionTexts[SFLPhone::Transfer]);
+	action_record->setText(actionTexts[SFLPhone::Record]);
+	action_mailBox->setText(actionTexts[SFLPhone::Mailbox]);
+}
+
+
+void SFLPhone::on_view_transferCheckStateChangeAsked(bool transferCheckState)
+{
+	qDebug() << "Changing transfer action checkState";
+	action_transfer->setChecked(transferCheckState);
+}
+
+void SFLPhone::on_view_recordCheckStateChangeAsked(bool recordCheckState)
+{
+	qDebug() << "Changing record action checkState";
+	action_record->setChecked(recordCheckState);
+}
+
+void SFLPhone::updateScreen(QAction * action)
+{
+	if(action == action_main)	view->changeScreen(SCREEN_MAIN);
+	else if(action == action_history)	view->changeScreen(SCREEN_HISTORY);
+	else if(action == action_addressBook)	view->changeScreen(SCREEN_ADDRESS);
+}
+
+void SFLPhone::on_view_screenChanged(int screen)
+{
+	qDebug() << "on_view_screenChanged";
+	if(screen == SCREEN_MAIN)	action_main->setChecked(true);
+	else if(screen == SCREEN_HISTORY)	action_history->setChecked(true);
+	else if(screen == SCREEN_ADDRESS)	action_addressBook->setChecked(true);
+}
+
+QList <QAction *> SFLPhone::getCallActions()
+{
+	QList<QAction *> callActions = QList<QAction *>();
+	callActions.insert((int) Accept, action_accept);
+	callActions.insert((int) Refuse, action_refuse);
+	callActions.insert((int) Hold, action_hold);
+	callActions.insert((int)Transfer, action_transfer);
+	callActions.insert((int) Record, action_record);
+	callActions.insert((int) Mailbox, action_mailBox);
+	return callActions;
+}
+
+void SFLPhone::on_view_incomingCall(const Call * call)
+{
+	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
+	trayIconSignal();
+	if(configurationManager.popupMode())
+	{
+		putForeground();
+	}
+	if(configurationManager.getNotify())
+	{
+		sendNotif(call->getPeerName().isEmpty() ? call->getPeerPhoneNumber() : call->getPeerName());
+	}
+}
+
diff --git a/sflphone-client-kde/src/SFLPhone.h b/sflphone-client-kde/src/SFLPhone.h
index c85f58c1e6435db64338482a4e310e4b240ec4a0..f0b3992b3bf54f39dd4e112b2dfcedd5cd250931 100644
--- a/sflphone-client-kde/src/SFLPhone.h
+++ b/sflphone-client-kde/src/SFLPhone.h
@@ -30,6 +30,8 @@
 #include <QSystemTrayIcon>
 
 #include <KXmlGuiWindow>
+#include <KAction>
+#include <QActionGroup>
 
 #include "ui_sflphone_kdeview_base.h"
 #include "CallList.h"
@@ -42,10 +44,36 @@ class sflphone_kdeView;
 
 class SFLPhone : public KXmlGuiWindow
 {
-
 Q_OBJECT
 
+public:
+enum CallAction {
+        Accept,
+        Refuse,
+        Hold,
+        Transfer,
+        Record,
+        Mailbox,
+        NumberOfCallActions};
+
 private:
+	KAction * action_accept;
+	KAction * action_refuse;
+	KAction * action_hold;
+	KAction * action_transfer;
+	KAction * action_record;
+	QActionGroup * action_screen;
+	KAction * action_main;
+	KAction * action_history;
+	KAction * action_addressBook;
+	KAction * action_mailBox;
+	KAction * action_close;
+	KAction * action_quit;
+	KAction * action_displayVolumeControls;
+	KAction * action_displayDialpad;
+	KAction * action_configureSflPhone;
+	KAction * action_accountCreationWizard;
+
 	sflphone_kdeView * view;
 	QMenu *trayIconMenu;
 	bool iconChanged;
@@ -68,12 +96,22 @@ public:
 	void putForeground();
 	void trayIconSignal();
 	sflphone_kdeView * getView();
+	QList<QAction *> getCallActions();
 	
 	
 private slots:
 	void on_trayIcon_activated(QSystemTrayIcon::ActivationReason reason);
 	void on_trayIcon_messageClicked();
-	void on_view_statusMessageChanged(const QString & message);
+	void on_view_statusMessageChangeAsked(const QString & message);
+	void on_view_windowTitleChangeAsked(const QString & message);
+	void on_view_enabledActionsChangeAsked(const bool * enabledActions);
+	void on_view_actionIconsChangeAsked(const QString * actionIcons);
+	void on_view_actionTextsChangeAsked(const QString * actionTexts);
+	void on_view_transferCheckStateChangeAsked(bool transferCheckState);
+	void on_view_recordCheckStateChangeAsked(bool recordCheckState);
+	void updateScreen(QAction * action);
+	void on_view_screenChanged(int screen);
+	void on_view_incomingCall(const Call * call);
 
 	void quitButton();
 
diff --git a/sflphone-client-kde/src/sflphone_const.h b/sflphone-client-kde/src/sflphone_const.h
index 8829799acf68f9384cd2de9191db585ee6b756a2..834209c1cbf9dcbc818580ddb435261be157cf04 100644
--- a/sflphone-client-kde/src/sflphone_const.h
+++ b/sflphone-client-kde/src/sflphone_const.h
@@ -48,8 +48,11 @@
 #define ACTION_LABEL_UNHOLD               i18n("Hold off")
 #define ACTION_LABEL_GIVE_UP_TRANSF       i18n("Give up transfer")
 #define ACTION_LABEL_CALL_BACK            i18n("Call back")
-// #define ACTION_LABEL_GIVE_UP_SEARCH       i18n("Give up search")
+#define ACTION_LABEL_MAILBOX              i18n("Voicemail")
 
+#define SCREEN_MAIN                       0
+#define SCREEN_HISTORY                    1
+#define SCREEN_ADDRESS                    2
 
 #define ICON_INCOMING                     ":/images/icons/ring.svg"
 #define ICON_RINGING                      ":/images/icons/ring.svg"
@@ -70,6 +73,7 @@
 #define ICON_EXEC_TRANSF                  ":/images/icons/call.svg"
 #define ICON_REC_DEL_OFF                  ":/images/icons/record_disabled.svg"
 #define ICON_REC_DEL_ON                   ":/images/icons/record.svg"
+#define ICON_MAILBOX                      ":/images/icons/mailbox.svg"
 
 #define ICON_REC_VOL_0                    ":/images/icons/mic.svg"
 #define ICON_REC_VOL_1                    ":/images/icons/mic_25.svg"
@@ -81,6 +85,13 @@
 #define ICON_SND_VOL_2                    ":/images/icons/speaker_50.svg"
 #define ICON_SND_VOL_3                    ":/images/icons/speaker_75.svg"
 
+#define ICON_SCREEN_MAIN                  ":/images/icons/sflphone.svg"
+#define ICON_SCREEN_HISTORY               ":/images/icons/history2.svg"
+#define ICON_SCREEN_ADDRESS               ":/images/icons/x-office-address-book.png"
+
+#define ICON_DISPLAY_VOLUME_CONSTROLS     ":/images/icons/icon_volume_off.svg"
+#define ICON_DISPLAY_DIALPAD              ":/images/icons/icon_dialpad.svg"
+
 #define ICON_HISTORY_INCOMING             ":/images/icons/incoming.svg"
 #define ICON_HISTORY_OUTGOING             ":/images/icons/outgoing.svg"
 #define ICON_HISTORY_MISSED               ":/images/icons/missed.svg"
diff --git a/sflphone-client-kde/src/sflphone_kdeview.cpp b/sflphone-client-kde/src/sflphone_kdeview.cpp
index 732fabfd42841708a4c419b8f504b79af19eff22..f0f2518a7a8f14a2c8261b0252c44cde1da2a4cc 100644
--- a/sflphone-client-kde/src/sflphone_kdeview.cpp
+++ b/sflphone-client-kde/src/sflphone_kdeview.cpp
@@ -59,7 +59,6 @@ sflphone_kdeView::sflphone_kdeView(QWidget *parent)
 {
 	setupUi(this);
 	
-	action_configureSflPhone->setIcon(KIcon("preferences-other"));
 	
 	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
 	CallManagerInterface & callManager = CallManagerInterfaceSingleton::getInstance();
@@ -121,9 +120,7 @@ sflphone_kdeView::sflphone_kdeView(QWidget *parent)
 	
 	stackedWidget_screen->setCurrentWidget(page_callList);
 	
-	loadWindow();
-	
-	emit statusMessageChanged("youhou");
+// 	loadWindow();
 	
 } 
 
@@ -139,9 +136,6 @@ sflphone_kdeView::~sflphone_kdeView()
 void sflphone_kdeView::loadWindow()
 {
 	qDebug() << "loadWindow";
-	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
-	action_displayVolumeControls->setChecked(configurationManager.getVolumeControls());
-	action_displayDialpad->setChecked(configurationManager.getDialpad());
 	updateWindowCallState();
 	updateRecordButton();
 	updateVolumeButton();
@@ -152,6 +146,7 @@ void sflphone_kdeView::loadWindow()
 	updateSearchHistory();
 	updateAddressBookEnabled();
 	updateAddressBook();
+	updateStatusMessage();
 }
 
 
@@ -282,24 +277,6 @@ void sflphone_kdeView::backspace()
 			}
 		}
 	}
-	if(stackedWidget_screen->currentWidget() == page_callHistory)
-	{
-		qDebug() << "In call history.";
-		int textSize = lineEdit_searchHistory->text().size();
-		if(textSize > 0)
-		{
-			lineEdit_searchHistory->setText(lineEdit_searchHistory->text().remove(textSize-1, 1));
-		}
-	}
-	if(stackedWidget_screen->currentWidget() == page_addressBook)
-	{
-		qDebug() << "In address book.";
-		int textSize = lineEdit_addressBook->text().size();
-		if(textSize > 0)
-		{
-			lineEdit_addressBook->setText(lineEdit_addressBook->text().remove(textSize-1, 1));
-		}
-	}
 }
 
 void sflphone_kdeView::escape()
@@ -388,8 +365,9 @@ void sflphone_kdeView::enter()
 		}
 		else
 		{
-			action_history->setChecked(false);
-			stackedWidget_screen->setCurrentWidget(page_callList);
+// 			action_history->setChecked(false);
+// 			stackedWidget_screen->setCurrentWidget(page_callList);
+			changeScreen(SCREEN_MAIN);
 			
 			Call * pastCall = callList->findCallByHistoryItem(item);
 			if (!pastCall)
@@ -413,8 +391,9 @@ void sflphone_kdeView::enter()
 		}
 		else
 		{
-			action_addressBook->setChecked(false);
-			stackedWidget_screen->setCurrentWidget(page_callList);
+// 			action_addressBook->setChecked(false);
+// 			stackedWidget_screen->setCurrentWidget(page_callList);
+			changeScreen(SCREEN_MAIN);
 			ContactItemWidget * w = (ContactItemWidget *) (listWidget_addressBook->itemWidget(item));
 			Call * call = callList->addDialingCall(w->getContactName());
 			call->appendItemText(w->getContactNumber());
@@ -466,94 +445,92 @@ void sflphone_kdeView::updateCallItem(Call * call)
 void sflphone_kdeView::updateWindowCallState()
 {
 	qDebug() << "updateWindowCallState";
-	QListWidgetItem * item;
 	
 	bool enabledActions[6]= {true,true,true,true,true,true};
-	QString buttonIconFiles[3] = {ICON_CALL, ICON_HANGUP, ICON_HOLD};
-	QString actionTexts[5] = {ACTION_LABEL_CALL, ACTION_LABEL_HANG_UP, ACTION_LABEL_HOLD, ACTION_LABEL_TRANSFER, ACTION_LABEL_RECORD};
+	QString buttonIconFiles[6] = {ICON_CALL, ICON_HANGUP, ICON_HOLD, ICON_TRANSFER, ICON_REC_DEL_OFF, ICON_MAILBOX};
+	QString actionTexts[6] = {ACTION_LABEL_CALL, ACTION_LABEL_HANG_UP, ACTION_LABEL_HOLD, ACTION_LABEL_TRANSFER, ACTION_LABEL_RECORD, ACTION_LABEL_MAILBOX};
+	
+	QListWidgetItem * item;
+	
 	bool transfer = false;
 	//tells whether the call is in recording position
 	bool recordActivated = false;
-	//tells whether the call can be recorded in the state it is right now
-	bool recordEnabled = false;
-	enabledActions[5] = firstRegisteredAccount() && ! firstRegisteredAccount()->getAccountDetail(ACCOUNT_MAILBOX).isEmpty();
+	enabledActions[SFLPhone::Mailbox] = firstRegisteredAccount() && ! firstRegisteredAccount()->getAccountDetail(ACCOUNT_MAILBOX).isEmpty();
 	if(stackedWidget_screen->currentWidget() == page_callList)
 	{
 		item = listWidget_callList->currentItem();
 		if (!item)
 		{
 			qDebug() << "No item selected.";
-			enabledActions[1] = false;
-			enabledActions[2] = false;
-			enabledActions[3] = false;
-			enabledActions[4] = false;
+			enabledActions[SFLPhone::Refuse] = false;
+			enabledActions[SFLPhone::Hold] = false;
+			enabledActions[SFLPhone::Transfer] = false;
+			enabledActions[SFLPhone::Record] = false;
 		}
 		else
 		{
 			Call * call = (*callList)[item];
 			call_state state = call->getState();
-			//qDebug() << "calling getIsRecording on " << call->getCallId();
-			//recordActivated = callManager.getIsRecording(call->getCallId());
 			recordActivated = call->getRecording();
 			switch (state)
 			{
 				case CALL_STATE_INCOMING:
 					qDebug() << "Reached CALL_STATE_INCOMING with call " << (*callList)[item]->getCallId();
-					buttonIconFiles[0] = ICON_ACCEPT;
-					buttonIconFiles[1] = ICON_REFUSE;
-					actionTexts[0] = ACTION_LABEL_ACCEPT;
-					actionTexts[1] = ACTION_LABEL_REFUSE;
+					buttonIconFiles[SFLPhone::Accept] = ICON_ACCEPT;
+					buttonIconFiles[SFLPhone::Refuse] = ICON_REFUSE;
+					actionTexts[SFLPhone::Accept] = ACTION_LABEL_ACCEPT;
+					actionTexts[SFLPhone::Refuse] = ACTION_LABEL_REFUSE;
 					break;
 				case CALL_STATE_RINGING:
 					qDebug() << "Reached CALL_STATE_RINGING with call " << (*callList)[item]->getCallId();
-					enabledActions[2] = false;
-					enabledActions[3] = false;
+					enabledActions[SFLPhone::Hold] = false;
+					enabledActions[SFLPhone::Transfer] = false;
 					break;
 				case CALL_STATE_CURRENT:
 					qDebug() << "details = " << CallManagerInterfaceSingleton::getInstance().getCallDetails(call->getCallId()).value();
 					qDebug() << "Reached CALL_STATE_CURRENT with call " << (*callList)[item]->getCallId();
-					recordEnabled = true;
+					buttonIconFiles[SFLPhone::Record] = ICON_REC_DEL_ON;
 					break;
 				case CALL_STATE_DIALING:
 					qDebug() << "Reached CALL_STATE_DIALING with call " << (*callList)[item]->getCallId();
-					enabledActions[2] = false;
-					enabledActions[3] = false;
-					enabledActions[4] = false;
-					actionTexts[0] = ACTION_LABEL_ACCEPT;
-					buttonIconFiles[0] = ICON_ACCEPT;
+					enabledActions[SFLPhone::Hold] = false;
+					enabledActions[SFLPhone::Transfer] = false;
+					enabledActions[SFLPhone::Record] = false;
+					actionTexts[SFLPhone::Accept] = ACTION_LABEL_ACCEPT;
+					buttonIconFiles[SFLPhone::Accept] = ICON_ACCEPT;
 					break;
 				case CALL_STATE_HOLD:
 					qDebug() << "Reached CALL_STATE_HOLD with call " << (*callList)[item]->getCallId();
-					buttonIconFiles[2] = ICON_UNHOLD;
-					actionTexts[2] = ACTION_LABEL_UNHOLD;
+					buttonIconFiles[SFLPhone::Hold] = ICON_UNHOLD;
+					actionTexts[SFLPhone::Hold] = ACTION_LABEL_UNHOLD;
 					break;		
 				case CALL_STATE_FAILURE:
 					qDebug() << "Reached CALL_STATE_FAILURE with call " << (*callList)[item]->getCallId();
-					enabledActions[0] = false;
-					enabledActions[2] = false;
-					enabledActions[3] = false;
-					enabledActions[4] = false;
+					enabledActions[SFLPhone::Accept] = false;
+					enabledActions[SFLPhone::Hold] = false;
+					enabledActions[SFLPhone::Transfer] = false;
+					enabledActions[SFLPhone::Record] = false;
 					break;
 				case CALL_STATE_BUSY:
 					qDebug() << "Reached CALL_STATE_BUSY with call " << (*callList)[item]->getCallId();
-					enabledActions[0] = false;
-					enabledActions[2] = false;
-					enabledActions[3] = false;
-					enabledActions[4] = false;
+					enabledActions[SFLPhone::Accept] = false;
+					enabledActions[SFLPhone::Hold] = false;
+					enabledActions[SFLPhone::Transfer] = false;
+					enabledActions[SFLPhone::Record] = false;
 				break;
 				case CALL_STATE_TRANSFER:
 					qDebug() << "Reached CALL_STATE_TRANSFER with call " << (*callList)[item]->getCallId();
-					buttonIconFiles[0] = ICON_EXEC_TRANSF;
-					actionTexts[3] = ACTION_LABEL_GIVE_UP_TRANSF;
+					buttonIconFiles[SFLPhone::Accept] = ICON_EXEC_TRANSF;
+					actionTexts[SFLPhone::Transfer] = ACTION_LABEL_GIVE_UP_TRANSF;
 					transfer = true;
-					recordEnabled = true;
+					buttonIconFiles[SFLPhone::Record] = ICON_REC_DEL_ON;
 					break;
 				case CALL_STATE_TRANSF_HOLD:
 					qDebug() << "Reached CALL_STATE_TRANSF_HOLD with call " << (*callList)[item]->getCallId();
-					buttonIconFiles[0] = ICON_EXEC_TRANSF;
-					buttonIconFiles[2] = ICON_UNHOLD;
-					actionTexts[3] = ACTION_LABEL_GIVE_UP_TRANSF;
-					actionTexts[2] = ACTION_LABEL_UNHOLD;
+					buttonIconFiles[SFLPhone::Accept] = ICON_EXEC_TRANSF;
+					buttonIconFiles[SFLPhone::Hold] = ICON_UNHOLD;
+					actionTexts[SFLPhone::Transfer] = ACTION_LABEL_GIVE_UP_TRANSF;
+					actionTexts[SFLPhone::Hold] = ACTION_LABEL_UNHOLD;
 					transfer = true;
 					break;
 				case CALL_STATE_OVER:
@@ -571,79 +548,54 @@ void sflphone_kdeView::updateWindowCallState()
 	if(stackedWidget_screen->currentWidget() == page_callHistory)
 	{
 		item = listWidget_callHistory->currentItem();
-		buttonIconFiles[0] = ICON_ACCEPT;
-		actionTexts[0] = ACTION_LABEL_CALL_BACK;
-// 		actionTexts[1] = ACTION_LABEL_GIVE_UP_SEARCH;
+		buttonIconFiles[SFLPhone::Accept] = ICON_ACCEPT;
+		actionTexts[SFLPhone::Accept] = ACTION_LABEL_CALL_BACK;
 		if (!item)
 		{
 			qDebug() << "No item selected.";
-			enabledActions[0] = false;
-			enabledActions[1] = false;
-			enabledActions[2] = false;
-			enabledActions[3] = false;
-			enabledActions[4] = false;
+			enabledActions[SFLPhone::Accept] = false;
+			enabledActions[SFLPhone::Refuse] = false;
+			enabledActions[SFLPhone::Hold] = false;
+			enabledActions[SFLPhone::Transfer] = false;
+			enabledActions[SFLPhone::Record] = false;
 		}
 		else
 		{
-			enabledActions[1] = false;
-			enabledActions[2] = false;
-			enabledActions[3] = false;
-			enabledActions[4] = false;
+			enabledActions[SFLPhone::Refuse] = false;
+			enabledActions[SFLPhone::Hold] = false;
+			enabledActions[SFLPhone::Transfer] = false;
+			enabledActions[SFLPhone::Record] = false;
 		}
-// 		if(!lineEdit_searchHistory->text().isEmpty())
-// 		{
-// 			enabledActions[1] = true;
-// 		}
 	}
 	if(stackedWidget_screen->currentWidget() == page_addressBook)
 	{
 		item = listWidget_addressBook->currentItem();
-		buttonIconFiles[0] = ICON_ACCEPT;
-// 		actionTexts[1] = ACTION_LABEL_GIVE_UP_SEARCH;
+		buttonIconFiles[SFLPhone::Accept] = ICON_ACCEPT;
 		if (!item)
 		{
 			qDebug() << "No item selected.";
-			enabledActions[0] = false;
-			enabledActions[1] = false;
-			enabledActions[2] = false;
-			enabledActions[3] = false;
-			enabledActions[4] = false;
+			enabledActions[SFLPhone::Accept] = false;
+			enabledActions[SFLPhone::Refuse] = false;
+			enabledActions[SFLPhone::Hold] = false;
+			enabledActions[SFLPhone::Transfer] = false;
+			enabledActions[SFLPhone::Record] = false;
 		}
 		else
 		{
-			enabledActions[1] = false;
-			enabledActions[2] = false;
-			enabledActions[3] = false;
-			enabledActions[4] = false;
+			enabledActions[SFLPhone::Refuse] = false;
+			enabledActions[SFLPhone::Hold] = false;
+			enabledActions[SFLPhone::Transfer] = false;
+			enabledActions[SFLPhone::Record] = false;
 		}
-// 		if(!lineEdit_addressBook->text().isEmpty())
-// 		{
-// 			enabledActions[1] = true;
-// 		}
 	}
 	
 	qDebug() << "Updating Window.";
 	
-	action_accept->setEnabled(enabledActions[0]);
-	action_refuse->setEnabled(enabledActions[1]);
-	action_hold->setEnabled(enabledActions[2]);
-	action_transfer->setEnabled(enabledActions[3]);
-	action_record->setEnabled(enabledActions[4]);
-	action_mailBox->setEnabled(enabledActions[5]);
-	
-	action_record->setIcon(QIcon(recordEnabled ? ICON_REC_DEL_ON : ICON_REC_DEL_OFF));
-	action_accept->setIcon(QIcon(buttonIconFiles[0]));
-	action_refuse->setIcon(QIcon(buttonIconFiles[1]));
-	action_hold->setIcon(QIcon(buttonIconFiles[2]));
-	
-	action_accept->setText(actionTexts[0]);
-	action_refuse->setText(actionTexts[1]);
-	action_hold->setText(actionTexts[2]);
-	action_transfer->setText(actionTexts[3]);
-	action_record->setText(actionTexts[4]);
-	
-	action_transfer->setChecked(transfer);
-	action_record->setChecked(recordActivated);
+	emit enabledActionsChangeAsked(enabledActions);
+	emit actionIconsChangeAsked(buttonIconFiles);
+	emit actionTextsChangeAsked(actionTexts);
+	emit transferCheckStateChangeAsked(transfer);
+	emit recordCheckStateChangeAsked(recordActivated);
 
 	qDebug() << "Window updated.";
 }
@@ -898,11 +850,11 @@ void sflphone_kdeView::updateStatusMessage()
 	Account * account = firstRegisteredAccount();
 	if(account == NULL)
 	{
-		emit statusMessageChanged(i18n("No registered accounts"));
+		emit statusMessageChangeAsked(i18n("No registered accounts"));
 	}
 	else
 	{
-		emit statusMessageChanged(i18n("Using account") + " \'" + account->getAlias() + "\' (" + account->getAccountDetail(ACCOUNT_TYPE) + ")") ;
+		emit statusMessageChangeAsked(i18n("Using account") + " \'" + account->getAlias() + "\' (" + account->getAccountDetail(ACCOUNT_TYPE) + ")") ;
 	}
 }
 
@@ -912,14 +864,14 @@ void sflphone_kdeView::updateStatusMessage()
 ************            Autoconnect             *************
 ************************************************************/
 
-void sflphone_kdeView::on_action_displayVolumeControls_triggered()
+void sflphone_kdeView::displayVolumeControls()
 {
 	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
 	configurationManager.setVolumeControls();
 	updateVolumeControls();
 }
 
-void sflphone_kdeView::on_action_displayDialpad_triggered()
+void sflphone_kdeView::displayDialpad()
 {
 	ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
 	configurationManager.setDialpad();
@@ -1049,8 +1001,9 @@ void sflphone_kdeView::on_listWidget_callList_itemDoubleClicked(QListWidgetItem
 void sflphone_kdeView::on_listWidget_callHistory_itemDoubleClicked(QListWidgetItem * item)
 {
 	qDebug() << "on_listWidget_callHistory_itemDoubleClicked";
-	action_history->setChecked(false);
-	stackedWidget_screen->setCurrentWidget(page_callList);
+// 	action_history->setChecked(false);
+// 	stackedWidget_screen->setCurrentWidget(page_callList);
+	changeScreen(SCREEN_MAIN);
 	Call * pastCall = callList->findCallByHistoryItem(item);
 	Call * call = callList->addDialingCall(pastCall->getPeerName(), pastCall->getAccountId());
 	call->appendItemText(pastCall->getPeerPhoneNumber());
@@ -1063,8 +1016,9 @@ void sflphone_kdeView::on_listWidget_callHistory_itemDoubleClicked(QListWidgetIt
 void sflphone_kdeView::on_listWidget_addressBook_itemDoubleClicked(QListWidgetItem * item)
 {
 	qDebug() << "on_listWidget_addressBook_itemDoubleClicked";
-	action_addressBook->setChecked(false);
-	stackedWidget_screen->setCurrentWidget(page_callList);
+// 	action_addressBook->setChecked(false);
+// 	stackedWidget_screen->setCurrentWidget(page_callList);
+	changeScreen(SCREEN_MAIN);
 	ContactItemWidget * w = (ContactItemWidget *) (listWidget_addressBook->itemWidget(item));
 	Call * call = callList->addDialingCall(w->getContactName());
 	call->appendItemText(w->getContactNumber());
@@ -1076,22 +1030,21 @@ void sflphone_kdeView::on_listWidget_addressBook_itemDoubleClicked(QListWidgetIt
 void sflphone_kdeView::on_stackedWidget_screen_currentChanged(int index)
 {
 	qDebug() << "on_stackedWidget_screen_currentChanged";
-	KXmlGuiWindow * window = (KXmlGuiWindow * ) this->parent();
 	switch(index)
 	{
-		case 0:
+		case SCREEN_MAIN:
 			qDebug() << "Switched to call list screen.";
-			window->setWindowTitle(i18n("SFLphone") + " - " + i18n("Main screen"));
+			emit windowTitleChangeAsked(i18n("SFLphone") + " - " + i18n("Main screen"));
 			break;
-		case 1:
+		case SCREEN_HISTORY:
 			qDebug() << "Switched to call history screen.";
 			updateCallHistory();
-			window->setWindowTitle(i18n("SFLphone") + " - " + i18n("Call history"));
+			emit windowTitleChangeAsked(i18n("SFLphone") + " - " + i18n("Call history"));
 			break;
-		case 2:
+		case SCREEN_ADDRESS:
 			qDebug() << "Switched to address book screen.";
 			updateAddressBook();
-			window->setWindowTitle(i18n("SFLphone") + " - " + i18n("Address book"));
+			emit windowTitleChangeAsked(i18n("SFLphone") + " - " + i18n("Address book"));
 			break;
 		default:
 			qDebug() << "Error : reached an unknown index \"" << index << "\" with stackedWidget_screen.";
@@ -1110,12 +1063,13 @@ void sflphone_kdeView::contextMenuEvent(QContextMenuEvent *event)
 		        this  , SLOT(editBeforeCall()));
 		menu.addAction(action_edit);
 	}
-	
-	menu.addAction(action_accept);
-	menu.addAction(action_refuse);
-	menu.addAction(action_hold);
-	menu.addAction(action_transfer);
-	menu.addAction(action_record);
+	SFLPhone * window = (SFLPhone * ) this->parent();
+	QList<QAction *> callActions = window->getCallActions();
+	menu.addAction(callActions.at((int) SFLPhone::Accept));
+	menu.addAction(callActions[SFLPhone::Refuse]);
+	menu.addAction(callActions[SFLPhone::Hold]);
+	menu.addAction(callActions[SFLPhone::Transfer]);
+	menu.addAction(callActions[SFLPhone::Record]);
 	menu.addSeparator();
 	
 	QAction * action = new ActionSetAccountFirst(NULL, &menu);
@@ -1136,7 +1090,6 @@ void sflphone_kdeView::contextMenuEvent(QContextMenuEvent *event)
 		menu.addAction(action);
 	}
 	menu.exec(event->globalPos());
-	
 }
 
 void sflphone_kdeView::editBeforeCall()
@@ -1173,9 +1126,10 @@ void sflphone_kdeView::editBeforeCall()
 	QString newNumber = QInputDialog::getText(this, i18n("Edit before call"), QString(), QLineEdit::Normal, number, &ok);
 	if(ok)
 	{
-		action_history->setChecked(false);
-		action_addressBook->setChecked(false);
-		stackedWidget_screen->setCurrentWidget(page_callList);
+// 		action_history->setChecked(false);
+// 		action_addressBook->setChecked(false);
+// 		stackedWidget_screen->setCurrentWidget(page_callList);
+		changeScreen(SCREEN_MAIN);
 		Call * call = callList->addDialingCall(name);
 		call->appendItemText(newNumber);
 		addCallToCallList(call);
@@ -1187,7 +1141,6 @@ void sflphone_kdeView::editBeforeCall()
 void sflphone_kdeView::setAccountFirst(Account * account)
 {
 	qDebug() << "setAccountFirst : " << (account ? account->getAlias() : QString());
-// 	getAccountList()->setAccountFirst(account);
 	if(account)
 	{
 		priorAccountId = account->getAccountId();
@@ -1212,19 +1165,19 @@ void sflphone_kdeView::on_listWidget_addressBook_currentItemChanged()
 }
 
 
-void sflphone_kdeView::on_action_configureSflPhone_triggered()
+void sflphone_kdeView::configureSflPhone()
 {
 	configDialog->reload();
 	configDialog->show();
 }
 
-void sflphone_kdeView::on_action_accountCreationWizard_triggered()
+void sflphone_kdeView::accountCreationWizard()
 {
 	wizard->show();
 }
 	
 
-void sflphone_kdeView::on_action_accept_triggered()
+void sflphone_kdeView::accept()
 {
 	if(stackedWidget_screen->currentWidget() == page_callList)
 	{
@@ -1262,9 +1215,9 @@ void sflphone_kdeView::on_action_accept_triggered()
 	}
 	if(stackedWidget_screen->currentWidget() == page_callHistory)
 	{
-		action_history->setChecked(false);
-		stackedWidget_screen->setCurrentWidget(page_callList);
-		
+// 		action_history->setChecked(false);
+// 		stackedWidget_screen->setCurrentWidget(page_callList);
+		changeScreen(SCREEN_MAIN);
 		Call * pastCall = callList->findCallByHistoryItem(listWidget_callHistory->currentItem());
 		Call * call = callList->addDialingCall(pastCall->getPeerName());
 		call->appendItemText(pastCall->getPeerPhoneNumber());
@@ -1274,8 +1227,9 @@ void sflphone_kdeView::on_action_accept_triggered()
 	}
 	if(stackedWidget_screen->currentWidget() == page_addressBook)
 	{
-		action_addressBook->setChecked(false);
-		stackedWidget_screen->setCurrentWidget(page_callList);
+// 		action_addressBook->setChecked(false);
+// 		stackedWidget_screen->setCurrentWidget(page_callList);
+		changeScreen(SCREEN_MAIN);
 		ContactItemWidget * w = (ContactItemWidget *) (listWidget_addressBook->itemWidget(listWidget_addressBook->currentItem()));
 		Call * call = callList->addDialingCall(w->getContactName());
 		call->appendItemText(w->getContactNumber());
@@ -1285,7 +1239,7 @@ void sflphone_kdeView::on_action_accept_triggered()
 	}
 }
 
-void sflphone_kdeView::on_action_refuse_triggered()
+void sflphone_kdeView::refuse()
 {
 	if(stackedWidget_screen->currentWidget() == page_callList)
 	{
@@ -1309,7 +1263,7 @@ void sflphone_kdeView::on_action_refuse_triggered()
 	}
 }
 
-void sflphone_kdeView::on_action_hold_triggered()
+void sflphone_kdeView::hold()
 {
 	QListWidgetItem * item = listWidget_callList->currentItem();
 	if(!item)
@@ -1322,7 +1276,7 @@ void sflphone_kdeView::on_action_hold_triggered()
 	}
 }
 
-void sflphone_kdeView::on_action_transfer_triggered()
+void sflphone_kdeView::transfer()
 {
 	QListWidgetItem * item = listWidget_callList->currentItem();
 	if(!item)
@@ -1335,7 +1289,7 @@ void sflphone_kdeView::on_action_transfer_triggered()
 	}
 }
 
-void sflphone_kdeView::on_action_record_triggered()
+void sflphone_kdeView::record()
 {
 	QListWidgetItem * item = listWidget_callList->currentItem();
 	if(!item)
@@ -1348,37 +1302,7 @@ void sflphone_kdeView::on_action_record_triggered()
 	}
 }
 
-void sflphone_kdeView::on_action_history_triggered(bool checked)
-{
-	if(checked == true)
-	{
- 		action_addressBook->setChecked(false);
-		stackedWidget_screen->setCurrentWidget(page_callHistory);
-	}
-	else
-	{
-		stackedWidget_screen->setCurrentWidget(page_callList);
-	}
-	updateWindowCallState();
-}
-
-void sflphone_kdeView::on_action_addressBook_triggered(bool checked)
-{
-	if(checked == true)
-	{
-		action_history->setChecked(false);
-		stackedWidget_screen->setCurrentWidget(page_addressBook);
-		if(lineEdit_addressBook->text().isEmpty())
-		{	lineEdit_addressBook->setFocus(Qt::OtherFocusReason);	}
-	}
-	else
-	{
-		stackedWidget_screen->setCurrentWidget(page_callList);
-	}
-	updateWindowCallState();
-}
-
-void sflphone_kdeView::on_action_mailBox_triggered()
+void sflphone_kdeView::mailBox()
 {
 	Account * account = firstRegisteredAccount();
 	QString mailBoxNumber = account->getAccountDetail(ACCOUNT_MAILBOX);
@@ -1426,16 +1350,7 @@ void sflphone_kdeView::on1_incomingCall(const QString &accountID, const QString
 	Call * call = callList->addIncomingCall(callID);
 	addCallToCallList(call);
 	listWidget_callList->setCurrentRow(listWidget_callList->count() - 1);
-	SFLPhone * window = (SFLPhone * ) this->parent();
-	window->trayIconSignal();
-	if(configurationManager.popupMode())
-	{
-		window->putForeground();
-	}
-	if(configurationManager.getNotify())
-	{
-		window->sendNotif(call->getPeerName().isEmpty() ? call->getPeerPhoneNumber() : call->getPeerName());
-	}
+	emit incomingCall(call);
 }
 
 void sflphone_kdeView::on1_incomingMessage(const QString &accountID, const QString &message)
@@ -1486,11 +1401,10 @@ bool sflphone_kdeView::loadAddressBook()
 
 void sflphone_kdeView::updateAddressBookEnabled()
 {
-	action_addressBook->setVisible(isAddressBookEnabled());
+	emit addressBookEnableAsked(isAddressBookEnabled());
 	if(! isAddressBookEnabled() && stackedWidget_screen->currentWidget() == page_addressBook)
 	{
-		stackedWidget_screen->setCurrentWidget(page_callList);	
-		action_history->setChecked(false);
+		changeScreen(SCREEN_MAIN);
 	}
 }
 
@@ -1502,4 +1416,24 @@ bool sflphone_kdeView::isAddressBookEnabled()
 	return addressBookSettings[ADDRESSBOOK_ENABLE];
 }
 
+void sflphone_kdeView::changeScreen(int screen)
+{
+	switch(screen)
+	{
+		case SCREEN_MAIN:
+			stackedWidget_screen->setCurrentWidget(page_callList);
+			break;
+		case SCREEN_HISTORY:
+			stackedWidget_screen->setCurrentWidget(page_callHistory);
+			break;
+		case SCREEN_ADDRESS:
+			stackedWidget_screen->setCurrentWidget(page_addressBook);
+			break;
+		default:
+			break;
+	}
+	updateWindowCallState();
+	emit screenChanged(screen);
+}
+
 #include "sflphone_kdeview.moc"
diff --git a/sflphone-client-kde/src/sflphone_kdeview.h b/sflphone-client-kde/src/sflphone_kdeview.h
index a9a4e72a779d9a108cc77ea07bd5e586e07c799c..9387fbab46df291f94c2047e6cd486fc6ef54936 100644
--- a/sflphone-client-kde/src/sflphone_kdeview.h
+++ b/sflphone-client-kde/src/sflphone_kdeview.h
@@ -79,6 +79,15 @@ protected:
 
 public:
 	//Constructors & Destructors
+	/**
+	 *   This constructor does not load the window as it would
+	 *   better wait for the parent window to connect to the signals
+	 *   for updating it (statusMessageChangeAsked...).
+	 *   You should call the loadWindow() method once
+	 *   you have constructed the object and connected the
+	 *   expected signals.
+	 * @param parent 
+	 */
 	sflphone_kdeView(QWidget *parent);
 	virtual ~sflphone_kdeView();
 	
@@ -236,11 +245,13 @@ public slots:
 	
 	
 	void updateStatusMessage();
+	
 	/**
 	 *   Enable the address book search line edit.
 	 *   To be called once the address book loading has finished.
 	 */
 	void enableAddressBook();
+	
 	/**
 	 *   Loads the address book asynchronously.
 	 *   Calls enableAddressBook() once the address book
@@ -277,20 +288,16 @@ public slots:
 		}
 	}
 
-	void on_action_displayVolumeControls_triggered();
-	void on_action_displayDialpad_triggered();
-// 	void on_action_configureAccounts_triggered();
-// 	void on_action_configureAudio_triggered();
-	void on_action_configureSflPhone_triggered();
-	void on_action_accountCreationWizard_triggered();
-	void on_action_accept_triggered();
-	void on_action_refuse_triggered();
-	void on_action_hold_triggered();
-	void on_action_transfer_triggered();
-	void on_action_record_triggered();
-	void on_action_history_triggered(bool checked);
-	void on_action_addressBook_triggered(bool checked);
-	void on_action_mailBox_triggered();
+	void displayVolumeControls();
+	void displayDialpad();
+	void configureSflPhone();
+	void accountCreationWizard();
+	void accept();
+	void refuse();
+	void hold();
+	void transfer();
+	void record();
+	void mailBox();
 	
 	void on_widget_dialpad_typed(QString text);
 	
@@ -320,8 +327,20 @@ public slots:
 	void on1_voiceMailNotify(const QString &accountID, int count);
 	void on1_volumeChanged(const QString &device, double value);
 	
+	void changeScreen(int screen);
+	
 signals:
-	void statusMessageChanged(const QString & message);
+	void statusMessageChangeAsked(const QString & message);
+	void windowTitleChangeAsked(const QString & title);
+	void enabledActionsChangeAsked(const bool * enabledActions);
+	void actionIconsChangeAsked(const QString * actionIcons);
+	void actionTextsChangeAsked(const QString * actionTexts);
+	void transferCheckStateChangeAsked(bool transferCheckState);
+	void recordCheckStateChangeAsked(bool recordCheckState);
+	void addressBookEnableAsked(bool enableAddressBook);
+	void screenChanged(int screen);
+	void incomingCall(const Call * call);
+	
 
 };
 
diff --git a/sflphone-client-kde/src/ui/sflphone_kdeview_base.ui b/sflphone-client-kde/src/ui/sflphone_kdeview_base.ui
index 64f801d60205e276c6335bf7bffeb8bc60a28ea5..4d026f13ed56e6cefb2062bc11e6594094f0e1a0 100644
--- a/sflphone-client-kde/src/ui/sflphone_kdeview_base.ui
+++ b/sflphone-client-kde/src/ui/sflphone_kdeview_base.ui
@@ -327,133 +327,6 @@
     </widget>
    </item>
   </layout>
-  <action name="action_accept">
-   <property name="icon">
-    <iconset resource="../qrc/resources.qrc">
-     <normaloff>:/images/icons/call.svg</normaloff>:/images/icons/call.svg</iconset>
-   </property>
-   <property name="text">
-    <string>Pick up</string>
-   </property>
-  </action>
-  <action name="action_refuse">
-   <property name="icon">
-    <iconset resource="../qrc/resources.qrc">
-     <normaloff>:/images/icons/hang_up.svg</normaloff>:/images/icons/hang_up.svg</iconset>
-   </property>
-   <property name="text">
-    <string>Hang up</string>
-   </property>
-  </action>
-  <action name="action_hold">
-   <property name="icon">
-    <iconset resource="../qrc/resources.qrc">
-     <normaloff>:/images/icons/hold.svg</normaloff>:/images/icons/hold.svg</iconset>
-   </property>
-   <property name="text">
-    <string>Hold on</string>
-   </property>
-  </action>
-  <action name="action_transfer">
-   <property name="checkable">
-    <bool>true</bool>
-   </property>
-   <property name="icon">
-    <iconset resource="../qrc/resources.qrc">
-     <normaloff>:/images/icons/transfert.svg</normaloff>:/images/icons/transfert.svg</iconset>
-   </property>
-   <property name="text">
-    <string>Transfer</string>
-   </property>
-  </action>
-  <action name="action_history">
-   <property name="checkable">
-    <bool>true</bool>
-   </property>
-   <property name="icon">
-    <iconset resource="../qrc/resources.qrc">
-     <normaloff>:/images/icons/history2.svg</normaloff>:/images/icons/history2.svg</iconset>
-   </property>
-   <property name="text">
-    <string>History</string>
-   </property>
-  </action>
-  <action name="action_mailBox">
-   <property name="icon">
-    <iconset resource="../qrc/resources.qrc">
-     <normaloff>:/images/icons/mailbox.svg</normaloff>:/images/icons/mailbox.svg</iconset>
-   </property>
-   <property name="text">
-    <string>Voicemail</string>
-   </property>
-  </action>
-  <action name="action_configureSflPhone">
-   <property name="text">
-    <string>Configure SFLphone</string>
-   </property>
-   <property name="toolTip">
-    <string>Configure SFLphone</string>
-   </property>
-  </action>
-  <action name="action_displayVolumeControls">
-   <property name="checkable">
-    <bool>true</bool>
-   </property>
-   <property name="checked">
-    <bool>true</bool>
-   </property>
-   <property name="icon">
-    <iconset resource="../qrc/resources.qrc">
-     <normaloff>:/images/icons/icon_volume_off.svg</normaloff>:/images/icons/icon_volume_off.svg</iconset>
-   </property>
-   <property name="text">
-    <string>Display volume controls</string>
-   </property>
-  </action>
-  <action name="action_displayDialpad">
-   <property name="checkable">
-    <bool>true</bool>
-   </property>
-   <property name="checked">
-    <bool>true</bool>
-   </property>
-   <property name="icon">
-    <iconset resource="../qrc/resources.qrc">
-     <normaloff>:/images/icons/icon_dialpad.svg</normaloff>:/images/icons/icon_dialpad.svg</iconset>
-   </property>
-   <property name="text">
-    <string>Display dialpad</string>
-   </property>
-  </action>
-  <action name="action_record">
-   <property name="checkable">
-    <bool>true</bool>
-   </property>
-   <property name="icon">
-    <iconset>
-     <normaloff>:/images/icons/del_off.png</normaloff>:/images/icons/del_off.png</iconset>
-   </property>
-   <property name="text">
-    <string>Record</string>
-   </property>
-  </action>
-  <action name="action_accountCreationWizard">
-   <property name="text">
-    <string>Account creation wizard</string>
-   </property>
-  </action>
-  <action name="action_addressBook">
-   <property name="checkable">
-    <bool>true</bool>
-   </property>
-   <property name="icon">
-    <iconset resource="../qrc/resources.qrc">
-     <normaloff>:/images/icons/x-office-address-book.png</normaloff>:/images/icons/x-office-address-book.png</iconset>
-   </property>
-   <property name="text">
-    <string>Address book</string>
-   </property>
-  </action>
  </widget>
  <customwidgets>
   <customwidget>