diff --git a/src/audiortp.cpp b/src/audiortp.cpp
index 71cd30fffadc282b3a61fc21fd98d58c79bbf64c..ad14dfc7d5857921be3a07af98f46e64f0af2128 100644
--- a/src/audiortp.cpp
+++ b/src/audiortp.cpp
@@ -69,12 +69,15 @@ AudioRtp::createNewSession (SipCall *ca) {
 	}
 	
 #ifdef ALSA
-	RTXThread = new AudioRtpRTX (ca, manager->audiodriver, 
+	if (manager->useAlsa) {
+		RTXThread = new AudioRtpRTX (ca, manager->audiodriver, 
 				manager->audiodriverReadAlsa, manager, symetric);
-#else
-	RTXThread = new AudioRtpRTX (ca, manager->audiodriver, NULL, manager, 
-			symetric);
+	}
 #endif
+	if (!manager->useAlsa) {
+		RTXThread = new AudioRtpRTX (ca, manager->audiodriver, NULL, manager, 
+			symetric);
+	}
 	
 	if (RTXThread->start() != 0) {
 		return -1;
@@ -111,7 +114,8 @@ AudioRtpRTX::AudioRtpRTX (SipCall *sipcall, AudioDrivers *driver,
 	this->sym =sym;
 	this->audioDevice = driver;
 #ifdef ALSA
-	this->audioDeviceRead = read_driver;
+	if (manager->useAlsa)
+		this->audioDeviceRead = read_driver;
 #endif
 
 	// TODO: Change bind address according to user settings.
@@ -256,18 +260,22 @@ AudioRtpRTX::run (void) {
 		////////////////////////////
 		if (!manager->mute) {
 #ifdef ALSA
-			i = audioDeviceRead->readBuffer (data_from_mic, 320);
-#else
-			i = audioDevice->readBuffer (data_from_mic, 320);
+			if (manager->useAlsa) {
+				i = audioDeviceRead->readBuffer (data_from_mic, 320);
+			}
 #endif
+			if (!manager->useAlsa) {
+				i = audioDevice->readBuffer (data_from_mic, 320);
+			}
 		} else {
 			// When IP-phone user click on mute button, we read buffer of a
 			// temp buffer to avoid delay in sound.
 #ifdef ALSA
-			i = audioDeviceRead->readBuffer (data_mute, 320);
-#else
-			i = audioDevice->readBuffer (data_mute, 320);
+			if (manager->useAlsa)
+				i = audioDeviceRead->readBuffer (data_mute, 320);
 #endif
+			if (!manager->useAlsa)
+				i = audioDevice->readBuffer (data_mute, 320);
 		}
 
 		// TODO : return an error because no sound
diff --git a/src/configurationpanelui.cpp b/src/configurationpanelui.cpp
index 8102023917fc57f93e4528c50f52af7e8dfd7986..a348bce7e31b7be6cc4fe2b56369a29f13aa3494 100644
--- a/src/configurationpanelui.cpp
+++ b/src/configurationpanelui.cpp
@@ -1,7 +1,7 @@
 /****************************************************************************
 ** Form implementation generated from reading ui file 'configurationpanel.ui'
 **
-** Created: Fri Feb 4 16:42:29 2005
+** Created: Mon Feb 7 11:33:42 2005
 **      by: The User Interface Compiler ($Id$)
 **
 ** WARNING! All changes made in this file will be lost!
diff --git a/src/configurationpanelui.h b/src/configurationpanelui.h
index d7a457b8f5a6ec54fd4c937b4fa8ac3fe0de2acd..4dbbb4b3dc7dbd15f4ca63502a075a365fe9b660 100644
--- a/src/configurationpanelui.h
+++ b/src/configurationpanelui.h
@@ -1,7 +1,7 @@
 /****************************************************************************
 ** Form interface generated from reading ui file 'configurationpanel.ui'
 **
-** Created: Fri Feb 4 16:42:29 2005
+** Created: Mon Feb 7 11:33:42 2005
 **      by: The User Interface Compiler ($Id$)
 **
 ** WARNING! All changes made in this file will be lost!
diff --git a/src/manager.cpp b/src/manager.cpp
index cbf5987a4d559c8fee717a6c27a9771c2022dd38..ee41e5d2f79a77ebdeef43b3a17ed47b7ab21803 100644
--- a/src/manager.cpp
+++ b/src/manager.cpp
@@ -141,10 +141,12 @@ Manager::createSettingsPath (void) {
 void
 Manager::selectAudioDriver (void) {
 	if (Config::getb("Audio", "Drivers.driverOSS")) {
+		useAlsa = false;
 		this->audiodriver = new AudioDriversOSS (AudioDrivers::ReadWrite);
 	}
 	if (Config::getb("Audio", "Drivers.driverALSA")) {
 #ifdef ALSA
+		useAlsa = true;
 		this->audiodriver = new AudioDriversALSA (AudioDrivers::WriteOnly);
 		this->audiodriverReadAlsa = new AudioDriversALSA (AudioDrivers::ReadOnly);
 #endif
diff --git a/src/manager.h b/src/manager.h
index 7ade0563691746614d4d5ec30f6248663ca722fc..4297653f71a3adab7282476275ead1c5ac7cd6c4 100644
--- a/src/manager.h
+++ b/src/manager.h
@@ -46,6 +46,7 @@ public:
 #ifdef ALSA
 	AudioDrivers	*audiodriverReadAlsa;
 #endif
+	bool			 useAlsa;
 	ToneGenerator	*tone;
 	QString 		*DirectCall; // from -p argv
 	bool 			 mute;
diff --git a/src/phonebookui.cpp b/src/phonebookui.cpp
index 3cb1d49fb5167c41ee5f85db8ca47a899e149656..7a9cfb624d8be55a9a2f7cf25d2e61229e63379a 100644
--- a/src/phonebookui.cpp
+++ b/src/phonebookui.cpp
@@ -1,7 +1,7 @@
 /****************************************************************************
 ** Form implementation generated from reading ui file 'phonebook.ui'
 **
-** Created: Fri Feb 4 16:42:28 2005
+** Created: Mon Feb 7 11:33:42 2005
 **      by: The User Interface Compiler ($Id$)
 **
 ** WARNING! All changes made in this file will be lost!
diff --git a/src/phonebookui.h b/src/phonebookui.h
index 44b49401e70f5b595a481baa8f90de9e33321f30..3b364498b81811e6a65ae5f696e365cfa4168a88 100644
--- a/src/phonebookui.h
+++ b/src/phonebookui.h
@@ -1,7 +1,7 @@
 /****************************************************************************
 ** Form interface generated from reading ui file 'phonebook.ui'
 **
-** Created: Fri Feb 4 16:42:28 2005
+** Created: Mon Feb 7 11:33:42 2005
 **      by: The User Interface Compiler ($Id$)
 **
 ** WARNING! All changes made in this file will be lost!
diff --git a/src/qtGUImainwindow.cpp b/src/qtGUImainwindow.cpp
index 6bc478074bf80624f92b864206658c698872cfba..05e0e6d1f4f00f54e21449d1250ae9c5c79e6f3a 100644
--- a/src/qtGUImainwindow.cpp
+++ b/src/qtGUImainwindow.cpp
@@ -598,7 +598,10 @@ QtGUIMainWindow::toggleLine (int num_line) {
 		callmanager->phLines[busyNum]->setStateLine(ONHOLD);
 		callmanager->actionHandle (busyNum, ONHOLD_CALL);
 		if (!callmanager->phLines[currentLineNumber]->getbDial()) {
-			this->dialTone(true);
+			if (callmanager->sip->call[busyNum] == NULL) {
+				setInactiveLine(busyNum);
+			}
+			this->dialTone(true);			
 		}
 		callmanager->phLines[currentLineNumber]->setState(BUSY);
 		qDebug("GUI: state ON-HOLD line busyNum %d", busyNum);
@@ -640,6 +643,10 @@ QtGUIMainWindow::toggleLine (int num_line) {
 		qDebug("GUI: state ON-HOLD line %d", currentLineNumber);
 		lcd->setStatus(ONHOLD_STATUS);
 		callmanager->actionHandle (currentLineNumber, ONHOLD_CALL);
+		if (callmanager->sip->call[currentLineNumber] == NULL) {
+			setInactiveLine(currentLineNumber);
+			lcd->setStatus("Enter Phone Number:");
+		}
 	}
 }
 
@@ -727,11 +734,9 @@ QtGUIMainWindow::hangupLine (void) {
 	} else if (callmanager->sip->call[currentLineNumber] == NULL and 
 			callmanager->phLines[currentLineNumber]->isOnHold()) {
 	// If there isn't call on the current line and state line onHold
-		// set free pixmap
-		setFreeStateLine (currentLineNumber);
-		this->dialTone(false);
+		setInactiveLine(currentLineNumber);
+		// Stop congestion sound
 		callmanager->congestion(false);
-		callmanager->phLines[currentLineNumber]->setbDial(false);
 		lcd->clear(QString("Hung up"));
 	}
 	
@@ -744,6 +749,15 @@ QtGUIMainWindow::hangupLine (void) {
 #endif
 }
 
+void
+QtGUIMainWindow::setInactiveLine (int num) {
+	// set free pixmap
+	setFreeStateLine (num);
+	// Stop dial tone
+	this->dialTone(false);
+	callmanager->phLines[num]->setbDial(false);
+}
+
 /**
  * Stop the blinking message slot and load the message-off button pixmap.
  */
diff --git a/src/qtGUImainwindow.h b/src/qtGUImainwindow.h
index ecb2fa0b7da8e64d6b79bd71e42bd66214d47348..cef45807dfdac9e269bf2016ba21c615eecc5ce6 100644
--- a/src/qtGUImainwindow.h
+++ b/src/qtGUImainwindow.h
@@ -137,17 +137,18 @@ public:
 	QString  ringFile			(void);
 	QString	 getRingFile		(void);
 	inline 
-	void 	 ring				(bool b) { this->ringVar = b; }
+	void 	 ring				(bool b)	{ this->ringVar = b; }
 	inline 
-	bool 	 ringing			(void) { return this->ringVar; }
+	bool 	 ringing			(void) 		{ return this->ringVar; }
 	void	 stopCallTimer 		(int);
 	void	 startCallTimer 	(int);
 	void	 setFreeStateLine 	(int);
 	void	 setCurrentLineNumber(int);
-	void	 dialTone		(bool);
+	void	 dialTone			(bool);
+	void	 setInactiveLine 	(int);
 
 signals:
-	void 	 keyPressed(int);
+	void 	 keyPressed			(int);
 
 public slots:
 	void 	 dial				(void);
diff --git a/src/url_inputui.cpp b/src/url_inputui.cpp
index dde3a9bcb261729eeb04ac6517496261b4445ac1..e992ba18167085fa4a8037f049f3fc7965f4a475 100644
--- a/src/url_inputui.cpp
+++ b/src/url_inputui.cpp
@@ -1,7 +1,7 @@
 /****************************************************************************
 ** Form implementation generated from reading ui file 'url_input.ui'
 **
-** Created: Fri Feb 4 16:42:29 2005
+** Created: Mon Feb 7 11:33:42 2005
 **      by: The User Interface Compiler ($Id$)
 **
 ** WARNING! All changes made in this file will be lost!
diff --git a/src/url_inputui.h b/src/url_inputui.h
index aa242724149e9396a021e6d04f345cff28a349fc..54dd2ea82b566bb51391a8baf5edd0c81580c359 100644
--- a/src/url_inputui.h
+++ b/src/url_inputui.h
@@ -1,7 +1,7 @@
 /****************************************************************************
 ** Form interface generated from reading ui file 'url_input.ui'
 **
-** Created: Fri Feb 4 16:42:29 2005
+** Created: Mon Feb 7 11:33:42 2005
 **      by: The User Interface Compiler ($Id$)
 **
 ** WARNING! All changes made in this file will be lost!