TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musictopareawidget.cpp
Go to the documentation of this file.
1 #include "musictopareawidget.h"
2 #include "ui_musicapplication.h"
3 #include "musicapplication.h"
12 #include "musictinyuiobject.h"
13 #include "musicfunctionuiobject.h"
14 #include "musictoolsetswidget.h"
15 #include "musicimageutils.h"
16 
17 #include <qmmp/visual.h>
18 
20 
22  : QWidget(parent),
23  m_backgroundWidget(nullptr),
24  m_remoteWidget(nullptr),
25  m_lastRemoteBeforeWallpaper(-1),
26  m_backgroundListAlpha(60)
27 {
28  m_instance = this;
29 
30  m_pictureCarouselTimer.setInterval(10 * TTK_DN_S2MS);
31  connect(&m_pictureCarouselTimer, SIGNAL(timeout()), SLOT(backgroundChanged()));
32  connect(G_BACKGROUND_PTR, SIGNAL(selectIndexChanged()), SLOT(backgroundChanged()));
33 
35 }
36 
38 {
39  delete m_backgroundWidget;
40  delete m_remoteWidget;
41 }
42 
44 {
45  return m_instance;
46 }
47 
48 void MusicTopAreaWidget::setupUi(Ui::MusicApplication *ui)
49 {
50  m_ui = ui;
51  //
53 
54  ui->userIcon->setPixmap(TTK::Image::roundedPixmap(QPixmap(":/image/lb_app_logo"), QPixmap(":/image/lb_mask_30"), QSize(30, 30)));
55 
56  ui->musicSongSearchEdit->initialize(MusicApplication::instance());
57  ui->musicSongSearchEdit->setStyleSheet(TTK::UI::LineEditStyle02);
58 
59  ui->musicSearchButton->setCursor(QCursor(Qt::PointingHandCursor));
60  ui->musicSearchButton->setStyleSheet(TTK::UI::TinyBtnMainSearch);
61 
62  ui->musicWindowIdentify->setToolTip(tr("Identify Songs"));
63  ui->musicWindowIdentify->setCursor(QCursor(Qt::PointingHandCursor));
64  ui->musicWindowIdentify->setStyleSheet(TTK::UI::BtnIdentify);
65 
66  ui->musicWindowTools->setToolTip(tr("Tools"));
67  ui->musicWindowTools->setCursor(QCursor(Qt::PointingHandCursor));
68  ui->musicWindowTools->setStyleSheet(TTK::UI::BtnTools);
69  connect(ui->musicWindowTools, SIGNAL(clicked()), SLOT(showToolSetsWidget()));
70 
71  ui->musicWindowChangeSkin->setToolTip(tr("Skin"));
72  ui->musicWindowChangeSkin->setCursor(QCursor(Qt::PointingHandCursor));
73  ui->musicWindowChangeSkin->setStyleSheet(TTK::UI::BtnSkin);
74  connect(ui->musicWindowChangeSkin, SIGNAL(clicked()), SLOT(showSkinManagerWidget()));
75 
76  ui->musicWindowSetting->setToolTip(tr("Settings"));
77  ui->musicWindowSetting->setCursor(QCursor(Qt::PointingHandCursor));
78  ui->musicWindowSetting->setStyleSheet(TTK::UI::BtnSetting);
79  connect(ui->musicWindowSetting, SIGNAL(clicked()), MusicApplication::instance(), SLOT(createRightMenu()));
80 
81  ui->musicWindowConcise->setToolTip(tr("Concise Mode"));
82  ui->musicWindowConcise->setCursor(QCursor(Qt::PointingHandCursor));
83  ui->musicWindowConcise->setStyleSheet(TTK::UI::BtnConciseIn);
84  connect(ui->musicWindowConcise, SIGNAL(clicked()), MusicApplication::instance(), SLOT(windowConciseChanged()));
85 
86  ui->musicWindowRemote->setToolTip(tr("Open Remote"));
87  ui->musicWindowRemote->setCursor(QCursor(Qt::PointingHandCursor));
88  ui->musicWindowRemote->setStyleSheet(TTK::UI::BtnRemote);
89  connect(ui->musicWindowRemote, SIGNAL(clicked()), SLOT(showSquareRemote()));
90 
91  ui->minimization->setStyleSheet(TTK::UI::BtnMinimum);
92  ui->minimization->setCursor(QCursor(Qt::PointingHandCursor));
93  ui->minimization->setToolTip(tr("Minimization"));
94  connect(ui->minimization, SIGNAL(clicked()), MusicApplication::instance(), SLOT(showMinimized()));
95 
96  ui->windowClose->setToolTip(tr("Close"));
97  ui->windowClose->setCursor(QCursor(Qt::PointingHandCursor));
98  ui->windowClose->setStyleSheet(TTK::UI::BtnTClose);
99  connect(ui->windowClose, SIGNAL(clicked()), MusicApplication::instance(), SLOT(close()));
100 }
101 
103 {
107 }
108 
110 {
112  {
114  }
115  return m_backgroundListAlpha;
116 }
117 
119 {
121  {
123  }
124  return false;
125 }
126 
127 const QImage& MusicTopAreaWidget::originImage() const
128 {
129  return m_backgroundImage;
130 }
131 
133 {
134  return m_ui->background->rendererPixmap();
135 }
136 
138 {
139  state ? m_pictureCarouselTimer.start() : m_pictureCarouselTimer.stop();
140 }
141 
143 {
144  if(m_remoteWidget)
145  {
147  }
148 }
149 
150 void MusicTopAreaWidget::setLabelText(const QString &name) const
151 {
152  if(m_remoteWidget)
153  {
155  }
156 }
157 
159 {
160  if(m_remoteWidget)
161  {
163  }
164 }
165 
167 {
168  if(m_backgroundWidget == nullptr)
169  {
171  }
172 
175 }
176 
178 {
179  if(!isEnableBackground())
180  {
181  return;
182  }
183 
185  {
187  }
188 
189  m_backgroundAlpha = value;
191 }
192 
194 {
195  if(!isEnableBackground())
196  {
197  return;
198  }
199 
201 }
202 
204 {
205  QString path = G_BACKGROUND_PTR->artistPhotoDefaultPath();
206  if(!path.isEmpty())
207  {
209  if(path.isEmpty())
210  {
211  return;
212  }
213 
215  {
217  }
218 
219  backgroundSkinChanged(path);
220  }
221 }
222 
224 {
226 }
227 
228 void MusicTopAreaWidget::backgroundSkinChanged(const QString &fileName)
229 {
230  m_backgroundImagePath = fileName;
231  if(isEnableBackground())
232  {
234  }
235 }
236 
238 {
239  const QString &path = G_BACKGROUND_PTR->artistPhotoPath();
240  if(!path.isEmpty())
241  {
242  G_BACKGROUND_PTR->photoNext();
244  }
245  else
246  {
248  }
249 }
250 
252 {
253  m_ui->background->setAnimation(state);
254 }
255 
257 {
258  if(!isEnableBackground() && m_ui->musiclrccontainerforinterior->isShowArtistBackground())
259  {
262  }
263  else
264  {
266  }
267 }
268 
270 {
272  setBackgroundAnimation(false);
275 
276  if(!isEnableBackground())
277  {
279  }
280 }
281 
283 {
285  {
287  }
288 
289  m_backgroundListAlpha = index;
291 }
292 
294 {
295  delete m_remoteWidget;
298 }
299 
301 {
302  delete m_remoteWidget;
304  m_remoteWidget->setLabelText(m_ui->musicSongTitle->text());
306 }
307 
309 {
310  delete m_remoteWidget;
312  m_remoteWidget->setLabelText(m_ui->musicSongTitle->text());
314 }
315 
317 {
318  delete m_remoteWidget;
320  m_remoteWidget->setLabelText(m_ui->musicSongTitle->text());
322 }
323 
325 {
326  delete m_remoteWidget;
328  m_remoteWidget->setLabelText(m_ui->musicSongTitle->text());
330 }
331 
333 {
334  if(create)
335  {
336  if(m_remoteWidget)
337  {
339  delete m_remoteWidget;
340  }
341 
343  m_remoteWidget->setLabelText(m_ui->musicSongTitle->text());
345  }
346  else
347  {
348  delete m_remoteWidget;
349  m_remoteWidget = nullptr;
352  }
353 }
354 
356 {
357  delete m_remoteWidget;
358  m_remoteWidget = nullptr;
359 }
360 
362 {
363  if(!m_remoteWidget)
364  {
365  return;
366  }
367 
369  m_remoteWidget = nullptr;
370 
371  remoteTypeChanged(type->data().toInt());
372 
373  if(m_remoteWidget)
374  {
375  remote->deleteLater();
376  }
377 }
378 
380 {
381  switch(type)
382  {
388  default: break;
389  }
390 }
391 
393 {
395 }
396 
398 {
400  m_ui->centerLeftWidget->backgroundTransparent(value);
401 }
402 
404 {
405  return m_ui->functionsContainer->currentIndex() != MUSIC_LRC_PAGE;
406 }
407 
409 {
410  if(!m_remoteWidget)
411  {
412  return;
413  }
414 
416  m_remoteWidget->setVolumeValue(m_ui->musicSound->value());
417 
418  connect(m_remoteWidget, SIGNAL(showMainWindow()), MusicApplication::instance(), SLOT(showNormal()));
419  connect(m_remoteWidget, SIGNAL(playPreviousChanged()), MusicApplication::instance(), SLOT(playPrevious()));
420  connect(m_remoteWidget, SIGNAL(playNextChanged()), MusicApplication::instance(), SLOT(playNext()));
421  connect(m_remoteWidget, SIGNAL(playStateChanged()), MusicApplication::instance(), SLOT(switchToPlayState()));
422  connect(m_remoteWidget, SIGNAL(settingChanged()), MusicApplication::instance(), SLOT(showSettingWidget()));
423  connect(m_remoteWidget, SIGNAL(volumeChanged(int)), MusicApplication::instance(), SLOT(volumeChanged(int)));
424  connect(m_remoteWidget, SIGNAL(remoteTypeChanged(QAction*)), SLOT(remoteTypeChanged(QAction*)));
425  m_remoteWidget->show();
426 }
427 
429 {
430  setBackgroundAnimation(false);
432 }
433 
435 {
436  if(image.isNull())
437  {
438  return;
439  }
440 
441  QImage origin(image);
442  if(!origin.colorTable().isEmpty())
443  {
444  origin = origin.convertToFormat(QImage::Format_ARGB32);
445  }
446  TTK::Image::reRenderImage(35, &origin, &origin);
447 
450 }
451 
453 {
454  if(m_backgroundImage.isNull())
455  {
456  return;
457  }
458 
459  const float v = TTK::Image::reRenderValue<float>(1, 0.35, TTK_RN_MAX - m_backgroundAlpha);
460  MusicApplication::instance()->setWindowOpacity(v);
461 
462  const QSize size(G_SETTING_PTR->value(MusicSettingManager::WidgetSize).toSize());
463 
464  QPixmap pix(size);
465  pix.fill(Qt::transparent);
466  QPainter painter(&pix);
467  painter.drawImage(0, 0, m_backgroundImage.scaled(size, Qt::KeepAspectRatioByExpanding));
468 
471 
472  m_ui->background->setPixmap(pix);
473 }
474 
476 {
477  drawWindowBackgroundRect(QImage(path));
478 }
void setupUi(Ui::MusicApplication *ui)
The class of the desktop complex remote widget.
MusicTopAreaWidget(QWidget *parent=nullptr)
static constexpr const char * TinyBtnMainSearch
The class of the app top area widget.
static QString cpoyArtistFileToLocal(const QString &path)
static MusicApplication * instance()
The class of the tool sets widget.
static constexpr const char * BtnSetting
#define G_BACKGROUND_PTR
static QPixmap setBackgroundUrl(QString &name)
voidpf uLong int origin
Definition: ioapi.h:142
The class of the local background widget.
voidpf void uLong size
Definition: ioapi.h:136
#define MUSIC_LRC_PAGE
#define TTKGenerateSingleWidget(...)
void backgroundTransparent(int value)
static constexpr const char * BtnMinimum
#define TTK_RN_MAX
Definition: ttkglobal.h:359
The class of the desktop square remote widget.
TTK_MODULE_EXPORT QPixmap roundedPixmap(const QPixmap &input, int ratioX, int ratioY)
const QPixmap & rendererPixmap() const
MusicRemoteWidget * m_remoteWidget
Ui::MusicApplication * m_ui
The class of the desktop simple remote widget.
const char * name
Definition: http_parser.c:458
The class of the desktop ripple remote widget.
void setLabelText(const QString &name) const
void setCurrentPlayState(bool state) const
bool isEnableBackground() const
The class of the desktop strip remote widget.
The class of the desktop rectangle remote widget.
void originImageChanged(const QImage &image)
static void initialize(QWidget *parent, QObject *receiver=nullptr, const char *member=nullptr)
The class of the desktop remote widget base.
const QImage & originImage() const
static constexpr const char * BtnIdentify
void playlistTransparent(int index)
void setCurrentPlayState(bool state) const
static const QString LineEditStyle02
#define TTK_DN_S2MS
Definition: ttkglobal.h:276
void backgroundSkinChanged(const QString &fileName)
void setVolumeValue(int value) const
void updateArtistFileTheme(const QString &theme)
void showWallpaperRemote(bool create)
static constexpr const char * BtnTools
static MusicTopAreaWidget * m_instance
TTK_MODULE_EXPORT void reRenderImage(int delta, const QImage *input, QImage *output)
MusicBackgroundSkinDialog * m_backgroundWidget
static constexpr const char * BtnSkin
void setBackgroundAnimation(bool state)
void setVolumeValue(int index)
static constexpr const char * BtnConciseIn
void remoteTypeChanged(QAction *type)
static constexpr const char * BtnTClose
void backgroundAnimationChanged(bool state)
virtual void setLabelText(const QString &text)
void setCurrentBackgroundTheme(const QString &theme, int skin, int list)
static MusicTopAreaWidget * instance()
state
Definition: http_parser.c:279
#define G_SETTING_PTR
bool backgroundTransparentEnable() const
static constexpr const char * BtnRemote