clean up Toggle implementation
This commit is contained in:
parent
5eac1af474
commit
1d47c85c49
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue