TTKMusicPlayer  4.3.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_searchActions = new QActionGroup(this);
8  connect(m_searchActions, SIGNAL(triggered(QAction*)), SLOT(searchActionClicked(QAction*)));
9 }
10 
12 {
13  delete m_searchActions;
14 }
15 
17 {
18  const int row = currentRow();
19  if(!isValid(row))
20  {
21  return;
22  }
23 
24  const QString &songName = (row != -1 && rowCount() > 0) ? item(row, 1)->toolTip() : QString();
25  const QString &artistName = (row != -1 && rowCount() > 0) ? item(row, 2)->toolTip() : QString();
26 
27  switch(action->data().toInt())
28  {
29  case 0: downloadQueryResult(row); break;
30  case 1: Q_EMIT startToQueryByText(songName); break;
31  case 2: Q_EMIT startToQueryByText(artistName); break;
32  case 3: Q_EMIT startToQueryByText(TTK::generateSongName(songName, artistName)); break;
33  default: break;
34  }
35 }
36 
38 {
39  if(!m_networkRequest)
40  {
41  return;
42  }
43 
44  menu.setStyleSheet(TTK::UI::MenuStyle02);
45  m_searchActions->addAction(menu.addAction(tr("Download")))->setData(0);
46  menu.addSeparator();
47 
48  const int row = currentRow();
49  const TTK::MusicSongInformationList &songInfos = m_networkRequest->items();
50  if(!isValid(row) || row >= songInfos.count())
51  {
52  return;
53  }
54 
55  const TTK::MusicSongInformation &info = songInfos[row];
56  m_searchActions->addAction(menu.addAction(tr("Search '%1'").arg(info.m_songName)))->setData(1);
57  m_searchActions->addAction(menu.addAction(tr("Search '%1'").arg(info.m_artistName)))->setData(2);
58  m_searchActions->addAction(menu.addAction(tr("Search '%1 - %2'").arg(info.m_artistName, info.m_songName)))->setData(3);
59 }
60 
62 {
63  switch(TTK::random(5) + 3)
64  {
65  case 0: return QString(":/video/lb_video_1");
66  case 1: return QString(":/video/lb_video_2");
67  case 2: return QString(":/video/lb_video_3");
68  case 3: return QString(":/video/lb_video_4");
69  case 4: return QString(":/video/lb_video_5");
70  default: return QString(":/video/lb_video_5");
71  }
72 }
const TTK::MusicSongInformationList & items() const noexcept
virtual void searchActionClicked(QAction *action)
QString randSimulation() const noexcept
virtual void downloadQueryResult(int row)=0
MusicItemSearchTableWidget(QWidget *parent=nullptr)
TTK_MODULE_EXPORT int random(int value=RAND_MAX)
Definition: ttktime.cpp:14
void startToQueryByText(const QString &text)
bool isValid() const noexcept
static const QString MenuStyle02
The class of the query table widget.
#define const
Definition: zconf.h:233
MusicAbstractQueryRequest * m_networkRequest
TTK_MODULE_EXPORT QString generateSongName(const QString &title, const QString &artist) noexcept
The class of the music song information.
Definition: musicobject.h:300