diff -r a60acebbbd9d -r 78ad99c24f08 photosgallery/viewframework/tvout/src/glxtvconnectionmonitor.cpp --- 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); + }