src/hbwidgets/sliders/hbslider.cpp
changeset 28 b7da29130b0e
parent 23 e6ad4ef83b23
--- a/src/hbwidgets/sliders/hbslider.cpp	Thu Sep 02 20:44:51 2010 +0300
+++ b/src/hbwidgets/sliders/hbslider.cpp	Fri Sep 17 08:32:10 2010 +0300
@@ -965,8 +965,6 @@
         if ( d->elements.contains( HbSlider::TextElement ))  {
             d->elementWidget( HbSlider::TextElement );  
         }
-        // sets text for tooltip also
-        d->sliderControl->setToolTip( text );
     }
 }
 
@@ -1859,6 +1857,7 @@
  */
 void HbSlider::mousePressEvent( QGraphicsSceneMouseEvent *event )
 {
+#ifndef HB_GESTURE_FW 
     Q_D( HbSlider );
     HbWidget::mousePressEvent( event );
     if( d->elementItemMap.contains (HbSlider::IncreaseElement) ) {
@@ -1882,6 +1881,9 @@
             return;
         }
     }
+#else 
+    Q_UNUSED(event);
+#endif 
 }
 
 
@@ -1892,6 +1894,7 @@
  */
 void HbSlider::mouseReleaseEvent( QGraphicsSceneMouseEvent *event )
 {
+#ifndef HB_GESTURE_FW 
     Q_D( HbSlider );
     HbWidget::mouseReleaseEvent( event );
     if( d->elementItemMap.contains(HbSlider::IncreaseElement) ) {
@@ -1917,6 +1920,9 @@
         }
     }
     d->stopRepeatAction( );
+#else
+    Q_UNUSED( event )
+#endif 
 }
 
 /*!
@@ -1932,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);
        }