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( ) ) ); |
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 } |
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 |