TTKMusicPlayer  4.1.3.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicartistquerywidget.cpp
Go to the documentation of this file.
3 #include "musiccoverrequest.h"
5 #include "musicrightareawidget.h"
6 #include "musicpagequerywidget.h"
7 #include "musictinyuiobject.h"
8 #include "musicratinglabel.h"
9 
10 #include "qrencode/qrcodewidget.h"
11 
12 static constexpr int WIDTH_LABEL_SIZE = 150;
13 static constexpr int HEIGHT_LABEL_SIZE = 200;
14 static constexpr int LINE_SPACING_SIZE = 200;
15 
17  : QLabel(parent)
18 {
19  setFixedSize(WIDTH_LABEL_SIZE, HEIGHT_LABEL_SIZE);
20 
21  m_playButton = new QPushButton(this);
22  m_playButton->setGeometry(110, 110, 30, 30);
23  m_playButton->setCursor(Qt::PointingHandCursor);
25  connect(m_playButton, SIGNAL(clicked()), SLOT(currentItemClicked()));
26 
27 #ifdef Q_OS_UNIX
28  m_playButton->setFocusPolicy(Qt::NoFocus);
29 #endif
30 
31  m_iconLabel = new QLabel(this);
32  m_iconLabel->setGeometry(0, 0, WIDTH_LABEL_SIZE, WIDTH_LABEL_SIZE);
33 
34  m_nameLabel = new QLabel(this);
35  m_nameLabel->setGeometry(0, 150, WIDTH_LABEL_SIZE, 25);
36  m_nameLabel->setText(TTK_DEFAULT_STR);
37 
38  m_updateLabel = new QLabel(this);
39  m_updateLabel->setGeometry(0, 175, WIDTH_LABEL_SIZE, 25);
41 }
42 
44 {
45  delete m_playButton;
46  delete m_iconLabel;
47  delete m_nameLabel;
48  delete m_updateLabel;
49 }
50 
52 {
53  m_itemData = item;
54  m_nameLabel->setToolTip(item.m_name);
55  m_nameLabel->setText(TTK::Widget::elidedText(m_nameLabel->font(), m_nameLabel->toolTip(), Qt::ElideRight, WIDTH_LABEL_SIZE));
56  m_updateLabel->setToolTip(item.m_time);
57  m_updateLabel->setText(TTK::Widget::elidedText(m_updateLabel->font(), m_updateLabel->toolTip(), Qt::ElideRight, WIDTH_LABEL_SIZE));
58 
60  {
61  MusicCoverRequest *d = G_DOWNLOAD_QUERY_PTR->makeCoverRequest(this);
62  connect(d, SIGNAL(downLoadRawDataChanged(QByteArray)), SLOT(downLoadFinished(QByteArray)));
63  d->startToRequest(item.m_coverUrl);
64  }
65 }
66 
67 void MusicArtistAlbumsItemWidget::downLoadFinished(const QByteArray &bytes)
68 {
69  if(bytes.isEmpty())
70  {
71  TTK_ERROR_STREAM("Input byte data is empty");
72  return;
73  }
74 
75  MusicImageRenderer *render = new MusicImageRenderer(sender());
76  connect(render, SIGNAL(renderFinished(QPixmap)), SLOT(renderFinished(QPixmap)));
77  render->setInputData(bytes, m_iconLabel->size());
78  render->start();
79 }
80 
82 {
83  m_iconLabel->setPixmap(data);
84  m_playButton->raise();
85 }
86 
88 {
90 }
91 
92 
93 
96  m_initialized(false),
97  m_pageQueryWidget(nullptr)
98 {
99  delete m_statusLabel;
100  m_statusLabel = nullptr;
101 
102  QWidget *function = new QWidget(m_mainWindow);
103  m_gridLayout = new QGridLayout(function);
104  function->setLayout(m_gridLayout);
105  m_mainWindow->layout()->addWidget(function);
106  m_container->show();
107 
109 
110  m_networkRequest = G_DOWNLOAD_QUERY_PTR->makeArtistMovieRequest(this);
111  connect(m_networkRequest, SIGNAL(createMovieItem(MusicResultDataItem)), SLOT(createArtistMvsItem(MusicResultDataItem)));
112 }
113 
115 {
116  delete m_gridLayout;
117 }
118 
120 {
123 }
124 
126 {
127  setCurrentValue(id);
128 }
129 
131 {
132  if(!m_resizeWidgets.isEmpty())
133  {
134  for(const TTKResizeWidget &widget : qAsConst(m_resizeWidgets))
135  {
136  m_gridLayout->removeWidget(widget.m_label);
137  }
138 
139  const int lineNumber = QUERY_WIDGET_WIDTH / LINE_SPACING_SIZE;
140  for(int i = 0; i < m_resizeWidgets.count(); ++i)
141  {
142  m_gridLayout->addWidget(m_resizeWidgets[i].m_label, i / lineNumber, i % lineNumber, Qt::AlignCenter);
143  }
144  }
145 }
146 
148 {
149  if(!m_initialized)
150  {
151  m_initialized = true;
153  connect(m_pageQueryWidget, SIGNAL(clicked(int)), SLOT(buttonClicked(int)));
154 
156  }
157 
159  connect(label, SIGNAL(currentItemClicked(QString)), SLOT(currentItemClicked(QString)));
160  label->setResultDataItem(item);
161 
162  const int lineNumber = QUERY_WIDGET_WIDTH / LINE_SPACING_SIZE;
163  m_gridLayout->addWidget(label, m_resizeWidgets.count() / lineNumber, m_resizeWidgets.count() % lineNumber, Qt::AlignCenter);
164 
165  m_resizeWidgets.push_back({label, label->font()});
166 }
167 
169 {
171 }
172 
174 {
175  while(!m_resizeWidgets.isEmpty())
176  {
177  QWidget *w = m_resizeWidgets.takeLast().m_label;
178  m_gridLayout->removeWidget(w);
179  delete w;
180  }
181 
184 }
185 
186 
187 
190  m_initialized(false),
191  m_pageQueryWidget(nullptr)
192 {
193  delete m_statusLabel;
194  m_statusLabel = nullptr;
195 
196  QWidget *function = new QWidget(m_mainWindow);
197  m_gridLayout = new QGridLayout(function);
198  function->setLayout(m_gridLayout);
199  m_mainWindow->layout()->addWidget(function);
200  m_container->show();
201 
203 
204  m_networkRequest = G_DOWNLOAD_QUERY_PTR->makeArtistAlbumRequest(this);
205  connect(m_networkRequest, SIGNAL(createAlbumItem(MusicResultDataItem)), SLOT(createArtistAlbumsItem(MusicResultDataItem)));
206 }
207 
209 {
210  delete m_gridLayout;
211 }
212 
214 {
217 }
218 
220 {
221  setCurrentValue(id);
222 }
223 
225 {
226  if(!m_resizeWidgets.isEmpty())
227  {
228  for(const TTKResizeWidget &widget : qAsConst(m_resizeWidgets))
229  {
230  m_gridLayout->removeWidget(widget.m_label);
231  }
232 
233  const int lineNumber = QUERY_WIDGET_WIDTH / LINE_SPACING_SIZE;
234  for(int i = 0; i < m_resizeWidgets.count(); ++i)
235  {
236  m_gridLayout->addWidget(m_resizeWidgets[i].m_label, i / lineNumber, i % lineNumber, Qt::AlignCenter);
237  }
238  }
239 }
240 
242 {
243  if(!m_initialized)
244  {
245  m_initialized = true;
247  connect(m_pageQueryWidget, SIGNAL(clicked(int)), SLOT(buttonClicked(int)));
248 
250  }
251 
253  connect(label, SIGNAL(currentItemClicked(QString)), SLOT(currentItemClicked(QString)));
254  label->setResultDataItem(item);
255 
256  const int lineNumber = QUERY_WIDGET_WIDTH / LINE_SPACING_SIZE;
257  m_gridLayout->addWidget(label, m_resizeWidgets.count() / lineNumber, m_resizeWidgets.count() % lineNumber, Qt::AlignCenter);
258 
259  m_resizeWidgets.push_back({label, label->font()});
260 }
261 
263 {
265 }
266 
268 {
269  while(!m_resizeWidgets.isEmpty())
270  {
271  QWidget *w = m_resizeWidgets.takeLast().m_label;
272  m_gridLayout->removeWidget(w);
273  delete w;
274  }
275 
278 }
279 
280 
281 
284  m_artistAlbums(nullptr),
285  m_artistMvs(nullptr)
286 {
288  m_queryTableWidget->hide();
289 
291 
292  m_networkRequest = G_DOWNLOAD_QUERY_PTR->makeQueryRequest(this);
293  connect(m_networkRequest, SIGNAL(downLoadDataChanged(QString)), SLOT(queryAllFinished()));
294 }
295 
297 {
298  delete m_artistAlbums;
299  delete m_artistMvs;
300 }
301 
302 void MusicArtistQueryWidget::setCurrentValue(const QString &value)
303 {
307 }
308 
310 {
312  MusicAbstractQueryRequest *d = G_DOWNLOAD_QUERY_PTR->makeArtistRequest(this);
315 
316  connect(d, SIGNAL(downLoadDataChanged(QString)), SLOT(queryArtistFinished()));
318 }
319 
321 {
323 
324  if(!m_resizeWidgets.isEmpty())
325  {
326  const int width = G_SETTING_PTR->value(MusicSettingManager::WidgetSize).toSize().width() - WINDOW_WIDTH_MIN + 180;
327 
328  TTKResizeWidget *data = &m_resizeWidgets[1];
329  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width));
330 
331  data = &m_resizeWidgets[2];
332  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width - 20));
333 
334  data = &m_resizeWidgets[3];
335  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width));
336  }
337 
338  if(m_artistAlbums)
339  {
341  }
342 
343  if(m_artistMvs)
344  {
346  }
347 }
348 
350 {
352  {
353  m_queryTableWidget->hide();
354  }
355 
356  if(m_infoLabel)
357  {
358  m_infoLabel->hide();
359  }
360 
361  delete m_artistAlbums;
362  m_artistAlbums = nullptr;
363 
364  delete m_artistMvs;
365  m_artistMvs = nullptr;
366 
367  if(index == 0 && m_queryTableWidget)
368  {
369  m_queryTableWidget->show();
370  }
371  else if(index == 1 && m_infoLabel)
372  {
373  m_infoLabel->show();
374  }
375  else if(index == 2)
376  {
378  m_container->addWidget(m_artistAlbums);
380  }
381  else if(index == 3)
382  {
384  m_container->addWidget(m_artistMvs);
386  }
387 
388  m_container->setCurrentIndex(index > 2 ? 2 : index);
389 }
390 
392 {
393  const TTK::MusicSongInformationList &songInfos = m_networkRequest->items();
394  if(songInfos.isEmpty())
395  {
396  m_statusLabel->setPixmap(QPixmap(":/image/lb_no_artist_found"));
397  }
398  else
399  {
400  bool hasItem = false;
401  for(const TTK::MusicSongInformation &info : qAsConst(songInfos))
402  {
403  if(m_value.contains(info.m_artistName))
404  {
405  hasItem = true;
406  setCurrentID(info.m_artistId);
407  break;
408  }
409  }
410 
411  if(!hasItem)
412  {
413  m_statusLabel->setPixmap(QPixmap(":/image/lb_no_artist_found"));
414  }
415  }
416 }
417 
419 {
421  if(!d)
422  {
423  return;
424  }
425 
426  const TTK::MusicSongInformationList &songInfos = d->items();
427  if(songInfos.isEmpty())
428  {
429  m_statusLabel->setPixmap(QPixmap(":/image/lb_no_artist_found"));
430  }
431  else
432  {
434  }
435 }
436 
438 {
439  m_currentPlaylistItem = item;
440 
441  createLabels();
442 
443  if(!m_resizeWidgets.isEmpty())
444  {
445  if(TTK::isCoverValid(item.m_coverUrl))
446  {
447  MusicCoverRequest *d = G_DOWNLOAD_QUERY_PTR->makeCoverRequest(this);
448  connect(d, SIGNAL(downLoadRawDataChanged(QByteArray)), SLOT(downLoadFinished(QByteArray)));
449  d->startToRequest(item.m_coverUrl);
450  }
451 
452  const int width = G_SETTING_PTR->value(MusicSettingManager::WidgetSize).toSize().width() - WINDOW_WIDTH_MIN + 180;
453 
454  TTKResizeWidget *data = &m_resizeWidgets[0];
455  data->m_label->setText(tr("<font color=#158FE1> Artist > %1 </font>").arg(item.m_name));
456 
457  data = &m_resizeWidgets[1];
458  data->m_label->setToolTip(item.m_name);
459  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width));
460 
461  data = &m_resizeWidgets[2];
462  data->m_label->setToolTip(tr("NickName: %1").arg(item.m_nickName));
463  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width - 20));
464 
465  data = &m_resizeWidgets[3];
466  data->m_label->setToolTip(tr("Birth: %1").arg(item.m_time));
467  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width));
468 
469  m_infoLabel->setText(item.m_description);
470  }
471 }
472 
474 {
475  delete m_statusLabel;
476  m_statusLabel = nullptr;
477 
478  initFirstWidget();
480  m_container->show();
481 
482  layout()->removeWidget(m_mainWindow);
483  QScrollArea *scrollArea = new QScrollArea(this);
485  layout()->addWidget(scrollArea);
486 
487  QWidget *function = new QWidget(m_mainWindow);
488  function->setStyleSheet(TTK::UI::CheckBoxStyle01 + TTK::UI::PushButtonStyle03);
489  QVBoxLayout *grid = new QVBoxLayout(function);
490 
491  QLabel *firstLabel = new QLabel(function);
492  grid->addWidget(firstLabel);
493  //
494  QWidget *topFuncWidget = new QWidget(function);
495  QHBoxLayout *topFuncLayout = new QHBoxLayout(topFuncWidget);
496 
497  m_iconLabel = new QLabel(topFuncWidget);
498  m_iconLabel->setPixmap(QPixmap(":/image/lb_warning").scaled(180, 180));
499  m_iconLabel->setFixedSize(210, 180);
500  //
501  QWidget *topLineWidget = new QWidget(topFuncWidget);
502  QVBoxLayout *topLineLayout = new QVBoxLayout(topLineWidget);
503  topLineLayout->setContentsMargins(10, 5, 5, 0);
504 
505  QLabel *artistLabel = new QLabel(topLineWidget);
506  QFont artistFont = artistLabel->font();
507  artistFont.setPixelSize(20);
508  artistLabel->setFont(artistFont);
509  artistLabel->setStyleSheet(TTK::UI::FontStyle01);
510  artistLabel->setText(TTK_DEFAULT_STR);
511 
512  QLabel *nickNameLabel = new QLabel(topLineWidget);
513  nickNameLabel->setStyleSheet(TTK::UI::ColorStyle04 + TTK::UI::FontStyle03);
514  nickNameLabel->setText(TTK_DEFAULT_STR);
515 
516  QLabel *birthLabel = new QLabel(topLineWidget);
517  birthLabel->setStyleSheet(TTK::UI::ColorStyle04 + TTK::UI::FontStyle03);
518  birthLabel->setText(TTK_DEFAULT_STR);
519 
520  topLineLayout->addWidget(artistLabel);
521  topLineLayout->addWidget(nickNameLabel);
522  topLineLayout->addWidget(birthLabel);
523  topLineWidget->setLayout(topLineLayout);
524 
525  QWidget *topButtonWidget = new QWidget(topFuncWidget);
526  topButtonWidget->setStyleSheet(TTK::UI::PushButtonStyle03);
527  QHBoxLayout *topButtonLayout = new QHBoxLayout(topButtonWidget);
528  topButtonLayout->setContentsMargins(0, 0, 0, 0);
529 
530  QPushButton *playAllButton = new QPushButton(tr("Play All"), topButtonWidget);
531  QPushButton *shareButton = new QPushButton(tr("Share"), topButtonWidget);
532 
533  playAllButton->setIcon(QIcon(":/contextMenu/btn_play_white"));
534  playAllButton->setIconSize(QSize(14, 14));
535  playAllButton->setCursor(QCursor(Qt::PointingHandCursor));
536  shareButton->setCursor(QCursor(Qt::PointingHandCursor));
537  playAllButton->setFixedSize(90, 30);
538  shareButton->setFixedSize(55, 30);
539 
540  topButtonLayout->addWidget(playAllButton);
541  topButtonLayout->addWidget(shareButton);
542  topButtonLayout->addStretch(1);
543  topButtonWidget->setLayout(topButtonLayout);
544  topLineLayout->addWidget(topButtonWidget);
545 
546  connect(playAllButton, SIGNAL(clicked()), SLOT(playAllButtonClicked()));
547  connect(shareButton, SIGNAL(clicked()), SLOT(shareButtonClicked()));
548  //
549  QWidget *topRightWidget = new QWidget(topFuncWidget);
550  QGridLayout *topRightLayout = new QGridLayout(topRightWidget);
551  topRightLayout->setContentsMargins(0, 0, 0, 0);
552  topRightLayout->setSpacing(0);
553 
554  QLabel *numberLabel = new QLabel(topRightWidget);
555  numberLabel->setAlignment(Qt::AlignCenter);
556  numberLabel->setStyleSheet(TTK::UI::FontStyle05 + TTK::UI::ColorStyle11);
557 
558  const int number = 7 + TTK::random(3);
559  numberLabel->setText(QString("%1.%2").arg(number).arg(TTK::random(10)));
560  topRightLayout->addWidget(numberLabel, 0, 0);
561  topRightLayout->addWidget(new MusicRatingLabel(ceil(number / 2.0), topRightWidget), 0, 1, 1, 6);
562 
563  QLabel *numberTextLabel = new QLabel(tr("Score:"), topRightWidget);
564  topRightLayout->addWidget(numberTextLabel, 1, 0);
565  topRightLayout->addWidget(new MusicRatingLabel(topRightWidget), 1, 1, 1, 6);
566 
567  QLabel *marginBottmLabel = new QLabel(topRightWidget);
568  marginBottmLabel->setFixedHeight(40);
569  topRightLayout->addWidget(marginBottmLabel, 2, 0);
570  topRightWidget->setLayout(topRightLayout);
571 
572  QRCodeQWidget *code = new QRCodeQWidget({}, QSize(90, 90), topRightWidget);
573  code->setMargin(2);
574  code->setIcon(":/image/lb_app_logo", 0.23);
575  topRightLayout->addWidget(code, 3, 2, 1, 6);
576 
577  topFuncLayout->addWidget(m_iconLabel);
578  topFuncLayout->addWidget(topLineWidget);
579  topFuncLayout->addWidget(topRightWidget);
580  topFuncWidget->setLayout(topFuncLayout);
581  grid->addWidget(topFuncWidget);
582  //
583  QWidget *functionWidget = new QWidget(this);
584  functionWidget->setStyleSheet(TTK::UI::PushButtonStyle03);
585  QHBoxLayout *hLayout = new QHBoxLayout(functionWidget);
586 
587  m_songButton = new QPushButton(functionWidget);
588  m_songButton->setText(tr("SongItems"));
589  m_songButton->setFixedSize(100, 25);
590  m_songButton->setCursor(QCursor(Qt::PointingHandCursor));
591  hLayout->addWidget(m_songButton);
592 
593  QPushButton *infoButton = new QPushButton(functionWidget);
594  infoButton->setText(tr("Info"));
595  infoButton->setFixedSize(100, 25);
596  infoButton->setCursor(QCursor(Qt::PointingHandCursor));
597  hLayout->addWidget(infoButton);
598 
599  QPushButton *albumsButton = new QPushButton(functionWidget);
600  albumsButton->setText(tr("Albums"));
601  albumsButton->setFixedSize(100, 25);
602  albumsButton->setCursor(QCursor(Qt::PointingHandCursor));
603  hLayout->addWidget(albumsButton);
604 
605  QPushButton *mvsButton = new QPushButton(functionWidget);
606  mvsButton->setText(tr("Movies"));
607  mvsButton->setFixedSize(100, 25);
608  mvsButton->setCursor(QCursor(Qt::PointingHandCursor));
609 
610  hLayout->addWidget(mvsButton);
611  hLayout->addStretch(1);
612  functionWidget->setLayout(hLayout);
613 
614  QButtonGroup *buttonGroup = new QButtonGroup(this);
615  buttonGroup->addButton(m_songButton, 0);
616  buttonGroup->addButton(infoButton, 1);
617  buttonGroup->addButton(albumsButton, 2);
618  buttonGroup->addButton(mvsButton, 3);
619  QtButtonGroupConnect(buttonGroup, this, setCurrentIndex, TTK_SLOT);
620 
621 #ifdef Q_OS_UNIX
622  playAllButton->setFocusPolicy(Qt::NoFocus);
623  shareButton->setFocusPolicy(Qt::NoFocus);
624  m_songButton->setFocusPolicy(Qt::NoFocus);
625  infoButton->setFocusPolicy(Qt::NoFocus);
626  albumsButton->setFocusPolicy(Qt::NoFocus);
627  mvsButton->setFocusPolicy(Qt::NoFocus);
628 #endif
629  grid->addWidget(functionWidget);
630  grid->addWidget(m_container);
631  grid->addStretch(1);
632 
633  function->setLayout(grid);
634  m_mainWindow->layout()->addWidget(function);
635 
636  m_resizeWidgets.push_back({firstLabel, firstLabel->font()});
637  m_resizeWidgets.push_back({artistLabel, artistLabel->font()});
638  m_resizeWidgets.push_back({nickNameLabel, nickNameLabel->font()});
639  m_resizeWidgets.push_back({birthLabel, birthLabel->font()});
640 }
static MusicRightAreaWidget * instance()
void setQueryInput(MusicAbstractQueryRequest *query)
TTK_MODULE_EXPORT QString generateSongArtist(const QString &name, const QString &key=TTK_DEFAULT_STR)
Definition: musicsong.cpp:121
The class of the search result data item.
virtual void setCurrentValue(const QString &value) overridefinal
The class of the artist albums query widget.
MusicArtistAlbumsQueryWidget * m_artistAlbums
static constexpr const char * TinyBtnPlaylist
#define TTK_DEFAULT_STR
Definition: ttkglobal.h:203
static const QString FontStyle03
MusicPageQueryWidget * m_pageQueryWidget
MusicArtistQueryWidget(QWidget *parent=nullptr)
MusicItemQueryTableWidget * m_queryTableWidget
MusicArtistAlbumsItemWidget(QWidget *parent=nullptr)
int pageTotalSize() const noexcept
MusicPageQueryWidget * m_pageQueryWidget
virtual void startToRequest(const QString &url)=0
The class of the artist mvs query widget.
static const QString CheckBoxStyle01
CheckBox.
static const QString PushButtonStyle01
PushButton.
MusicArtistMvsQueryWidget(QWidget *parent=nullptr)
static const QString ColorStyle04
Definition: musicuiobject.h:46
void setIcon(const QString &path, float percent)
static constexpr int LINE_SPACING_SIZE
void createArtistAlbumsItem(const MusicResultDataItem &item)
virtual void setCurrentValue(const QString &value)
static const QString FontStyle01
Font.
virtual void resizeWidget() overridefinal
void setMargin(const int margin)
virtual void resizeWidget() overridefinal
virtual void setCurrentID(const QString &id) overridefinal
void downLoadFinished(const QByteArray &bytes)
The class of the query item table widget.
TTK_MODULE_EXPORT int random(int value=RAND_MAX)
Definition: ttktime.cpp:14
MusicAbstractQueryRequest * queryInput() const
void createArtistItem(const MusicResultDataItem &item)
void setResultDataItem(const MusicResultDataItem &item)
#define qAsConst
Definition: ttkqtglobal.h:51
static constexpr int HEIGHT_LABEL_SIZE
virtual void setCurrentValue(const QString &value) overridefinal
static const QString FontStyle05
static const QString PushButtonStyle03
The class of the qr code widget.
Definition: qrcodewidget.h:31
static constexpr int WIDTH_LABEL_SIZE
void setInputData(const QByteArray &data, const QSize &size)
The class of the page query widget.
virtual void startToPage(int offset)
MusicArtistMvsQueryWidget * m_artistMvs
TTK_MODULE_EXPORT QString elidedText(const QFont &font, const QString &text, Qt::TextElideMode mode, int width)
void page(int index, int total)
#define TTK_SLOT
Definition: ttkqtglobal.h:181
TTK_MODULE_EXPORT void generateVScrollAreaStyle(QWidget *widget, QWidget *parent, bool background=true)
#define QtButtonGroupConnect(p, q, f, s)
Button group connect.
Definition: ttkqtcompat.h:101
static bool isCoverValid(const QString &url)
void downLoadFinished(const QByteArray &bytes)
The class of the image render thread.
void movieSearchByID(const QString &id)
The class of the rating label.
The class of the item query widget base.
Definition: inftrees.h:24
void renderFinished(const QPixmap &data)
QWidget * createPageWidget(QWidget *parent, int total)
virtual void setCurrentID(const QString &id) overridefinal
MusicArtistAlbumsQueryWidget(QWidget *parent=nullptr)
virtual void startToSearchByText(const QString &text) overridefinal
void createArtistMvsItem(const MusicResultDataItem &item)
void currentItemClicked(const QString &id)
#define WINDOW_WIDTH_MIN
Definition: musicobject.h:155
MusicAbstractQueryRequest * m_networkRequest
The class of the artist albums item widget.
virtual void resizeWidget() overridefinal
static const QString ColorStyle11
Definition: musicuiobject.h:67
virtual void setCurrentValue(const QString &value) overridefinal
#define G_DOWNLOAD_QUERY_PTR
#define QUERY_WIDGET_WIDTH
The class of the cover data download request.
virtual void startToSearch(const QString &value)=0
The class of the abstract query download data from net.
const TTK::MusicSongInformationList & items() const
MusicSongSharingWidget::Module m_shareType
#define TTK_ERROR_STREAM(msg)
Definition: ttklogger.h:70
virtual void setCurrentID(const QString &id) overridefinal
The class of the music song information.
Definition: musicobject.h:283
void currentItemClicked(const QString &id)
void albumSearchByID(const QString &id)
#define G_SETTING_PTR