diff -r 06ff229162e9 -r 11d3954df52a src/hbwidgets/sliders/hbslidertickmarks.cpp --- a/src/hbwidgets/sliders/hbslidertickmarks.cpp Fri May 14 16:09:54 2010 +0300 +++ b/src/hbwidgets/sliders/hbslidertickmarks.cpp Thu May 27 13:10:59 2010 +0300 @@ -25,14 +25,25 @@ #include "hbslidertickmarks_p.h" #include "hbwidget_p.h" -#include "hbslidercontrol_p.h" #include "hbsliderhandle_p.h" +#include "hbslider_p.h" #include #include #include #include #include +#include #include +#include +#include +#include + + +#ifdef HB_EFFECTS +#include "hbeffect.h" +#include "hbeffectinternal_p.h" +#define HB_SLIDER_TYPE "HB_SLIDER" +#endif @@ -46,11 +57,10 @@ public: HbSliderTickmarksPrivate(); void createTicks( ); - void updateTickSize( ); HbStyleOptionSlider sliderOption; QList tickmarkmajorIcons; QList tickmarkminorIcons; - HbSliderControl *sliderControl; + HbSlider *slider; Hb::SliderTickPositions tickPosition; bool createIcons; int majorTickWidth; @@ -63,7 +73,7 @@ HbSliderTickmarksPrivate::HbSliderTickmarksPrivate() :HbWidgetPrivate(){ tickmarkmajorIcons.clear(); tickmarkminorIcons.clear(); - sliderControl = 0; + slider = 0; tickPosition = Hb::NoSliderTicks; createIcons = true; majorTickWidth = 0; @@ -79,10 +89,10 @@ if(!createIcons){ return; } - int minimum = sliderControl->minimum(); - int maximum = sliderControl->maximum(); - int majorTickInterval = sliderControl->majorTickInterval ( ); - int minorTickInterval = sliderControl->minorTickInterval ( ); + int minimum = slider->minimum(); + int maximum = slider->maximum(); + int majorTickInterval = slider->majorTickInterval ( ); + int minorTickInterval = slider->minorTickInterval ( ); if (majorTickInterval) { int totalMajorTicks = ((maximum-minimum)/majorTickInterval)+1; int majorIconListLength = tickmarkmajorIcons.length(); @@ -128,19 +138,6 @@ q->setProperty("state", "normal"); } -void HbSliderTickmarksPrivate::updateTickSize() -{ - for(int i=0;isetMinimumSize(majorTickWidth,majorTickHeight); - tickmarkmajorIcons.at(i)->setMaximumSize(majorTickWidth,majorTickHeight); - } - for(int i=0;isetMinimumSize(minorTickWidth,minorTickHeight); - tickmarkminorIcons.at(i)->setMaximumSize(minorTickWidth,minorTickHeight); - } - - -} void HbSliderTickmarks::resizeEvent(QGraphicsSceneResizeEvent *event) { @@ -163,7 +160,7 @@ { Q_D( HbSliderTickmarks ); d->q_ptr = this; - d->sliderControl=dynamic_cast( parentItem() ); + d->slider=dynamic_cast( parentItem() ); d->createTicks(); } @@ -174,26 +171,7 @@ { } -void HbSliderTickmarks::createIcons( bool create ) -{ - Q_D(HbSliderTickmarks); - d->createIcons = create; - if (!create) { - while ( d->tickmarkmajorIcons.length() > 0) { - QGraphicsWidget *iconItem = d->tickmarkmajorIcons.at(0); - d->tickmarkmajorIcons.removeAll(iconItem); - delete iconItem; - } - while ( d->tickmarkminorIcons.length() > 0) { - QGraphicsWidget *iconItem = d->tickmarkminorIcons.at(0); - d->tickmarkminorIcons.removeAll(iconItem); - delete iconItem; - } - } else { - d->createTicks(); - } - } /*! updates the ticks whenever there is change in position or number of ticks */ @@ -205,22 +183,27 @@ return; } d->createTicks(); - d->updateTickSize(); - int minimum = d->sliderControl->minimum(); - int maximum = d->sliderControl->maximum(); - int majorTickInterval = d->sliderControl->majorTickInterval ( ); - int minorTickInterval = d->sliderControl->minorTickInterval ( ); + int minimum = d->slider->minimum(); + int maximum = d->slider->maximum(); + int majorTickInterval = d->slider->majorTickInterval ( ); + int minorTickInterval = d->slider->minorTickInterval ( ); qreal span = 0; - bool rtlLayout = (((d->sliderControl->orientation()!=Qt::Vertical)&& + bool rtlLayout = (((d->slider->orientation()!=Qt::Vertical)&& (HbApplication::layoutDirection() == Qt::LeftToRight))?false:true); - HbSliderHandle *handle = dynamic_cast (d->sliderControl->primitive (HbStyle::P_Slider_thumb)); - if ( d->sliderControl->orientation() == Qt::Horizontal) { - span = d->sliderControl->size().width(); - span-=handle->size().width(); + HbSliderPrivate *sliderPrivate = dynamic_cast(HbSliderPrivate::d_ptr(d->slider)); + QSizeF handleSize(0.0,0.0); + if( sliderPrivate) { + handleSize = sliderPrivate->getHandleSize( ); + } else { + return; } - if ( d->sliderControl->orientation() == Qt::Vertical) { - span = d->sliderControl->size().height(); - span-=handle->size().height(); + if ( d->slider->orientation() == Qt::Horizontal) { + span = boundingRect().width(); + span-=handleSize.width(); + } + if ( d->slider->orientation() == Qt::Vertical) { + span = boundingRect().height(); + span-=handleSize.height(); } if (majorTickInterval) { int totalMajorTicks = ((maximum-minimum)/majorTickInterval)+1; @@ -228,22 +211,20 @@ QGraphicsWidget *iconItem = d->tickmarkmajorIcons.at ( i); HbStyleOptionSlider opt; initStyleOption(&opt); - opt.orientation = d->sliderControl->orientation(); + opt.orientation = d->slider->orientation(); style()->updatePrimitive(iconItem,HbStyle::P_SliderTickMark_majoricon,&opt); int pos = QStyle::sliderPositionFromValue( minimum, maximum, minimum+majorTickInterval*i,static_cast( span ), rtlLayout ); - if ( d->sliderControl->orientation() == Qt::Horizontal) { - qreal correctedPosX = handle->size().width()/2+pos; - qreal correctedPosY = 0; - iconItem->setPos ( correctedPosX,correctedPosY ); - iconItem->update(); + qreal correctedPosX = 0; + qreal correctedPosY = 0; + if ( d->slider->orientation() == Qt::Horizontal) { + correctedPosX = handleSize.width()/2+pos; } else { - qreal correctedPosY = handle->size().height()/2+pos; - qreal correctedPosX =0; - iconItem->setPos ( correctedPosX,correctedPosY ); - iconItem->update(); + correctedPosY = handleSize.height()/2+pos; } + iconItem->setGeometry (QRectF( correctedPosX,correctedPosY ,d->majorTickWidth,d->majorTickHeight)); + iconItem->update(); } } if (minorTickInterval) { @@ -259,24 +240,20 @@ minorIndex++; HbStyleOptionSlider opt; initStyleOption(&opt); - opt.orientation = d->sliderControl->orientation(); + opt.orientation = d->slider->orientation(); style()->updatePrimitive(iconItem,HbStyle::P_SliderTickMark_minoricon,&opt); int pos = QStyle::sliderPositionFromValue( minimum, maximum, minimum+minorTickInterval*i,static_cast( span ), rtlLayout ); - - if ( d->sliderControl->orientation() == Qt::Horizontal) { - qreal correctedPosX = handle->size().width()/2+pos; - qreal correctedPosY = 0; - iconItem->setPos ( correctedPosX,correctedPosY ); - iconItem->update(); + qreal correctedPosX = 0; + qreal correctedPosY = 0; + if ( d->slider->orientation() == Qt::Horizontal) { + correctedPosX = handleSize.width()/2+pos; } else { - qreal correctedPosY = handle->size().height()/2+pos; - qreal correctedPosX =0; - iconItem->setPos ( correctedPosX,correctedPosY ); - iconItem->update(); - + correctedPosY = handleSize.height()/2+pos; } + iconItem->setGeometry (QRectF( correctedPosX,correctedPosY ,d->majorTickWidth,d->majorTickHeight)); + iconItem->update(); } } }