diff -r 7516d6d86cf5 -r ed14f46c0e55 src/hbwidgets/sliders/hbslider.cpp --- 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(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); }