videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrolscontroller.cpp
branchRCL_3
changeset 21 315810614048
parent 16 67eb01668b0e
--- a/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrolscontroller.cpp	Thu Jul 15 18:41:27 2010 +0300
+++ b/videoplayback/videoplaybackcontrols/src/mpxvideoplaybackcontrolscontroller.cpp	Thu Aug 19 09:57:17 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 
-// Version : %version: 42 %
+// Version : %version: 45 %
 
 
 // INCLUDE FILES
@@ -117,10 +117,18 @@
 
     iFileDetails = aDetails;
     iTvOutConnected = iFileDetails->iTvOutConnected;
-    iShowControls  = ETrue;
 
     iRNFormat = IsRealFormatL( iFileDetails->iClipName->Des() );
 
+    if ( IsRealOneBitmapVisible() )
+    {
+        iShowControls  = EFalse;
+    }
+    else
+    {
+        iShowControls  = ETrue;
+    }
+
     iControlsPolicy = CMPXVideoPlaybackControlPolicy::NewL();
     iControlsConfig = CMPXVideoPlaybackControlConfiguration::NewL( this );
 
@@ -228,9 +236,6 @@
 
     ControlsListUpdatedL();
 
-    //
-    //  Show controls initially if this doens't have playable video track
-    //
     for ( TInt i = 0 ; i < iControls.Count() ; i++ )
     {
         iControls[i]->UpdateControlsWithFileDetailsL( iFileDetails );
@@ -315,16 +320,22 @@
         }
         case EMPXControlCmdTvOutConnected:
         {
-            MPX_DEBUG(_L("    [EMPXControlCmdTvOutConnected]"));
             iTvOutConnected = ETrue;
-            HandleTvOutEventL( ETrue, aEvent );
+
+            //
+            //  Do not show the aspect ratio icon when TV Out is connected
+            //
+            HandleTvOutEventL( ETrue, aEvent, EFalse );
             break;
         }
         case EMPXControlCmdTvOutDisconnected:
         {
-            MPX_DEBUG(_L("    [EMPXControlCmdTvOutDisConnected]"));
             iTvOutConnected = EFalse;
-            HandleTvOutEventL( EFalse, aEvent );
+
+            //
+            //  Pass in the show aspect ratio flag from the event
+            //
+            HandleTvOutEventL( EFalse, aEvent, aValue );
             break;
         }
         case EMPXControlCmdHandleBackgroundEvent:
@@ -334,7 +345,9 @@
             TBool keylock( EFalse );
             RProperty::Get( KPSUidAvkonDomain, KAknKeyguardStatus, keylock );
 
-            // Don't show controls when key is locked 
+            //
+            //  Don't show controls when key is locked
+            //
             if ( keylock )
             {
                 iShowControls = EFalse;
@@ -352,8 +365,13 @@
         case EMPXControlCmdHandleForegroundEvent:
         {
             MPX_DEBUG(_L("    [EMPXControlCmdHandleForegroundEvent]"));
-            iShowControls = ETrue;
-            UpdateControlsVisibility();
+
+            if ( ! IsRealOneBitmapVisible() )
+            {
+                iShowControls = ETrue;
+                UpdateControlsVisibility();
+            }
+
             break;
         }
         case EMPXControlCmdHandleErrors:
@@ -399,6 +417,23 @@
             HandleLoadingStarted();
             break;
         }
+        case EMPXControlCmdCreateAspectRatioIcon:
+        case EMPXControlCmdDeleteAspectRatioIcon:
+        {
+            //
+            //  Ignore the Aspect Ration commands for non touch devices and
+            //  when the TV-Out is connected.
+            //
+            if ( AknLayoutUtils::PenEnabled() && ! iTvOutConnected )
+            {
+                iControlsConfig->UpdateControlListL( aEvent );
+
+                //
+                //  Set the update visibility flag based on the visibility of the controls
+                //
+                ControlsListUpdatedL( IsVisible() );
+            }
+        }
     }
 }
 
@@ -546,9 +581,10 @@
 // CMPXVideoPlaybackControlsController::ControlsListUpdatedL()
 // -------------------------------------------------------------------------------------------------
 //
-void CMPXVideoPlaybackControlsController::ControlsListUpdatedL()
+void CMPXVideoPlaybackControlsController::ControlsListUpdatedL( TBool aUpdateVisibility )
 {
-    MPX_ENTER_EXIT(_L("CMPXVideoPlaybackControlsController::ControlsListUpdatedL()"));
+    MPX_ENTER_EXIT(_L("CMPXVideoPlaybackControlsController::ControlsListUpdatedL()"),
+                   _L("aUpdateVisibility = %d"), aUpdateVisibility );
 
     RArray<TMPXVideoPlaybackControls>& updatedList = iControlsConfig->ControlList();
 
@@ -603,7 +639,10 @@
         AppendControlL( myList[j] );
     }
 
-    UpdateControlsVisibility();
+    if ( aUpdateVisibility )
+    {
+        UpdateControlsVisibility();
+    }
 
     CleanupStack::PopAndDestroy();
 }
@@ -824,12 +863,15 @@
 
             TRect ctrlRect = dlPausedBitmap->Rect();
 
-            // To make it aligned with AspectRatioIcon when touch is supported.
+            //
+            //  To make it aligned with AspectRatioIcon when touch is supported.
+            //
             if ( AknLayoutUtils::PenEnabled() )
             {
                 ctrlRect.iBr.iY += 10;
                 ctrlRect.iTl.iY += 10;
             }
+
             CMPXVideoPlaybackControl* control =
                 CMPXVideoPlaybackControlPdl::NewL( this,
                                                    dlPausedBitmap,
@@ -872,6 +914,8 @@
                                                 aControlIndex,
                                                 properties );
 
+            control->MakeVisible( EFalse );
+
             CleanupStack::PushL( control );
 
             iControls.AppendL( control );
@@ -1745,7 +1789,39 @@
     if ( iRealOneBitmap )
     {
         iRealOneBitmap->MakeVisible( aVisible );
+
+        if ( ! aVisible )
+        {
+            // HDMI/TV-out cable connected then show the controls
+            if ( iTvOutConnected  && !iShowControls )
+            {
+                iShowControls = ETrue;
+                UpdateControlsVisibility();
+            }
+            else
+            {
+                iShowControls = ETrue;
+            }
+        }
+    }// iRealOneBitmap
+}
+
+// -------------------------------------------------------------------------------------------------
+//   CMPXVideoPlaybackControlsController::IsRealOneBitmapVisible()
+// -------------------------------------------------------------------------------------------------
+//
+TBool CMPXVideoPlaybackControlsController::IsRealOneBitmapVisible()
+{
+    TBool visible = EFalse;
+
+    if ( iRealOneBitmap )
+    {
+        visible = iRealOneBitmap->IsVisible();
     }
+
+    MPX_DEBUG(_L("CMPXVideoPlaybackControlsController::IsRealOneBitmapVisible(%d)"), visible);
+
+    return visible;
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -1813,13 +1889,21 @@
 // -------------------------------------------------------------------------------------------------
 //
 void CMPXVideoPlaybackControlsController::HandleTvOutEventL(
-        TBool aConnected, TMPXVideoPlaybackControlCommandIds aEvent )
+        TBool aConnected, TMPXVideoPlaybackControlCommandIds aEvent, TBool aShowArIcon )
 {
     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackControlsController::HandleTvOutEventL()"));
 
     iFileDetails->iTvOutConnected = aConnected;
-    iControlsConfig->UpdateControlListL( aEvent );
+    iControlsConfig->UpdateControlListL( aEvent, aShowArIcon );
     ControlsListUpdatedL();
+
+    for ( TInt i = 0 ; i < iControls.Count() ; i++ )
+    {
+        if ( iControls[i]->UpdateTVOutStatusL( aConnected ) )
+        {
+            break;
+        }
+    }
 }
 
 // -------------------------------------------------------------------------------------------------
@@ -1939,38 +2023,6 @@
 }
 
 // -------------------------------------------------------------------------------------------------
-//   CMPXVideoPlaybackControlsController::ShowAspectRatioIcon
-// -------------------------------------------------------------------------------------------------
-//
-TBool CMPXVideoPlaybackControlsController::ShowAspectRatioIcon()
-{
-    MPX_ENTER_EXIT(_L("CMPXVideoPlaybackControlsController::ShowAspectRatioIcon()"));
-
-    TBool retVal = EFalse;
-
-    if ( iFileDetails->iVideoEnabled &&
-         iFileDetails->iVideoHeight > 0 &&
-         iFileDetails->iVideoWidth > 0 &&
-         AknLayoutUtils::PenEnabled() )
-    {
-        TRect displayRect = iContainer->Rect();
-        TReal displayAspectRatio = ( TReal32 )displayRect.Width() / ( TReal32 )displayRect.Height();
-        TReal videoAspectRatio = ( TReal32 )iFileDetails->iVideoWidth /
-                                 ( TReal32 )iFileDetails->iVideoHeight;
-
-        // If clip's AR is as same as screen display AR, AspectRatioIcon does not display.
-        if ( displayAspectRatio != videoAspectRatio )
-        {
-            retVal = ETrue;
-        }
-    }
-
-    MPX_DEBUG( _L( "CMPXVideoPlaybackControlsController::ShowAspectRatioIcon()[%d]" ), retVal );
-
-    return retVal;
-}
-
-// -------------------------------------------------------------------------------------------------
 //   CMPXVideoPlaybackControlsController::HandleLoadingStarted
 // -------------------------------------------------------------------------------------------------
 //