clean up Toggle implementation

This commit is contained in:
laserpants 2016-05-01 20:05:12 +03:00
parent 5eac1af474
commit 1d47c85c49
2 changed files with 17 additions and 17 deletions

View File

@ -32,13 +32,14 @@ void Thumb::setProgress(qreal progress)
{
if (_progress == progress)
return;
_progress = progress;
const QSize s(Qt::Horizontal == _toggle->orientation()
? size() : size().transposed());
setOffset(progress*static_cast<qreal>(s.width()-s.height()));
emit progressChanged(progress);
_toggle->updateOverlayGeometry();
update();
}
@ -97,6 +98,16 @@ void Thumb::paintEvent(QPaintEvent *event)
}
}
void Toggle::updateOverlayGeometry()
{
const int offset = _thumb->offset();
if (Qt::Horizontal == _orientation) {
_overlay->setGeometry(geometry().adjusted(-10+offset, -20, 10+offset, 20));
} else {
_overlay->setGeometry(geometry().adjusted(-10, -20+offset, 10, 20+offset));
}
}
Toggle::Toggle(QWidget *parent)
: QAbstractButton(parent),
_thumb(new Thumb(this)),
@ -115,7 +126,6 @@ Toggle::Toggle(QWidget *parent)
_thumb->installEventFilter(this);
connect(_thumb, SIGNAL(clicked()), this, SLOT(addRipple()));
connect(_thumb, SIGNAL(progressChanged(qreal)), this, SLOT(updateOverlayGeometry()));
}
Toggle::~Toggle()
@ -149,17 +159,6 @@ void Toggle::addRipple()
}
}
void Toggle::updateOverlayGeometry()
{
const int d = _thumb->offset();
if (Qt::Horizontal == _orientation) {
_overlay->setGeometry(geometry().adjusted(-10+d, -20, 10+d, 20));
} else {
_overlay->setGeometry(geometry().adjusted(-10, -20+d, 10, 20+d));
}
}
bool Toggle::event(QEvent *event)
{
const QEvent::Type type = event->type();

View File

@ -11,7 +11,7 @@ class Thumb : public QWidget
{
Q_OBJECT
Q_PROPERTY(qreal progress WRITE setProgress READ progress NOTIFY progressChanged)
Q_PROPERTY(qreal progress WRITE setProgress READ progress)
public:
explicit Thumb(Toggle *parent);
@ -25,7 +25,6 @@ public:
signals:
void clicked();
void progressChanged(qreal);
protected:
bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
@ -43,6 +42,10 @@ class Toggle : public QAbstractButton
{
Q_OBJECT
friend class Thumb;
void updateOverlayGeometry();
public:
explicit Toggle(QWidget *parent = 0);
~Toggle();
@ -54,14 +57,12 @@ public:
protected slots:
void addRipple();
void updateOverlayGeometry();
protected:
bool event(QEvent *event) Q_DECL_OVERRIDE;
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
private:
Thumb *const _thumb;
RippleOverlay *const _overlay;
Qt::Orientation _orientation;