photosgallery/viewframework/tvout/src/glxtvconnectionmonitor.cpp
branchRCL_3
changeset 32 78ad99c24f08
parent 30 a60acebbbd9d
--- a/photosgallery/viewframework/tvout/src/glxtvconnectionmonitor.cpp	Tue May 11 16:13:40 2010 +0300
+++ b/photosgallery/viewframework/tvout/src/glxtvconnectionmonitor.cpp	Tue May 25 12:42:31 2010 +0300
@@ -71,7 +71,8 @@
 CGlxTvConnectionMonitor::CGlxTvConnectionMonitor(
 		MGlxTvConnectionObserver& aConnectionObserver) :
 	CActive(EPriorityStandard), iConnectionObserver(aConnectionObserver),
-			iTvOutConnectionState(EFalse), iHDMIConnectionState(EFalse)
+			iTvOutConnectionState(EFalse), iHDMIConnectionState(EFalse),
+			iHeadSetConnectionState(EFalse)
 
 	{
 	TRACER("CGlxTvConnectionMonitor");
@@ -182,17 +183,31 @@
 	TRACER("CGlxTvConnectionMonitor::IssueNotificationL");
 	TBool previousTvState = iTvOutConnectionState;
 	TBool previousHDMIState = iHDMIConnectionState;
-
+	TBool previousHeadSetState = iHeadSetConnectionState;
+	TTvChangeType changeType = EDisconnected;
+	
 	// Update the connection status
 	UpdateConnectionStatusL();
 
 	// trigger tvstatus change only when there is actually a change the in the connection and not 
 	// for spurious events
-	if (previousTvState != iTvOutConnectionState || previousHDMIState
-			!= iHDMIConnectionState)
+	if (previousTvState != iTvOutConnectionState)
+		{
+		changeType = iTvOutConnectionState == EFalse ? EDisconnected : ETvConnectionChanged;
+		GLX_LOG_INFO1("CGlxTvConnectionMonitor::IssueNotificationL - TVOut Connection Changed %d", changeType);
+		iConnectionObserver.HandleTvConnectionStatusChangedL(changeType);	
+		}
+	else if (previousHDMIState != iHDMIConnectionState)
 		{
-		GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueNotificationL - Connection Altered");
-		iConnectionObserver.HandleTvConnectionStatusChangedL();
+		changeType = iHDMIConnectionState == EFalse ? EDisconnected : ETvConnectionChanged;
+		GLX_LOG_INFO1("CGlxTvConnectionMonitor::IssueNotificationL - HDMI Connection Changed %d", changeType);
+		iConnectionObserver.HandleTvConnectionStatusChangedL(changeType);	
+		}
+	else if (previousHeadSetState != iHeadSetConnectionState)
+		{
+		changeType = iHeadSetConnectionState == EFalse ? EDisconnected : ETvConnectionChanged;
+		GLX_LOG_INFO1("CGlxTvConnectionMonitor::IssueNotificationL - Headset Connection Changed %d", changeType);
+		iConnectionObserver.HandleTvConnectionStatusChangedL(changeType);	
 		}
 	}
 
@@ -202,67 +217,74 @@
 //
 void CGlxTvConnectionMonitor::UpdateConnectionStatusL()
     {
-    TRACER("CGlxTvConnectionMonitor::UpdateConnectionStatusL()");
+	TRACER("CGlxTvConnectionMonitor::UpdateConnectionStatusL()");
 
-    GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL previousTvState = %d , previousHDMIState = %d",
-            iTvOutConnectionState,iHDMIConnectionState);
+	GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL previousTvState = %d , previousHDMIState = %d",
+			iTvOutConnectionState,iHDMIConnectionState);
 
-    // reset the states
-    iHDMIConnectionState = EFalse;
-    iTvOutConnectionState = EFalse;
+	// reset the states
+	iHDMIConnectionState = EFalse;
+	iTvOutConnectionState = EFalse;
+	iHeadSetConnectionState = EFalse;
 
-    //gets the TV status in to the iCurrentAccArray and haves the Latest Accesory in 0-index
-    User::LeaveIfError(iTvAccCon.GetAccessoryConnectionStatus(iCurrentAccArray));
-
-    CAccPolSubblockNameArray* nameArray = CAccPolSubblockNameArray::NewL();
-    CleanupStack::PushL(nameArray);
+	//gets the TV status in to the iCurrentAccArray and haves the Latest Accesory in 0-index
+	User::LeaveIfError(iTvAccCon.GetAccessoryConnectionStatus(iCurrentAccArray));
 
-    //  Get the number of currently connected accessories
-    //  Loop through each connected accessory looking for
-    //  the desired capabilities
-    //
-    const TInt count = iCurrentAccArray.Count();
-    GLX_LOG_INFO1("CGlxTvConnectionMonitor::UpdateConnectionStatusL current count value is %d",count);
-    for (TInt index = 0; index < count; index++)
-        {
-        const TAccPolGenericID genId = iCurrentAccArray.GetGenericIDL(index);
-        //  Check if this connected accessory supports TV-Out capabality.
-        GLX_LOG_INFO1("CGlxTvConnectionMonitor::UpdateConnectionStatusL current index value is %d",index);
-        GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Video Accessory Supported");
-        TAccPolNameRecord nameRecord;
-        nameRecord.SetNameL(KAccVideoOut);
+	CAccPolSubblockNameArray* nameArray = CAccPolSubblockNameArray::NewL();
+	CleanupStack::PushL(nameArray);
+
+	//  Get the number of currently connected accessories
+	//  Loop through each connected accessory looking for
+	//  the desired capabilities
+	//
+	const TInt count = iCurrentAccArray.Count();
+	GLX_LOG_INFO1("CGlxTvConnectionMonitor::UpdateConnectionStatusL current count value is %d",count);
+	for (TInt index = 0; index < count; index++)
+		{
+		const TAccPolGenericID genId = iCurrentAccArray.GetGenericIDL(index);
+		//  Check if this connected accessory supports TV-Out capabality.
+		GLX_LOG_INFO1("CGlxTvConnectionMonitor::UpdateConnectionStatusL current index value is %d",index);
+		GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Video Accessory Supported");
+		TAccPolNameRecord nameRecord;
+		nameRecord.SetNameL(KAccVideoOut);
 
-        if (genId.DeviceTypeCaps( KDTAVDevice ) &&
-                genId.PhysicalConnectionCaps( KPCHDMI ))
-            {
-            TAccValueTypeTInt value;
-            TInt err = iTvAccCon.GetValueL(genId, nameRecord, value);
-            if (err ==KErrNone)
-                {
-                if (value.iValue == EAccVideoOutEHDMI)
-                    {
-                    GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL HDMI is connected");
-                    iHDMIConnectionState = ETrue;
-                    }
-                }
-            }
-        else if (genId.DeviceTypeCaps( KDTAVDevice ) &&
-                genId.PhysicalConnectionCaps( KPCWired ))
-            {
-            TAccValueTypeTInt value;
-            TInt err = iTvAccCon.GetValueL(genId, nameRecord, value);
-            if (err ==KErrNone)
-                {
-                if (value.iValue == EAccVideoOutCVideo)
-                    {
-                    GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Tv is connected");
-                    iTvOutConnectionState = ETrue;
-                    }
-                }
-            }
-        }
-    CleanupStack::PopAndDestroy(nameArray);
+		if (genId.DeviceTypeCaps(KDTAVDevice) && genId.PhysicalConnectionCaps(
+				KPCHDMI))
+			{
+			TAccValueTypeTInt value;
+			TInt err = iTvAccCon.GetValueL(genId, nameRecord, value);
+			if (err == KErrNone)
+				{
+				if (value.iValue == EAccVideoOutEHDMI)
+					{
+					GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL HDMI is connected");
+					iHDMIConnectionState = ETrue;
+					}
+				}
+			}
+		else if (genId.DeviceTypeCaps(KDTAVDevice)
+				&& genId.PhysicalConnectionCaps(KPCWired))
+			{
+			TAccValueTypeTInt value;
+			TInt err = iTvAccCon.GetValueL(genId, nameRecord, value);
+			if (err == KErrNone)
+				{
+				if (value.iValue == EAccVideoOutCVideo)
+					{
+					GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Tv is connected");
+					iTvOutConnectionState = ETrue;
+					}
+				}
+			}
+		else if (genId.DeviceTypeCaps(KDTHeadset)
+				&& genId.PhysicalConnectionCaps(KPCWired))
+			{
+			GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL HeadSet connect");
+			iHeadSetConnectionState = ETrue;
+			}
+		}
+	CleanupStack::PopAndDestroy(nameArray);
 
-    GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL CurrentTvState = %d , CurrentHDMIState = %d",
-            iTvOutConnectionState,iHDMIConnectionState);
-    }
+	GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL CurrentTvState = %d , CurrentHDMIState = %d",
+			iTvOutConnectionState,iHDMIConnectionState);
+	}