TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicvideoview.cpp
Go to the documentation of this file.
1 #include "musicvideoview.h"
2 #include "musictoastlabel.h"
3 #include "musiccoremplayer.h"
4 #include "musicbarragewidget.h"
5 #include "musicwidgetutils.h"
6 
7 #include <QMouseEvent>
8 
10  : QWidget(parent),
11  m_leftPressed(false)
12 {
13  m_clickedTimer = new QTimer(this);
14  m_clickedTimer->setSingleShot(true);
15  connect(m_clickedTimer, SIGNAL(timeout()), SIGNAL(timeToPlay()));
16 }
17 
19 {
20  delete m_clickedTimer;
21 }
22 
23 void MusicViewWidget::mousePressEvent(QMouseEvent *event)
24 {
25  QWidget::mousePressEvent(event);
26  m_leftPressed = false;
27  if(event->button() == Qt::LeftButton)
28  {
29  m_leftPressed = true;
30  m_clickedTimer->start(300);
31  }
32 }
33 
34 void MusicViewWidget::mouseMoveEvent(QMouseEvent *event)
35 {
36  QWidget::mousePressEvent(event);
37  if(m_leftPressed)
38  {
39  if(m_clickedTimer->isActive())
40  {
41  m_clickedTimer->stop();
42  }
43  }
44 }
45 
47 {
48  QWidget::mouseDoubleClickEvent(event);
49  if(event->button() == Qt::LeftButton)
50  {
51  if(m_clickedTimer->isActive())
52  {
53  m_clickedTimer->stop();
54  }
55  Q_EMIT fullScreenMode();
56  }
57 }
58 
59 void MusicViewWidget::contextMenuEvent(QContextMenuEvent *event)
60 {
61  Q_UNUSED(event);
62  TTKObjectCast(MusicVideoView*, parent())->createRightMenu();
63 }
64 
65 
67  : QAbstractScrollArea(parent)
68 {
69  setObjectName(className());
70  setStyleSheet(QString("#%1{%2}").arg(className(), TTK::UI::BackgroundStyle02));
71 
72  m_player = new MusicCoreMPlayer(this);
73  m_videoWidget = new MusicViewWidget(this);
76 
77  connect(m_videoWidget, SIGNAL(timeToPlay()), SLOT(play()));
78  connect(m_videoWidget, SIGNAL(fullScreenMode()), this, SIGNAL(fullscreenButtonClicked()));
79 
80  connect(m_videoControl, SIGNAL(mediaUrlChanged(QString)), parent, SLOT(mediaUrlChanged(QString)));
81  connect(m_videoControl, SIGNAL(sliderValueChanged(int)), SLOT(setPosition(int)));
82  connect(m_videoControl, SIGNAL(addBarrageChanged(MusicBarrageRecord)), m_barrageWidget, SLOT(addBarrage(MusicBarrageRecord)));
83  connect(m_videoControl, SIGNAL(pushBarrageChanged(bool)), m_barrageWidget, SLOT(barrageStateChanged(bool)));
84 
85  connect(m_player, SIGNAL(positionChanged(qint64)), SLOT(positionChanged(qint64)));
86  connect(m_player, SIGNAL(durationChanged(qint64)), SLOT(durationChanged(qint64)));
87  connect(m_player, SIGNAL(mediaChanged(QString)), SLOT(mediaChanged(QString)));
88  connect(m_player, SIGNAL(finished(int)), SLOT(mediaPlayFinished(int)));
89 
90  resizeGeometry(0, 0);
91 }
92 
94 {
95  delete m_player;
96  delete m_videoWidget;
97  delete m_videoControl;
98  delete m_barrageWidget;
99 }
100 
101 void MusicVideoView::contextMenuEvent(QContextMenuEvent *event)
102 {
103  Q_UNUSED(event);
104  createRightMenu();
105 }
106 
107 void MusicVideoView::setMedia(const QString &data)
108 {
111 }
112 
113 void MusicVideoView::setBarrage(const QString &name, const QString &id)
114 {
115  m_barrageWidget->setBarrage(name, id);
116 }
117 
118 void MusicVideoView::resizeGeometry(int width, int height)
119 {
120  m_videoWidget->setGeometry(20, 20, 640 + width, 372 + height);
121  m_videoControl->setGeometry(0, 413 + height, 680 + width, 60);
123 }
124 
126 {
127  QMenu menu(this);
128  menu.setStyleSheet(TTK::UI::MenuStyle02);
129 
130  menu.addAction({}, this, SLOT(play()))->setText(m_player->isPlaying() ? tr("Video Pause") : tr("Video Play"));
131  menu.addAction(tr("Video Stop"), this, SLOT(stop()));
132  menu.addSeparator();
133  menu.addAction(tr("Search"), this, SIGNAL(searchButtonClicked()));
134  menu.addAction(tr("Popup"), this, SIGNAL(popupButtonClicked()));
135  menu.addAction(tr("Fullscreen"), this, SLOT(fullscreenButtonTrigger()));
136  menu.addAction(tr("Download"), this, SIGNAL(downloadButtonClicked()));
137  menu.addAction(tr("Share"), this, SIGNAL(shareButtonClicked()));
139 
140  menu.exec(QCursor::pos());
141 }
142 
144 {
145  m_player->play();
146  switch(m_player->state())
147  {
149  {
152  break;
153  }
155  {
158  break;
159  }
160  default: break;
161  }
162 }
163 
165 {
166  m_player->stop();
168  update();
169 }
170 
171 void MusicVideoView::positionChanged(qint64 position)
172 {
173  m_videoControl->setValue(position);
174 }
175 
176 void MusicVideoView::durationChanged(qint64 duration)
177 {
178  m_videoControl->durationChanged(duration);
179 }
180 
181 void MusicVideoView::setPosition(int position)
182 {
183  m_player->setPosition(position / TTK_DN_S2MS);
184 }
185 
187 {
188  m_player->setVolume(volume);
189 }
190 
191 void MusicVideoView::mediaChanged(const QString &data)
192 {
194 }
195 
197 {
198  if(TTK_LOW_LEVEL == code)
199  {
200  stop();
201  MusicToastLabel::popup(tr("Audio play time out"));
202  }
203 }
204 
206 {
208 }
#define TTK_SIGNAL
Definition: ttkqtglobal.h:164
virtual void contextMenuEvent(QContextMenuEvent *event) overridefinal
MusicBarrageWidget * m_barrageWidget
bool isPlaying() const
void setMedia(const QString &data)
The class of the video controller.
MusicViewWidget * m_videoWidget
#define TTK_LOW_LEVEL
Definition: ttkglobal.h:253
TTK::PlayState state() const
virtual void mouseMoveEvent(QMouseEvent *event) overridefinal
virtual void mouseDoubleClickEvent(QMouseEvent *event) overridefinal
MusicVideoView(QWidget *parent=nullptr)
void positionChanged(qint64 position)
void setValue(qint64 position) const
The class of the barrage record item.
void setVolume(int value)
void fullScreenMode()
void mediaChanged(const QString &url)
static void popup(const QString &text)
void volumeChanged(int volume)
void setButtonStyle(bool style) const
void mediaChanged(const QString &data)
const char * name
Definition: http_parser.c:458
void setPosition(int position)
MusicCoreMPlayer * m_player
#define TTK_SIGNLE_SHOT(...)
Definition: ttkqtglobal.h:177
static const QString BackgroundStyle02
Definition: musicuiobject.h:84
void durationChanged(qint64 duration)
QTimer * m_clickedTimer
virtual void mousePressEvent(QMouseEvent *event) overridefinal
void searchButtonClicked()
The class of the video show widget.
void popupButtonClicked()
The class of the mplayer core.
static const QString MenuStyle02
Definition: inftrees.h:24
MusicVideoControlWidget * m_videoControl
void setBarrage(const QString &name, const QString &id)
void mediaPlayFinished(int code)
void fullscreenButtonTrigger()
MusicViewWidget(QWidget *parent=nullptr)
#define TTK_DN_S2MS
Definition: ttkglobal.h:276
The class of the video view widget.
void setSize(const QSize &size)
void setBarrage(const QString &name, const QString &id)
void resizeGeometry(int width, int height)
void durationChanged(qint64 duration) const
void downloadButtonClicked()
virtual void contextMenuEvent(QContextMenuEvent *event) overridefinal
void setMedia(Module type, const QString &data, int winId=-1)
The class of the barrage widget.
void setPosition(qint64 pos)
TTK_MODULE_EXPORT void adjustMenuPosition(QMenu *menu)
void shareButtonClicked()
void fullscreenButtonClicked()
#define TTKObjectCast(x, y)
Definition: ttkqtglobal.h:60