uifw/EikStd/coctlsrc/aknstyluspopupmenuphysicshandler.cpp
branchRCL_3
changeset 20 d48ab3b357f1
parent 19 aecbbf00d063
equal deleted inserted replaced
19:aecbbf00d063 20:d48ab3b357f1
   108 
   108 
   109             MTouchFeedback* feedback = MTouchFeedback::Instance();
   109             MTouchFeedback* feedback = MTouchFeedback::Instance();
   110             if ( feedback )
   110             if ( feedback )
   111                 {
   111                 {
   112                 feedback->InstantFeedback( NULL,
   112                 feedback->InstantFeedback( NULL,
   113                                            ETouchFeedbackBasicItem,
   113                                            ETouchFeedbackList,
   114                                            aPointerEvent );
   114                                            aPointerEvent );
   115                 }
   115                 }
   116             }
   116             }
   117         }
   117         }
   118     
   118     
   144     if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
   144     if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
   145         {
   145         {
   146         iPressedDown = EFalse;              
   146         iPressedDown = EFalse;              
   147         TPoint adjustedPosition( aPointerEvent.iPosition + TPoint(0, Offset() ) );
   147         TPoint adjustedPosition( aPointerEvent.iPosition + TPoint(0, Offset() ) );
   148         TInt item = iPopUpMenuContent->ContainingItem( adjustedPosition );
   148         TInt item = iPopUpMenuContent->ContainingItem( adjustedPosition );
   149         if ( item != KNoItemSelected )
       
   150             {
       
   151         MTouchFeedback* feedback = MTouchFeedback::Instance();
       
   152         if ( feedback )
       
   153             {
       
   154                 feedback->InstantFeedback( NULL,
       
   155                                            ETouchFeedbackBasicItem,
       
   156                                            ETouchFeedbackVibra,
       
   157                                            aPointerEvent );
       
   158                 }
       
   159             }
       
   160  
   149  
   161         TPoint distance( 0, iStartPosition.iY - aPointerEvent.iPosition.iY );
   150         TPoint distance( 0, iStartPosition.iY - aPointerEvent.iPosition.iY );
   162         if ( iPhysics->StartPhysics( distance, iStartTime ) )
   151         if ( iPhysics->StartPhysics( distance, iStartTime ) )
   163             {
   152             {
   164             return;
   153             return;
   168         if ( !iPanningActivated && 
   157         if ( !iPanningActivated && 
   169                 iPopUpMenuContent->CurrentItem() != KNoItemSelected )
   158                 iPopUpMenuContent->CurrentItem() != KNoItemSelected )
   170             {
   159             {
   171             if ( iViewRect.Contains( aPointerEvent.iPosition ) )
   160             if ( iViewRect.Contains( aPointerEvent.iPosition ) )
   172                 {
   161                 {
   173                 iPopUpMenuContent->SelectItem( 
   162                 if( AknLayoutUtils::PenEnabled() )
       
   163                     {
       
   164                     MTouchFeedback* feedback = MTouchFeedback::Instance();
       
   165                     if( feedback )
       
   166                         {
       
   167                         feedback->InstantFeedback( NULL, ETouchFeedbackList,
       
   168                                             ETouchFeedbackVibra, aPointerEvent );
       
   169                         }
       
   170                     }
       
   171                 iPopUpMenuContent->SelectItemL( 
   174                         iPopUpMenuContent->CurrentItem() );
   172                         iPopUpMenuContent->CurrentItem() );
   175                 }
   173                 }
   176             else 
   174             else 
   177                 {
   175                 {
   178                 // Clear highlight
   176                 // Clear highlight
   242     {
   240     {
   243     TSize worldSize( iViewRect.Width(), iWorldHeight );
   241     TSize worldSize( iViewRect.Width(), iWorldHeight );
   244     TSize viewSize( iViewRect.Width(), iViewRect.Height() );
   242     TSize viewSize( iViewRect.Width(), iViewRect.Height() );
   245     
   243     
   246     iPhysics->InitPhysicsL( worldSize, viewSize, EFalse );
   244     iPhysics->InitPhysicsL( worldSize, viewSize, EFalse );
   247     iPhysics->UpdateViewWindowControl( iPopUpMenuContent );
   245     if ( iPopUpMenuContent->IsVisible() )
       
   246     	{
       
   247     	iPhysics->UpdateViewWindowControl( iPopUpMenuContent );
       
   248     	}
   248     }
   249     }
   249     
   250     
   250 
   251 
   251 
   252 
   252 // ---------------------------------------------------------------------------
   253 // ---------------------------------------------------------------------------
   279 void CAknStylusPopUpMenuPhysicsHandler::ViewPositionChanged(
   280 void CAknStylusPopUpMenuPhysicsHandler::ViewPositionChanged(
   280     const TPoint& aNewPosition,
   281     const TPoint& aNewPosition,
   281     TBool aDrawNow,
   282     TBool aDrawNow,
   282     TUint /*aFlags*/ )
   283     TUint /*aFlags*/ )
   283     {
   284     {
       
   285     if ( !iPopUpMenuContent->IsVisible() )
       
   286     	{
       
   287     	return;
       
   288     	}    
   284     iScrollIndex = aNewPosition.iY - iViewRect.Height() / 2;
   289     iScrollIndex = aNewPosition.iY - iViewRect.Height() / 2;
   285     
   290     
   286     ScrollView( aDrawNow );
   291     ScrollView( aDrawNow );
   287     }
   292     }
   288     
   293     
   376 
   381 
   377         iPrevOffset = Offset();
   382         iPrevOffset = Offset();
   378         iPrevTopmostItem = topmostItem;    
   383         iPrevTopmostItem = topmostItem;    
   379         
   384         
   380         //when appear or dispear a tiem,a feedback was given.
   385         //when appear or dispear a tiem,a feedback was given.
   381         if ( abs( iPrevOffset ) <= iViewRect.Height()
   386         if ( abs( iPrevOffset ) < iViewRect.Height() + iItemHeight
   382               && ( iPrevOffset/iItemHeight ) != iOffsetItemCount )
   387               && ( iPrevOffset/iItemHeight ) != iOffsetItemCount )
   383             {
   388             {
   384             if ( iPhysics )
   389             if ( iPhysics )
   385                 {
   390                 {
   386                 TTouchFeedbackType feedbackType = ETouchFeedbackVibra;
   391                 switch(iPhysics->OngoingPhysicsAction())
   387                 switch( iPhysics->OngoingPhysicsAction() )
       
   388                     {
   392                     {
       
   393                     case CAknPhysics::EAknPhysicsActionBouncing:
   389                     case CAknPhysics::EAknPhysicsActionDragging:
   394                     case CAknPhysics::EAknPhysicsActionDragging:
   390                         {
       
   391                         feedbackType = static_cast<TTouchFeedbackType>
       
   392                                   ( ETouchFeedbackVibra | ETouchFeedbackAudio );
       
   393                         }
       
   394                     case CAknPhysics::EAknPhysicsActionFlicking:
   395                     case CAknPhysics::EAknPhysicsActionFlicking:
   395                     case CAknPhysics::EAknPhysicsActionBouncing:
       
   396                         {
   396                         {
   397                         MTouchFeedback* feedback = MTouchFeedback::Instance();
   397                         MTouchFeedback* feedback = MTouchFeedback::Instance();
   398                         if ( feedback )
   398                         if ( feedback )
   399                             {
   399                             {
   400                             feedback->InstantFeedback( iPopUpMenuContent,
   400                             feedback->InstantFeedback( iPopUpMenuContent,
   401                                                     ETouchFeedbackSensitiveItem,
   401                                                 ETouchFeedbackSensitiveList,
   402                                                     feedbackType,
   402                                                 ETouchFeedbackVibra,
   403                                                     TPointerEvent() );
   403                                                 TPointerEvent() );
   404                             }
   404                             }
   405                         break;
   405                         break;
   406                         }
   406                         }
   407                     default:
   407                     default:
   408                         break;
   408                         break;
   409                     }
   409                     }
   410                 }
   410                 }
   411             }
   411             iOffsetItemCount = iPrevOffset/iItemHeight;
   412         iOffsetItemCount = iPrevOffset/iItemHeight;
   412             }
   413         }
   413         }
   414     }
   414     }
   415 
   415 
   416 // ---------------------------------------------------------------------------
   416 // ---------------------------------------------------------------------------
   417 // CAknStylusPopUpMenuPhysicsHandler::StopPhysics
   417 // CAknStylusPopUpMenuPhysicsHandler::StopPhysics