uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp
branchRCL_3
changeset 19 aecbbf00d063
parent 17 a1caeb42b3a3
child 20 d48ab3b357f1
--- a/uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp	Thu Aug 19 10:11:06 2010 +0300
+++ b/uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp	Tue Aug 31 15:28:30 2010 +0300
@@ -110,7 +110,7 @@
             if ( feedback )
                 {
                 feedback->InstantFeedback( NULL,
-                                           ETouchFeedbackList,
+                                           ETouchFeedbackBasicItem,
                                            aPointerEvent );
                 }
             }
@@ -146,6 +146,17 @@
         iPressedDown = EFalse;              
         TPoint adjustedPosition( aPointerEvent.iPosition + TPoint(0, Offset() ) );
         TInt item = iPopUpMenuContent->ContainingItem( adjustedPosition );
+        if ( item != KNoItemSelected )
+            {
+        MTouchFeedback* feedback = MTouchFeedback::Instance();
+        if ( feedback )
+            {
+                feedback->InstantFeedback( NULL,
+                                           ETouchFeedbackBasicItem,
+                                           ETouchFeedbackVibra,
+                                           aPointerEvent );
+                }
+            }
  
         TPoint distance( 0, iStartPosition.iY - aPointerEvent.iPosition.iY );
         if ( iPhysics->StartPhysics( distance, iStartTime ) )
@@ -159,16 +170,7 @@
             {
             if ( iViewRect.Contains( aPointerEvent.iPosition ) )
                 {
-                if( AknLayoutUtils::PenEnabled() )
-                    {
-                    MTouchFeedback* feedback = MTouchFeedback::Instance();
-                    if( feedback )
-                        {
-                        feedback->InstantFeedback( NULL, ETouchFeedbackList,
-                                            ETouchFeedbackVibra, aPointerEvent );
-                        }
-                    }
-                iPopUpMenuContent->SelectItemL( 
+                iPopUpMenuContent->SelectItem( 
                         iPopUpMenuContent->CurrentItem() );
                 }
             else 
@@ -242,10 +244,7 @@
     TSize viewSize( iViewRect.Width(), iViewRect.Height() );
     
     iPhysics->InitPhysicsL( worldSize, viewSize, EFalse );
-    if ( iPopUpMenuContent->IsVisible() )
-    	{
-    	iPhysics->UpdateViewWindowControl( iPopUpMenuContent );
-    	}
+    iPhysics->UpdateViewWindowControl( iPopUpMenuContent );
     }
     
 
@@ -282,10 +281,6 @@
     TBool aDrawNow,
     TUint /*aFlags*/ )
     {
-    if ( !iPopUpMenuContent->IsVisible() )
-    	{
-    	return;
-    	}    
     iScrollIndex = aNewPosition.iY - iViewRect.Height() / 2;
     
     ScrollView( aDrawNow );
@@ -383,24 +378,29 @@
         iPrevTopmostItem = topmostItem;    
         
         //when appear or dispear a tiem,a feedback was given.
-        if ( abs( iPrevOffset ) < iViewRect.Height() + iItemHeight
+        if ( abs( iPrevOffset ) <= iViewRect.Height()
               && ( iPrevOffset/iItemHeight ) != iOffsetItemCount )
             {
             if ( iPhysics )
                 {
-                switch(iPhysics->OngoingPhysicsAction())
+                TTouchFeedbackType feedbackType = ETouchFeedbackVibra;
+                switch( iPhysics->OngoingPhysicsAction() )
                     {
+                    case CAknPhysics::EAknPhysicsActionDragging:
+                        {
+                        feedbackType = static_cast<TTouchFeedbackType>
+                                  ( ETouchFeedbackVibra | ETouchFeedbackAudio );
+                        }
+                    case CAknPhysics::EAknPhysicsActionFlicking:
                     case CAknPhysics::EAknPhysicsActionBouncing:
-                    case CAknPhysics::EAknPhysicsActionDragging:
-                    case CAknPhysics::EAknPhysicsActionFlicking:
                         {
                         MTouchFeedback* feedback = MTouchFeedback::Instance();
                         if ( feedback )
                             {
                             feedback->InstantFeedback( iPopUpMenuContent,
-                                                ETouchFeedbackSensitiveList,
-                                                ETouchFeedbackVibra,
-                                                TPointerEvent() );
+                                                    ETouchFeedbackSensitiveItem,
+                                                    feedbackType,
+                                                    TPointerEvent() );
                             }
                         break;
                         }
@@ -408,8 +408,8 @@
                         break;
                     }
                 }
-            iOffsetItemCount = iPrevOffset/iItemHeight;
             }
+        iOffsetItemCount = iPrevOffset/iItemHeight;
         }
     }