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

View File

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

View File

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

View File

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

View File

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