uifw/ganes/src/HgVgMediaWall.cpp
branchRCL_3
changeset 25 941195f2d488
parent 23 3d340a0166ff
child 38 c52421ed5f07
--- a/uifw/ganes/src/HgVgMediaWall.cpp	Tue May 11 16:27:42 2010 +0300
+++ b/uifw/ganes/src/HgVgMediaWall.cpp	Tue May 25 12:58:19 2010 +0300
@@ -387,7 +387,11 @@
             }
         else
             {
-            FillSystemGcWithSkin( );
+            // 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
@@ -396,8 +400,7 @@
         SystemGc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha);
         SystemGc().SetBrushColor(TRgb(0,0,0,0));
         SystemGc().Clear();
-        
-        DrawOpenVG();        
+        DrawOpenVG();
         }
     }
 
@@ -484,7 +487,6 @@
     {
     // Not faded and initialized and the drawing is set to be done to WinGc
     if( aEvent.iType == TPointerEvent::EButton1Down 
-            && !( iFlags & EHgVgMediaWallFaded )
             && !( iFlags & EHgVgMediaWallUninitialized )
             && iFlags & EHgVgMediaWallDrawToWindowGC )
         {
@@ -735,6 +737,15 @@
     iKeyRepeats = 0;
     iKeyScrollingState = ENoKeyScrolling;    
     iPointerDown = EFalse;
+    
+    // Not faded and initialized and the drawing is set to be done to WinGc
+    if( !( iFlags & EHgVgMediaWallUninitialized )
+        && iFlags & EHgVgMediaWallDrawToWindowGC )
+        {
+        // Draw with OpenVg to our surface.
+        ClearFlags( EHgVgMediaWallDrawToWindowGC );
+        DrawNow();
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -854,12 +865,14 @@
             {
             if( iSelectedIndex != KErrNotFound && iSelectionObserver )
                 {
-                TRAP_IGNORE( StartOpeningAnimationL(ETrue ); )                
+                TRAP_IGNORE( DoStartOpeningAnimationL( ); )                
                 return EKeyWasConsumed;
                 }
             return EKeyWasNotConsumed;
             }
-        default: 
+        default:
+            TChar key(aKeyEvent.iCode);
+            SearchItem(key);
             break;
         }
     
@@ -1169,13 +1182,13 @@
             iAnimationTimer->Cancel();
             }
     
-        SetFlags( EHgVgMediaWallDrawToWindowGC | EHgVgMediaWallFaded );
+        SetFlags( EHgVgMediaWallDrawToWindowGC  );
         DrawNow();
         }
     
     if( aType == KEikMessageUnfadeWindows )
         {
-        ClearFlags( EHgVgMediaWallDrawToWindowGC | EHgVgMediaWallFaded );
+        ClearFlags( EHgVgMediaWallDrawToWindowGC );
         DrawNow();
         }
 
@@ -2212,6 +2225,10 @@
         TInt y = aIndex % iRowCount;
         StartAnimationToPosition(x, y, ETrue);
         }
+    else if (aIndex >= 0 && aIndex < iItems.Count())
+        {
+        StartAnimationToPosition(aIndex, 0, ETrue);
+        }
     return ETrue;
     }
 
@@ -2587,4 +2604,48 @@
     }
 
 
+TBool CHgVgMediaWall::SearchItem( TChar& aFirstLetter )
+    {
+
+    TInt searchStartIndex = iSelectedIndex+1;
+    
+    // From selected to end
+    for(TInt i = searchStartIndex; i < iItems.Count(); ++i)
+        {
+        if(iItems[i]->Title().Length() > 0 )
+            {
+            TChar compare( iItems[i]->Title()[0] );
+            compare.UpperCase();
+            aFirstLetter.UpperCase();
+            
+            if(compare - aFirstLetter == 0)
+                {
+                iSelectedIndex = i;
+                StartAnimationToPosition(iSelectedIndex, ETrue);
+                return ETrue;
+                }
+            }
+        }
+
+    // From beginning to selected - 1
+    for(TInt i = 0; i < iSelectedIndex; ++i)
+        {
+        if(iItems[i]->Title().Length() > 0 )
+            {
+            TChar compare( iItems[i]->Title()[0] );
+            compare.UpperCase();
+            aFirstLetter.UpperCase();
+            
+            if(compare - aFirstLetter == 0)
+                {
+                iSelectedIndex = i;
+                StartAnimationToPosition(iSelectedIndex, ETrue);
+                return ETrue;
+                }
+            }
+        }
+    
+    return EFalse;
+    }
+
 // End of File