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 |