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 |