TTKMusicPlayer  4.1.3.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicplatformextras.cpp
Go to the documentation of this file.
1 #include "musicplatformextras.h"
2 #include "musicapplication.h"
3 
4 #include <QStyle>
5 
10 {
11 public:
12  MusicAbstractPlatformExtras() = default;
13  virtual ~MusicAbstractPlatformExtras() = default;
14 
19  virtual void setCurrentStatus(bool status) = 0;
24  virtual void action() = 0;
25 };
26 
27 #ifdef Q_OS_WIN
28 #if TTK_QT_VERSION_CHECK(5,2,0)
29 # include <QtWinExtras/QtWinExtras>
30 #endif
31 
35 class MusicWindowsExtras : public MusicAbstractPlatformExtras
36 {
37 public:
38  MusicWindowsExtras()
40  {
41 #if TTK_QT_VERSION_CHECK(5,2,0)
42  m_playToolButton = nullptr;
43  m_forwardToolButton = nullptr;
44  m_backwardToolButton = nullptr;
45  m_thumbnailToolBar = nullptr;
46 
47  action();
48  createThumbnailToolBar();
49 #endif
50  }
51 
52  ~MusicWindowsExtras()
53  {
54 #if TTK_QT_VERSION_CHECK(5,2,0)
55  delete m_playToolButton;
56  delete m_forwardToolButton;
57  delete m_backwardToolButton;
58  delete m_thumbnailToolBar;
59 #endif
60  }
61 
65  virtual void setCurrentStatus(bool status) override final
66  {
67 #if TTK_QT_VERSION_CHECK(5,2,0)
68  const QStyle::StandardPixmap pix = status ? QStyle::SP_MediaPause : QStyle::SP_MediaPlay;
69  m_playToolButton->setIcon(MusicApplication::instance()->style()->standardIcon(pix));
70 #else
71  Q_UNUSED(status);
72 #endif
73  }
74 
78  virtual void action() override final
79  {
80 #if TTK_QT_VERSION_CHECK(5,2,0)
81  QtWin::enableBlurBehindWindow(MusicApplication::instance());
82  QtWin::disableBlurBehindWindow(MusicApplication::instance());
83 #endif
84  }
85 
86 private:
87 #if TTK_QT_VERSION_CHECK(5,2,0)
88 
91  void createThumbnailToolBar()
92  {
94  m_thumbnailToolBar = new QWinThumbnailToolBar(parent);
95  m_thumbnailToolBar->setWindow(parent->windowHandle());
96 
97  m_playToolButton = new QWinThumbnailToolButton(m_thumbnailToolBar);
98  m_playToolButton->setToolTip(QObject::tr("Play"));
99  m_playToolButton->setIcon(parent->style()->standardIcon(QStyle::SP_MediaPlay));
100  QObject::connect(m_playToolButton, SIGNAL(clicked()), parent, SLOT(switchToPlayState()));
101 
102  m_forwardToolButton = new QWinThumbnailToolButton(m_thumbnailToolBar);
103  m_forwardToolButton->setToolTip(QObject::tr("Previous"));
104  m_forwardToolButton->setIcon(parent->style()->standardIcon(QStyle::SP_MediaSeekBackward));
105  QObject::connect(m_forwardToolButton, SIGNAL(clicked()), parent, SLOT(playPrevious()));
106 
107  m_backwardToolButton = new QWinThumbnailToolButton(m_thumbnailToolBar);
108  m_backwardToolButton->setToolTip(QObject::tr("Next"));
109  m_backwardToolButton->setIcon(parent->style()->standardIcon(QStyle::SP_MediaSeekForward));
110  QObject::connect(m_backwardToolButton, SIGNAL(clicked()), parent, SLOT(playNext()));
111 
112  m_thumbnailToolBar->addButton(m_forwardToolButton);
113  m_thumbnailToolBar->addButton(m_playToolButton);
114  m_thumbnailToolBar->addButton(m_backwardToolButton);
115  }
116 
117  QWinThumbnailToolBar *m_thumbnailToolBar;
118  QWinThumbnailToolButton *m_playToolButton;
119  QWinThumbnailToolButton *m_forwardToolButton;
120  QWinThumbnailToolButton *m_backwardToolButton;
121 #endif
122 };
123 #elif defined Q_OS_LINUX
124 
127 class MusicLinuxExtras : public MusicAbstractPlatformExtras
128 {
129 public:
130  MusicLinuxExtras()
132  {
133 
134  }
135 
139  virtual void setCurrentStatus(bool status) override final
140  {
141  Q_UNUSED(status);
142  }
143 
147  virtual void action() override final
148  {
149 
150  }
151 };
152 #else
153 
157 {
158 public:
161  {
162 
163  }
164 
168  virtual void setCurrentStatus(bool status) override final
169  {
170  Q_UNUSED(status);
171  }
172 
176  virtual void action() override final
177  {
178 
179  }
180 };
181 #endif
182 
184  : QObject(parent),
185  m_disableBlurBehindWindow(true)
186 {
187 #ifdef Q_OS_WIN
188  m_platformExtras = new MusicWindowsExtras;
189 #elif defined Q_OS_LINUX
190  m_platformExtras = new MusicLinuxExtras;
191 #else
193 #endif
194 }
195 
197 {
198  delete m_platformExtras;
199 }
200 
202 {
204 }
205 
207 {
208  m_disableBlurBehindWindow = enabled;
210 }
virtual ~MusicAbstractPlatformExtras()=default
static MusicApplication * instance()
virtual void action() overridefinal
virtual void setCurrentStatus(bool status) overridefinal
MusicAbstractPlatformExtras * m_platformExtras
The class of the app main widget.
void setCurrentPlayState(bool state) const
MusicPlatformExtras(QObject *parent=nullptr)
The class of the mac platform extras.
The class of the abstract platform extras.
virtual void setCurrentStatus(bool status)=0
void disableBlurBehindWindow(bool enabled)
state
Definition: http_parser.c:279