TTKMusicPlayer  3.7.0.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:
13  {
14 
15  }
16 
18  {
19 
20  }
21 
26  virtual void setStatus(bool status) = 0;
31  virtual void action() = 0;
32 };
33 
34 #ifdef Q_OS_WIN
35 #if TTK_QT_VERSION_CHECK(5,2,0)
36 # include <QtWinExtras/QtWinExtras>
37 #endif
38 
42 class MusicWindowsExtras : public MusicAbstractPlatformExtras
43 {
44 public:
45  MusicWindowsExtras()
47  {
48 #if TTK_QT_VERSION_CHECK(5,2,0)
49  m_playToolButton = nullptr;
50  m_forwardToolButton = nullptr;
51  m_backwardToolButton = nullptr;
52  m_thumbnailToolBar = nullptr;
53 
54  action();
55  createThumbnailToolBar();
56 #endif
57  }
58 
59  ~MusicWindowsExtras()
60  {
61 #if TTK_QT_VERSION_CHECK(5,2,0)
62  delete m_playToolButton;
63  delete m_forwardToolButton;
64  delete m_backwardToolButton;
65  delete m_thumbnailToolBar;
66 #endif
67  }
68 
72  virtual void setStatus(bool status) override final
73  {
74 #if TTK_QT_VERSION_CHECK(5,2,0)
75  const QStyle::StandardPixmap pix = status ? QStyle::SP_MediaPause : QStyle::SP_MediaPlay;
76  m_playToolButton->setIcon(MusicApplication::instance()->style()->standardIcon(pix));
77 #else
78  Q_UNUSED(status);
79 #endif
80  }
81 
85  virtual void action() override final
86  {
87 #if TTK_QT_VERSION_CHECK(5,2,0)
88  QtWin::enableBlurBehindWindow(MusicApplication::instance());
89  QtWin::disableBlurBehindWindow(MusicApplication::instance());
90 #endif
91  }
92 
93 private:
94 #if TTK_QT_VERSION_CHECK(5,2,0)
95 
98  void createThumbnailToolBar()
99  {
101  m_thumbnailToolBar = new QWinThumbnailToolBar(parent);
102  m_thumbnailToolBar->setWindow(parent->windowHandle());
103 
104  m_playToolButton = new QWinThumbnailToolButton(m_thumbnailToolBar);
105  m_playToolButton->setToolTip(QObject::tr("Play"));
106  m_playToolButton->setIcon(parent->style()->standardIcon(QStyle::SP_MediaPlay));
107  QObject::connect(m_playToolButton, SIGNAL(clicked()), parent, SLOT(switchToPlayState()));
108 
109  m_forwardToolButton = new QWinThumbnailToolButton(m_thumbnailToolBar);
110  m_forwardToolButton->setToolTip(QObject::tr("Previous"));
111  m_forwardToolButton->setIcon(parent->style()->standardIcon(QStyle::SP_MediaSeekBackward));
112  QObject::connect(m_forwardToolButton, SIGNAL(clicked()), parent, SLOT(playPrevious()));
113 
114  m_backwardToolButton = new QWinThumbnailToolButton(m_thumbnailToolBar);
115  m_backwardToolButton->setToolTip(QObject::tr("Next"));
116  m_backwardToolButton->setIcon(parent->style()->standardIcon(QStyle::SP_MediaSeekForward));
117  QObject::connect(m_backwardToolButton, SIGNAL(clicked()), parent, SLOT(playNext()));
118 
119  m_thumbnailToolBar->addButton(m_forwardToolButton);
120  m_thumbnailToolBar->addButton(m_playToolButton);
121  m_thumbnailToolBar->addButton(m_backwardToolButton);
122  }
123 
124  QWinThumbnailToolBar *m_thumbnailToolBar;
125  QWinThumbnailToolButton *m_playToolButton;
126  QWinThumbnailToolButton *m_forwardToolButton;
127  QWinThumbnailToolButton *m_backwardToolButton;
128 #endif
129 };
130 #elif defined Q_OS_LINUX
131 
134 class MusicLinuxExtras : public MusicAbstractPlatformExtras
135 {
136 public:
137  MusicLinuxExtras()
139  {
140 
141  }
142 
143  ~MusicLinuxExtras()
144  {
145 
146  }
147 
151  virtual void setStatus(bool status) override final
152  {
153  Q_UNUSED(status);
154  }
155 
159  virtual void action() override final
160  {
161 
162  }
163 };
164 #else
165 
169 {
170 public:
173  {
174 
175  }
176 
178  {
179 
180  }
181 
185  virtual void setStatus(bool status) override final
186  {
187  Q_UNUSED(status);
188  }
189 
193  virtual void action() override final
194  {
195 
196  }
197 };
198 #endif
199 
201  : QObject(parent),
202  m_disableBlurBehindWindow(true)
203 {
204 #ifdef Q_OS_WIN
205  m_platformExtras = new MusicWindowsExtras;
206 #elif defined Q_OS_LINUX
207  m_platformExtras = new MusicLinuxExtras;
208 #else
210 #endif
211 }
212 
214 {
215  delete m_platformExtras;
216 }
217 
219 {
220  m_platformExtras->setStatus(state);
221 }
222 
224 {
225  m_disableBlurBehindWindow = enabled;
227 }
static MusicApplication * instance()
virtual void action() overridefinal
MusicAbstractPlatformExtras * m_platformExtras
virtual void setStatus(bool status) overridefinal
The class of the app main widget.
void setCurrentPlayState(bool state) const
MusicPlatformExtras(QObject *parent=nullptr)
The class of the mac platform extras.
virtual void setStatus(bool status)=0
The class of the abstract platform extras.
void disableBlurBehindWindow(bool enabled)
state
Definition: http_parser.c:279