TTKMusicPlayer  4.3.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:
12  AbstractPlatformExtras() = default;
13  virtual ~AbstractPlatformExtras() = default;
14 
19  virtual void setStatus(bool status) = 0;
24  virtual void action() = 0;
25 };
26 
27 #ifdef Q_OS_WIN
28 #if TTK_QT_VERSION_CHECK(5,2,0) && !TTK_QT_VERSION_CHECK(6,0,0)
29 # include <QtWinExtras/QtWinExtras>
30 #endif
31 
35 class WindowsPlatformExtras : public AbstractPlatformExtras
36 {
37 public:
38  WindowsPlatformExtras()
40  {
41 #if TTK_QT_VERSION_CHECK(5,2,0) && !TTK_QT_VERSION_CHECK(6,0,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  ~WindowsPlatformExtras()
53  {
54 #if TTK_QT_VERSION_CHECK(5,2,0) && !TTK_QT_VERSION_CHECK(6,0,0)
55  delete m_playToolButton;
56  delete m_forwardToolButton;
57  delete m_backwardToolButton;
58  delete m_thumbnailToolBar;
59 #endif
60  }
61 
65  virtual void setStatus(bool status) override final
66  {
67 #if TTK_QT_VERSION_CHECK(5,2,0) && !TTK_QT_VERSION_CHECK(6,0,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) && !TTK_QT_VERSION_CHECK(6,0,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) && !TTK_QT_VERSION_CHECK(6,0,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 LinuxPlatformExtras : public AbstractPlatformExtras
128 {
129 public:
130  LinuxPlatformExtras()
132  {
133 
134  }
135 
139  virtual void setStatus(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 setStatus(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 {
186 #ifdef Q_OS_WIN
187  m_platformExtras = new WindowsPlatformExtras;
188 #elif defined Q_OS_LINUX
189  m_platformExtras = new LinuxPlatformExtras;
190 #else
192 #endif
193 }
194 
196 {
197  delete m_platformExtras;
198 }
199 
201 {
203 }
204 
206 {
207  m_platformExtras->setStatus(state);
208 }
The class of the abstract platform extras.
static MusicApplication * instance()
virtual void setStatus(bool status) overridefinal
The class of the app main widget.
virtual void action() overridefinal
void setCurrentPlayState(bool state) const
MusicPlatformExtras(QObject *parent=nullptr)
virtual void action()=0
virtual ~AbstractPlatformExtras()=default
The class of the mac platform extras.
virtual void setStatus(bool status)=0
AbstractPlatformExtras * m_platformExtras
AbstractPlatformExtras()=default
state
Definition: http_parser.c:279