ScrollBar moved

This commit is contained in:
Achraf k 2022-02-17 03:46:48 +01:00
parent b8cb380b32
commit ef1427c9f3
5 changed files with 76 additions and 64 deletions

View File

@ -5,31 +5,33 @@
#include <QDebug> #include <QDebug>
#include "qtmaterialscrollbar_internal.h" #include "qtmaterialscrollbar_internal.h"
#include "lib/qtmaterialstyle.h" #include "lib/qtmaterialstyle.h"
namespace md
{
/*! /*!
* \class QtMaterialScrollBarPrivate * \class QtMaterialScrollBarPrivate
* \internal * \internal
*/ */
QtMaterialScrollBarPrivate::QtMaterialScrollBarPrivate(QtMaterialScrollBar *q) ScrollBarPrivate::ScrollBarPrivate(ScrollBar *q)
: q_ptr(q) : q_ptr(q)
{ {
} }
QtMaterialScrollBarPrivate::~QtMaterialScrollBarPrivate() ScrollBarPrivate::~ScrollBarPrivate()
{ {
} }
void QtMaterialScrollBarPrivate::init() void ScrollBarPrivate::init()
{ {
Q_Q(QtMaterialScrollBar); Q_Q(ScrollBar);
stateMachine = new QtMaterialScrollBarStateMachine(q); stateMachine = new ScrollBarStateMachine(q);
hideOnMouseOut = true; hideOnMouseOut = true;
useThemeColors = true; useThemeColors = true;
q->setMouseTracking(true); q->setMouseTracking(true);
q->setStyle(&QtMaterialStyle::instance()); q->setStyle(&Style::instance());
q->setStyleSheet("QScrollBar:vertical { margin: 0; }" q->setStyleSheet("QScrollBar:vertical { margin: 0; }"
"QScrollBar::add-line:vertical { height: 0; margin: 0; }" "QScrollBar::add-line:vertical { height: 0; margin: 0; }"
"QScrollBar::sub-line:vertical { height: 0; margin: 0; }"); "QScrollBar::sub-line:vertical { height: 0; margin: 0; }");
@ -41,21 +43,21 @@ void QtMaterialScrollBarPrivate::init()
* \class QtMaterialScrollBar * \class QtMaterialScrollBar
*/ */
QtMaterialScrollBar::QtMaterialScrollBar(QWidget *parent) ScrollBar::ScrollBar(QWidget *parent)
: QScrollBar(parent), : QScrollBar(parent),
d_ptr(new QtMaterialScrollBarPrivate(this)) d_ptr(new ScrollBarPrivate(this))
{ {
d_func()->init(); d_func()->init();
} }
QtMaterialScrollBar::~QtMaterialScrollBar() ScrollBar::~ScrollBar()
{ {
} }
/*! /*!
* \reimp * \reimp
*/ */
QSize QtMaterialScrollBar::sizeHint() const QSize ScrollBar::sizeHint() const
{ {
if (Qt::Horizontal == orientation()) { if (Qt::Horizontal == orientation()) {
return QSize(1, 10); return QSize(1, 10);
@ -64,9 +66,9 @@ QSize QtMaterialScrollBar::sizeHint() const
} }
} }
void QtMaterialScrollBar::setUseThemeColors(bool value) void ScrollBar::setUseThemeColors(bool value)
{ {
Q_D(QtMaterialScrollBar); Q_D(ScrollBar);
if (d->useThemeColors == value) { if (d->useThemeColors == value) {
return; return;
@ -76,16 +78,16 @@ void QtMaterialScrollBar::setUseThemeColors(bool value)
update(); update();
} }
bool QtMaterialScrollBar::useThemeColors() const bool ScrollBar::useThemeColors() const
{ {
Q_D(const QtMaterialScrollBar); Q_D(const ScrollBar);
return d->useThemeColors; return d->useThemeColors;
} }
void QtMaterialScrollBar::setCanvasColor(const QColor &color) void ScrollBar::setCanvasColor(const QColor &color)
{ {
Q_D(QtMaterialScrollBar); Q_D(ScrollBar);
d->canvasColor = color; d->canvasColor = color;
@ -93,9 +95,9 @@ void QtMaterialScrollBar::setCanvasColor(const QColor &color)
update(); update();
} }
QColor QtMaterialScrollBar::canvasColor() const QColor ScrollBar::canvasColor() const
{ {
Q_D(const QtMaterialScrollBar); Q_D(const ScrollBar);
if (d->useThemeColors || !d->canvasColor.isValid()) { if (d->useThemeColors || !d->canvasColor.isValid()) {
return parentWidget()->palette().color(backgroundRole()); return parentWidget()->palette().color(backgroundRole());
@ -104,9 +106,9 @@ QColor QtMaterialScrollBar::canvasColor() const
} }
} }
void QtMaterialScrollBar::setBackgroundColor(const QColor &color) void ScrollBar::setBackgroundColor(const QColor &color)
{ {
Q_D(QtMaterialScrollBar); Q_D(ScrollBar);
d->backgroundColor = color; d->backgroundColor = color;
@ -114,20 +116,20 @@ void QtMaterialScrollBar::setBackgroundColor(const QColor &color)
update(); update();
} }
QColor QtMaterialScrollBar::backgroundColor() const QColor ScrollBar::backgroundColor() const
{ {
Q_D(const QtMaterialScrollBar); Q_D(const ScrollBar);
if (d->useThemeColors || !d->backgroundColor.isValid()) { if (d->useThemeColors || !d->backgroundColor.isValid()) {
return QtMaterialStyle::instance().themeColor("border"); return Style::instance().themeColor("border");
} else { } else {
return d->backgroundColor; return d->backgroundColor;
} }
} }
void QtMaterialScrollBar::setSliderColor(const QColor &color) void ScrollBar::setSliderColor(const QColor &color)
{ {
Q_D(QtMaterialScrollBar); Q_D(ScrollBar);
d->sliderColor = color; d->sliderColor = color;
@ -135,28 +137,28 @@ void QtMaterialScrollBar::setSliderColor(const QColor &color)
update(); update();
} }
QColor QtMaterialScrollBar::sliderColor() const QColor ScrollBar::sliderColor() const
{ {
Q_D(const QtMaterialScrollBar); Q_D(const ScrollBar);
if (d->useThemeColors || !d->sliderColor.isValid()) { if (d->useThemeColors || !d->sliderColor.isValid()) {
return QtMaterialStyle::instance().themeColor("primary1"); return Style::instance().themeColor("primary1");
} else { } else {
return d->sliderColor; return d->sliderColor;
} }
} }
void QtMaterialScrollBar::setHideOnMouseOut(bool value) void ScrollBar::setHideOnMouseOut(bool value)
{ {
Q_D(QtMaterialScrollBar); Q_D(ScrollBar);
d->hideOnMouseOut = value; d->hideOnMouseOut = value;
update(); update();
} }
bool QtMaterialScrollBar::hideOnMouseOut() const bool ScrollBar::hideOnMouseOut() const
{ {
Q_D(const QtMaterialScrollBar); Q_D(const ScrollBar);
return d->hideOnMouseOut; return d->hideOnMouseOut;
} }
@ -164,11 +166,11 @@ bool QtMaterialScrollBar::hideOnMouseOut() const
/*! /*!
* \reimp * \reimp
*/ */
void QtMaterialScrollBar::paintEvent(QPaintEvent *event) void ScrollBar::paintEvent(QPaintEvent *event)
{ {
Q_UNUSED(event) Q_UNUSED(event)
Q_D(QtMaterialScrollBar); Q_D(ScrollBar);
QPainter painter(this); QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing); painter.setRenderHint(QPainter::Antialiasing);
@ -210,3 +212,4 @@ void QtMaterialScrollBar::paintEvent(QPaintEvent *event)
painter.drawRoundedRect(handle, 9, 9); painter.drawRoundedRect(handle, 9, 9);
} }
}

View File

@ -2,10 +2,12 @@
#define QTMATERIALSCROLLBAR_H #define QTMATERIALSCROLLBAR_H
#include <QtWidgets/QScrollBar> #include <QtWidgets/QScrollBar>
namespace md
{
class QtMaterialScrollBarPrivate; class ScrollBarPrivate;
class QtMaterialScrollBar : public QScrollBar class ScrollBar : public QScrollBar
{ {
Q_OBJECT Q_OBJECT
@ -14,8 +16,8 @@ class QtMaterialScrollBar : public QScrollBar
Q_PROPERTY(QColor sliderColor WRITE setSliderColor READ sliderColor) Q_PROPERTY(QColor sliderColor WRITE setSliderColor READ sliderColor)
public: public:
explicit QtMaterialScrollBar(QWidget *parent = 0); explicit ScrollBar(QWidget *parent = 0);
~QtMaterialScrollBar(); ~ScrollBar();
QSize sizeHint() const Q_DECL_OVERRIDE; QSize sizeHint() const Q_DECL_OVERRIDE;
@ -37,11 +39,11 @@ public:
protected: protected:
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
const QScopedPointer<QtMaterialScrollBarPrivate> d_ptr; const QScopedPointer<ScrollBarPrivate> d_ptr;
private: private:
Q_DISABLE_COPY(QtMaterialScrollBar) Q_DISABLE_COPY(ScrollBar)
Q_DECLARE_PRIVATE(QtMaterialScrollBar) Q_DECLARE_PRIVATE(ScrollBar)
}; };
}
#endif // QTMATERIALSCROLLBAR_H #endif // QTMATERIALSCROLLBAR_H

View File

@ -1,6 +1,8 @@
#include "qtmaterialscrollbar_internal.h" #include "qtmaterialscrollbar_internal.h"
#include <QPropertyAnimation> #include <QPropertyAnimation>
#include <QEventTransition> #include <QEventTransition>
namespace md
{
/*! /*!
* \class QtMaterialScrollBarStateMachine * \class QtMaterialScrollBarStateMachine
@ -10,7 +12,7 @@
/*! /*!
* \internal * \internal
*/ */
QtMaterialScrollBarStateMachine::QtMaterialScrollBarStateMachine(QtMaterialScrollBar *parent) ScrollBarStateMachine::ScrollBarStateMachine(ScrollBar *parent)
: QStateMachine(parent), : QStateMachine(parent),
m_scrollBar(parent), m_scrollBar(parent),
m_focusState(new QState), m_focusState(new QState),
@ -46,6 +48,7 @@ QtMaterialScrollBarStateMachine::QtMaterialScrollBarStateMachine(QtMaterialScrol
/*! /*!
* \internal * \internal
*/ */
QtMaterialScrollBarStateMachine::~QtMaterialScrollBarStateMachine() ScrollBarStateMachine::~ScrollBarStateMachine()
{ {
} }
}

View File

@ -3,38 +3,40 @@
#include <QStateMachine> #include <QStateMachine>
#include "qtmaterialscrollbar.h" #include "qtmaterialscrollbar.h"
namespace md
{
class QtMaterialScrollBarStateMachine : public QStateMachine class ScrollBarStateMachine : public QStateMachine
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY(qreal opacity WRITE setOpacity READ opacity) Q_PROPERTY(qreal opacity WRITE setOpacity READ opacity)
public: public:
QtMaterialScrollBarStateMachine(QtMaterialScrollBar *parent); ScrollBarStateMachine(ScrollBar *parent);
~QtMaterialScrollBarStateMachine(); ~ScrollBarStateMachine();
inline void setOpacity(qreal opacity); inline void setOpacity(qreal opacity);
inline qreal opacity() const; inline qreal opacity() const;
private: private:
Q_DISABLE_COPY(QtMaterialScrollBarStateMachine) Q_DISABLE_COPY(ScrollBarStateMachine)
QtMaterialScrollBar *const m_scrollBar; ScrollBar *const m_scrollBar;
QState *const m_focusState; QState *const m_focusState;
QState *const m_blurState; QState *const m_blurState;
qreal m_opacity; qreal m_opacity;
}; };
inline void QtMaterialScrollBarStateMachine::setOpacity(qreal opacity) inline void ScrollBarStateMachine::setOpacity(qreal opacity)
{ {
m_opacity = opacity; m_opacity = opacity;
m_scrollBar->update(); m_scrollBar->update();
} }
inline qreal QtMaterialScrollBarStateMachine::opacity() const inline qreal ScrollBarStateMachine::opacity() const
{ {
return m_opacity; return m_opacity;
} }
}
#endif // QTMATERIALSCROLLBAR_INTERNAL_H #endif // QTMATERIALSCROLLBAR_INTERNAL_H

View File

@ -3,28 +3,30 @@
#include <QtGlobal> #include <QtGlobal>
#include <QColor> #include <QColor>
namespace md
class QtMaterialScrollBar;
class QtMaterialScrollBarStateMachine;
class QtMaterialScrollBarPrivate
{ {
Q_DISABLE_COPY(QtMaterialScrollBarPrivate)
Q_DECLARE_PUBLIC(QtMaterialScrollBar) class ScrollBar;
class ScrollBarStateMachine;
class ScrollBarPrivate
{
Q_DISABLE_COPY(ScrollBarPrivate)
Q_DECLARE_PUBLIC(ScrollBar)
public: public:
QtMaterialScrollBarPrivate(QtMaterialScrollBar *q); ScrollBarPrivate(ScrollBar *q);
~QtMaterialScrollBarPrivate(); ~ScrollBarPrivate();
void init(); void init();
QtMaterialScrollBar *const q_ptr; ScrollBar *const q_ptr;
QtMaterialScrollBarStateMachine *stateMachine; ScrollBarStateMachine *stateMachine;
QColor backgroundColor; QColor backgroundColor;
QColor sliderColor; QColor sliderColor;
QColor canvasColor; QColor canvasColor;
bool hideOnMouseOut; bool hideOnMouseOut;
bool useThemeColors; bool useThemeColors;
}; };
}
#endif // QTMATERIALSCROLLBAR_P_H #endif // QTMATERIALSCROLLBAR_P_H