--- a/src/hbwidgets/sliders/hbslidertickmarks.cpp Thu Jul 15 14:03:49 2010 +0100
+++ b/src/hbwidgets/sliders/hbslidertickmarks.cpp Thu Jul 22 16:36:53 2010 +0100
@@ -25,14 +25,24 @@
#include "hbslidertickmarks_p.h"
#include "hbwidget_p.h"
-#include "hbslidercontrol_p.h"
#include "hbsliderhandle_p.h"
+#include "hbslider_p.h"
#include <hbstyle.h>
#include <hbstyleoptionslider_p.h>
-#include <hbstyle.h>
#include <hbapplication.h>
#include <hbiconitem.h>
+#include <hbslider.h>
#include <QList>
+#include <QGraphicsItem>
+#include <QGraphicsSceneEvent>
+#include <QGraphicsScene>
+
+
+#ifdef HB_EFFECTS
+#include "hbeffect.h"
+#include "hbeffectinternal_p.h"
+#define HB_SLIDER_TYPE "HB_SLIDER"
+#endif
@@ -45,55 +55,49 @@
public:
HbSliderTickmarksPrivate();
- void createTicks( );
- void updateTickSize( );
HbStyleOptionSlider sliderOption;
QList<QGraphicsWidget *> tickmarkmajorIcons;
QList<QGraphicsWidget *> tickmarkminorIcons;
- HbSliderControl *sliderControl;
+ HbSlider *slider;
Hb::SliderTickPositions tickPosition;
- bool createIcons;
- int majorTickWidth;
- int minorTickWidth;
- int majorTickHeight;
- int minorTickHeight;
+ qreal majorTickWidth;
+ qreal minorTickWidth;
+ qreal majorTickHeight;
+ qreal minorTickHeight;
+ Qt::Orientation sliderOrientation;
};
HbSliderTickmarksPrivate::HbSliderTickmarksPrivate() :HbWidgetPrivate(){
tickmarkmajorIcons.clear();
tickmarkminorIcons.clear();
- sliderControl = 0;
+ slider = 0;
tickPosition = Hb::NoSliderTicks;
- createIcons = true;
majorTickWidth = 0;
minorTickWidth = 0;
majorTickHeight = 0;
minorTickHeight = 0;
+ sliderOrientation = Qt::Vertical;
}
-
-void HbSliderTickmarksPrivate::createTicks( )
+void HbSliderTickmarks::createTicks( )
{
- Q_Q ( HbSliderTickmarks );
- if(!createIcons){
- return;
- }
- int minimum = sliderControl->minimum();
- int maximum = sliderControl->maximum();
- int majorTickInterval = sliderControl->majorTickInterval ( );
- int minorTickInterval = sliderControl->minorTickInterval ( );
+ Q_D ( HbSliderTickmarks );
+ int minimum = d->slider->minimum();
+ int maximum =d->slider->maximum();
+ int majorTickInterval = d->slider->majorTickInterval ( );
+ int minorTickInterval =d-> slider->minorTickInterval ( );
if (majorTickInterval) {
int totalMajorTicks = ((maximum-minimum)/majorTickInterval)+1;
- int majorIconListLength = tickmarkmajorIcons.length();
+ int majorIconListLength = d->tickmarkmajorIcons.length();
for (int i=majorIconListLength;i<totalMajorTicks;i++) {
- QGraphicsItem *iconItem = q->style()->createPrimitive(HbStyle::P_SliderTickMark_majoricon, q);
+ QGraphicsItem *iconItem =style()->createPrimitive(HbStyle::P_SliderTickMark_majoricon, this);
Q_ASSERT(iconItem->isWidget());
- tickmarkmajorIcons.append(static_cast<QGraphicsWidget *>(iconItem));//add newly defind primitive
+ d->tickmarkmajorIcons.append(static_cast<QGraphicsWidget *>(iconItem));//add newly defind primitive
}
- while ( totalMajorTicks < tickmarkmajorIcons.length() ) {
- QGraphicsWidget *iconItem = tickmarkmajorIcons.at(totalMajorTicks);
- tickmarkmajorIcons.removeAll(iconItem);
+ while ( totalMajorTicks < d->tickmarkmajorIcons.length() ) {
+ QGraphicsWidget *iconItem = d->tickmarkmajorIcons.at(totalMajorTicks);
+ d->tickmarkmajorIcons.removeAll(iconItem);
delete iconItem;
}
}
@@ -107,40 +111,27 @@
}
}
}
- int minorIconListLength = tickmarkminorIcons.length();
+ int minorIconListLength = d->tickmarkminorIcons.length();
for (int i=minorIconListLength;i<totalMinorTicks;i++) {
- QGraphicsItem *iconItem = q->style()->createPrimitive(HbStyle::P_SliderTickMark_minoricon, q);
+ QGraphicsItem *iconItem = style()->createPrimitive(HbStyle::P_SliderTickMark_minoricon, this);
Q_ASSERT(iconItem->isWidget());
- tickmarkminorIcons.append(static_cast<QGraphicsWidget *>(iconItem));//add newly defind primitive
+ d->tickmarkminorIcons.append(static_cast<QGraphicsWidget *>(iconItem));//add newly defind primitive
}
- while (totalMinorTicks < tickmarkminorIcons.length() ){
- QGraphicsWidget *iconItem = tickmarkminorIcons.at(totalMinorTicks);
- tickmarkminorIcons.removeAll(iconItem);
+ while (totalMinorTicks < d->tickmarkminorIcons.length() ){
+ QGraphicsWidget *iconItem = d->tickmarkminorIcons.at(totalMinorTicks);
+ d->tickmarkminorIcons.removeAll(iconItem);
delete iconItem;
}
} else {
- while (tickmarkminorIcons.length() > 0 ){
- QGraphicsWidget *iconItem = tickmarkminorIcons.at(0);
- tickmarkminorIcons.removeAll(iconItem);
+ while (d->tickmarkminorIcons.length() > 0 ){
+ QGraphicsWidget *iconItem = d->tickmarkminorIcons.at(0);
+ d->tickmarkminorIcons.removeAll(iconItem);
delete iconItem;
}
}
- q->setProperty("state", "normal");
+ setProperty("state", "normal");
}
-void HbSliderTickmarksPrivate::updateTickSize()
-{
- for(int i=0;i<tickmarkmajorIcons.length();i++) {
- tickmarkmajorIcons.at(i)->setMinimumSize(majorTickWidth,majorTickHeight);
- tickmarkmajorIcons.at(i)->setMaximumSize(majorTickWidth,majorTickHeight);
- }
- for(int i=0;i<tickmarkminorIcons.length();i++) {
- tickmarkminorIcons.at(i)->setMinimumSize(minorTickWidth,minorTickHeight);
- tickmarkminorIcons.at(i)->setMaximumSize(minorTickWidth,minorTickHeight);
- }
-
-
-}
void HbSliderTickmarks::resizeEvent(QGraphicsSceneResizeEvent *event)
{
@@ -163,8 +154,9 @@
{
Q_D( HbSliderTickmarks );
d->q_ptr = this;
- d->sliderControl=dynamic_cast<HbSliderControl*>( parentItem() );
- d->createTicks();
+ d->slider=dynamic_cast<HbSlider*>( parentItem() );
+ createTicks();
+ d->sliderOrientation = d->slider->orientation( );
}
/*!
@@ -174,26 +166,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
*/
@@ -201,26 +174,27 @@
void HbSliderTickmarks::updateTicks( )
{
Q_D ( HbSliderTickmarks );
- if(!d->createIcons) {
+ 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->slider->orientation()!=Qt::Vertical)&&
+ (HbApplication::layoutDirection() == Qt::LeftToRight))?false:true);
+ HbSliderPrivate *sliderPrivate = dynamic_cast<HbSliderPrivate*>(HbSliderPrivate::d_ptr(d->slider));
+ QSizeF handleSize(0.0,0.0);
+ if( sliderPrivate) {
+ handleSize = sliderPrivate->getHandleSize( );
+ } else {
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 ( );
- qreal span = 0;
- bool rtlLayout = (((d->sliderControl->orientation()!=Qt::Vertical)&&
- (HbApplication::layoutDirection() == Qt::LeftToRight))?false:true);
- HbSliderHandle *handle = dynamic_cast <HbSliderHandle *> (d->sliderControl->primitive (HbStyle::P_Slider_thumb));
- if ( d->sliderControl->orientation() == Qt::Horizontal) {
- span = d->sliderControl->size().width();
- span-=handle->size().width();
+ if ( d->slider->orientation() == Qt::Horizontal) {
+ span = boundingRect().width();
+ span-=handleSize.width();
}
- if ( d->sliderControl->orientation() == Qt::Vertical) {
- span = d->sliderControl->size().height();
- span-=handle->size().height();
+ if ( d->slider->orientation() == Qt::Vertical) {
+ span = boundingRect().height();
+ span-=handleSize.height();
}
if (majorTickInterval) {
int totalMajorTicks = ((maximum-minimum)/majorTickInterval)+1;
@@ -228,22 +202,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<int>( 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,26 +231,23 @@
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<int>( 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();
}
}
+ update(boundingRect());
}
/* !
@@ -316,16 +285,21 @@
void HbSliderTickmarks::polish( HbStyleParameters& params )
{
Q_D (HbSliderTickmarks);
- params.addParameter("fixed-width-major");
- params.addParameter("fixed-height-major");
- params.addParameter("fixed-width-minor");
- params.addParameter("fixed-height-minor");
- HbWidget::polish(params);
- d->majorTickWidth = params.value("fixed-width-major").toInt();
- d->majorTickHeight = params.value("fixed-height-major").toInt();
- d->minorTickWidth = params.value("fixed-width-minor").toInt();
- d->minorTickHeight = params.value("fixed-height-minor").toInt();
- updateTicks();
+ if (d->majorTickHeight == 0 || d->sliderOrientation!= d->slider->orientation() ) {
+ d->sliderOrientation = d->slider->orientation();
+ params.addParameter("fixed-width-major");
+ params.addParameter("fixed-height-major");
+ params.addParameter("fixed-width-minor");
+ params.addParameter("fixed-height-minor");
+ HbWidget::polish(params);
+ d->majorTickWidth = params.value("fixed-width-major").toReal();
+ d->majorTickHeight = params.value("fixed-height-major").toReal();
+ d->minorTickWidth = params.value("fixed-width-minor").toReal();
+ d->minorTickHeight = params.value("fixed-height-minor").toReal();
+ } else {
+ HbWidget::polish(params);
+ updateTicks();
+ }
}
//end of file