uifw/ganes/src/HgVgMediaWall.cpp
branchRCL_3
changeset 17 a1caeb42b3a3
parent 15 c52421ed5f07
child 18 fcdfafb36fe7
--- a/uifw/ganes/src/HgVgMediaWall.cpp	Mon Jun 21 15:57:43 2010 +0300
+++ b/uifw/ganes/src/HgVgMediaWall.cpp	Thu Jul 15 18:56:19 2010 +0300
@@ -145,7 +145,7 @@
     
     
     SetMopParent( aParent );
-    SetFlags( EHgVgMediaWallUninitialized );
+    SetFlags( EHgVgMediaWallDrawToWindowGC | EHgVgMediaWallUninitialized );
     
     }
 
@@ -176,7 +176,7 @@
 //
 EXPORT_C void CHgVgMediaWall::RefreshScreen( TInt aIndex )
     {
-    ClearFlags(EHgVgMediaWallDrawToWindowGC);
+    
     if( !iIsForeground  )
         {
         return;
@@ -189,7 +189,15 @@
                         && aIndex <= FirstIndexOnScreen() + ItemsOnScreen()) )
             {
             UpdateLabelsAndPopup();
-            DrawNow();
+            if(iFlags & EHgVgMediaWallDrawToWindowGC)
+                {
+                DrawNow();
+                }
+            else
+                {
+                DrawOpenVG();
+                }
+        
             }
         }
     }
@@ -367,19 +375,34 @@
         return;
         }
     
-    if(iFlags & EHgVgMediaWallDrawToWindowGC)
+    CHgVgMediaWall* self = const_cast<CHgVgMediaWall*>(this);           
+
+    if( iFlags & EHgVgMediaWallDrawToWindowGC )
         {
-        CHgVgMediaWall* self = const_cast<CHgVgMediaWall*>(this);
-        self->ClearFlags(EHgVgMediaWallDrawToWindowGC);
-        FillSystemGcWithSkin( );
-        return;
+        CFbsBitmap* screenshot = NULL;
+        screenshot = self->DrawToBitmap();
+        if (screenshot)
+            {
+            SystemGc().BitBlt( Rect().iTl,screenshot );
+            delete screenshot;
+            }
+        else
+            {
+            // draw with alpha to make a hole to composition layer
+            SystemGc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha);
+            SystemGc().SetBrushColor(TRgb(0,0,0,0));
+            SystemGc().Clear();
+            DrawOpenVG();
+            }
         }
-    
-    // draw with alpha to make a hole to composition layer
-    SystemGc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha);
-    SystemGc().SetBrushColor(TRgb(0,0,0,0));
-    SystemGc().Clear();
-    DrawOpenVG();
+    else
+        {
+        // draw with alpha to make a hole to composition layer
+        SystemGc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha);
+        SystemGc().SetBrushColor(TRgb(0,0,0,0));
+        SystemGc().Clear();
+        DrawOpenVG();
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -1164,6 +1187,9 @@
     
             iAnimationTimer->Cancel();
             }
+    
+        SetFlags( EHgVgMediaWallDrawToWindowGC  );
+        DrawNow();
         }
     
     if( aType == KEikMessageUnfadeWindows )
@@ -1171,8 +1197,15 @@
         ClearFlags( EHgVgMediaWallDrawToWindowGC );
         DrawNow();
         }
+
+    if( aType == KEikDynamicLayoutVariantSwitch && !(iFlags & EHgVgMediaWallDrawToWindowGC) )
+        {
+        SetFlags( EHgVgMediaWallDrawToWindowGC );
+        DrawNow();
+        }
     }
 
+
 // ---------------------------------------------------------------------------
 // CHgVgMediaWall::InitItemsL()
 // ---------------------------------------------------------------------------
@@ -1226,13 +1259,16 @@
 
     iIsForeground = EFalse;
     
+    // draw screenshot using window gc, this is needed
+    // for nga effects to work
+    DrawNow();
+    
     // free textures    
     FreeItemsImages();
     // free other resources
     DestroyRendering();
 
-    SetFlags( EHgVgMediaWallUninitialized );
-    DrawNow();
+    SetFlags( EHgVgMediaWallUninitialized | EHgVgMediaWallDrawToWindowGC );
     
     iCoeEnv->WsSession().Flush();
     }