23 #include <QStyleOptionFrame>
24 #include <QMouseEvent>
44 m_markerColor(Qt::white)
63 , d(new Private(this))
86 kWarning() <<
"KXYSelector::setRange invalid range: " << _maxX <<
" == " << _minX <<
" (for X) ";
90 kWarning() <<
"KXYSelector::setRange invalid range: " << _maxY <<
" == " << _minY <<
" (for Y) ";
95 int w = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
116 d->setValues(_xPos, _yPos);
121 int w = q->style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
128 else if ( xPos < minX )
133 else if ( yPos < minY )
136 Q_ASSERT(maxX != minX);
137 int xp = w + (q->width() - 2 * w) * xPos / (maxX - minX);
139 Q_ASSERT(maxY != minY);
140 int yp = q->height() - w - (q->height() - 2 * w) * yPos / (maxY - minY);
142 q->setPosition( xp, yp );
147 d->m_markerColor = col;
152 int w = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
153 return rect().adjusted(w, w, -w, -w);
158 int w = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
159 return QSize( 2 * w, 2 * w );
164 QStyleOptionFrame opt;
168 painter.begin(
this );
173 style()->drawPrimitive( QStyle::PE_Frame, &opt, &painter,
this );
186 int w = style()->pixelMetric( QStyle::PM_DefaultFrameWidth );
195 if ( e->orientation() == Qt::Horizontal )
205 int w = style()->pixelMetric( QStyle::PM_DefaultFrameWidth );
207 xVal = ( ( d->maxX - d->minX ) * ( x - w ) ) / ( width() - 2 * w );
208 yVal = d->maxY - ( ( ( d->maxY - d->minY ) * (y - w) ) / ( height() - 2 * w ) );
210 if ( xVal > d->maxX )
212 else if ( xVal < d->minX )
215 if ( yVal > d->maxY )
217 else if ( yVal < d->minY )
221 void KXYSelector::setPosition(
int xp,
int yp )
223 int w = style()->pixelMetric( QStyle::PM_DefaultFrameWidth );
227 else if ( xp > width() - w )
232 else if ( yp > height() - w )
247 QPen pen( d->m_markerColor );
256 p->drawEllipse(xp - 4, yp - 4, 8, 8);
261 #include "kxyselector.moc"