videoplayback/videoplaybackcontrols/src/mpxvideoplaybackvolumebar.cpp
branchRCL_3
changeset 18 baf439b22ddd
parent 15 8f0df5c82986
child 21 315810614048
equal deleted inserted replaced
16:67eb01668b0e 18:baf439b22ddd
    14 * Description: Volume bar control
    14 * Description: Volume bar control
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 // Version : %version: 23 %
    19 // Version : %version: 24 %
    20 
    20 
    21 
    21 
    22 // INCLUDE FILES
    22 // INCLUDE FILES
    23 #include <eikenv.h>
    23 #include <eikenv.h>
    24 #include <gulicon.h>
    24 #include <gulicon.h>
    45 // CONSTANTS
    45 // CONSTANTS
    46 const TInt KMPXSliderHeight = 30;
    46 const TInt KMPXSliderHeight = 30;
    47 const TInt KMPXSliderWidth = 18;
    47 const TInt KMPXSliderWidth = 18;
    48 const TInt KMPXVolumeDragEventTimeOut = 100000;
    48 const TInt KMPXVolumeDragEventTimeOut = 100000;
    49 const TInt KMPXPtrEventRepeatRequestTime = 200000;
    49 const TInt KMPXPtrEventRepeatRequestTime = 200000;
       
    50 const TInt KDynamicSliderFeedbackTimeOut = 100000;
       
    51 const TInt KDynamicSliderFeedbackIntensity = 100;
    50 
    52 
    51 using namespace AknLayoutScalable_Apps;
    53 using namespace AknLayoutScalable_Apps;
    52 using namespace AknLayoutScalable_Avkon;
    54 using namespace AknLayoutScalable_Avkon;
    53 
    55 
    54 // ============================ MEMBER FUNCTIONS ===================================================
    56 // ============================ MEMBER FUNCTIONS ===================================================
    68 // Symbian 2nd phase constructor can leave.
    70 // Symbian 2nd phase constructor can leave.
    69 // -------------------------------------------------------------------------------------------------
    71 // -------------------------------------------------------------------------------------------------
    70 //
    72 //
    71 void CMPXVideoPlaybackVolumeBar::ConstructL()
    73 void CMPXVideoPlaybackVolumeBar::ConstructL()
    72 {
    74 {
    73     MPX_DEBUG(_L("CMPXVideoPlaybackVolumeBar::ConstructL()"));
    75     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::ConstructL()"));
    74 
    76 
    75     SetLayout();
    77     SetLayout();
    76     SkinChangeL();
    78     SkinChangeL();
    77 
    79 
    78     iDraggingHandlerTimer = CPeriodic::NewL( CActive::EPriorityStandard );
    80     iDraggingHandlerTimer = CPeriodic::NewL( CActive::EPriorityStandard );
    88 // -------------------------------------------------------------------------------------------------
    90 // -------------------------------------------------------------------------------------------------
    89 //
    91 //
    90 CMPXVideoPlaybackVolumeBar* CMPXVideoPlaybackVolumeBar::NewL(
    92 CMPXVideoPlaybackVolumeBar* CMPXVideoPlaybackVolumeBar::NewL(
    91     CMPXVideoPlaybackControlsController* aController, TRect aRect )
    93     CMPXVideoPlaybackControlsController* aController, TRect aRect )
    92 {
    94 {
    93     MPX_DEBUG(_L("CMPXVideoPlaybackVolumeBar::NewL()"));
       
    94 
       
    95     CMPXVideoPlaybackVolumeBar* self =
    95     CMPXVideoPlaybackVolumeBar* self =
    96         new ( ELeave ) CMPXVideoPlaybackVolumeBar( aController, aRect );
    96         new ( ELeave ) CMPXVideoPlaybackVolumeBar( aController, aRect );
    97 
    97 
    98     CleanupStack::PushL( self );
    98     CleanupStack::PushL( self );
    99     self->ConstructL();
    99     self->ConstructL();
   106 // Destructor.
   106 // Destructor.
   107 // -------------------------------------------------------------------------------------------------
   107 // -------------------------------------------------------------------------------------------------
   108 //
   108 //
   109 CMPXVideoPlaybackVolumeBar::~CMPXVideoPlaybackVolumeBar()
   109 CMPXVideoPlaybackVolumeBar::~CMPXVideoPlaybackVolumeBar()
   110 {
   110 {
   111     MPX_DEBUG(_L("CMPXVideoPlaybackVolumeBar::~CMPXVideoPlaybackVolumeBar()"));
   111     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::~CMPXVideoPlaybackVolumeBar()"));
   112 
   112 
   113     if ( iDraggingHandlerTimer )
   113     if ( iDraggingHandlerTimer )
   114     {
   114     {
   115         iDraggingHandlerTimer->Cancel();
   115         iDraggingHandlerTimer->Cancel();
   116         delete iDraggingHandlerTimer;
   116         delete iDraggingHandlerTimer;
   176        delete iNoAudioIcon;
   176        delete iNoAudioIcon;
   177        iNoAudioIcon = NULL;
   177        iNoAudioIcon = NULL;
   178     }
   178     }
   179 
   179 
   180 #ifdef RD_TACTILE_FEEDBACK
   180 #ifdef RD_TACTILE_FEEDBACK
   181     if (iFeedback)
   181     if ( iFeedback )
   182     {
   182     {
   183         iFeedback->RemoveFeedbackForControl(this);
   183         iFeedback->RemoveFeedbackForControl(this);
   184     }
   184     }
   185 #endif //RD_TACTILE_FEEDBACK
   185 #endif //RD_TACTILE_FEEDBACK
   186 
       
   187 }
   186 }
   188 
   187 
   189 // -------------------------------------------------------------------------------------------------
   188 // -------------------------------------------------------------------------------------------------
   190 // CMPXVideoPlaybackVolumeBar::HandleResourceChange()
   189 // CMPXVideoPlaybackVolumeBar::HandleResourceChange()
   191 // -------------------------------------------------------------------------------------------------
   190 // -------------------------------------------------------------------------------------------------
   192 //
   191 //
   193 void CMPXVideoPlaybackVolumeBar::HandleResourceChange( TInt aType )
   192 void CMPXVideoPlaybackVolumeBar::HandleResourceChange( TInt aType )
   194 {
   193 {
   195     MPX_DEBUG(_L("CMPXVideoPlaybackVolumeBar::HandleResourceChange(0x%X)"), aType);
   194     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleResourceChange()"),
       
   195                    _L("aType = 0x%X"), aType);
   196 
   196 
   197     if ( aType == KAknsMessageSkinChange )
   197     if ( aType == KAknsMessageSkinChange )
   198     {
   198     {
   199         TRAP_IGNORE( SkinChangeL() );
   199         TRAP_IGNORE( SkinChangeL() );
   200     }
   200     }
   206 // CMPXVideoPlaybackVolumeBar::SetLayout()
   206 // CMPXVideoPlaybackVolumeBar::SetLayout()
   207 // -------------------------------------------------------------------------------------------------
   207 // -------------------------------------------------------------------------------------------------
   208 //
   208 //
   209 void CMPXVideoPlaybackVolumeBar::SetLayout()
   209 void CMPXVideoPlaybackVolumeBar::SetLayout()
   210 {
   210 {
   211     MPX_DEBUG(_L("CMPXVideoPlaybackVolumeBar::SetLayout()"));
   211     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::SetLayout()"));
   212 
   212 
   213     TAknLayoutRect tmpLayoutRect;
   213     TAknLayoutRect tmpLayoutRect;
   214 
   214 
   215     iRect = TRect( 0, 0, iRect.Width(), iRect.Height() );
   215     iRect = TRect( 0, 0, iRect.Width(), iRect.Height() );
   216 
   216 
   271 // CMPXVideoPlaybackVolumeBar::SkinChangeL()
   271 // CMPXVideoPlaybackVolumeBar::SkinChangeL()
   272 // -------------------------------------------------------------------------------------------------
   272 // -------------------------------------------------------------------------------------------------
   273 //
   273 //
   274 void CMPXVideoPlaybackVolumeBar::SkinChangeL()
   274 void CMPXVideoPlaybackVolumeBar::SkinChangeL()
   275 {
   275 {
   276     MPX_DEBUG(_L("CMPXVideoPlaybackVolumeBar::SkinChangeL()"));
   276     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::SkinChangeL()"));
   277 
   277 
   278     //
   278     //
   279     // Create icons
   279     // Create icons
   280     //
   280     //
   281     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
   281     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
   285 
   285 
   286     delete iSpeakerIcon;
   286     delete iSpeakerIcon;
   287     iSpeakerIcon = NULL;
   287     iSpeakerIcon = NULL;
   288     iSpeakerIcon = AknsUtils::CreateGulIconL(
   288     iSpeakerIcon = AknsUtils::CreateGulIconL(
   289             skin,
   289             skin,
   290 		    KAknsIIDQgnIndiNsliderUnmuted,
   290             KAknsIIDQgnIndiNsliderUnmuted,
   291 		    iconsPath,
   291             iconsPath,
   292 		    EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_unmuted,
   292             EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_unmuted,
   293 		    EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_unmuted_mask );
   293             EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_unmuted_mask );
   294 
   294 
   295     if ( iSpeakerIcon )
   295     if ( iSpeakerIcon )
   296     {
   296     {
   297         AknIconUtils::SetSize( iSpeakerIcon->Bitmap(),
   297         AknIconUtils::SetSize( iSpeakerIcon->Bitmap(),
   298                                iSpeakerRect.Size(),
   298                                iSpeakerRect.Size(),
   301 
   301 
   302     delete iSpeakerMuteIcon;
   302     delete iSpeakerMuteIcon;
   303     iSpeakerMuteIcon = NULL;
   303     iSpeakerMuteIcon = NULL;
   304     iSpeakerMuteIcon = AknsUtils::CreateGulIconL(
   304     iSpeakerMuteIcon = AknsUtils::CreateGulIconL(
   305             skin,
   305             skin,
   306 		    KAknsIIDQgnIndiNsliderMuted,
   306             KAknsIIDQgnIndiNsliderMuted,
   307 		    iconsPath,
   307             iconsPath,
   308 		    EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_muted,
   308             EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_muted,
   309 		    EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_muted_mask );
   309             EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_muted_mask );
   310 
   310 
   311 
   311 
   312     if ( iSpeakerMuteIcon )
   312     if ( iSpeakerMuteIcon )
   313     {
   313     {
   314         AknIconUtils::SetSize( iSpeakerMuteIcon->Bitmap(),
   314         AknIconUtils::SetSize( iSpeakerMuteIcon->Bitmap(),
   335 
   335 
   336     delete iSliderIcon;
   336     delete iSliderIcon;
   337     iSliderIcon = NULL;
   337     iSliderIcon = NULL;
   338     iSliderIcon = AknsUtils::CreateGulIconL(
   338     iSliderIcon = AknsUtils::CreateGulIconL(
   339             skin,
   339             skin,
   340 		    KAknsIIDQgnGrafNsliderVerticalMarker,
   340             KAknsIIDQgnGrafNsliderVerticalMarker,
   341 		    iconsPath,
   341             iconsPath,
   342 		    EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker,
   342             EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker,
   343 		    EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker_mask );
   343             EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker_mask );
   344 
   344 
   345     if ( iSliderIcon )
   345     if ( iSliderIcon )
   346     {
   346     {
   347         AknIconUtils::SetSize( iSliderIcon->Bitmap(),
   347         AknIconUtils::SetSize( iSliderIcon->Bitmap(),
   348                                TSize(KMPXSliderWidth, KMPXSliderHeight),
   348                                TSize(KMPXSliderWidth, KMPXSliderHeight),
   351 
   351 
   352     delete iSliderSelectedIcon;
   352     delete iSliderSelectedIcon;
   353     iSliderSelectedIcon = NULL;
   353     iSliderSelectedIcon = NULL;
   354     iSliderSelectedIcon = AknsUtils::CreateGulIconL(
   354     iSliderSelectedIcon = AknsUtils::CreateGulIconL(
   355             skin,
   355             skin,
   356 		    KAknsIIDQgnGrafNsliderVerticalMarkerSelected,
   356             KAknsIIDQgnGrafNsliderVerticalMarkerSelected,
   357 		    iconsPath,
   357             iconsPath,
   358 		    EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker_selected,
   358             EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker_selected,
   359 		    EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker_selected_mask );
   359             EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_marker_selected_mask );
   360 
   360 
   361     if ( iSliderSelectedIcon )
   361     if ( iSliderSelectedIcon )
   362     {
   362     {
   363         AknIconUtils::SetSize( iSliderSelectedIcon->Bitmap(),
   363         AknIconUtils::SetSize( iSliderSelectedIcon->Bitmap(),
   364                                TSize(KMPXSliderWidth, KMPXSliderHeight),
   364                                TSize(KMPXSliderWidth, KMPXSliderHeight),
   367 
   367 
   368     delete iVolumeUpIcon;
   368     delete iVolumeUpIcon;
   369     iVolumeUpIcon = NULL;
   369     iVolumeUpIcon = NULL;
   370     iVolumeUpIcon = AknsUtils::CreateGulIconL(
   370     iVolumeUpIcon = AknsUtils::CreateGulIconL(
   371             skin,
   371             skin,
   372 		    KAknsIIDQgnIndiCam4ZoomMax,
   372             KAknsIIDQgnIndiCam4ZoomMax,
   373 		    iconsPath,
   373             iconsPath,
   374 		    EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_increase,
   374             EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_increase,
   375 		    EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_increase_mask );
   375             EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_increase_mask );
   376 
   376 
   377     if ( iVolumeUpIcon )
   377     if ( iVolumeUpIcon )
   378     {
   378     {
   379         AknIconUtils::SetSize( iVolumeUpIcon->Bitmap(),
   379         AknIconUtils::SetSize( iVolumeUpIcon->Bitmap(),
   380                                iVolumeUpRect.Size(),
   380                                iVolumeUpRect.Size(),
   383 
   383 
   384     delete iVolumeDownIcon;
   384     delete iVolumeDownIcon;
   385     iVolumeDownIcon = NULL;
   385     iVolumeDownIcon = NULL;
   386     iVolumeDownIcon = AknsUtils::CreateGulIconL(
   386     iVolumeDownIcon = AknsUtils::CreateGulIconL(
   387             skin,
   387             skin,
   388 		    KAknsIIDQgnIndiCam4ZoomMin,
   388             KAknsIIDQgnIndiCam4ZoomMin,
   389 		    iconsPath,
   389             iconsPath,
   390 		    EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_decrease,
   390             EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_decrease,
   391 		    EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_decrease_mask );
   391             EMbmMpxvideoplaybackcontrolsQgn_indi_nslider_level_decrease_mask );
   392 
   392 
   393     if ( iVolumeDownIcon )
   393     if ( iVolumeDownIcon )
   394     {
   394     {
   395         AknIconUtils::SetSize( iVolumeDownIcon->Bitmap(),
   395         AknIconUtils::SetSize( iVolumeDownIcon->Bitmap(),
   396                                iVolumeDownRect.Size(),
   396                                iVolumeDownRect.Size(),
   399 
   399 
   400     delete iVolumeFrameIconTop;
   400     delete iVolumeFrameIconTop;
   401     iVolumeFrameIconTop = NULL;
   401     iVolumeFrameIconTop = NULL;
   402     iVolumeFrameIconTop = AknsUtils::CreateGulIconL(
   402     iVolumeFrameIconTop = AknsUtils::CreateGulIconL(
   403             skin,
   403             skin,
   404 		    KAknsIIDQgnIndiCam4ZoomTop,
   404             KAknsIIDQgnIndiCam4ZoomTop,
   405 		    iconsPath,
   405             iconsPath,
   406 		    EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_top,
   406             EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_top,
   407 		    EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_top_mask );
   407             EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_top_mask );
   408 
   408 
   409     if ( iVolumeFrameIconTop )
   409     if ( iVolumeFrameIconTop )
   410     {
   410     {
   411         AknIconUtils::SetSize( iVolumeFrameIconTop->Bitmap(),
   411         AknIconUtils::SetSize( iVolumeFrameIconTop->Bitmap(),
   412                                TSize( iVolumeBarRectTop.Width(), iVolumeBarRectTop.Height() ),
   412                                TSize( iVolumeBarRectTop.Width(), iVolumeBarRectTop.Height() ),
   415 
   415 
   416     delete iVolumeFrameIconMiddle;
   416     delete iVolumeFrameIconMiddle;
   417     iVolumeFrameIconMiddle = NULL;
   417     iVolumeFrameIconMiddle = NULL;
   418     iVolumeFrameIconMiddle = AknsUtils::CreateGulIconL(
   418     iVolumeFrameIconMiddle = AknsUtils::CreateGulIconL(
   419             skin,
   419             skin,
   420 		    KAknsIIDQgnIndiCam4ZoomMiddle,
   420             KAknsIIDQgnIndiCam4ZoomMiddle,
   421 		    iconsPath,
   421             iconsPath,
   422 		    EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_middle,
   422             EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_middle,
   423 		    EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_middle_mask );
   423             EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_middle_mask );
   424 
   424 
   425     if ( iVolumeFrameIconMiddle )
   425     if ( iVolumeFrameIconMiddle )
   426     {
   426     {
   427         AknIconUtils::SetSize( iVolumeFrameIconMiddle->Bitmap(),
   427         AknIconUtils::SetSize( iVolumeFrameIconMiddle->Bitmap(),
   428                                TSize( iVolumeBarRectMiddle.Width(), iVolumeBarRectMiddle.Height() ),
   428                                TSize( iVolumeBarRectMiddle.Width(), iVolumeBarRectMiddle.Height() ),
   431 
   431 
   432     delete iVolumeFrameIconBottom;
   432     delete iVolumeFrameIconBottom;
   433     iVolumeFrameIconBottom = NULL;
   433     iVolumeFrameIconBottom = NULL;
   434     iVolumeFrameIconBottom = AknsUtils::CreateGulIconL(
   434     iVolumeFrameIconBottom = AknsUtils::CreateGulIconL(
   435             skin,
   435             skin,
   436 		    KAknsIIDQgnIndiCam4ZoomBottom,
   436             KAknsIIDQgnIndiCam4ZoomBottom,
   437 		    iconsPath,
   437             iconsPath,
   438 		    EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_bottom,
   438             EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_bottom,
   439 		    EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_bottom_mask );
   439             EMbmMpxvideoplaybackcontrolsQgn_graf_nslider_vertical_bottom_mask );
   440 
   440 
   441     if ( iVolumeFrameIconBottom )
   441     if ( iVolumeFrameIconBottom )
   442     {
   442     {
   443         AknIconUtils::SetSize( iVolumeFrameIconBottom->Bitmap(),
   443         AknIconUtils::SetSize( iVolumeFrameIconBottom->Bitmap(),
   444                                TSize( iVolumeBarRectBottom.Width(), iVolumeBarRectBottom.Height() ),
   444                                TSize( iVolumeBarRectBottom.Width(), iVolumeBarRectBottom.Height() ),
   446     }
   446     }
   447 
   447 
   448     // Calculate the X coordinate to center the icon of sliderbar
   448     // Calculate the X coordinate to center the icon of sliderbar
   449     TRect volumeBarRectPart;
   449     TRect volumeBarRectPart;
   450     CGulIcon* volumeFrameIconPart = NULL;
   450     CGulIcon* volumeFrameIconPart = NULL;
       
   451 
   451     if ( iVolumeFrameIconTop )
   452     if ( iVolumeFrameIconTop )
   452     {
   453     {
   453         volumeFrameIconPart = iVolumeFrameIconTop;
   454         volumeFrameIconPart = iVolumeFrameIconTop;
   454         volumeBarRectPart = iVolumeBarRectTop;
   455         volumeBarRectPart = iVolumeBarRectTop;
   455     }
   456     }
   476 //   CMPXVideoPlaybackVolumeBar::HandleVolumeIncreaseL
   477 //   CMPXVideoPlaybackVolumeBar::HandleVolumeIncreaseL
   477 // -------------------------------------------------------------------------------------------------
   478 // -------------------------------------------------------------------------------------------------
   478 //
   479 //
   479 void CMPXVideoPlaybackVolumeBar::HandleVolumeIncreaseL( const TPointerEvent& aPointerEvent )
   480 void CMPXVideoPlaybackVolumeBar::HandleVolumeIncreaseL( const TPointerEvent& aPointerEvent )
   480 {
   481 {
   481     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleVolumeIncreaseL()"));
   482     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleVolumeIncreaseL()"),
       
   483                    _L("aPointerEvent.iType = %d"), aPointerEvent.iType);
   482 
   484 
   483     switch ( aPointerEvent.iType )
   485     switch ( aPointerEvent.iType )
   484     {
   486     {
   485         case TPointerEvent::EButtonRepeat:
   487         case TPointerEvent::EButtonRepeat:
   486         {
   488         {
   507             break;
   509             break;
   508         }
   510         }
   509         case TPointerEvent::EDrag:
   511         case TPointerEvent::EDrag:
   510         {
   512         {
   511             iDragging = EVolumeIncreaseDragging;
   513             iDragging = EVolumeIncreaseDragging;
   512 
       
   513             break;
   514             break;
   514         }
   515         }
   515         case TPointerEvent::EButton1Up:
   516         case TPointerEvent::EButton1Up:
   516         {
   517         {
   517 #ifdef RD_TACTILE_FEEDBACK
   518 #ifdef RD_TACTILE_FEEDBACK
   538 //   CMPXVideoPlaybackVolumeBar::HandleVolumeDecreaseL
   539 //   CMPXVideoPlaybackVolumeBar::HandleVolumeDecreaseL
   539 // -------------------------------------------------------------------------------------------------
   540 // -------------------------------------------------------------------------------------------------
   540 //
   541 //
   541 void CMPXVideoPlaybackVolumeBar::HandleVolumeDecreaseL( const TPointerEvent& aPointerEvent )
   542 void CMPXVideoPlaybackVolumeBar::HandleVolumeDecreaseL( const TPointerEvent& aPointerEvent )
   542 {
   543 {
   543     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleVolumeDecreaseL()"));
   544     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleVolumeDecreaseL()"),
       
   545                    _L("aPointerEvent.iType = %d"), aPointerEvent.iType);
   544 
   546 
   545     switch ( aPointerEvent.iType )
   547     switch ( aPointerEvent.iType )
   546     {
   548     {
   547         case TPointerEvent::EButtonRepeat:
   549         case TPointerEvent::EButtonRepeat:
   548         {
   550         {
   599 //   CMPXVideoPlaybackVolumeBar::HandleSpeakerControlEventL
   601 //   CMPXVideoPlaybackVolumeBar::HandleSpeakerControlEventL
   600 // -------------------------------------------------------------------------------------------------
   602 // -------------------------------------------------------------------------------------------------
   601 //
   603 //
   602 void CMPXVideoPlaybackVolumeBar::HandleSpeakerControlEventL( const TPointerEvent& aPointerEvent )
   604 void CMPXVideoPlaybackVolumeBar::HandleSpeakerControlEventL( const TPointerEvent& aPointerEvent )
   603 {
   605 {
   604     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleSpeakerControlEventL()"));
   606     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleSpeakerControlEventL()"),
       
   607                    _L("aPointerEvent.iType = %d"), aPointerEvent.iType);
   605 
   608 
   606     switch ( aPointerEvent.iType )
   609     switch ( aPointerEvent.iType )
   607     {
   610     {
   608         case TPointerEvent::EButton1Up:
   611         case TPointerEvent::EButton1Up:
   609         {
   612         {
   650 //   CMPXVideoPlaybackVolumeBar::HandleVolumeBarEventL
   653 //   CMPXVideoPlaybackVolumeBar::HandleVolumeBarEventL
   651 // -------------------------------------------------------------------------------------------------
   654 // -------------------------------------------------------------------------------------------------
   652 //
   655 //
   653 void CMPXVideoPlaybackVolumeBar::HandleVolumeBarEventL( const TPointerEvent& aPointerEvent )
   656 void CMPXVideoPlaybackVolumeBar::HandleVolumeBarEventL( const TPointerEvent& aPointerEvent )
   654 {
   657 {
   655     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleVolumeBarEventL()"));
   658     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::HandleVolumeBarEventL()"),
       
   659                    _L("aPointerEvent.iType = %d"), aPointerEvent.iType);
   656 
   660 
   657     TInt vol = 0;
   661     TInt vol = 0;
   658 
   662 
       
   663     //
       
   664     //  Dynamic Slider Feedback should only be given when the slider is not at the top or bottom
       
   665     //
       
   666     TBool giveDynamicSliderFeedback = EFalse;
       
   667 
   659     if ( aPointerEvent.iPosition.iY < iVolumeBarRect.iTl.iY + KMPXSliderHeight / 2 )
   668     if ( aPointerEvent.iPosition.iY < iVolumeBarRect.iTl.iY + KMPXSliderHeight / 2 )
   660     {
   669     {
   661         vol = KPbPlaybackVolumeLevelMax;
   670         vol = KPbPlaybackVolumeLevelMax;
   662     }
   671     }
   663     else if ( aPointerEvent.iPosition.iY > iVolumeBarRect.iBr.iY - KMPXSliderHeight / 2 )
   672     else if ( aPointerEvent.iPosition.iY > iVolumeBarRect.iBr.iY - KMPXSliderHeight / 2 )
   664     {
   673     {
   665         vol = 0;
   674         vol = 0;
   666     }
   675     }
   667     else
   676     else
   668     {
   677     {
       
   678         giveDynamicSliderFeedback = ETrue;
       
   679 
   669         vol = ( iVolumeBarRect.iBr.iY - KMPXSliderHeight / 2 - aPointerEvent.iPosition.iY ) /
   680         vol = ( iVolumeBarRect.iBr.iY - KMPXSliderHeight / 2 - aPointerEvent.iPosition.iY ) /
   670               iOneVolumeIncrementHeight;
   681               iOneVolumeIncrementHeight;
   671     }
   682     }
   672 
   683 
   673     switch ( aPointerEvent.iType )
   684     switch ( aPointerEvent.iType )
   675         case TPointerEvent::EButton1Down:
   686         case TPointerEvent::EButton1Down:
   676         {
   687         {
   677 #ifdef RD_TACTILE_FEEDBACK
   688 #ifdef RD_TACTILE_FEEDBACK
   678             if ( iFeedback )
   689             if ( iFeedback )
   679             {
   690             {
   680 #ifdef SYMBIAN_BUILD_GCE
       
   681                 iFeedback->InstantFeedback( ETouchFeedbackSlider );
   691                 iFeedback->InstantFeedback( ETouchFeedbackSlider );
   682 #else
       
   683                 iFeedback->InstantFeedback( ETouchFeedbackBasic );
       
   684 #endif //SYMBIAN_BUILD_GCE
       
   685             }
   692             }
   686 #endif //RD_TACTILE_FEEDBACK
   693 #endif //RD_TACTILE_FEEDBACK
   687 
   694 
   688             if ( ! iDraggingHandlerTimer->IsActive() )
   695             if ( ! iDraggingHandlerTimer->IsActive() )
   689             {
   696             {
   698             break;
   705             break;
   699         }
   706         }
   700         case TPointerEvent::EDrag:
   707         case TPointerEvent::EDrag:
   701         {
   708         {
   702 #ifdef RD_TACTILE_FEEDBACK
   709 #ifdef RD_TACTILE_FEEDBACK
   703             if ( iFeedback )
   710             if ( iFeedback && giveDynamicSliderFeedback )
   704             {
   711             {
   705 #ifdef SYMBIAN_BUILD_GCE
   712                 iFeedback->StartFeedback( this,
   706                 iFeedback->InstantFeedback( ETouchFeedbackSlider );
   713                                           ETouchDynamicSlider,
   707 #else
   714                                           &aPointerEvent,
   708                 iFeedback->InstantFeedback( ETouchFeedbackSensitive );
   715                                           KDynamicSliderFeedbackIntensity,
   709 #endif //SYMBIAN_BUILD_GCE
   716                                           KDynamicSliderFeedbackTimeOut );
   710             }
   717             }
   711 #endif //RD_TACTILE_FEEDBACK
   718 #endif //RD_TACTILE_FEEDBACK
   712 
   719 
   713             iVolumeWhileDraggingEvent = vol;
   720             iVolumeWhileDraggingEvent = vol;
   714             iDragging = EVolumeBarDragging;
   721             iDragging = EVolumeBarDragging;
   982 // CMPXVideoPlaybackVolumeBar::Reset
   989 // CMPXVideoPlaybackVolumeBar::Reset
   983 // -------------------------------------------------------------------------------------------------
   990 // -------------------------------------------------------------------------------------------------
   984 //
   991 //
   985 void CMPXVideoPlaybackVolumeBar::Reset()
   992 void CMPXVideoPlaybackVolumeBar::Reset()
   986 {
   993 {
   987 	MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::Reset()"));
   994     MPX_ENTER_EXIT(_L("CMPXVideoPlaybackVolumeBar::Reset()"));
   988 
   995 
   989     if ( iDragging != EVolumeNotDragging )
   996     if ( iDragging != EVolumeNotDragging )
   990     {
   997     {
   991         TPointerEvent event;
   998         TPointerEvent event;
   992         event.iType = TPointerEvent::EButton1Up;
   999         event.iType = TPointerEvent::EButton1Up;