TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musictimesliderwidget.cpp
Go to the documentation of this file.
3 #include "musicgiflabelwidget.h"
4 
5 #include <qmath.h>
6 
8  : QWidget(parent)
9 {
10  m_label = new MusicGifLabelWidget(this);
12  m_label->setAttribute(Qt::WA_TransparentForMouseEvents, true);
13  m_label->move(15, 5);
14  m_label->hide();
15 
16  m_slider = new MusicMovingLabelSlider(Qt::Horizontal, this);
17  m_slider->setValue(0);
18  m_slider->setGeometry(15, m_label->width() / 2, width() - m_label->width(), 10);
19  m_slider->setStyleSheet(TTK::UI::SliderStyle07);
20  m_slider->setCursor(QCursor(Qt::PointingHandCursor));
21 }
22 
24 {
25  delete m_label;
26  delete m_slider;
27 }
28 
29 void MusicTimeSliderWidget::setInputModule(QObject *object) const
30 {
31  connect(m_slider, SIGNAL(sliderMoved(int)), SLOT(sliderMovedAt(int)));
32  connect(m_slider, SIGNAL(sliderReleasedAt(int)), object, SLOT(playAnyTimeAt(int)));
33 }
34 
36 {
37  if(state)
38  {
39  m_label->show();
40  m_label->raise();
41  m_label->start();
42  }
43  else
44  {
45  m_label->stop();
46  m_label->hide();
47  }
48 }
49 
50 void MusicTimeSliderWidget::setValue(qint64 value) const
51 {
52  if(!m_slider->isMoving())
53  {
54  sliderMovedAt(value);
55  m_slider->setValue(value);
56  }
57 }
58 
60 {
61  m_slider->setRange(min, max);
62 }
63 
65 {
66  const int max = m_slider->maximum();
67  if(max > 0)
68  {
69  const float delta = m_slider->width() * (-0.015 / 800) + 0.0275;
70  m_label->move(ceil(qint64(pos) * m_slider->width() * (1.0 - delta) / max) - 1, 5);
71  }
72 }
73 
75 {
76  QString front = "rgb(231, 80, 229)", back = "rgb(7, 208, 255)";
77  switch(type)
78  {
79  case 1:
80  {
81  front = "rgb(122, 246, 231)";
82  back = "rgb(244, 247, 158)";
83  break;
84  }
85  case 2:
86  {
87  front = "rgb(232, 202, 189)";
88  back = "rgb(191, 252, 198)";
89  break;
90  }
91  case 3:
92  {
93  front = "rgb(213, 203, 255)";
94  back = "rgb(153, 236, 255)";
95  break;
96  }
97  case 4:
98  {
99  front = "rgb(255, 179, 249)";
100  back = "rgb(247, 246, 200)";
101  break;
102  }
103  default: break;
104  }
105  const QString &prefix = "QSlider::sub-page:Horizontal{ background-color:qlineargradient("
106  "spread:pad,x1:0,y1:0,x2:1,y2:0,stop:0 " + front + ", stop:1 " + back + "); }";
107  m_slider->setStyleSheet(TTK::UI::SliderStyle07 + prefix);
108 }
109 
110 void MusicTimeSliderWidget::resizeEvent(QResizeEvent *event)
111 {
112  QWidget::resizeEvent(event);
113  m_slider->setFixedWidth(width() - m_label->width());
114  sliderMovedAt(m_slider->value());
115 }
virtual void resizeEvent(QResizeEvent *event) overridefinal
The class of the slider that can show such as tooltip.
void setRange(int min, int max)
constexpr const _Tp & max(const _Tp &a, const _Tp &b)
Definition: ttkcompat.h:33
void setValue(qint64 value) const
void sliderMovedAt(int pos) const
void setType(Module type)
MusicMovingLabelSlider * m_slider
void setCurrentPlayState(bool state)
The class of the float gif label widget.
void setInputModule(QObject *object) const
MusicGifLabelWidget * m_label
static const QString SliderStyle07
constexpr const _Tp & min(const _Tp &a, const _Tp &b)
Definition: ttkcompat.h:27
MusicTimeSliderWidget(QWidget *parent=nullptr)
state
Definition: http_parser.c:279