TTKMusicPlayer  4.2.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicsmoothmovingwidget.cpp
Go to the documentation of this file.
2 #include "musicwidgetheaders.h"
3 
4 #include <QTimer>
5 #include <QWheelEvent>
6 #include <QPropertyAnimation>
7 
9  : QObject(parent),
10  m_initialized(true),
11  m_previousValue(0),
12  m_deltaValue(0),
13  m_scrollBar(nullptr),
14  m_moveAnimation(nullptr)
15 {
16  m_animationTimer = new QTimer(this);
17  m_animationTimer->setInterval(100 * TTK_DN_MS);
18  connect(m_animationTimer, SIGNAL(timeout()), SLOT(timeToAnimation()));
19 }
20 
22 {
23  m_animationTimer->stop();
24  delete m_animationTimer;
25  delete m_moveAnimation;
26 }
27 
29 {
30  m_scrollBar = bar;
31  delete m_moveAnimation;
32 
33  m_moveAnimation = new QPropertyAnimation(m_scrollBar, "value", this);
34  m_moveAnimation->setDuration(TTK_DN_S2MS);
35  connect(m_scrollBar, SIGNAL(valueChanged(int)), SLOT(valueChanged(int)));
36 }
37 
39 {
40  if(!m_moveAnimation)
41  {
42  return;
43  }
44 
45  m_animationTimer->stop();
46  m_moveAnimation->stop();
47 
48  if(m_initialized)
49  {
50  m_deltaValue = 0;
51  m_previousValue = m_scrollBar->value();
52  m_initialized = false;
53  }
54 
55  m_deltaValue += value;
56  m_animationTimer->start();
57 }
58 
60 {
61  if(!m_moveAnimation)
62  {
63  return;
64  }
65 
66  m_initialized = true;
67  m_animationTimer->stop();
68 
69  m_deltaValue = (m_deltaValue / 480.0) * (m_deltaValue < 0 ? m_deltaValue + 120 : -m_deltaValue + 120);
70 
71  m_moveAnimation->setStartValue(m_previousValue);
72  m_moveAnimation->setEndValue(m_scrollBar->value() + m_deltaValue);
73  m_moveAnimation->start();
74 }
75 
77 {
78  m_previousValue = value;
79 }
80 
81 
82 
84  : MusicAbstractTableWidget(parent)
85 {
86  verticalScrollBar()->setStyleSheet(TTK::UI::ScrollBarStyle03);
87 }
88 
90 {
91  m_interface.setScrollBar(bar == nullptr ? verticalScrollBar() : bar);
92 }
93 
95 {
96  MusicAbstractTableWidget::wheelEvent(event);
98 }
99 
100 
101 
103  : QScrollArea(parent)
104 {
105  setFrameShape(QFrame::NoFrame);
106 
107  verticalScrollBar()->setStyleSheet(TTK::UI::ScrollBarStyle03);
108 }
109 
111 {
112  m_interface.setScrollBar(bar == nullptr ? verticalScrollBar() : bar);
113 }
114 
116 {
117  QScrollArea::wheelEvent(event);
119 }
The class of the table widget base.
MusicSmoothMovingInterface m_interface
void setMovedScrollBar(QScrollBar *bar=nullptr)
void setMovedScrollBar(QScrollBar *bar=nullptr)
static const QString ScrollBarStyle03
QPropertyAnimation * m_moveAnimation
MusicSmoothMovingInterface m_interface
#define QtWheelDelta(p)
Event wheel.
Definition: ttkqtcompat.h:136
MusicSmoothMovingInterface(QObject *parent=nullptr)
#define TTK_DN_S2MS
Definition: ttkglobal.h:355
virtual void wheelEvent(QWheelEvent *event) override
virtual void wheelEvent(QWheelEvent *event) override
MusicSmoothMovingTableWidget(QWidget *parent=nullptr)
MusicSmoothMovingScrollArea(QWidget *parent=nullptr)
#define TTK_DN_MS
Definition: ttkglobal.h:349