src/hbwidgets/sliders/hbslider.cpp
changeset 34 ed14f46c0e55
parent 6 c3690ec91ef8
--- a/src/hbwidgets/sliders/hbslider.cpp	Mon Oct 04 17:49:30 2010 +0300
+++ b/src/hbwidgets/sliders/hbslider.cpp	Mon Oct 18 18:23:13 2010 +0300
@@ -29,7 +29,7 @@
 #include "hbslidercontrol_p_p.h"
 #include "hbnamespace_p.h"
 #include "hbsliderhandle_p.h"
-
+#include "hbstyle_p.h"
 #include "hbstyleoptionslider_p.h"
 #include "hbslidertickmarks_p.h"
 #include "hbslidertickmarkslabel_p.h"
@@ -321,14 +321,14 @@
             // create element only if icon is set on that
             if ( icons.contains( element) && !elementItemMap.contains(element)){
                 ItemPrimitive itemPrimStrct;
-                itemPrimStrct.type = HbStyle::P_SliderElement_increase;
-                itemPrimStrct.item = q->style( )->createPrimitive(HbStyle::P_SliderElement_increase,q );
+                itemPrimStrct.type = HbStylePrivate::P_SliderElement_increase;
+                itemPrimStrct.item = HbStylePrivate::createPrimitive(HbStylePrivate::P_SliderElement_increase,q );
                 HbStyle::setItemName( itemPrimStrct.item, "increment-icon" );                    
-                itemPrimStrct.touchItem = q->style( )->createPrimitive( HbStyle::P_SliderElement_touchincrease,q );
+                itemPrimStrct.touchItem = HbStylePrivate::createPrimitive( HbStylePrivate::P_SliderElement_touchincrease,q );
                 HbStyle::setItemName( itemPrimStrct.touchItem, "increment-icon-toucharea" );
                 HbStyleOptionSlider option;
                 q->initStyleOption( &option );
-                q->style( )->updatePrimitive (itemPrimStrct.touchItem,HbStyle::P_SliderElement_touchincrease,&option);
+                HbStylePrivate::updatePrimitive (itemPrimStrct.touchItem,HbStylePrivate::P_SliderElement_touchincrease,&option);
                 elementItemMap[HbSlider::IncreaseElement]=itemPrimStrct;
                 q->repolish( );
        
@@ -338,15 +338,15 @@
             // element will not be created if icon is not set on that element
             if ( icons.contains( element) && !elementItemMap.contains(element)) {
                 ItemPrimitive itemPrimStrct;
-                itemPrimStrct.item= q->style( )->createPrimitive(HbStyle::P_SliderElement_decrease,q );
-                itemPrimStrct.type = HbStyle::P_SliderElement_decrease;
+                itemPrimStrct.item= HbStylePrivate::createPrimitive(HbStylePrivate::P_SliderElement_decrease,q );
+                itemPrimStrct.type = HbStylePrivate::P_SliderElement_decrease;
                 HbStyle::setItemName( itemPrimStrct.item,"decrement-icon" );
-                itemPrimStrct.touchItem = q->style( )->createPrimitive( HbStyle::P_SliderElement_touchdecrease,q );
+                itemPrimStrct.touchItem = HbStylePrivate::createPrimitive( HbStylePrivate::P_SliderElement_touchdecrease,q );
                 HbStyle::setItemName( itemPrimStrct.touchItem, "decrement-icon-toucharea" );
                 elementItemMap[HbSlider::DecreaseElement]=itemPrimStrct;
                 HbStyleOptionSlider option;
                 q->initStyleOption( &option );
-                q->style( )->updatePrimitive (itemPrimStrct.touchItem,HbStyle::P_SliderElement_touchdecrease,&option);
+                HbStylePrivate::updatePrimitive (itemPrimStrct.touchItem,HbStylePrivate::P_SliderElement_touchdecrease,&option);
                 q->repolish( );
                            
             }
@@ -354,8 +354,8 @@
         case HbSlider::IconElement:
             if ( icons.contains( element) && !elementItemMap.contains(element) ) {
                     ItemPrimitive itemPrimStrct;
-                    itemPrimStrct.item = q->style( )->createPrimitive(HbStyle::P_SliderElement_icon,q );
-                    itemPrimStrct.type = HbStyle::P_SliderElement_icon;
+                    itemPrimStrct.item = HbStylePrivate::createPrimitive(HbStylePrivate::P_SliderElement_icon,q );
+                    itemPrimStrct.type = HbStylePrivate::P_SliderElement_icon;
                     HbStyle::setItemName( itemPrimStrct.item, "icon-icon" );
                     HbAbstractButton *sliderIcon = new HbAbstractButton( q );
                     HbStyle::setItemName( sliderIcon, "icon" );
@@ -377,8 +377,8 @@
         case HbSlider::TextElement:
             if( !sliderTextString.isEmpty( ) && !elementItemMap.contains(element)){
                 ItemPrimitive itemPrimStrct;
-                itemPrimStrct.type = HbStyle::P_SliderElement_text;
-                itemPrimStrct.item = q->style( )->createPrimitive( HbStyle::P_SliderElement_text,q );
+                itemPrimStrct.type = HbStylePrivate::P_SliderElement_text;
+                itemPrimStrct.item = HbStylePrivate::createPrimitive( HbStylePrivate::P_SliderElement_text,q );
                 HbStyle::setItemName( itemPrimStrct.item,"text_item_element" );
                 HbAbstractButton *sliderTextButton = new HbAbstractButton( q ); 
                 HbStyle::setItemName( sliderTextButton, "text_element" );
@@ -401,7 +401,7 @@
      option.sliderElementIcon =icons.value(element ); 
      option.text = sliderTextString; 
      if (elementItemMap.contains(element)) {
-         q->style( )->updatePrimitive( elementItemMap[element].item,elementItemMap[element].type,&option );
+         HbStylePrivate::updatePrimitive( elementItemMap[element].item,elementItemMap[element].type,&option );
 
      }  //return created;
 }
@@ -637,11 +637,11 @@
 void HbSliderPrivate::updateTickMarks( )
 {
     if (tickmarksLeft) {
-		tickmarksLeft->createTicks();
+        tickmarksLeft->createTicks();
         tickmarksLeft->updateTicks();
     }
     if (tickmarksRight) {
-		tickmarksRight->createTicks();
+        tickmarksRight->createTicks();
         tickmarksRight->updateTicks();
     }
 }
@@ -965,9 +965,6 @@
         if ( d->elements.contains( HbSlider::TextElement ))  {
             d->elementWidget( HbSlider::TextElement );  
         }
-        // sets text for tooltip also
-        d->sliderControl->setToolTip( text );
-        repolish();
     }
 }
 
@@ -1726,7 +1723,7 @@
     case 5: If you want to remove the whole tickLabel then set the empty string as the argument.
 
     Note:: if the major tickinterval of the slider is very small, the tick labels may overlap,
-	application needs to take care of this.
+    application needs to take care of this.
 
     \sa majorTickLabels( )
 */
@@ -1758,8 +1755,8 @@
     @beta
     Sets the minor ticklabels of the slider.
     see setMajorTickLabels for detailed description.
-	Note:: if the minor tickinterval of the slider is very small, the tick labels may overlap,
-	application needs to take care of this.
+    Note:: if the minor tickinterval of the slider is very small, the tick labels may overlap,
+    application needs to take care of this.
 
 
     \sa minorTickLabels( ),setMajorTickLabels( )
@@ -1783,37 +1780,37 @@
 {
     Q_D( const HbSlider );
     switch ( primitive ) {
-        case HbStyle::P_Slider_thumb:
+        case HbStylePrivate::P_Slider_thumb:
             return HbSliderControlPrivate::d_ptr( d->sliderControl )->handle->primitive( 
-                HbStyle::P_Slider_thumb );
-        case HbStyle::P_SliderElement_text:
+                (HbStyle::Primitive)HbStylePrivate::P_Slider_thumb );
+        case HbStylePrivate::P_SliderElement_text:
             if (d->elementItemMap.contains (HbSlider::TextElement) ){
                 return d->elementItemMap[HbSlider::TextElement].item;
             }
             break;
-        case HbStyle::P_SliderElement_icon:
+        case HbStylePrivate::P_SliderElement_icon:
             if (d->elementItemMap.contains (HbSlider::IconElement)) {
                 return d->elementItemMap[HbSlider::IconElement].item;
             }
             break;
-        case HbStyle::P_SliderElement_increase:
+        case HbStylePrivate::P_SliderElement_increase:
             if (d->elementItemMap.contains (HbSlider::IncreaseElement)) {
                 return d->elementItemMap[HbSlider::IncreaseElement].item;
             }
             break;
-        case HbStyle::P_SliderElement_decrease:
+        case HbStylePrivate::P_SliderElement_decrease:
             if (d->elementItemMap.contains (HbSlider::DecreaseElement)) {
                 return d->elementItemMap[HbSlider::DecreaseElement].item;
             }
             break;
-        case HbStyle::P_Slider_groove:
+        case HbStylePrivate::P_Slider_groove:
             return HbSliderControlPrivate::d_ptr( d->sliderControl )->groove;
-        case  HbStyle::P_SliderElement_touchgroove:
+        case  HbStylePrivate::P_SliderElement_touchgroove:
             return  HbSliderControlPrivate::d_ptr( d->sliderControl )->grooveTouchArea;
         
-        case HbStyle::P_SliderElement_touchhandle:
+        case HbStylePrivate::P_SliderElement_touchhandle:
             return HbSliderControlPrivate::d_ptr( d->sliderControl )->handle->primitive( 
-                HbStyle::P_SliderElement_touchhandle );
+                (HbStyle::Primitive)HbStylePrivate::P_SliderElement_touchhandle );
             
         default:
             break;
@@ -1833,22 +1830,22 @@
 
     if ( d->elementItemMap.contains(HbSlider::TextElement)) {
         option.text = d->sliderTextString; 
-        style( )->updatePrimitive( d->elementItemMap[HbSlider::TextElement].item,d->elementItemMap[HbSlider::TextElement].type,&option );
+        HbStylePrivate::updatePrimitive( d->elementItemMap[HbSlider::TextElement].item,d->elementItemMap[HbSlider::TextElement].type,&option );
     }
     if ( d->elementItemMap.contains(HbSlider::IconElement)) {
         option.sliderElementIcon =d->icons.value( HbSlider::IconElement ); 
-        style( )->updatePrimitive( d->elementItemMap[HbSlider::IconElement].item,HbStyle::P_SliderElement_icon,&option );
+        HbStylePrivate::updatePrimitive( d->elementItemMap[HbSlider::IconElement].item,HbStylePrivate::P_SliderElement_icon,&option );
     }
     if ( d->elementItemMap.contains(HbSlider::IncreaseElement) ) {
         option.sliderElementIcon =d->icons.value( HbSlider::IncreaseElement ); 
-        style( )->updatePrimitive( d->elementItemMap[HbSlider::IncreaseElement].item,HbStyle::P_SliderElement_increase,&option );
-        style( )->updatePrimitive(  d->elementItemMap[HbSlider::IncreaseElement].touchItem ,HbStyle::P_SliderElement_touchincrease,&option );
+        HbStylePrivate::updatePrimitive( d->elementItemMap[HbSlider::IncreaseElement].item,HbStylePrivate::P_SliderElement_increase,&option );
+        HbStylePrivate::updatePrimitive(  d->elementItemMap[HbSlider::IncreaseElement].touchItem ,HbStylePrivate::P_SliderElement_touchincrease,&option );
 
     }
     if ( d->elementItemMap.contains (HbSlider::DecreaseElement) ) {
         option.sliderElementIcon =d->icons.value( HbSlider::DecreaseElement ); 
-        style( )->updatePrimitive( d->elementItemMap[HbSlider::DecreaseElement].item,HbStyle::P_SliderElement_decrease,&option );
-        style( )->updatePrimitive( d->elementItemMap[HbSlider::DecreaseElement].touchItem ,HbStyle::P_SliderElement_touchdecrease,&option );
+        HbStylePrivate::updatePrimitive( d->elementItemMap[HbSlider::DecreaseElement].item,HbStylePrivate::P_SliderElement_decrease,&option );
+        HbStylePrivate::updatePrimitive( d->elementItemMap[HbSlider::DecreaseElement].touchItem ,HbStylePrivate::P_SliderElement_touchdecrease,&option );
     }
     if ( d->sliderControl ) {
         d->sliderControl->updatePrimitives( );
@@ -1860,6 +1857,7 @@
  */
 void HbSlider::mousePressEvent( QGraphicsSceneMouseEvent *event )
 {
+#ifndef HB_GESTURE_FW 
     Q_D( HbSlider );
     HbWidget::mousePressEvent( event );
     if( d->elementItemMap.contains (HbSlider::IncreaseElement) ) {
@@ -1883,6 +1881,9 @@
             return;
         }
     }
+#else 
+    Q_UNUSED(event);
+#endif 
 }
 
 
@@ -1893,6 +1894,7 @@
  */
 void HbSlider::mouseReleaseEvent( QGraphicsSceneMouseEvent *event )
 {
+#ifndef HB_GESTURE_FW 
     Q_D( HbSlider );
     HbWidget::mouseReleaseEvent( event );
     if( d->elementItemMap.contains(HbSlider::IncreaseElement) ) {
@@ -1918,6 +1920,9 @@
         }
     }
     d->stopRepeatAction( );
+#else
+    Q_UNUSED( event )
+#endif 
 }
 
 /*!
@@ -1933,22 +1938,70 @@
     if (HbTapGesture *tap = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) {
         QPointF pos = event->mapToGraphicsScene(tap->position());
         bool consumeEvent = false;
-        if ( d->elementItemMap.contains (HbSlider::IncreaseElement ) ) {
-            if (d->elementItemMap[HbSlider::IncreaseElement].touchItem ) {
-                if (d->elementItemMap[HbSlider::IncreaseElement].touchItem->sceneBoundingRect().contains(pos)) {
-                    consumeEvent = true;
+        switch( tap->state( ) ) {
+        case Qt::GestureStarted: {
+            if ( d->elementItemMap.contains (HbSlider::IncreaseElement ) ) {
+                if (d->elementItemMap[HbSlider::IncreaseElement].touchItem ) {
+                    if (d->elementItemMap[HbSlider::IncreaseElement].touchItem->sceneBoundingRect().contains(pos)) {
+                        consumeEvent = true;
+                        d->pressOnIncrement  = true;
+                        HbWidgetFeedback::triggered( d->sliderControl, Hb::InstantPressed, Hb::ModifierSliderElement );
+                        event->accept( );
+                        // increment and start reapeat timer 
+                        d->startIncrementing( );
+                    }
+                }
+            }
+            if ( d->elementItemMap.contains (HbSlider::DecreaseElement ) ) {
+                if (d->elementItemMap[HbSlider::DecreaseElement].touchItem ) {
+                    if (d->elementItemMap[HbSlider::DecreaseElement].touchItem->sceneBoundingRect().contains(pos))  {
+                        consumeEvent = true;
+                        d->pressOnIncrement  = false;
+                        HbWidgetFeedback::triggered( d->sliderControl, Hb::InstantPressed, Hb::ModifierSliderElement );
+                        event->accept( );
+                        //decrement and start decrement timer
+                        d->startDecrementing( );
+
+                    }
                 }
             }
         }
-        if ( d->elementItemMap.contains (HbSlider::DecreaseElement ) ) {
-            if (d->elementItemMap[HbSlider::DecreaseElement].touchItem ) {
-                if (d->elementItemMap[HbSlider::DecreaseElement].touchItem->sceneBoundingRect().contains(pos))  {
-                    consumeEvent = true;
+        break;
+        case Qt::GestureCanceled:
+        case Qt::GestureFinished:            
+            if ( d->elementItemMap.contains (HbSlider::IncreaseElement ) ) {
+                if (d->elementItemMap[HbSlider::IncreaseElement].touchItem ) {
+                    if ( d->pressOnIncrement ) {
+                        if( d->elementItemMap[HbSlider::IncreaseElement].touchItem->sceneBoundingRect().contains(pos)) {
+                            HbWidgetFeedback::triggered( d->sliderControl, Hb::InstantReleased, Hb::ModifierSliderElement );
+                            #ifdef HB_EFFECTS
+                            HbEffectInternal::add( HB_SLIDER_TYPE,"slidericon_release", "increaserelease" );
+                            HbEffect::start( d->elementItemMap[HbSlider::IncreaseElement].item, HB_SLIDER_TYPE, "increaserelease" );  
+                            #endif
+                        }
+                    }
                 }
             }
-        }
-
-       if(!consumeEvent) {
+            if ( d->elementItemMap.contains (HbSlider::DecreaseElement ) ) {
+                if (d->elementItemMap[HbSlider::DecreaseElement].touchItem ) {
+                    if( d->elementItemMap.contains(HbSlider::DecreaseElement) ) {
+                        if ( !d->pressOnIncrement ) {
+                            if( d->elementItemMap[HbSlider::DecreaseElement].touchItem->sceneBoundingRect().contains(pos) ) {
+                                HbWidgetFeedback::triggered( d->sliderControl, Hb::InstantReleased, Hb::ModifierSliderElement );
+                                #ifdef HB_EFFECTS
+                                HbEffectInternal::add( HB_SLIDER_TYPE,"slidericon_release", "decreaserelease" );
+                                HbEffect::start( d->elementItemMap[HbSlider::DecreaseElement].item, HB_SLIDER_TYPE, "decreaserelease" );  
+                                #endif
+                            }
+                        }
+                    }
+                }
+            }
+            d->stopRepeatAction( );
+            break;
+        default: break;
+        }    
+        if(!consumeEvent) {
            event->ignore();
            HbWidget::gestureEvent(event);
        }