uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp
branchRCL_3
changeset 18 fcdfafb36fe7
parent 17 a1caeb42b3a3
child 19 aecbbf00d063
--- a/uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp	Thu Jul 15 18:56:19 2010 +0300
+++ b/uifw/EikStd/coctlsrc/aknstyluspopupmenu.cpp	Thu Aug 19 10:11:06 2010 +0300
@@ -46,11 +46,13 @@
 //
 CAknStylusPopUpMenu::CAknStylusPopUpMenu( MEikMenuObserver* aObserver, 
     const TPoint& aPoint,
-    CAknPreviewPopUpController* aPopup ) 
+    CAknPreviewPopUpController* aPopup,
+    const TInt aFlags )
     : iPosition ( aPoint ),
      iMenuObserver( aObserver ),
      iPreviewPopup( aPopup ),
-     iPositionType( EPositionTypeLeftTop )
+     iPositionType( EPositionTypeLeftTop ),
+     iModeFlags ( aFlags )
     {
     }
 
@@ -83,6 +85,24 @@
     return self;
     }
 
+// ---------------------------------------------------------------------------
+// CAknStylusPopUpMenu::NewL
+// ---------------------------------------------------------------------------
+//
+CAknStylusPopUpMenu* CAknStylusPopUpMenu::NewL( MEikMenuObserver* aObserver,
+        const TPoint& aPoint,
+        CAknPreviewPopUpController* aPopup,
+        const TInt aFlags )
+    {
+    CAknStylusPopUpMenu* self = new ( ELeave ) CAknStylusPopUpMenu( aObserver,
+                                                                    aPoint,
+                                                                    aPopup,
+                                                                    aFlags );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
 
 // ---------------------------------------------------------------------------
 // CAknStylusPopUpMenu::NewL
@@ -181,11 +201,25 @@
     // if contoller exists, re-use it .
     if ( !iController )
         {
-        TRAPD( err, 
-               iController = CAknPreviewPopUpController::NewL( *iContent,
-                       CAknPreviewPopUpController::ELayoutSubMenu | 
-                       CAknPreviewPopUpController::EAutoMirror |
-                       CAknPreviewPopUpController::EDontClose ) );
+        TInt err ( KErrNone );
+
+        if ( iModeFlags & EConsumeKeyEvents )
+            {
+            TRAP( err, iController = CAknPreviewPopUpController::NewL(
+                    *iContent,
+                    CAknPreviewPopUpController::ELayoutSubMenu |
+                    CAknPreviewPopUpController::EAutoMirror |
+                    CAknPreviewPopUpController::EDontClose |
+                    CAknPreviewPopUpController::EConsumeKeys ) );
+            }
+        else
+            {
+            TRAP( err, iController = CAknPreviewPopUpController::NewL(
+                    *iContent,
+                    CAknPreviewPopUpController::ELayoutSubMenu |
+                    CAknPreviewPopUpController::EAutoMirror |
+                    CAknPreviewPopUpController::EDontClose ) );
+            }
         if ( err )
             {
             return;
@@ -485,6 +519,20 @@
         }
     }
 
+
+// ---------------------------------------------------------------------------
+// CAknStylusPopUpMenu::HideMenu
+// ---------------------------------------------------------------------------
+//
+void CAknStylusPopUpMenu::HideMenu()
+    {
+    if ( iController )
+        {
+        iController->HidePopUp();
+        }
+    }
+
+
 // -----------------------------------------------------------------------------
 // CAknStylusPopUpMenu::StartControllerIdleL
 // -----------------------------------------------------------------------------
@@ -535,7 +583,7 @@
 // CAknStylusPopUpMenu::CleanLocalRef
 // -----------------------------------------------------------------------------
 //
-void CAknStylusPopUpMenu::CleanLocalRef( TAny* any )
+void CAknStylusPopUpMenu::CleanLocalRef( TAny* aParam )
     {
-    static_cast<CAknStylusPopUpMenu*>( any )->iIsDeleted = NULL;
+    static_cast<CAknStylusPopUpMenu*>( aParam )->iIsDeleted = NULL;
     }