TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicitemsearchtablewidget.cpp
Go to the documentation of this file.
3 
5  : MusicQueryTableWidget(parent)
6 {
7  m_actionGroup = new QActionGroup(this);
8  connect(m_actionGroup, SIGNAL(triggered(QAction*)), SLOT(searchActionClicked(QAction*)));
9 }
10 
12 {
13  delete m_actionGroup;
14 }
15 
17 {
18  Q_UNUSED(text);
19  setLoadingStatus(true);
20  setQueryInput(G_DOWNLOAD_QUERY_PTR->makeQueryRequest(this));
21 }
22 
24 {
25  const int row = currentRow();
26  if(!isValid(row))
27  {
28  return;
29  }
30 
31  const QString &songName = (row != -1 && rowCount() > 0) ? item(row, 1)->toolTip() : QString();
32  const QString &artistName = (row != -1 && rowCount() > 0) ? item(row, 2)->toolTip() : QString();
33 
34  switch(action->data().toInt())
35  {
36  case 0: downloadQueryResult(row); break;
37  case 1: Q_EMIT restartToSearchQuery(songName); break;
38  case 2: Q_EMIT restartToSearchQuery(artistName); break;
39  case 3: Q_EMIT restartToSearchQuery(TTK::generateSongName(songName, artistName)); break;
40  default: break;
41  }
42 }
43 
45 {
46  if(!m_networkRequest)
47  {
48  return;
49  }
50 
51  menu.setStyleSheet(TTK::UI::MenuStyle02);
52  m_actionGroup->addAction(menu.addAction(tr("Download")))->setData(0);
53  menu.addSeparator();
54 
55  const int row = currentRow();
56  const TTK::MusicSongInformationList songInfos(m_networkRequest->items());
57  if(!isValid(row) || row >= songInfos.count())
58  {
59  return;
60  }
61 
62  const TTK::MusicSongInformation &info = songInfos[row];
63  m_actionGroup->addAction(menu.addAction(tr("Search '%1'").arg(info.m_songName)))->setData(1);
64  m_actionGroup->addAction(menu.addAction(tr("Search '%1'").arg(info.m_artistName)))->setData(2);
65  m_actionGroup->addAction(menu.addAction(tr("Search '%1 - %2'").arg(info.m_artistName, info.m_songName)))->setData(3);
66 }
67 
69 {
70  switch(TTK::random(5) + 3)
71  {
72  case 0: return QString(":/video/lb_video_1");
73  case 1: return QString(":/video/lb_video_2");
74  case 2: return QString(":/video/lb_video_3");
75  case 3: return QString(":/video/lb_video_4");
76  case 4: return QString(":/video/lb_video_5");
77  default: return QString(":/video/lb_video_5");
78  }
79 }
virtual void setQueryInput(MusicAbstractQueryRequest *query)
TTK_MODULE_EXPORT QString generateSongName(const QString &title, const QString &artist)
Definition: musicsong.cpp:112
virtual void startToSearchByText(const QString &text) override
virtual void searchActionClicked(QAction *action)
virtual void downloadQueryResult(int row)=0
MusicItemSearchTableWidget(QWidget *parent=nullptr)
TTK_MODULE_EXPORT int random(int value=RAND_MAX)
Definition: ttktime.cpp:14
static const QString MenuStyle02
The class of the query table widget.
void restartToSearchQuery(const QString &name)
#define G_DOWNLOAD_QUERY_PTR
const TTK::MusicSongInformationList & items() const
void setLoadingStatus(bool status) const
MusicAbstractQueryRequest * m_networkRequest
The class of the music song information.
Definition: musicobject.h:281