mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-13 08:08:42 +00:00
AllPlot Zooming Cosmetics
.. slider removed as it was ugly .. handles are placed on the same side as the axis being manipulated, since its irritating to click on an axis then have to move mouse to the other side of the chart
This commit is contained in:
@@ -43,7 +43,8 @@ QxtSpanSliderPrivate::QxtSpanSliderPrivate() :
|
||||
upperPressed(QStyle::SC_None),
|
||||
movement(QxtSpanSlider::FreeMovement),
|
||||
firstMovement(false),
|
||||
blockTracking(false)
|
||||
blockTracking(false),
|
||||
showRail(true)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -488,6 +489,19 @@ void QxtSpanSlider::setSpan(int lower, int upper)
|
||||
}
|
||||
}
|
||||
|
||||
bool QxtSpanSlider::showRail() const
|
||||
{
|
||||
return qxt_d().showRail;
|
||||
}
|
||||
|
||||
void QxtSpanSlider::setShowRail(bool showrail)
|
||||
{
|
||||
// set and hide
|
||||
if (qxt_d().showRail != showrail) {
|
||||
qxt_d().showRail = showrail;
|
||||
update();
|
||||
}
|
||||
}
|
||||
/*!
|
||||
\property QxtSpanSlider::lowerPosition
|
||||
\brief the lower position of the span
|
||||
@@ -701,17 +715,22 @@ void QxtSpanSlider::paintEvent(QPaintEvent* event)
|
||||
Q_UNUSED(event);
|
||||
QStylePainter painter(this);
|
||||
|
||||
// ticks
|
||||
QStyleOptionSlider opt;
|
||||
qxt_d().initStyleOption(&opt);
|
||||
opt.subControls = QStyle::SC_SliderTickmarks;
|
||||
painter.drawComplexControl(QStyle::CC_Slider, opt);
|
||||
|
||||
// groove
|
||||
opt.sliderValue = 0;
|
||||
opt.sliderPosition = 0;
|
||||
opt.subControls = QStyle::SC_SliderGroove;
|
||||
painter.drawComplexControl(QStyle::CC_Slider, opt);
|
||||
//no rail wanted, just the handles
|
||||
if (qxt_d().showRail) {
|
||||
|
||||
// ticks
|
||||
qxt_d().initStyleOption(&opt);
|
||||
opt.subControls = QStyle::SC_SliderTickmarks;
|
||||
painter.drawComplexControl(QStyle::CC_Slider, opt);
|
||||
|
||||
// groove
|
||||
opt.sliderValue = 0;
|
||||
opt.sliderPosition = 0;
|
||||
opt.subControls = QStyle::SC_SliderGroove;
|
||||
painter.drawComplexControl(QStyle::CC_Slider, opt);
|
||||
}
|
||||
|
||||
// handle rects
|
||||
opt.sliderPosition = qxt_d().lowerPos;
|
||||
@@ -730,7 +749,9 @@ void QxtSpanSlider::paintEvent(QPaintEvent* event)
|
||||
spanRect = QRect(QPoint(minv, c.y() - 2), QPoint(maxv, c.y() + 1));
|
||||
else
|
||||
spanRect = QRect(QPoint(c.x() - 2, minv), QPoint(c.x() + 1, maxv));
|
||||
qxt_d().drawSpan(&painter, spanRect);
|
||||
|
||||
// we don't want a groove
|
||||
if (qxt_d().showRail) qxt_d().drawSpan(&painter, spanRect);
|
||||
|
||||
// handles
|
||||
switch (qxt_d().lastPressed)
|
||||
|
||||
@@ -39,6 +39,7 @@ class QXT_GUI_EXPORT QxtSpanSlider : public QSlider
|
||||
Q_PROPERTY(int upperValue READ upperValue WRITE setUpperValue)
|
||||
Q_PROPERTY(int lowerPosition READ lowerPosition WRITE setLowerPosition)
|
||||
Q_PROPERTY(int upperPosition READ upperPosition WRITE setUpperPosition)
|
||||
Q_PROPERTY(bool showRail READ showRail WRITE setShowRail)
|
||||
Q_PROPERTY(HandleMovementMode handleMovementMode READ handleMovementMode WRITE setHandleMovementMode)
|
||||
Q_ENUMS(HandleMovementMode)
|
||||
|
||||
@@ -70,6 +71,8 @@ public:
|
||||
int lowerPosition() const;
|
||||
int upperPosition() const;
|
||||
|
||||
bool showRail() const;
|
||||
|
||||
public Q_SLOTS:
|
||||
void setLowerValue(int lower);
|
||||
void setUpperValue(int upper);
|
||||
@@ -78,6 +81,8 @@ public Q_SLOTS:
|
||||
void setLowerPosition(int lower);
|
||||
void setUpperPosition(int upper);
|
||||
|
||||
void setShowRail(bool);
|
||||
|
||||
Q_SIGNALS:
|
||||
void spanChanged(int lower, int upper);
|
||||
void lowerValueChanged(int lower);
|
||||
|
||||
@@ -66,6 +66,7 @@ public:
|
||||
QxtSpanSlider::HandleMovementMode movement;
|
||||
bool firstMovement;
|
||||
bool blockTracking;
|
||||
bool showRail;
|
||||
|
||||
public Q_SLOTS:
|
||||
void updateRange(int min, int max);
|
||||
|
||||
@@ -70,6 +70,9 @@ class CurveColors : public QObject
|
||||
CurveColors(QwtPlot *plot) : isolated(false), plot(plot) {
|
||||
saveState();
|
||||
|
||||
QPalette matchCanvas;
|
||||
matchCanvas.setColor(QPalette::Button, GColor(CRIDEPLOTBACKGROUND));
|
||||
|
||||
// span slider appears when curve isolated
|
||||
// to enable zooming in and out
|
||||
slider = new QxtSpanSlider(Qt::Vertical, plot);
|
||||
@@ -77,6 +80,9 @@ class CurveColors : public QObject
|
||||
slider->setHandleMovementMode(QxtSpanSlider::NoOverlapping);
|
||||
slider->setMinimum(0);
|
||||
slider->setMaximum(100); // %age
|
||||
slider->setShowRail(false); // no rail please
|
||||
slider->setPalette(matchCanvas); // don't stand out so much
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
// BUG in QMacStyle and painting of spanSlider
|
||||
// so we use a plain style to avoid it, but only
|
||||
@@ -199,7 +205,12 @@ class CurveColors : public QObject
|
||||
|
||||
if (showslider && c.key()->yAxis() == id) {
|
||||
|
||||
slider->move(plot->canvas()->pos().x(), 10);
|
||||
if (c.key()->yAxis().pos == QwtAxis::yLeft)
|
||||
slider->move(plot->canvas()->pos().x(), 10);
|
||||
else
|
||||
slider->move(plot->canvas()->pos().x() +
|
||||
plot->canvas()->width() - slider->width(), 10);
|
||||
|
||||
slider->setLowerValue(0);
|
||||
slider->setUpperValue(100);
|
||||
slider->setFixedHeight(plot->canvas()->height()-20);
|
||||
|
||||
Reference in New Issue
Block a user