Slider moved
This commit is contained in:
parent
ef1427c9f3
commit
098267afee
|
|
@ -5,28 +5,30 @@
|
||||||
#include "qtmaterialslider_internal.h"
|
#include "qtmaterialslider_internal.h"
|
||||||
#include "lib/qtmaterialstyle.h"
|
#include "lib/qtmaterialstyle.h"
|
||||||
#include "lib/qtmaterialstatetransitionevent.h"
|
#include "lib/qtmaterialstatetransitionevent.h"
|
||||||
|
namespace md
|
||||||
|
{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \class QtMaterialSliderPrivate
|
* \class QtMaterialSliderPrivate
|
||||||
* \internal
|
* \internal
|
||||||
*/
|
*/
|
||||||
|
|
||||||
QtMaterialSliderPrivate::QtMaterialSliderPrivate(QtMaterialSlider *q)
|
SliderPrivate::SliderPrivate(Slider *q)
|
||||||
: q_ptr(q)
|
: q_ptr(q)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
QtMaterialSliderPrivate::~QtMaterialSliderPrivate()
|
SliderPrivate::~SliderPrivate()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtMaterialSliderPrivate::init()
|
void SliderPrivate::init()
|
||||||
{
|
{
|
||||||
Q_Q(QtMaterialSlider);
|
Q_Q(Slider);
|
||||||
|
|
||||||
thumb = new QtMaterialSliderThumb(q);
|
thumb = new SliderThumb(q);
|
||||||
track = new QtMaterialSliderTrack(thumb, q);
|
track = new SliderTrack(thumb, q);
|
||||||
stateMachine = new QtMaterialSliderStateMachine(q, thumb, track);
|
stateMachine = new SliderStateMachine(q, thumb, track);
|
||||||
stepTo = 0;
|
stepTo = 0;
|
||||||
oldValue = q->value();
|
oldValue = q->value();
|
||||||
trackWidth = 2;
|
trackWidth = 2;
|
||||||
|
|
@ -55,9 +57,9 @@ void QtMaterialSliderPrivate::init()
|
||||||
QCoreApplication::processEvents();
|
QCoreApplication::processEvents();
|
||||||
}
|
}
|
||||||
|
|
||||||
QRectF QtMaterialSliderPrivate::trackBoundingRect() const
|
QRectF SliderPrivate::trackBoundingRect() const
|
||||||
{
|
{
|
||||||
Q_Q(const QtMaterialSlider);
|
Q_Q(const Slider);
|
||||||
|
|
||||||
qreal hw = static_cast<qreal>(trackWidth)/2;
|
qreal hw = static_cast<qreal>(trackWidth)/2;
|
||||||
|
|
||||||
|
|
@ -68,9 +70,9 @@ QRectF QtMaterialSliderPrivate::trackBoundingRect() const
|
||||||
q->height() - QT_MATERIAL_SLIDER_MARGIN*2);
|
q->height() - QT_MATERIAL_SLIDER_MARGIN*2);
|
||||||
}
|
}
|
||||||
|
|
||||||
QRectF QtMaterialSliderPrivate::thumbBoundingRect() const
|
QRectF SliderPrivate::thumbBoundingRect() const
|
||||||
{
|
{
|
||||||
Q_Q(const QtMaterialSlider);
|
Q_Q(const Slider);
|
||||||
|
|
||||||
return Qt::Horizontal == q->orientation()
|
return Qt::Horizontal == q->orientation()
|
||||||
? QRectF(thumb->offset(), q->height()/2 - QT_MATERIAL_SLIDER_MARGIN,
|
? QRectF(thumb->offset(), q->height()/2 - QT_MATERIAL_SLIDER_MARGIN,
|
||||||
|
|
@ -79,9 +81,9 @@ QRectF QtMaterialSliderPrivate::thumbBoundingRect() const
|
||||||
QT_MATERIAL_SLIDER_MARGIN*2, QT_MATERIAL_SLIDER_MARGIN*2);
|
QT_MATERIAL_SLIDER_MARGIN*2, QT_MATERIAL_SLIDER_MARGIN*2);
|
||||||
}
|
}
|
||||||
|
|
||||||
int QtMaterialSliderPrivate::valueFromPosition(const QPoint &pos) const
|
int SliderPrivate::valueFromPosition(const QPoint &pos) const
|
||||||
{
|
{
|
||||||
Q_Q(const QtMaterialSlider);
|
Q_Q(const Slider);
|
||||||
|
|
||||||
const int position = Qt::Horizontal == q->orientation() ? pos.x() : pos.y();
|
const int position = Qt::Horizontal == q->orientation() ? pos.x() : pos.y();
|
||||||
|
|
||||||
|
|
@ -89,7 +91,7 @@ int QtMaterialSliderPrivate::valueFromPosition(const QPoint &pos) const
|
||||||
? q->width() - QT_MATERIAL_SLIDER_MARGIN*2
|
? q->width() - QT_MATERIAL_SLIDER_MARGIN*2
|
||||||
: q->height() - QT_MATERIAL_SLIDER_MARGIN*2;
|
: q->height() - QT_MATERIAL_SLIDER_MARGIN*2;
|
||||||
|
|
||||||
return QtMaterialStyle::sliderValueFromPosition(
|
return Style::sliderValueFromPosition(
|
||||||
q->minimum(),
|
q->minimum(),
|
||||||
q->maximum(),
|
q->maximum(),
|
||||||
position - QT_MATERIAL_SLIDER_MARGIN,
|
position - QT_MATERIAL_SLIDER_MARGIN,
|
||||||
|
|
@ -97,9 +99,9 @@ int QtMaterialSliderPrivate::valueFromPosition(const QPoint &pos) const
|
||||||
q->invertedAppearance());
|
q->invertedAppearance());
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtMaterialSliderPrivate::setHovered(bool status)
|
void SliderPrivate::setHovered(bool status)
|
||||||
{
|
{
|
||||||
Q_Q(QtMaterialSlider);
|
Q_Q(Slider);
|
||||||
|
|
||||||
if (hover == status) {
|
if (hover == status) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -109,9 +111,9 @@ void QtMaterialSliderPrivate::setHovered(bool status)
|
||||||
|
|
||||||
if (!q->hasFocus()) {
|
if (!q->hasFocus()) {
|
||||||
if (status) {
|
if (status) {
|
||||||
stateMachine->postEvent(new QtMaterialStateTransitionEvent(SliderNoFocusMouseEnter));
|
stateMachine->postEvent(new StateTransitionEvent(SliderNoFocusMouseEnter));
|
||||||
} else {
|
} else {
|
||||||
stateMachine->postEvent(new QtMaterialStateTransitionEvent(SliderNoFocusMouseLeave));
|
stateMachine->postEvent(new StateTransitionEvent(SliderNoFocusMouseLeave));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -122,20 +124,20 @@ void QtMaterialSliderPrivate::setHovered(bool status)
|
||||||
* \class QtMaterialSlider
|
* \class QtMaterialSlider
|
||||||
*/
|
*/
|
||||||
|
|
||||||
QtMaterialSlider::QtMaterialSlider(QWidget *parent)
|
Slider::Slider(QWidget *parent)
|
||||||
: QAbstractSlider(parent),
|
: QAbstractSlider(parent),
|
||||||
d_ptr(new QtMaterialSliderPrivate(this))
|
d_ptr(new SliderPrivate(this))
|
||||||
{
|
{
|
||||||
d_func()->init();
|
d_func()->init();
|
||||||
}
|
}
|
||||||
|
|
||||||
QtMaterialSlider::~QtMaterialSlider()
|
Slider::~Slider()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtMaterialSlider::setUseThemeColors(bool value)
|
void Slider::setUseThemeColors(bool value)
|
||||||
{
|
{
|
||||||
Q_D(QtMaterialSlider);
|
Q_D(Slider);
|
||||||
|
|
||||||
if (d->useThemeColors == value) {
|
if (d->useThemeColors == value) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -145,16 +147,16 @@ void QtMaterialSlider::setUseThemeColors(bool value)
|
||||||
d->stateMachine->setupProperties();
|
d->stateMachine->setupProperties();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QtMaterialSlider::useThemeColors() const
|
bool Slider::useThemeColors() const
|
||||||
{
|
{
|
||||||
Q_D(const QtMaterialSlider);
|
Q_D(const Slider);
|
||||||
|
|
||||||
return d->useThemeColors;
|
return d->useThemeColors;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtMaterialSlider::setThumbColor(const QColor &color)
|
void Slider::setThumbColor(const QColor &color)
|
||||||
{
|
{
|
||||||
Q_D(QtMaterialSlider);
|
Q_D(Slider);
|
||||||
|
|
||||||
d->thumbColor = color;
|
d->thumbColor = color;
|
||||||
|
|
||||||
|
|
@ -163,20 +165,20 @@ void QtMaterialSlider::setThumbColor(const QColor &color)
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
QColor QtMaterialSlider::thumbColor() const
|
QColor Slider::thumbColor() const
|
||||||
{
|
{
|
||||||
Q_D(const QtMaterialSlider);
|
Q_D(const Slider);
|
||||||
|
|
||||||
if (d->useThemeColors || !d->thumbColor.isValid()) {
|
if (d->useThemeColors || !d->thumbColor.isValid()) {
|
||||||
return QtMaterialStyle::instance().themeColor("primary1");
|
return Style::instance().themeColor("primary1");
|
||||||
} else {
|
} else {
|
||||||
return d->thumbColor;
|
return d->thumbColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtMaterialSlider::setTrackColor(const QColor &color)
|
void Slider::setTrackColor(const QColor &color)
|
||||||
{
|
{
|
||||||
Q_D(QtMaterialSlider);
|
Q_D(Slider);
|
||||||
|
|
||||||
d->trackColor = color;
|
d->trackColor = color;
|
||||||
|
|
||||||
|
|
@ -185,20 +187,20 @@ void QtMaterialSlider::setTrackColor(const QColor &color)
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
QColor QtMaterialSlider::trackColor() const
|
QColor Slider::trackColor() const
|
||||||
{
|
{
|
||||||
Q_D(const QtMaterialSlider);
|
Q_D(const Slider);
|
||||||
|
|
||||||
if (d->useThemeColors || !d->trackColor.isValid()) {
|
if (d->useThemeColors || !d->trackColor.isValid()) {
|
||||||
return QtMaterialStyle::instance().themeColor("accent3");
|
return Style::instance().themeColor("accent3");
|
||||||
} else {
|
} else {
|
||||||
return d->trackColor;
|
return d->trackColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtMaterialSlider::setDisabledColor(const QColor &color)
|
void Slider::setDisabledColor(const QColor &color)
|
||||||
{
|
{
|
||||||
Q_D(QtMaterialSlider);
|
Q_D(Slider);
|
||||||
|
|
||||||
d->disabledColor = color;
|
d->disabledColor = color;
|
||||||
|
|
||||||
|
|
@ -207,27 +209,27 @@ void QtMaterialSlider::setDisabledColor(const QColor &color)
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
QColor QtMaterialSlider::disabledColor() const
|
QColor Slider::disabledColor() const
|
||||||
{
|
{
|
||||||
Q_D(const QtMaterialSlider);
|
Q_D(const Slider);
|
||||||
|
|
||||||
if (d->useThemeColors || !d->disabledColor.isValid()) {
|
if (d->useThemeColors || !d->disabledColor.isValid()) {
|
||||||
return QtMaterialStyle::instance().themeColor("disabled");
|
return Style::instance().themeColor("disabled");
|
||||||
} else {
|
} else {
|
||||||
return d->disabledColor;
|
return d->disabledColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtMaterialSlider::setPageStepMode(bool pageStep)
|
void Slider::setPageStepMode(bool pageStep)
|
||||||
{
|
{
|
||||||
Q_D(QtMaterialSlider);
|
Q_D(Slider);
|
||||||
|
|
||||||
d->pageStepMode = pageStep;
|
d->pageStepMode = pageStep;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QtMaterialSlider::pageStepMode() const
|
bool Slider::pageStepMode() const
|
||||||
{
|
{
|
||||||
Q_D(const QtMaterialSlider);
|
Q_D(const Slider);
|
||||||
|
|
||||||
return d->pageStepMode;
|
return d->pageStepMode;
|
||||||
}
|
}
|
||||||
|
|
@ -235,14 +237,14 @@ bool QtMaterialSlider::pageStepMode() const
|
||||||
/*!
|
/*!
|
||||||
* \remip
|
* \remip
|
||||||
*/
|
*/
|
||||||
QSize QtMaterialSlider::minimumSizeHint() const
|
QSize Slider::minimumSizeHint() const
|
||||||
{
|
{
|
||||||
return Qt::Horizontal == orientation()
|
return Qt::Horizontal == orientation()
|
||||||
? QSize(130, 34)
|
? QSize(130, 34)
|
||||||
: QSize(34, 130);
|
: QSize(34, 130);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtMaterialSlider::setInvertedAppearance(bool value)
|
void Slider::setInvertedAppearance(bool value)
|
||||||
{
|
{
|
||||||
QAbstractSlider::setInvertedAppearance(value);
|
QAbstractSlider::setInvertedAppearance(value);
|
||||||
|
|
||||||
|
|
@ -252,9 +254,9 @@ void QtMaterialSlider::setInvertedAppearance(bool value)
|
||||||
/*!
|
/*!
|
||||||
* \remip
|
* \remip
|
||||||
*/
|
*/
|
||||||
void QtMaterialSlider::sliderChange(SliderChange change)
|
void Slider::sliderChange(SliderChange change)
|
||||||
{
|
{
|
||||||
Q_D(QtMaterialSlider);
|
Q_D(Slider);
|
||||||
|
|
||||||
if (SliderOrientationChange == change)
|
if (SliderOrientationChange == change)
|
||||||
{
|
{
|
||||||
|
|
@ -268,12 +270,12 @@ void QtMaterialSlider::sliderChange(SliderChange change)
|
||||||
{
|
{
|
||||||
if (minimum() == value()) {
|
if (minimum() == value()) {
|
||||||
triggerAction(SliderToMinimum);
|
triggerAction(SliderToMinimum);
|
||||||
d->stateMachine->postEvent(new QtMaterialStateTransitionEvent(SliderChangedToMinimum));
|
d->stateMachine->postEvent(new StateTransitionEvent(SliderChangedToMinimum));
|
||||||
} else if (maximum() == value()) {
|
} else if (maximum() == value()) {
|
||||||
triggerAction(SliderToMaximum);
|
triggerAction(SliderToMaximum);
|
||||||
}
|
}
|
||||||
if (minimum() == d->oldValue) {
|
if (minimum() == d->oldValue) {
|
||||||
d->stateMachine->postEvent(new QtMaterialStateTransitionEvent(SliderChangedFromMinimum));
|
d->stateMachine->postEvent(new StateTransitionEvent(SliderChangedFromMinimum));
|
||||||
}
|
}
|
||||||
d->oldValue = value();
|
d->oldValue = value();
|
||||||
}
|
}
|
||||||
|
|
@ -286,9 +288,9 @@ void QtMaterialSlider::sliderChange(SliderChange change)
|
||||||
/*!
|
/*!
|
||||||
* \remip
|
* \remip
|
||||||
*/
|
*/
|
||||||
void QtMaterialSlider::mouseMoveEvent(QMouseEvent *event)
|
void Slider::mouseMoveEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
Q_D(QtMaterialSlider);
|
Q_D(Slider);
|
||||||
|
|
||||||
if (isSliderDown())
|
if (isSliderDown())
|
||||||
{
|
{
|
||||||
|
|
@ -320,9 +322,9 @@ void QtMaterialSlider::mouseMoveEvent(QMouseEvent *event)
|
||||||
/*!
|
/*!
|
||||||
* \remip
|
* \remip
|
||||||
*/
|
*/
|
||||||
void QtMaterialSlider::mousePressEvent(QMouseEvent *event)
|
void Slider::mousePressEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
Q_D(QtMaterialSlider);
|
Q_D(Slider);
|
||||||
|
|
||||||
const QPoint pos = event->pos();
|
const QPoint pos = event->pos();
|
||||||
|
|
||||||
|
|
@ -355,9 +357,9 @@ void QtMaterialSlider::mousePressEvent(QMouseEvent *event)
|
||||||
/*!
|
/*!
|
||||||
* \remip
|
* \remip
|
||||||
*/
|
*/
|
||||||
void QtMaterialSlider::mouseReleaseEvent(QMouseEvent *event)
|
void Slider::mouseReleaseEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
Q_D(QtMaterialSlider);
|
Q_D(Slider);
|
||||||
|
|
||||||
if (isSliderDown()) {
|
if (isSliderDown()) {
|
||||||
setSliderDown(false);
|
setSliderDown(false);
|
||||||
|
|
@ -372,9 +374,9 @@ void QtMaterialSlider::mouseReleaseEvent(QMouseEvent *event)
|
||||||
/*!
|
/*!
|
||||||
* \remip
|
* \remip
|
||||||
*/
|
*/
|
||||||
void QtMaterialSlider::leaveEvent(QEvent *event)
|
void Slider::leaveEvent(QEvent *event)
|
||||||
{
|
{
|
||||||
Q_D(QtMaterialSlider);
|
Q_D(Slider);
|
||||||
|
|
||||||
if (d->hoverTrack) {
|
if (d->hoverTrack) {
|
||||||
d->hoverTrack = false;
|
d->hoverTrack = false;
|
||||||
|
|
@ -390,11 +392,11 @@ void QtMaterialSlider::leaveEvent(QEvent *event)
|
||||||
QAbstractSlider::leaveEvent(event);
|
QAbstractSlider::leaveEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtMaterialSlider::updateThumbOffset()
|
void Slider::updateThumbOffset()
|
||||||
{
|
{
|
||||||
Q_D(QtMaterialSlider);
|
Q_D(Slider);
|
||||||
|
|
||||||
const int offset = QtMaterialStyle::sliderPositionFromValue(
|
const int offset = Style::sliderPositionFromValue(
|
||||||
minimum(),
|
minimum(),
|
||||||
maximum(),
|
maximum(),
|
||||||
sliderPosition(),
|
sliderPosition(),
|
||||||
|
|
@ -405,3 +407,4 @@ void QtMaterialSlider::updateThumbOffset()
|
||||||
|
|
||||||
d->thumb->setOffset(offset);
|
d->thumb->setOffset(offset);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,12 @@
|
||||||
#include <QScopedPointer>
|
#include <QScopedPointer>
|
||||||
|
|
||||||
#define QT_MATERIAL_SLIDER_MARGIN 30
|
#define QT_MATERIAL_SLIDER_MARGIN 30
|
||||||
|
namespace md
|
||||||
|
{
|
||||||
|
|
||||||
class QtMaterialSliderPrivate;
|
class SliderPrivate;
|
||||||
|
|
||||||
class QtMaterialSlider : public QAbstractSlider
|
class Slider : public QAbstractSlider
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
|
@ -17,8 +19,8 @@ class QtMaterialSlider : public QAbstractSlider
|
||||||
Q_PROPERTY(QColor disabledColor WRITE setDisabledColor READ disabledColor)
|
Q_PROPERTY(QColor disabledColor WRITE setDisabledColor READ disabledColor)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit QtMaterialSlider(QWidget *parent = 0);
|
explicit Slider(QWidget *parent = 0);
|
||||||
~QtMaterialSlider();
|
~Slider();
|
||||||
|
|
||||||
void setUseThemeColors(bool value);
|
void setUseThemeColors(bool value);
|
||||||
bool useThemeColors() const;
|
bool useThemeColors() const;
|
||||||
|
|
@ -48,11 +50,11 @@ protected:
|
||||||
|
|
||||||
void updateThumbOffset();
|
void updateThumbOffset();
|
||||||
|
|
||||||
const QScopedPointer<QtMaterialSliderPrivate> d_ptr;
|
const QScopedPointer<SliderPrivate> d_ptr;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(QtMaterialSlider)
|
Q_DISABLE_COPY(Slider)
|
||||||
Q_DECLARE_PRIVATE(QtMaterialSlider)
|
Q_DECLARE_PRIVATE(Slider)
|
||||||
};
|
};
|
||||||
|
}
|
||||||
#endif // QTMATERIALSLIDER_H
|
#endif // QTMATERIALSLIDER_H
|
||||||
|
|
|
||||||
|
|
@ -8,16 +8,18 @@
|
||||||
#include "qtmaterialslider.h"
|
#include "qtmaterialslider.h"
|
||||||
#include "lib/qtmaterialstyle.h"
|
#include "lib/qtmaterialstyle.h"
|
||||||
#include "lib/qtmaterialstatetransition.h"
|
#include "lib/qtmaterialstatetransition.h"
|
||||||
|
namespace md
|
||||||
|
{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \class QtMaterialSliderStateMachine
|
* \class QtMaterialSliderStateMachine
|
||||||
* \internal
|
* \internal
|
||||||
*/
|
*/
|
||||||
|
|
||||||
QtMaterialSliderStateMachine::QtMaterialSliderStateMachine(
|
SliderStateMachine::SliderStateMachine(
|
||||||
QtMaterialSlider *slider,
|
Slider *slider,
|
||||||
QtMaterialSliderThumb *thumb,
|
SliderThumb *thumb,
|
||||||
QtMaterialSliderTrack *track)
|
SliderTrack *track)
|
||||||
: QStateMachine(slider),
|
: QStateMachine(slider),
|
||||||
m_slider(slider),
|
m_slider(slider),
|
||||||
m_thumb(thumb),
|
m_thumb(thumb),
|
||||||
|
|
@ -50,12 +52,12 @@ QtMaterialSliderStateMachine::QtMaterialSliderStateMachine(
|
||||||
m_slidingState->assignProperty(thumb, "diameter", 17);
|
m_slidingState->assignProperty(thumb, "diameter", 17);
|
||||||
|
|
||||||
QAbstractTransition *transition;
|
QAbstractTransition *transition;
|
||||||
QtMaterialStateTransition *customTransition;
|
StateTransition *customTransition;
|
||||||
QPropertyAnimation *animation;
|
QPropertyAnimation *animation;
|
||||||
|
|
||||||
// Show halo on mouse enter
|
// Show halo on mouse enter
|
||||||
|
|
||||||
customTransition = new QtMaterialStateTransition(SliderNoFocusMouseEnter);
|
customTransition = new StateTransition(SliderNoFocusMouseEnter);
|
||||||
customTransition->setTargetState(m_focusState);
|
customTransition->setTargetState(m_focusState);
|
||||||
|
|
||||||
animation = new QPropertyAnimation(thumb, "haloSize", this);
|
animation = new QPropertyAnimation(thumb, "haloSize", this);
|
||||||
|
|
@ -88,7 +90,7 @@ QtMaterialSliderStateMachine::QtMaterialSliderStateMachine(
|
||||||
|
|
||||||
// Hide halo on mouse leave, except if widget has focus
|
// Hide halo on mouse leave, except if widget has focus
|
||||||
|
|
||||||
customTransition = new QtMaterialStateTransition(SliderNoFocusMouseLeave);
|
customTransition = new StateTransition(SliderNoFocusMouseLeave);
|
||||||
customTransition->setTargetState(m_inactiveState);
|
customTransition->setTargetState(m_inactiveState);
|
||||||
|
|
||||||
animation = new QPropertyAnimation(thumb, "haloSize", this);
|
animation = new QPropertyAnimation(thumb, "haloSize", this);
|
||||||
|
|
@ -152,7 +154,7 @@ QtMaterialSliderStateMachine::QtMaterialSliderStateMachine(
|
||||||
|
|
||||||
m_sndState->setInitialState(m_minState);
|
m_sndState->setInitialState(m_minState);
|
||||||
|
|
||||||
customTransition = new QtMaterialStateTransition(SliderChangedFromMinimum);
|
customTransition = new StateTransition(SliderChangedFromMinimum);
|
||||||
customTransition->setTargetState(m_normalState);
|
customTransition->setTargetState(m_normalState);
|
||||||
|
|
||||||
animation = new QPropertyAnimation(thumb, "fillColor", this);
|
animation = new QPropertyAnimation(thumb, "fillColor", this);
|
||||||
|
|
@ -173,7 +175,7 @@ QtMaterialSliderStateMachine::QtMaterialSliderStateMachine(
|
||||||
|
|
||||||
m_minState->addTransition(customTransition);
|
m_minState->addTransition(customTransition);
|
||||||
|
|
||||||
customTransition = new QtMaterialStateTransition(SliderChangedToMinimum);
|
customTransition = new StateTransition(SliderChangedToMinimum);
|
||||||
customTransition->setTargetState(m_minState);
|
customTransition->setTargetState(m_minState);
|
||||||
|
|
||||||
animation = new QPropertyAnimation(thumb, "fillColor", this);
|
animation = new QPropertyAnimation(thumb, "fillColor", this);
|
||||||
|
|
@ -197,11 +199,11 @@ QtMaterialSliderStateMachine::QtMaterialSliderStateMachine(
|
||||||
setupProperties();
|
setupProperties();
|
||||||
}
|
}
|
||||||
|
|
||||||
QtMaterialSliderStateMachine::~QtMaterialSliderStateMachine()
|
SliderStateMachine::~SliderStateMachine()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtMaterialSliderStateMachine::setupProperties()
|
void SliderStateMachine::setupProperties()
|
||||||
{
|
{
|
||||||
QColor trackColor = m_slider->trackColor();
|
QColor trackColor = m_slider->trackColor();
|
||||||
QColor thumbColor = m_slider->thumbColor();
|
QColor thumbColor = m_slider->thumbColor();
|
||||||
|
|
@ -233,8 +235,8 @@ void QtMaterialSliderStateMachine::setupProperties()
|
||||||
* \internal
|
* \internal
|
||||||
*/
|
*/
|
||||||
|
|
||||||
QtMaterialSliderThumb::QtMaterialSliderThumb(QtMaterialSlider *slider)
|
SliderThumb::SliderThumb(Slider *slider)
|
||||||
: QtMaterialOverlayWidget(slider->parentWidget()),
|
: OverlayWidget(slider->parentWidget()),
|
||||||
m_slider(slider),
|
m_slider(slider),
|
||||||
m_diameter(11),
|
m_diameter(11),
|
||||||
m_borderWidth(2),
|
m_borderWidth(2),
|
||||||
|
|
@ -246,20 +248,20 @@ QtMaterialSliderThumb::QtMaterialSliderThumb(QtMaterialSlider *slider)
|
||||||
setAttribute(Qt::WA_TransparentForMouseEvents, true);
|
setAttribute(Qt::WA_TransparentForMouseEvents, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
QtMaterialSliderThumb::~QtMaterialSliderThumb()
|
SliderThumb::~SliderThumb()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QtMaterialSliderThumb::eventFilter(QObject *obj, QEvent *event)
|
bool SliderThumb::eventFilter(QObject *obj, QEvent *event)
|
||||||
{
|
{
|
||||||
if (QEvent::ParentChange == event->type()) {
|
if (QEvent::ParentChange == event->type()) {
|
||||||
setParent(m_slider->parentWidget());
|
setParent(m_slider->parentWidget());
|
||||||
}
|
}
|
||||||
|
|
||||||
return QtMaterialOverlayWidget::eventFilter(obj, event);
|
return OverlayWidget::eventFilter(obj, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtMaterialSliderThumb::paintEvent(QPaintEvent *event)
|
void SliderThumb::paintEvent(QPaintEvent *event)
|
||||||
{
|
{
|
||||||
Q_UNUSED(event)
|
Q_UNUSED(event)
|
||||||
|
|
||||||
|
|
@ -325,8 +327,8 @@ void QtMaterialSliderThumb::paintEvent(QPaintEvent *event)
|
||||||
* \internal
|
* \internal
|
||||||
*/
|
*/
|
||||||
|
|
||||||
QtMaterialSliderTrack::QtMaterialSliderTrack(QtMaterialSliderThumb *thumb, QtMaterialSlider *slider)
|
SliderTrack::SliderTrack(SliderThumb *thumb, Slider *slider)
|
||||||
: QtMaterialOverlayWidget(slider->parentWidget()),
|
: OverlayWidget(slider->parentWidget()),
|
||||||
m_slider(slider),
|
m_slider(slider),
|
||||||
m_thumb(thumb),
|
m_thumb(thumb),
|
||||||
m_trackWidth(2)
|
m_trackWidth(2)
|
||||||
|
|
@ -338,20 +340,20 @@ QtMaterialSliderTrack::QtMaterialSliderTrack(QtMaterialSliderThumb *thumb, QtMat
|
||||||
connect(slider, SIGNAL(sliderMoved(int)), this, SLOT(update()));
|
connect(slider, SIGNAL(sliderMoved(int)), this, SLOT(update()));
|
||||||
}
|
}
|
||||||
|
|
||||||
QtMaterialSliderTrack::~QtMaterialSliderTrack()
|
SliderTrack::~SliderTrack()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QtMaterialSliderTrack::eventFilter(QObject *obj, QEvent *event)
|
bool SliderTrack::eventFilter(QObject *obj, QEvent *event)
|
||||||
{
|
{
|
||||||
if (QEvent::ParentChange == event->type()) {
|
if (QEvent::ParentChange == event->type()) {
|
||||||
setParent(m_slider->parentWidget());
|
setParent(m_slider->parentWidget());
|
||||||
}
|
}
|
||||||
|
|
||||||
return QtMaterialOverlayWidget::eventFilter(obj, event);
|
return OverlayWidget::eventFilter(obj, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtMaterialSliderTrack::paintEvent(QPaintEvent *event)
|
void SliderTrack::paintEvent(QPaintEvent *event)
|
||||||
{
|
{
|
||||||
Q_UNUSED(event)
|
Q_UNUSED(event)
|
||||||
|
|
||||||
|
|
@ -406,3 +408,4 @@ void QtMaterialSliderTrack::paintEvent(QPaintEvent *event)
|
||||||
painter.fillRect(bgRect, bg);
|
painter.fillRect(bgRect, bg);
|
||||||
painter.fillRect(fgRect, fg);
|
painter.fillRect(fgRect, fg);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,29 +3,31 @@
|
||||||
|
|
||||||
#include <QStateMachine>
|
#include <QStateMachine>
|
||||||
#include "lib/qtmaterialoverlaywidget.h"
|
#include "lib/qtmaterialoverlaywidget.h"
|
||||||
|
namespace md
|
||||||
|
{
|
||||||
|
|
||||||
class QtMaterialSlider;
|
class Slider;
|
||||||
class QtMaterialSliderThumb;
|
class SliderThumb;
|
||||||
class QtMaterialSliderTrack;
|
class SliderTrack;
|
||||||
|
|
||||||
class QtMaterialSliderStateMachine : public QStateMachine
|
class SliderStateMachine : public QStateMachine
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QtMaterialSliderStateMachine(QtMaterialSlider *slider,
|
SliderStateMachine(Slider *slider,
|
||||||
QtMaterialSliderThumb *thumb,
|
SliderThumb *thumb,
|
||||||
QtMaterialSliderTrack *track);
|
SliderTrack *track);
|
||||||
~QtMaterialSliderStateMachine();
|
~SliderStateMachine();
|
||||||
|
|
||||||
void setupProperties();
|
void setupProperties();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(QtMaterialSliderStateMachine)
|
Q_DISABLE_COPY(SliderStateMachine)
|
||||||
|
|
||||||
QtMaterialSlider *const m_slider;
|
Slider *const m_slider;
|
||||||
QtMaterialSliderThumb *const m_thumb;
|
SliderThumb *const m_thumb;
|
||||||
QtMaterialSliderTrack *const m_track;
|
SliderTrack *const m_track;
|
||||||
QState *const m_topState;
|
QState *const m_topState;
|
||||||
QState *const m_fstState;
|
QState *const m_fstState;
|
||||||
QState *const m_sndState;
|
QState *const m_sndState;
|
||||||
|
|
@ -38,7 +40,7 @@ private:
|
||||||
QState *const m_normalState;
|
QState *const m_normalState;
|
||||||
};
|
};
|
||||||
|
|
||||||
class QtMaterialSliderThumb : public QtMaterialOverlayWidget
|
class SliderThumb : public OverlayWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
|
@ -50,8 +52,8 @@ class QtMaterialSliderThumb : public QtMaterialOverlayWidget
|
||||||
Q_PROPERTY(QColor haloColor WRITE setHaloColor READ haloColor)
|
Q_PROPERTY(QColor haloColor WRITE setHaloColor READ haloColor)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit QtMaterialSliderThumb(QtMaterialSlider *slider);
|
explicit SliderThumb(Slider *slider);
|
||||||
~QtMaterialSliderThumb();
|
~SliderThumb();
|
||||||
|
|
||||||
inline void setDiameter(qreal diameter);
|
inline void setDiameter(qreal diameter);
|
||||||
inline qreal diameter() const;
|
inline qreal diameter() const;
|
||||||
|
|
@ -79,9 +81,9 @@ protected:
|
||||||
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
|
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(QtMaterialSliderThumb)
|
Q_DISABLE_COPY(SliderThumb)
|
||||||
|
|
||||||
const QtMaterialSlider *const m_slider;
|
const Slider *const m_slider;
|
||||||
QColor m_borderColor;
|
QColor m_borderColor;
|
||||||
QColor m_fillColor;
|
QColor m_fillColor;
|
||||||
QColor m_haloColor;
|
QColor m_haloColor;
|
||||||
|
|
@ -91,92 +93,92 @@ private:
|
||||||
int m_offset;
|
int m_offset;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline void QtMaterialSliderThumb::setDiameter(qreal diameter)
|
inline void SliderThumb::setDiameter(qreal diameter)
|
||||||
{
|
{
|
||||||
m_diameter = diameter;
|
m_diameter = diameter;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline qreal QtMaterialSliderThumb::diameter() const
|
inline qreal SliderThumb::diameter() const
|
||||||
{
|
{
|
||||||
return m_diameter;
|
return m_diameter;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void QtMaterialSliderThumb::setBorderWidth(qreal width)
|
inline void SliderThumb::setBorderWidth(qreal width)
|
||||||
{
|
{
|
||||||
m_borderWidth = width;
|
m_borderWidth = width;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline qreal QtMaterialSliderThumb::borderWidth() const
|
inline qreal SliderThumb::borderWidth() const
|
||||||
{
|
{
|
||||||
return m_borderWidth;
|
return m_borderWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void QtMaterialSliderThumb::setBorderColor(const QColor &color)
|
inline void SliderThumb::setBorderColor(const QColor &color)
|
||||||
{
|
{
|
||||||
m_borderColor = color;
|
m_borderColor = color;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline QColor QtMaterialSliderThumb::borderColor() const
|
inline QColor SliderThumb::borderColor() const
|
||||||
{
|
{
|
||||||
return m_borderColor;
|
return m_borderColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void QtMaterialSliderThumb::setFillColor(const QColor &color)
|
inline void SliderThumb::setFillColor(const QColor &color)
|
||||||
{
|
{
|
||||||
m_fillColor = color;
|
m_fillColor = color;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline QColor QtMaterialSliderThumb::fillColor() const
|
inline QColor SliderThumb::fillColor() const
|
||||||
{
|
{
|
||||||
return m_fillColor;
|
return m_fillColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void QtMaterialSliderThumb::setHaloSize(qreal size)
|
inline void SliderThumb::setHaloSize(qreal size)
|
||||||
{
|
{
|
||||||
m_haloSize = size;
|
m_haloSize = size;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline qreal QtMaterialSliderThumb::haloSize() const
|
inline qreal SliderThumb::haloSize() const
|
||||||
{
|
{
|
||||||
return m_haloSize;
|
return m_haloSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void QtMaterialSliderThumb::setHaloColor(const QColor &color)
|
inline void SliderThumb::setHaloColor(const QColor &color)
|
||||||
{
|
{
|
||||||
m_haloColor = color;
|
m_haloColor = color;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline QColor QtMaterialSliderThumb::haloColor() const
|
inline QColor SliderThumb::haloColor() const
|
||||||
{
|
{
|
||||||
return m_haloColor;
|
return m_haloColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void QtMaterialSliderThumb::setOffset(int offset)
|
inline void SliderThumb::setOffset(int offset)
|
||||||
{
|
{
|
||||||
m_offset = offset;
|
m_offset = offset;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int QtMaterialSliderThumb::offset() const
|
inline int SliderThumb::offset() const
|
||||||
{
|
{
|
||||||
return m_offset;
|
return m_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
class QtMaterialSliderTrack : public QtMaterialOverlayWidget
|
class SliderTrack : public OverlayWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
Q_PROPERTY(QColor fillColor WRITE setFillColor READ fillColor)
|
Q_PROPERTY(QColor fillColor WRITE setFillColor READ fillColor)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit QtMaterialSliderTrack(QtMaterialSliderThumb *thumb, QtMaterialSlider *slider);
|
explicit SliderTrack(SliderThumb *thumb, Slider *slider);
|
||||||
~QtMaterialSliderTrack();
|
~SliderTrack();
|
||||||
|
|
||||||
inline void setFillColor(const QColor &color);
|
inline void setFillColor(const QColor &color);
|
||||||
inline QColor fillColor() const;
|
inline QColor fillColor() const;
|
||||||
|
|
@ -189,34 +191,34 @@ protected:
|
||||||
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
|
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(QtMaterialSliderTrack)
|
Q_DISABLE_COPY(SliderTrack)
|
||||||
|
|
||||||
const QtMaterialSlider *const m_slider;
|
const Slider *const m_slider;
|
||||||
QtMaterialSliderThumb *const m_thumb;
|
SliderThumb *const m_thumb;
|
||||||
QColor m_fillColor;
|
QColor m_fillColor;
|
||||||
int m_trackWidth;
|
int m_trackWidth;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline void QtMaterialSliderTrack::setFillColor(const QColor &color)
|
inline void SliderTrack::setFillColor(const QColor &color)
|
||||||
{
|
{
|
||||||
m_fillColor = color;
|
m_fillColor = color;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline QColor QtMaterialSliderTrack::fillColor() const
|
inline QColor SliderTrack::fillColor() const
|
||||||
{
|
{
|
||||||
return m_fillColor;
|
return m_fillColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtMaterialSliderTrack::setTrackWidth(int width)
|
void SliderTrack::setTrackWidth(int width)
|
||||||
{
|
{
|
||||||
m_trackWidth = width;
|
m_trackWidth = width;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
int QtMaterialSliderTrack::trackWidth() const
|
int SliderTrack::trackWidth() const
|
||||||
{
|
{
|
||||||
return m_trackWidth;
|
return m_trackWidth;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endif // QTMATERIALSLIDER_INTERNAL_H
|
#endif // QTMATERIALSLIDER_INTERNAL_H
|
||||||
|
|
|
||||||
|
|
@ -4,20 +4,22 @@
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
#include <QRectF>
|
#include <QRectF>
|
||||||
|
namespace md
|
||||||
class QtMaterialSlider;
|
|
||||||
class QtMaterialSliderThumb;
|
|
||||||
class QtMaterialSliderTrack;
|
|
||||||
class QtMaterialSliderStateMachine;
|
|
||||||
|
|
||||||
class QtMaterialSliderPrivate
|
|
||||||
{
|
{
|
||||||
Q_DISABLE_COPY(QtMaterialSliderPrivate)
|
|
||||||
Q_DECLARE_PUBLIC(QtMaterialSlider)
|
class Slider;
|
||||||
|
class SliderThumb;
|
||||||
|
class SliderTrack;
|
||||||
|
class SliderStateMachine;
|
||||||
|
|
||||||
|
class SliderPrivate
|
||||||
|
{
|
||||||
|
Q_DISABLE_COPY(SliderPrivate)
|
||||||
|
Q_DECLARE_PUBLIC(Slider)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QtMaterialSliderPrivate(QtMaterialSlider *q);
|
SliderPrivate(Slider *q);
|
||||||
~QtMaterialSliderPrivate();
|
~SliderPrivate();
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
|
|
@ -28,10 +30,10 @@ public:
|
||||||
|
|
||||||
void setHovered(bool status);
|
void setHovered(bool status);
|
||||||
|
|
||||||
QtMaterialSlider *const q_ptr;
|
Slider *const q_ptr;
|
||||||
QtMaterialSliderThumb *thumb;
|
SliderThumb *thumb;
|
||||||
QtMaterialSliderTrack *track;
|
SliderTrack *track;
|
||||||
QtMaterialSliderStateMachine *stateMachine;
|
SliderStateMachine *stateMachine;
|
||||||
QColor thumbColor;
|
QColor thumbColor;
|
||||||
QColor trackColor;
|
QColor trackColor;
|
||||||
QColor disabledColor;
|
QColor disabledColor;
|
||||||
|
|
@ -45,5 +47,5 @@ public:
|
||||||
bool pageStepMode;
|
bool pageStepMode;
|
||||||
bool useThemeColors;
|
bool useThemeColors;
|
||||||
};
|
};
|
||||||
|
}
|
||||||
#endif // QTMATERIALSLIDER_P_H
|
#endif // QTMATERIALSLIDER_P_H
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue