TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicvideocontrolwidget.cpp
Go to the documentation of this file.
3 #include "musicvideouiobject.h"
4 #include "musicvolumepopwidget.h"
7 #include "musicsearchedit.h"
8 
10  : QWidget(parent)
11 {
12  setStyleSheet(TTK::UI::BackgroundStyle08);
13 
14  m_timeSlider = new MusicMovingLabelSlider(Qt::Horizontal, this);
15  m_playButton = new QPushButton(this);
16  m_durationLabel = new QLabel(QString("%1/%1").arg(TTK_TIME_INIT), this);
19 #ifdef Q_OS_UNIX
20  m_playButton->setFocusPolicy(Qt::NoFocus);
21 #endif
22 
24  m_volumeButton->setFixedSize(20, 20);
25  m_playButton->setFixedSize(34, 34);
26 
27  m_durationLabel->setStyleSheet(TTK::UI::ColorStyle03);
28  m_playButton->setStyleSheet(TTK::UI::VideoBtnPlay);
29  m_timeSlider->setStyleSheet(TTK::UI::SliderStyle01);
30 
31  m_playButton->setCursor(QCursor(Qt::PointingHandCursor));
32  m_volumeButton->setCursor(QCursor(Qt::PointingHandCursor));
33  m_timeSlider->setCursor(QCursor(Qt::PointingHandCursor));
34  m_qualityButton->setCursor(QCursor(Qt::PointingHandCursor));
35 
36 
37  QVBoxLayout *controlVLayout = new QVBoxLayout(this);
38  controlVLayout->setSpacing(0);
39  controlVLayout->setContentsMargins(0, 0, 0, 0);
40 
41  QWidget *controlBWidget = new QWidget(this);
42  QHBoxLayout *controlBLayout = new QHBoxLayout(controlBWidget);
43  controlBLayout->setContentsMargins(9, 0, 9, 0);
44  controlBLayout->setSpacing(12);
45  controlBLayout->addWidget(m_playButton);
46  controlBLayout->addWidget(m_durationLabel);
47  controlBLayout->addStretch(1);
48  controlBLayout->addWidget(createVideoBarrageWidget(), 25);
49  controlBLayout->addStretch(1);
50  controlBLayout->addWidget(m_qualityButton);
51  controlBLayout->addWidget(m_volumeButton);
52 
53  controlBWidget->setLayout(controlBLayout);
54 
55  controlVLayout->addWidget(m_timeSlider);
56  controlVLayout->addWidget(controlBWidget);
57  setLayout(controlVLayout);
58 
59  connect(m_timeSlider, SIGNAL(sliderReleasedAt(int)), SIGNAL(sliderValueChanged(int)));
60  connect(m_volumeButton, SIGNAL(volumeChanged(int)), parent, SLOT(volumeChanged(int)));
61  connect(m_playButton, SIGNAL(clicked()), parent, SLOT(play()));
62  connect(m_qualityButton, SIGNAL(mediaUrlChanged(QString)), SIGNAL(mediaUrlChanged(QString)));
63 }
64 
66 {
67  delete m_durationLabel;
68  delete m_timeSlider;
69  delete m_playButton;
70  delete m_volumeButton;
71  delete m_qualityButton;
72  delete m_pushBarrage;
73  delete m_barrageSend;
74  delete m_menuBarrage;
75  delete m_searchEdit;
76 }
77 
78 void MusicVideoControlWidget::setValue(qint64 position) const
79 {
80  m_timeSlider->setValue(position * TTK_DN_S2MS);
81  m_durationLabel->setText(QString("%1/%2").arg(TTKTime::formatDuration(position * TTK_DN_S2MS),
83 }
84 
85 void MusicVideoControlWidget::durationChanged(qint64 duration) const
86 {
87  m_timeSlider->setRange(0, duration * TTK_DN_S2MS);
88  m_durationLabel->setText(QString("%1/%2").arg(TTK_TIME_INIT, TTKTime::formatDuration(duration * TTK_DN_S2MS)));
89 }
90 
92 {
94 }
95 
96 void MusicVideoControlWidget::mediaChanged(const QString &url)
97 {
99 }
100 
102 {
103  QWidget::setFixedSize(w, h);
104  m_timeSlider->setFixedWidth(w);
105 }
106 
108 {
110 }
111 
113 {
115  m_barrageSend->setEnabled(m_barrageOn);
116  m_menuBarrage->setEnabled(m_barrageOn);
117  m_searchEdit->setEnabled(m_barrageOn);
118 
121 }
122 
124 {
125  if(m_searchEdit->text() == tr("Just one barrage"))
126  {
127  return;
128  }
129 
130  MusicBarrageRecord record;
131  record.m_value = m_searchEdit->text();
132  record.m_size = m_menuBarrage->barrageSize();
133  record.m_color = m_menuBarrage->barrageColor().name();
134  Q_EMIT addBarrageChanged(record);
135 }
136 
138 {
139  m_barrageOn = false;
140  QWidget *barrageWidget = new QWidget(this);
141 
142  QHBoxLayout *barrageLayout = new QHBoxLayout(barrageWidget);
143  barrageLayout->setContentsMargins(0, 0, 0, 0);
144 
145  m_menuBarrage = new MusicVideoBarrageStylePopWidget(barrageWidget);
147 
148  QWidget *pairWidget = new QWidget(barrageWidget);
149  QHBoxLayout *pairWidgetLayout = new QHBoxLayout(pairWidget);
150  pairWidgetLayout->setContentsMargins(0, 0, 0, 0);
151  pairWidgetLayout->setSpacing(0);
152 
153  m_searchEdit = new MusicSearchEdit(pairWidget);
154  m_searchEdit->setFixedHeight(24);
155  m_searchEdit->setPlaceholderText(tr("Just one barrage"));
156  m_searchEdit->setStyleSheet(TTK::UI::LineEditStyle04);
157  connect(m_searchEdit, SIGNAL(enterFinished(QString)), SLOT(sendBarrageClicked()));
158 
159  m_barrageSend = new QPushButton(pairWidget);
161  m_barrageSend->setCursor(QCursor(Qt::PointingHandCursor));
162  m_barrageSend->setFixedSize(50, 24);
163  connect(m_barrageSend, SIGNAL(clicked()), SLOT(sendBarrageClicked()));
164 
165  pairWidgetLayout->addWidget(m_searchEdit);
166  pairWidgetLayout->addWidget(m_barrageSend);
167  pairWidget->setLayout(pairWidgetLayout);
168 
169  m_pushBarrage = new QPushButton(barrageWidget);
170  m_pushBarrage->setFixedSize(56, 20);
171  m_pushBarrage->setCursor(QCursor(Qt::PointingHandCursor));
172  connect(m_pushBarrage, SIGNAL(clicked()), SLOT(pushBarrageClicked()));
174 
175 #ifdef Q_OS_UNIX
176  m_barrageSend->setFocusPolicy(Qt::NoFocus);
177  m_pushBarrage->setFocusPolicy(Qt::NoFocus);
178 #endif
179 
180  barrageLayout->addWidget(m_menuBarrage);
181  barrageLayout->addWidget(pairWidget);
182  barrageLayout->addWidget(m_pushBarrage);
183  barrageWidget->setLayout(barrageLayout);
184  return barrageWidget;
185 }
MusicMovingLabelSlider * m_timeSlider
void addBarrageChanged(const MusicBarrageRecord &record)
The class of the search line edit widget.
The class of the video varrage style popup widget.
static constexpr const char * VideoBtnBarrageOff
static const QString BackgroundStyle08
void setValue(qint64 position) const
The class of the slider that can show such as tooltip.
MusicVideoBarrageStylePopWidget * m_menuBarrage
The class of the barrage record item.
void mediaChanged(const QString &url)
void pushBarrageChanged(bool on)
static constexpr const char * VideoBtnPause
#define TTK_TIME_INIT
Definition: ttkglobal.h:222
The class of the video quality popup widget.
void setButtonStyle(bool style) const
MusicVolumePopWidget * m_volumeButton
The class of the volume popup widget.
static constexpr const char * VideoBtnBarrageSend
void setQualityText(const QString &url)
void sliderValueChanged(int value)
MusicVideoQualityPopWidget * m_qualityButton
static const QString ColorStyle03
Definition: musicuiobject.h:43
static const QString SliderStyle01
Slider.
MusicVideoControlWidget(QWidget *parent=nullptr)
#define TTK_DN_S2MS
Definition: ttkglobal.h:276
static const QString LineEditStyle04
static constexpr const char * VideoBtnPlay
static constexpr const char * VideoBtnBarrageOn
void durationChanged(qint64 duration) const
static constexpr const char * VideoBtnBarrageStyle
void mediaUrlChanged(const QString &data)
static qint64 formatDuration(const QString &time) noexcept
Definition: ttktime.cpp:123