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