uifw/AvKon/src/Aknslider.cpp
changeset 14 3320e4e6e8bb
parent 0 2f259fa3e83a
child 30 56e9a0aaad89
child 33 b3425bf29f82
--- a/uifw/AvKon/src/Aknslider.cpp	Tue Feb 02 01:00:49 2010 +0200
+++ b/uifw/AvKon/src/Aknslider.cpp	Fri Apr 16 15:13:44 2010 +0300
@@ -3150,6 +3150,15 @@
                 {
                 if ( touchDownArea.Contains( aEvent.iPosition ) )
                     {
+                    TInt stepCount = SliderData()->Range() / SliderData()->iStepSize;
+                    if ( stepCount <= KStepThreshold )
+                        {
+                        MTouchFeedback* feedback = MTouchFeedback::Instance();
+                        if ( feedback )
+                            {
+                            feedback->InstantFeedback( this, ETouchFeedbackBasicSlider, aEvent );
+                            }
+                        }
                        // repeat until thumb reaches the stylus down position    
                     iExt->iPenInputPos = aEvent.iPosition;
 
@@ -3161,7 +3170,7 @@
                         MTouchFeedback* feedback = MTouchFeedback::Instance();
                         if ( feedback )
                             {
-                            feedback->InstantFeedback( this, ETouchFeedbackSlider, aEvent );
+                            feedback->InstantFeedback( this, ETouchFeedbackBasicSlider, aEvent );
                             }
                         iExt->SetFlag( CAknSliderExtension::EFlagDraggingThumb );
                         reportDragEvent = EDragMarkerStart;
@@ -3248,7 +3257,7 @@
                     if ( feedback )
                         {
                         feedback->InstantFeedback( this,
-                                                   ETouchFeedbackSlider,
+                                                   ETouchFeedbackBasicSlider,
                                                    ETouchFeedbackVibra,
                                                    aEvent );
                         }
@@ -3609,11 +3618,29 @@
         {
         if( aFeedback )
             {
-            MTouchFeedback* feedback = MTouchFeedback::Instance();
-            if ( feedback )
-               {
-               feedback->InstantFeedback( this, ETouchFeedbackSlider );
-               }          
+            TInt stepCount = SliderData()->Range() / SliderData()->iStepSize;
+            if ( stepCount > KStepThreshold )
+                {
+                if ( iExt->IsFlagSet( CAknSliderExtension::EFlagPlayingContinuousFb ))
+                    {
+                    if ( SliderData()->iFeedbackStyle == EAknSliderFbDynamic )
+                        {
+                        ModifyFeedback();
+                        }
+                    }
+                else
+                    {
+                    StartFeedback( NULL, KNoFeedbackTimeout );
+                    }
+                }
+            else
+                {
+                MTouchFeedback* feedback = MTouchFeedback::Instance();
+                if ( feedback )
+                    {
+                    feedback->InstantFeedback( this, ETouchFeedbackBasicSlider );
+                    }
+                }            
             }
 
         Window().Invalidate( Rect() );