photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp
branchRCL_3
changeset 13 71da52165949
parent 9 6b87b143d312
child 14 ce1c7ad1f18b
--- a/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp	Fri Feb 19 22:51:01 2010 +0200
+++ b/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp	Fri Mar 12 15:42:44 2010 +0200
@@ -85,6 +85,11 @@
  * Start Delay for the periodic timer, in microseconds
  */
 const TInt KPeriodicStartDelay = 250000; 
+/**
+ * Interval delay for the periodic timer, in microseconds
+ */
+const TInt KPeriodicIntervalDelay = 100000; 
+
 //This constant is used to calculate the index of the item for which texture has to removed.
 //6 = 5(iterator value in forward or backward direction for fullscreen) + 1(focus index);
 const TInt KFullScreenIterator = 3; 
@@ -307,6 +312,16 @@
         //Fix For EPKA-7U5DT7-slideshow launched from FullScreen and connect USB in mass storage mode results in Photos crash
         navigationalState->ActivatePreviousViewL();
         }  
+	else
+		{
+		//fix for ESLM-7YYDXC: When in FullScreen View, view mode must be 'EView'
+		//While coming back from SlideShow to FullScreen view, need to set view mode.
+		if(navigationalState->ViewingMode() != NGlxNavigationalState::EView)
+		   	{
+		   	navigationalState->SetToViewMode();
+		   	}
+		}
+		
 	
     if(naviState->Id() == TMPXItemId(KGlxCollectionPluginImageViewerImplementationUid))
         {
@@ -321,22 +336,9 @@
     if(!iImgViewerMode && iMediaList->Count())    
         {
         iHdmiController = CGlxHdmiController::NewL();    
-        iOldFocusIndex = iMediaList->FocusIndex(); 
-        TGlxMedia item = iMediaList->Item( iMediaList->FocusIndex() );
-        GLX_LOG_INFO("CGlxHdmi - CGlxFullScreenViewImp Create HdmiController");
-        
-        //check if the content  is not video && has proper DRM rights
-        //then only call setimage in HDMI
-        if (item.Category() != EMPXVideo && iDrmUtility->CheckOpenRightsL(item.Uri(),ETrue))
-            {
-            TInt frameCount(0);
-            TSize orignalSize;
-            TBool aFramesPresent  = item.GetFrameCount(frameCount);
-            TBool adimension  = item.GetDimensions(orignalSize);
-            iHdmiController->SetImageL(item.Uri(), orignalSize, frameCount);
-            }    
+        iOldFocusIndex = iMediaList->FocusIndex();
+        SetImageL();
         }
-
     iScreenFurniture->SetActiveView(iViewUid);
 
     // create the screen furniture for touch devices
@@ -375,8 +377,8 @@
 //    iContextUtility->PublishPhotoContextL(item.Uri());
     	if ( !iPeriodic->IsActive() )
 		{
-		iPeriodic->Start( KPeriodicStartDelay, KMaxTInt, TCallBack( 
-		        &PeriodicCallback, static_cast<TAny*>( this ) ) );
+        iPeriodic->Start(KPeriodicStartDelay, KPeriodicIntervalDelay,
+                TCallBack(&PeriodicCallback, static_cast<TAny*> (this)));
 		}
 	}
 	
@@ -992,7 +994,16 @@
                 MulDoubleTapData* DoubleTapData = (MulDoubleTapData*)(aEvent.CustomEventData()); 
                 TPoint doubleTapPoint = DoubleTapData->mDoubleTapPoint;
                 SetSliderLevel();
-                TRAP_IGNORE( ActivateZoomControlL(EZoomStartDoubleTap, &doubleTapPoint)  );
+                TRAP_IGNORE( ActivateZoomControlL(EZoomStartDoubleTap, &doubleTapPoint) );
+                return EEventConsumed;
+                }
+            case ETypeItemRemoved:
+                {
+                if(iHdmiController)
+                    {
+                     SetImageL();
+                    }
+                iOldFocusIndex = iMediaList->FocusIndex();
                 return EEventConsumed;
                 }
             case ETypeHighlight:
@@ -1006,25 +1017,9 @@
                     {
                     RemoveTexture();
                     }
-				TGlxMedia item1 = iMediaList->Item( iMediaList->FocusIndex() );
-                TInt frameCount(0);
-                TSize orignalSize;
-                TBool aFramesPresent  = item1.GetFrameCount(frameCount);
-                TBool adimension  = item1.GetDimensions(orignalSize);
-
-                //check if the content  is not video && has proper DRM rights
-                //then only call next image in HDMI
                 if(iHdmiController)
                     {
-                    if (item1.Category() != EMPXVideo && iDrmUtility->CheckOpenRightsL(item1.Uri(),ETrue))
-                        {
-                        GLX_LOG_INFO("CGlxHdmi - FullscreenView - SetImageL");                    
-                        iHdmiController->SetImageL(item1.Uri(), orignalSize, frameCount);
-                        }
-                    else
-                        {
-                        iHdmiController->IsVideo();                    
-                        }
+                     SetImageL();
                     }
                 iOldFocusIndex = iMediaList->FocusIndex();
                 if ( NGlxNFullScreenUIState::EUiOn == GetUiSate() )
@@ -1103,6 +1098,15 @@
 		    DeactivateZoomControlL();
 		    consumed = ETrue;
 		    break;
+		case EGlxCmdRenameCompleted:
+		    {
+            if (iHdmiController)
+                {
+                SetImageL();
+                }
+			consumed = ETrue;
+            break;
+            }
 //		case EGlxCmdRotateLeft:
 //			iCoverFlowWidget->RotateImage(IMulWidget::ERotateLeft,size,KGlxRotationDelay);
 //		    consumed = ETrue;
@@ -1139,15 +1143,6 @@
      {
      TRACER("CGlxFullScreenViewImp::HandleResourceChangeL");
          HandleResourceChangeL ( aType);
-         switch (aType)
-             {
-        case KEikDynamicLayoutVariantSwitch:
-            {
-            //if resolution changed
-//                 iSliderWidget->control()->Display()->SetVisibleArea( ClientRect() );
-            break;
-            }
-        }       
     }   
 
 //----------------------------------------------------------------------------------
@@ -1277,13 +1272,6 @@
 inline void CGlxFullScreenViewImp::CallPeriodicCallback()
     {
     TRACER("CGlxFullScreenViewImp::CallPeriodicCallback");
-    if(iPeriodic->IsActive())
-		{
-		iPeriodic->Cancel();
-		}
-    /*
-     * function can leave
-     */
     TRAP_IGNORE(ShowDrmExpiaryNoteL());
     }
 	
@@ -1298,11 +1286,55 @@
 	if(iMediaList->Count()>0)
 		{
         const TGlxMedia& media = iMediaList->Item(iMediaList->FocusIndex());
-        if (media.IsDrmProtected())
+        TInt tnError = GlxErrorManager::HasAttributeErrorL(
+                media.Properties(), KGlxMediaIdThumbnail);
+        GLX_LOG_INFO1("CGlxFullScreenViewImp::ShowDrmExpiaryNoteL()"
+                " tnError=%d ", tnError);
+
+        TSize tnSize = iUiUtility->DisplaySize();
+        TMPXAttribute qtyTnAttrib = TMPXAttribute(KGlxMediaIdThumbnail,
+                GlxFullThumbnailAttributeId(ETrue, tnSize.iWidth,
+                        tnSize.iHeight));
+        const CGlxThumbnailAttribute* qtyTn = media.ThumbnailAttribute(
+                qtyTnAttrib);
+
+        if (qtyTn)
             {
+            if (iPeriodic->IsActive())
+                {
+                iPeriodic->Cancel();
+                }
+            }
+
+        if (tnError == KErrNone && qtyTn && media.IsDrmProtected())
+            {
+            GLX_LOG_INFO("CGlxFullScreenViewImp::ShowDrmExpiaryNoteL()"
+                    "- ConsumeDRMRightsL()");
             const TDesC& uri = media.Uri();
             ConsumeDRMRightsL(uri);
             }
+
+        if (tnError != KErrNone)
+            {
+            if (iPeriodic->IsActive())
+                {
+                iPeriodic->Cancel();
+                }
+
+            CGlxNavigationalState* navigationalState =
+                    CGlxNavigationalState::InstanceL();
+            CleanupClosePushL(*navigationalState);
+            CMPXCollectionPath* naviState = navigationalState->StateLC();
+            if (naviState->Id() == TMPXItemId(
+                    KGlxCollectionPluginImageViewerImplementationUid))
+                {
+                GLX_LOG_INFO("CGlxFullScreenViewImp::ShowDrmExpiaryNoteL()"
+                        "- ShowErrorNoteL()");
+                GlxGeneralUiUtilities::ShowErrorNoteL(tnError);
+                }
+            CleanupStack::PopAndDestroy(naviState);
+            CleanupStack::PopAndDestroy(navigationalState);
+            }
          }
 	}
 
@@ -1398,3 +1430,32 @@
     const TGlxMedia& item = iMediaList->Item(GetIndexToBeRemoved());
     iUiUtility->GlxTextureManager().RemoveTexture(item.Id(),EFalse);
     }
+// ---------------------------------------------------------------------------
+// 
+// Set the image to external display - HDMI
+// ---------------------------------------------------------------------------
+//
+void CGlxFullScreenViewImp::SetImageL()
+    {
+    TRACER("CGlxFullScreenViewImp::SetImageL - CGlxHdmi");
+    TGlxMedia item = iMediaList->Item(iMediaList->FocusIndex());
+    TInt error = GlxErrorManager::HasAttributeErrorL(item.Properties(),
+            KGlxMediaIdThumbnail);
+    if (item.Category() != EMPXVideo && iDrmUtility->CheckOpenRightsL(
+            item.Uri(), ETrue) && (error == KErrNone))
+        {
+        TInt frameCount(0);
+        TSize orignalSize;
+        TBool aFramesPresent = item.GetFrameCount(frameCount);
+        TBool adimension = item.GetDimensions(orignalSize);
+        iHdmiController->SetImageL(item.Uri(), orignalSize, frameCount);
+        GLX_LOG_INFO("CGlxFullScreenViewImp::SetImageL - CGlxHdmi - calling SetImage");
+        }
+    else
+        {
+        GLX_LOG_INFO("CGlxFullScreenViewImp::SetImageL - CGlxHdmi - calling IsVideo");
+        //Set the external display to cloning mode.
+        //If the current item is a video, corruted thumbnail
+        iHdmiController->IsVideo();
+        }
+    }