src/hbwidgets/sliders/hbslider.cpp
changeset 34 ed14f46c0e55
parent 6 c3690ec91ef8
equal deleted inserted replaced
31:7516d6d86cf5 34:ed14f46c0e55
    27 #include "hbslider_p.h"
    27 #include "hbslider_p.h"
    28 #include "hbslidercontrol_p.h"
    28 #include "hbslidercontrol_p.h"
    29 #include "hbslidercontrol_p_p.h"
    29 #include "hbslidercontrol_p_p.h"
    30 #include "hbnamespace_p.h"
    30 #include "hbnamespace_p.h"
    31 #include "hbsliderhandle_p.h"
    31 #include "hbsliderhandle_p.h"
    32 
    32 #include "hbstyle_p.h"
    33 #include "hbstyleoptionslider_p.h"
    33 #include "hbstyleoptionslider_p.h"
    34 #include "hbslidertickmarks_p.h"
    34 #include "hbslidertickmarks_p.h"
    35 #include "hbslidertickmarkslabel_p.h"
    35 #include "hbslidertickmarkslabel_p.h"
    36 #include "hbabstractbutton.h"
    36 #include "hbabstractbutton.h"
    37 #include <hbwidgetfeedback.h>
    37 #include <hbwidgetfeedback.h>
   319     switch ( element ) {
   319     switch ( element ) {
   320         case HbSlider::IncreaseElement:
   320         case HbSlider::IncreaseElement:
   321             // create element only if icon is set on that
   321             // create element only if icon is set on that
   322             if ( icons.contains( element) && !elementItemMap.contains(element)){
   322             if ( icons.contains( element) && !elementItemMap.contains(element)){
   323                 ItemPrimitive itemPrimStrct;
   323                 ItemPrimitive itemPrimStrct;
   324                 itemPrimStrct.type = HbStyle::P_SliderElement_increase;
   324                 itemPrimStrct.type = HbStylePrivate::P_SliderElement_increase;
   325                 itemPrimStrct.item = q->style( )->createPrimitive(HbStyle::P_SliderElement_increase,q );
   325                 itemPrimStrct.item = HbStylePrivate::createPrimitive(HbStylePrivate::P_SliderElement_increase,q );
   326                 HbStyle::setItemName( itemPrimStrct.item, "increment-icon" );                    
   326                 HbStyle::setItemName( itemPrimStrct.item, "increment-icon" );                    
   327                 itemPrimStrct.touchItem = q->style( )->createPrimitive( HbStyle::P_SliderElement_touchincrease,q );
   327                 itemPrimStrct.touchItem = HbStylePrivate::createPrimitive( HbStylePrivate::P_SliderElement_touchincrease,q );
   328                 HbStyle::setItemName( itemPrimStrct.touchItem, "increment-icon-toucharea" );
   328                 HbStyle::setItemName( itemPrimStrct.touchItem, "increment-icon-toucharea" );
   329                 HbStyleOptionSlider option;
   329                 HbStyleOptionSlider option;
   330                 q->initStyleOption( &option );
   330                 q->initStyleOption( &option );
   331                 q->style( )->updatePrimitive (itemPrimStrct.touchItem,HbStyle::P_SliderElement_touchincrease,&option);
   331                 HbStylePrivate::updatePrimitive (itemPrimStrct.touchItem,HbStylePrivate::P_SliderElement_touchincrease,&option);
   332                 elementItemMap[HbSlider::IncreaseElement]=itemPrimStrct;
   332                 elementItemMap[HbSlider::IncreaseElement]=itemPrimStrct;
   333                 q->repolish( );
   333                 q->repolish( );
   334        
   334        
   335             }
   335             }
   336             break;
   336             break;
   337         case HbSlider::DecreaseElement:
   337         case HbSlider::DecreaseElement:
   338             // element will not be created if icon is not set on that element
   338             // element will not be created if icon is not set on that element
   339             if ( icons.contains( element) && !elementItemMap.contains(element)) {
   339             if ( icons.contains( element) && !elementItemMap.contains(element)) {
   340                 ItemPrimitive itemPrimStrct;
   340                 ItemPrimitive itemPrimStrct;
   341                 itemPrimStrct.item= q->style( )->createPrimitive(HbStyle::P_SliderElement_decrease,q );
   341                 itemPrimStrct.item= HbStylePrivate::createPrimitive(HbStylePrivate::P_SliderElement_decrease,q );
   342                 itemPrimStrct.type = HbStyle::P_SliderElement_decrease;
   342                 itemPrimStrct.type = HbStylePrivate::P_SliderElement_decrease;
   343                 HbStyle::setItemName( itemPrimStrct.item,"decrement-icon" );
   343                 HbStyle::setItemName( itemPrimStrct.item,"decrement-icon" );
   344                 itemPrimStrct.touchItem = q->style( )->createPrimitive( HbStyle::P_SliderElement_touchdecrease,q );
   344                 itemPrimStrct.touchItem = HbStylePrivate::createPrimitive( HbStylePrivate::P_SliderElement_touchdecrease,q );
   345                 HbStyle::setItemName( itemPrimStrct.touchItem, "decrement-icon-toucharea" );
   345                 HbStyle::setItemName( itemPrimStrct.touchItem, "decrement-icon-toucharea" );
   346                 elementItemMap[HbSlider::DecreaseElement]=itemPrimStrct;
   346                 elementItemMap[HbSlider::DecreaseElement]=itemPrimStrct;
   347                 HbStyleOptionSlider option;
   347                 HbStyleOptionSlider option;
   348                 q->initStyleOption( &option );
   348                 q->initStyleOption( &option );
   349                 q->style( )->updatePrimitive (itemPrimStrct.touchItem,HbStyle::P_SliderElement_touchdecrease,&option);
   349                 HbStylePrivate::updatePrimitive (itemPrimStrct.touchItem,HbStylePrivate::P_SliderElement_touchdecrease,&option);
   350                 q->repolish( );
   350                 q->repolish( );
   351                            
   351                            
   352             }
   352             }
   353             break;
   353             break;
   354         case HbSlider::IconElement:
   354         case HbSlider::IconElement:
   355             if ( icons.contains( element) && !elementItemMap.contains(element) ) {
   355             if ( icons.contains( element) && !elementItemMap.contains(element) ) {
   356                     ItemPrimitive itemPrimStrct;
   356                     ItemPrimitive itemPrimStrct;
   357                     itemPrimStrct.item = q->style( )->createPrimitive(HbStyle::P_SliderElement_icon,q );
   357                     itemPrimStrct.item = HbStylePrivate::createPrimitive(HbStylePrivate::P_SliderElement_icon,q );
   358                     itemPrimStrct.type = HbStyle::P_SliderElement_icon;
   358                     itemPrimStrct.type = HbStylePrivate::P_SliderElement_icon;
   359                     HbStyle::setItemName( itemPrimStrct.item, "icon-icon" );
   359                     HbStyle::setItemName( itemPrimStrct.item, "icon-icon" );
   360                     HbAbstractButton *sliderIcon = new HbAbstractButton( q );
   360                     HbAbstractButton *sliderIcon = new HbAbstractButton( q );
   361                     HbStyle::setItemName( sliderIcon, "icon" );
   361                     HbStyle::setItemName( sliderIcon, "icon" );
   362                     itemPrimStrct.touchItem = sliderIcon;
   362                     itemPrimStrct.touchItem = sliderIcon;
   363                     elementItemMap [HbSlider::IconElement]=itemPrimStrct;
   363                     elementItemMap [HbSlider::IconElement]=itemPrimStrct;
   375             }
   375             }
   376             break;
   376             break;
   377         case HbSlider::TextElement:
   377         case HbSlider::TextElement:
   378             if( !sliderTextString.isEmpty( ) && !elementItemMap.contains(element)){
   378             if( !sliderTextString.isEmpty( ) && !elementItemMap.contains(element)){
   379                 ItemPrimitive itemPrimStrct;
   379                 ItemPrimitive itemPrimStrct;
   380                 itemPrimStrct.type = HbStyle::P_SliderElement_text;
   380                 itemPrimStrct.type = HbStylePrivate::P_SliderElement_text;
   381                 itemPrimStrct.item = q->style( )->createPrimitive( HbStyle::P_SliderElement_text,q );
   381                 itemPrimStrct.item = HbStylePrivate::createPrimitive( HbStylePrivate::P_SliderElement_text,q );
   382                 HbStyle::setItemName( itemPrimStrct.item,"text_item_element" );
   382                 HbStyle::setItemName( itemPrimStrct.item,"text_item_element" );
   383                 HbAbstractButton *sliderTextButton = new HbAbstractButton( q ); 
   383                 HbAbstractButton *sliderTextButton = new HbAbstractButton( q ); 
   384                 HbStyle::setItemName( sliderTextButton, "text_element" );
   384                 HbStyle::setItemName( sliderTextButton, "text_element" );
   385                 itemPrimStrct.touchItem = sliderTextButton;   
   385                 itemPrimStrct.touchItem = sliderTextButton;   
   386                 q->connect( sliderTextButton, SIGNAL( clicked( ) ), q, SIGNAL( textClicked( ) ) );
   386                 q->connect( sliderTextButton, SIGNAL( clicked( ) ), q, SIGNAL( textClicked( ) ) );
   399      HbStyleOptionSlider option;
   399      HbStyleOptionSlider option;
   400      q->initStyleOption( &option );
   400      q->initStyleOption( &option );
   401      option.sliderElementIcon =icons.value(element ); 
   401      option.sliderElementIcon =icons.value(element ); 
   402      option.text = sliderTextString; 
   402      option.text = sliderTextString; 
   403      if (elementItemMap.contains(element)) {
   403      if (elementItemMap.contains(element)) {
   404          q->style( )->updatePrimitive( elementItemMap[element].item,elementItemMap[element].type,&option );
   404          HbStylePrivate::updatePrimitive( elementItemMap[element].item,elementItemMap[element].type,&option );
   405 
   405 
   406      }  //return created;
   406      }  //return created;
   407 }
   407 }
   408 
   408 
   409 
   409 
   635   Updates tick and Label.
   635   Updates tick and Label.
   636   */
   636   */
   637 void HbSliderPrivate::updateTickMarks( )
   637 void HbSliderPrivate::updateTickMarks( )
   638 {
   638 {
   639     if (tickmarksLeft) {
   639     if (tickmarksLeft) {
   640 		tickmarksLeft->createTicks();
   640         tickmarksLeft->createTicks();
   641         tickmarksLeft->updateTicks();
   641         tickmarksLeft->updateTicks();
   642     }
   642     }
   643     if (tickmarksRight) {
   643     if (tickmarksRight) {
   644 		tickmarksRight->createTicks();
   644         tickmarksRight->createTicks();
   645         tickmarksRight->updateTicks();
   645         tickmarksRight->updateTicks();
   646     }
   646     }
   647 }
   647 }
   648 
   648 
   649 
   649 
   963     if( d->sliderTextString!= text) {
   963     if( d->sliderTextString!= text) {
   964         d->sliderTextString = text;
   964         d->sliderTextString = text;
   965         if ( d->elements.contains( HbSlider::TextElement ))  {
   965         if ( d->elements.contains( HbSlider::TextElement ))  {
   966             d->elementWidget( HbSlider::TextElement );  
   966             d->elementWidget( HbSlider::TextElement );  
   967         }
   967         }
   968         // sets text for tooltip also
       
   969         d->sliderControl->setToolTip( text );
       
   970         repolish();
       
   971     }
   968     }
   972 }
   969 }
   973 
   970 
   974 /*!
   971 /*!
   975     @beta
   972     @beta
  1724     strings are taken into account for drawing the labelItem
  1721     strings are taken into account for drawing the labelItem
  1725 
  1722 
  1726     case 5: If you want to remove the whole tickLabel then set the empty string as the argument.
  1723     case 5: If you want to remove the whole tickLabel then set the empty string as the argument.
  1727 
  1724 
  1728     Note:: if the major tickinterval of the slider is very small, the tick labels may overlap,
  1725     Note:: if the major tickinterval of the slider is very small, the tick labels may overlap,
  1729 	application needs to take care of this.
  1726     application needs to take care of this.
  1730 
  1727 
  1731     \sa majorTickLabels( )
  1728     \sa majorTickLabels( )
  1732 */
  1729 */
  1733 void HbSlider::setMajorTickLabels( const QStringList &majorTickLabels )
  1730 void HbSlider::setMajorTickLabels( const QStringList &majorTickLabels )
  1734 {
  1731 {
  1756 
  1753 
  1757 /*!
  1754 /*!
  1758     @beta
  1755     @beta
  1759     Sets the minor ticklabels of the slider.
  1756     Sets the minor ticklabels of the slider.
  1760     see setMajorTickLabels for detailed description.
  1757     see setMajorTickLabels for detailed description.
  1761 	Note:: if the minor tickinterval of the slider is very small, the tick labels may overlap,
  1758     Note:: if the minor tickinterval of the slider is very small, the tick labels may overlap,
  1762 	application needs to take care of this.
  1759     application needs to take care of this.
  1763 
  1760 
  1764 
  1761 
  1765     \sa minorTickLabels( ),setMajorTickLabels( )
  1762     \sa minorTickLabels( ),setMajorTickLabels( )
  1766 */
  1763 */
  1767 void HbSlider::setMinorTickLabels( const QStringList &minorTickLabels )
  1764 void HbSlider::setMinorTickLabels( const QStringList &minorTickLabels )
  1781  */
  1778  */
  1782 QGraphicsItem *HbSlider::primitive( HbStyle::Primitive primitive ) const
  1779 QGraphicsItem *HbSlider::primitive( HbStyle::Primitive primitive ) const
  1783 {
  1780 {
  1784     Q_D( const HbSlider );
  1781     Q_D( const HbSlider );
  1785     switch ( primitive ) {
  1782     switch ( primitive ) {
  1786         case HbStyle::P_Slider_thumb:
  1783         case HbStylePrivate::P_Slider_thumb:
  1787             return HbSliderControlPrivate::d_ptr( d->sliderControl )->handle->primitive( 
  1784             return HbSliderControlPrivate::d_ptr( d->sliderControl )->handle->primitive( 
  1788                 HbStyle::P_Slider_thumb );
  1785                 (HbStyle::Primitive)HbStylePrivate::P_Slider_thumb );
  1789         case HbStyle::P_SliderElement_text:
  1786         case HbStylePrivate::P_SliderElement_text:
  1790             if (d->elementItemMap.contains (HbSlider::TextElement) ){
  1787             if (d->elementItemMap.contains (HbSlider::TextElement) ){
  1791                 return d->elementItemMap[HbSlider::TextElement].item;
  1788                 return d->elementItemMap[HbSlider::TextElement].item;
  1792             }
  1789             }
  1793             break;
  1790             break;
  1794         case HbStyle::P_SliderElement_icon:
  1791         case HbStylePrivate::P_SliderElement_icon:
  1795             if (d->elementItemMap.contains (HbSlider::IconElement)) {
  1792             if (d->elementItemMap.contains (HbSlider::IconElement)) {
  1796                 return d->elementItemMap[HbSlider::IconElement].item;
  1793                 return d->elementItemMap[HbSlider::IconElement].item;
  1797             }
  1794             }
  1798             break;
  1795             break;
  1799         case HbStyle::P_SliderElement_increase:
  1796         case HbStylePrivate::P_SliderElement_increase:
  1800             if (d->elementItemMap.contains (HbSlider::IncreaseElement)) {
  1797             if (d->elementItemMap.contains (HbSlider::IncreaseElement)) {
  1801                 return d->elementItemMap[HbSlider::IncreaseElement].item;
  1798                 return d->elementItemMap[HbSlider::IncreaseElement].item;
  1802             }
  1799             }
  1803             break;
  1800             break;
  1804         case HbStyle::P_SliderElement_decrease:
  1801         case HbStylePrivate::P_SliderElement_decrease:
  1805             if (d->elementItemMap.contains (HbSlider::DecreaseElement)) {
  1802             if (d->elementItemMap.contains (HbSlider::DecreaseElement)) {
  1806                 return d->elementItemMap[HbSlider::DecreaseElement].item;
  1803                 return d->elementItemMap[HbSlider::DecreaseElement].item;
  1807             }
  1804             }
  1808             break;
  1805             break;
  1809         case HbStyle::P_Slider_groove:
  1806         case HbStylePrivate::P_Slider_groove:
  1810             return HbSliderControlPrivate::d_ptr( d->sliderControl )->groove;
  1807             return HbSliderControlPrivate::d_ptr( d->sliderControl )->groove;
  1811         case  HbStyle::P_SliderElement_touchgroove:
  1808         case  HbStylePrivate::P_SliderElement_touchgroove:
  1812             return  HbSliderControlPrivate::d_ptr( d->sliderControl )->grooveTouchArea;
  1809             return  HbSliderControlPrivate::d_ptr( d->sliderControl )->grooveTouchArea;
  1813         
  1810         
  1814         case HbStyle::P_SliderElement_touchhandle:
  1811         case HbStylePrivate::P_SliderElement_touchhandle:
  1815             return HbSliderControlPrivate::d_ptr( d->sliderControl )->handle->primitive( 
  1812             return HbSliderControlPrivate::d_ptr( d->sliderControl )->handle->primitive( 
  1816                 HbStyle::P_SliderElement_touchhandle );
  1813                 (HbStyle::Primitive)HbStylePrivate::P_SliderElement_touchhandle );
  1817             
  1814             
  1818         default:
  1815         default:
  1819             break;
  1816             break;
  1820     }
  1817     }
  1821     return 0;
  1818     return 0;
  1831     HbStyleOptionSlider option;
  1828     HbStyleOptionSlider option;
  1832     initStyleOption( &option );
  1829     initStyleOption( &option );
  1833 
  1830 
  1834     if ( d->elementItemMap.contains(HbSlider::TextElement)) {
  1831     if ( d->elementItemMap.contains(HbSlider::TextElement)) {
  1835         option.text = d->sliderTextString; 
  1832         option.text = d->sliderTextString; 
  1836         style( )->updatePrimitive( d->elementItemMap[HbSlider::TextElement].item,d->elementItemMap[HbSlider::TextElement].type,&option );
  1833         HbStylePrivate::updatePrimitive( d->elementItemMap[HbSlider::TextElement].item,d->elementItemMap[HbSlider::TextElement].type,&option );
  1837     }
  1834     }
  1838     if ( d->elementItemMap.contains(HbSlider::IconElement)) {
  1835     if ( d->elementItemMap.contains(HbSlider::IconElement)) {
  1839         option.sliderElementIcon =d->icons.value( HbSlider::IconElement ); 
  1836         option.sliderElementIcon =d->icons.value( HbSlider::IconElement ); 
  1840         style( )->updatePrimitive( d->elementItemMap[HbSlider::IconElement].item,HbStyle::P_SliderElement_icon,&option );
  1837         HbStylePrivate::updatePrimitive( d->elementItemMap[HbSlider::IconElement].item,HbStylePrivate::P_SliderElement_icon,&option );
  1841     }
  1838     }
  1842     if ( d->elementItemMap.contains(HbSlider::IncreaseElement) ) {
  1839     if ( d->elementItemMap.contains(HbSlider::IncreaseElement) ) {
  1843         option.sliderElementIcon =d->icons.value( HbSlider::IncreaseElement ); 
  1840         option.sliderElementIcon =d->icons.value( HbSlider::IncreaseElement ); 
  1844         style( )->updatePrimitive( d->elementItemMap[HbSlider::IncreaseElement].item,HbStyle::P_SliderElement_increase,&option );
  1841         HbStylePrivate::updatePrimitive( d->elementItemMap[HbSlider::IncreaseElement].item,HbStylePrivate::P_SliderElement_increase,&option );
  1845         style( )->updatePrimitive(  d->elementItemMap[HbSlider::IncreaseElement].touchItem ,HbStyle::P_SliderElement_touchincrease,&option );
  1842         HbStylePrivate::updatePrimitive(  d->elementItemMap[HbSlider::IncreaseElement].touchItem ,HbStylePrivate::P_SliderElement_touchincrease,&option );
  1846 
  1843 
  1847     }
  1844     }
  1848     if ( d->elementItemMap.contains (HbSlider::DecreaseElement) ) {
  1845     if ( d->elementItemMap.contains (HbSlider::DecreaseElement) ) {
  1849         option.sliderElementIcon =d->icons.value( HbSlider::DecreaseElement ); 
  1846         option.sliderElementIcon =d->icons.value( HbSlider::DecreaseElement ); 
  1850         style( )->updatePrimitive( d->elementItemMap[HbSlider::DecreaseElement].item,HbStyle::P_SliderElement_decrease,&option );
  1847         HbStylePrivate::updatePrimitive( d->elementItemMap[HbSlider::DecreaseElement].item,HbStylePrivate::P_SliderElement_decrease,&option );
  1851         style( )->updatePrimitive( d->elementItemMap[HbSlider::DecreaseElement].touchItem ,HbStyle::P_SliderElement_touchdecrease,&option );
  1848         HbStylePrivate::updatePrimitive( d->elementItemMap[HbSlider::DecreaseElement].touchItem ,HbStylePrivate::P_SliderElement_touchdecrease,&option );
  1852     }
  1849     }
  1853     if ( d->sliderControl ) {
  1850     if ( d->sliderControl ) {
  1854         d->sliderControl->updatePrimitives( );
  1851         d->sliderControl->updatePrimitives( );
  1855     }
  1852     }
  1856 }
  1853 }
  1858 /*!
  1855 /*!
  1859     \reimp
  1856     \reimp
  1860  */
  1857  */
  1861 void HbSlider::mousePressEvent( QGraphicsSceneMouseEvent *event )
  1858 void HbSlider::mousePressEvent( QGraphicsSceneMouseEvent *event )
  1862 {
  1859 {
       
  1860 #ifndef HB_GESTURE_FW 
  1863     Q_D( HbSlider );
  1861     Q_D( HbSlider );
  1864     HbWidget::mousePressEvent( event );
  1862     HbWidget::mousePressEvent( event );
  1865     if( d->elementItemMap.contains (HbSlider::IncreaseElement) ) {
  1863     if( d->elementItemMap.contains (HbSlider::IncreaseElement) ) {
  1866         if ( d->elementItemMap[HbSlider::IncreaseElement].touchItem->isUnderMouse( ) ) {
  1864         if ( d->elementItemMap[HbSlider::IncreaseElement].touchItem->isUnderMouse( ) ) {
  1867             // this is used for effect
  1865             // this is used for effect
  1881             //decrement and start decrement timer
  1879             //decrement and start decrement timer
  1882             d->startDecrementing( );
  1880             d->startDecrementing( );
  1883             return;
  1881             return;
  1884         }
  1882         }
  1885     }
  1883     }
       
  1884 #else 
       
  1885     Q_UNUSED(event);
       
  1886 #endif 
  1886 }
  1887 }
  1887 
  1888 
  1888 
  1889 
  1889 /*!
  1890 /*!
  1890     \reimp
  1891     \reimp
  1891 
  1892 
  1892     This Api start the releae effect.
  1893     This Api start the releae effect.
  1893  */
  1894  */
  1894 void HbSlider::mouseReleaseEvent( QGraphicsSceneMouseEvent *event )
  1895 void HbSlider::mouseReleaseEvent( QGraphicsSceneMouseEvent *event )
  1895 {
  1896 {
       
  1897 #ifndef HB_GESTURE_FW 
  1896     Q_D( HbSlider );
  1898     Q_D( HbSlider );
  1897     HbWidget::mouseReleaseEvent( event );
  1899     HbWidget::mouseReleaseEvent( event );
  1898     if( d->elementItemMap.contains(HbSlider::IncreaseElement) ) {
  1900     if( d->elementItemMap.contains(HbSlider::IncreaseElement) ) {
  1899         if ( d->pressOnIncrement ) {
  1901         if ( d->pressOnIncrement ) {
  1900             if( d->elementItemMap[HbSlider::IncreaseElement].touchItem->isUnderMouse( ) ) {
  1902             if( d->elementItemMap[HbSlider::IncreaseElement].touchItem->isUnderMouse( ) ) {
  1916             HbEffect::start( d->elementItemMap[HbSlider::DecreaseElement].item, HB_SLIDER_TYPE, "decreaserelease" );  
  1918             HbEffect::start( d->elementItemMap[HbSlider::DecreaseElement].item, HB_SLIDER_TYPE, "decreaserelease" );  
  1917 #endif
  1919 #endif
  1918         }
  1920         }
  1919     }
  1921     }
  1920     d->stopRepeatAction( );
  1922     d->stopRepeatAction( );
       
  1923 #else
       
  1924     Q_UNUSED( event )
       
  1925 #endif 
  1921 }
  1926 }
  1922 
  1927 
  1923 /*!
  1928 /*!
  1924   reimp
  1929   reimp
  1925 
  1930 
  1931     //consume the event if gesture is on increment or decrement,It is being handled in mouse press and mouse release
  1936     //consume the event if gesture is on increment or decrement,It is being handled in mouse press and mouse release
  1932     //If it is on mute/control igonore the gesture as they are handled separately by HbAbstractButton and HbSlidercontrol classes
  1937     //If it is on mute/control igonore the gesture as they are handled separately by HbAbstractButton and HbSlidercontrol classes
  1933     if (HbTapGesture *tap = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) {
  1938     if (HbTapGesture *tap = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) {
  1934         QPointF pos = event->mapToGraphicsScene(tap->position());
  1939         QPointF pos = event->mapToGraphicsScene(tap->position());
  1935         bool consumeEvent = false;
  1940         bool consumeEvent = false;
  1936         if ( d->elementItemMap.contains (HbSlider::IncreaseElement ) ) {
  1941         switch( tap->state( ) ) {
  1937             if (d->elementItemMap[HbSlider::IncreaseElement].touchItem ) {
  1942         case Qt::GestureStarted: {
  1938                 if (d->elementItemMap[HbSlider::IncreaseElement].touchItem->sceneBoundingRect().contains(pos)) {
  1943             if ( d->elementItemMap.contains (HbSlider::IncreaseElement ) ) {
  1939                     consumeEvent = true;
  1944                 if (d->elementItemMap[HbSlider::IncreaseElement].touchItem ) {
       
  1945                     if (d->elementItemMap[HbSlider::IncreaseElement].touchItem->sceneBoundingRect().contains(pos)) {
       
  1946                         consumeEvent = true;
       
  1947                         d->pressOnIncrement  = true;
       
  1948                         HbWidgetFeedback::triggered( d->sliderControl, Hb::InstantPressed, Hb::ModifierSliderElement );
       
  1949                         event->accept( );
       
  1950                         // increment and start reapeat timer 
       
  1951                         d->startIncrementing( );
       
  1952                     }
  1940                 }
  1953                 }
  1941             }
  1954             }
  1942         }
  1955             if ( d->elementItemMap.contains (HbSlider::DecreaseElement ) ) {
  1943         if ( d->elementItemMap.contains (HbSlider::DecreaseElement ) ) {
  1956                 if (d->elementItemMap[HbSlider::DecreaseElement].touchItem ) {
  1944             if (d->elementItemMap[HbSlider::DecreaseElement].touchItem ) {
  1957                     if (d->elementItemMap[HbSlider::DecreaseElement].touchItem->sceneBoundingRect().contains(pos))  {
  1945                 if (d->elementItemMap[HbSlider::DecreaseElement].touchItem->sceneBoundingRect().contains(pos))  {
  1958                         consumeEvent = true;
  1946                     consumeEvent = true;
  1959                         d->pressOnIncrement  = false;
       
  1960                         HbWidgetFeedback::triggered( d->sliderControl, Hb::InstantPressed, Hb::ModifierSliderElement );
       
  1961                         event->accept( );
       
  1962                         //decrement and start decrement timer
       
  1963                         d->startDecrementing( );
       
  1964 
       
  1965                     }
  1947                 }
  1966                 }
  1948             }
  1967             }
  1949         }
  1968         }
  1950 
  1969         break;
  1951        if(!consumeEvent) {
  1970         case Qt::GestureCanceled:
       
  1971         case Qt::GestureFinished:            
       
  1972             if ( d->elementItemMap.contains (HbSlider::IncreaseElement ) ) {
       
  1973                 if (d->elementItemMap[HbSlider::IncreaseElement].touchItem ) {
       
  1974                     if ( d->pressOnIncrement ) {
       
  1975                         if( d->elementItemMap[HbSlider::IncreaseElement].touchItem->sceneBoundingRect().contains(pos)) {
       
  1976                             HbWidgetFeedback::triggered( d->sliderControl, Hb::InstantReleased, Hb::ModifierSliderElement );
       
  1977                             #ifdef HB_EFFECTS
       
  1978                             HbEffectInternal::add( HB_SLIDER_TYPE,"slidericon_release", "increaserelease" );
       
  1979                             HbEffect::start( d->elementItemMap[HbSlider::IncreaseElement].item, HB_SLIDER_TYPE, "increaserelease" );  
       
  1980                             #endif
       
  1981                         }
       
  1982                     }
       
  1983                 }
       
  1984             }
       
  1985             if ( d->elementItemMap.contains (HbSlider::DecreaseElement ) ) {
       
  1986                 if (d->elementItemMap[HbSlider::DecreaseElement].touchItem ) {
       
  1987                     if( d->elementItemMap.contains(HbSlider::DecreaseElement) ) {
       
  1988                         if ( !d->pressOnIncrement ) {
       
  1989                             if( d->elementItemMap[HbSlider::DecreaseElement].touchItem->sceneBoundingRect().contains(pos) ) {
       
  1990                                 HbWidgetFeedback::triggered( d->sliderControl, Hb::InstantReleased, Hb::ModifierSliderElement );
       
  1991                                 #ifdef HB_EFFECTS
       
  1992                                 HbEffectInternal::add( HB_SLIDER_TYPE,"slidericon_release", "decreaserelease" );
       
  1993                                 HbEffect::start( d->elementItemMap[HbSlider::DecreaseElement].item, HB_SLIDER_TYPE, "decreaserelease" );  
       
  1994                                 #endif
       
  1995                             }
       
  1996                         }
       
  1997                     }
       
  1998                 }
       
  1999             }
       
  2000             d->stopRepeatAction( );
       
  2001             break;
       
  2002         default: break;
       
  2003         }    
       
  2004         if(!consumeEvent) {
  1952            event->ignore();
  2005            event->ignore();
  1953            HbWidget::gestureEvent(event);
  2006            HbWidget::gestureEvent(event);
  1954        }
  2007        }
  1955     }
  2008     }
  1956         
  2009