Slider moved

This commit is contained in:
Achraf k 2022-02-17 03:51:42 +01:00
parent ef1427c9f3
commit 098267afee
5 changed files with 162 additions and 150 deletions

View File

@ -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);
} }
}

View File

@ -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

View File

@ -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);
} }
}

View File

@ -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

View File

@ -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