From 1d47c85c4960074d844d6b5ed5878e30f2c22676 Mon Sep 17 00:00:00 2001 From: laserpants Date: Sun, 1 May 2016 20:05:12 +0300 Subject: [PATCH] clean up Toggle implementation --- components/toggle.cpp | 25 ++++++++++++------------- components/toggle.h | 9 +++++---- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/components/toggle.cpp b/components/toggle.cpp index f113706..6e51a82 100644 --- a/components/toggle.cpp +++ b/components/toggle.cpp @@ -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(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(); diff --git a/components/toggle.h b/components/toggle.h index b06d84b..b00a4ee 100644 --- a/components/toggle.h +++ b/components/toggle.h @@ -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;