TTKMusicPlayer  4.1.3.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicwebmvradioinfowidget.cpp
Go to the documentation of this file.
4 #include "musiccoverrequest.h"
5 #include "musicdownloadwidget.h"
6 #include "musicrightareawidget.h"
7 
8 #include <qmath.h>
9 Q_DECLARE_METATYPE(TTK::MusicSongInformation)
10 
13 {
14 
15 }
16 
18 {
19  removeItems();
20 }
21 
23 {
25  switch(column)
26  {
27  case 5:
28  case 6:
29  {
30  const TTK::MusicSongInformationList &songInfos = m_networkRequest->items();
31  if(!isValid(row) || row >= songInfos.count())
32  {
33  return;
34  }
35 
36  MusicRightAreaWidget::instance()->movieRadioSearchByID(QVariant::fromValue<TTK::MusicSongInformation>(songInfos[row]));
37  break;
38  }
39  case 7: downloadQueryResult(row); break;
40  default: break;
41  }
42 }
43 
45 {
46  Q_UNUSED(column);
47  itemCellClicked(row, 5);
48 }
49 
51 {
52  const int row = currentRow();
53  const TTK::MusicSongInformationList &songInfos = m_networkRequest->items();
54  if(!isValid(row) || row >= songInfos.count())
55  {
56  return;
57  }
58 
59  switch(action->data().toInt())
60  {
61  case 0: itemCellClicked(row, 6); break;
62  case 1: itemCellClicked(row, 7); break;
63  default: break;
64  }
65 }
66 
68 {
69  MusicQueryTableWidget::contextMenuEvent(event);
70 
71  QMenu menu;
72  menu.setStyleSheet(TTK::UI::MenuStyle02);
73 
74  const int row = currentRow();
75  const TTK::MusicSongInformationList &songInfos = m_networkRequest->items();
76  if(!isValid(row) || row >= songInfos.count())
77  {
78  return;
79  }
80 
81  menu.addAction(QIcon(":/contextMenu/btn_play"), tr("Play"))->setData(0);
82  menu.addAction(tr("Download More..."))->setData(1);
83  connect(&menu, SIGNAL(triggered(QAction*)), SLOT(actionChanged(QAction*)));
84 
85  menu.exec(QCursor::pos());
86 }
87 
88 
89 
92 {
93  delete m_statusLabel;
94  m_statusLabel = nullptr;
95 
97  m_queryTableWidget->hide();
98 
101 
102  connect(d, SIGNAL(downLoadDataChanged(QString)), SLOT(queryAllFinished()));
103  connect(d, SIGNAL(createMVRadioItem(MusicResultDataItem)), SLOT(createMVRadioProgramItem(MusicResultDataItem)));
104 }
105 
107 {
110 }
111 
113 {
115 
116  if(!m_resizeWidgets.isEmpty())
117  {
118  const int width = G_SETTING_PTR->value(MusicSettingManager::WidgetSize).toSize().width() - WINDOW_WIDTH_MIN + 390;
119 
120  TTKResizeWidget *data = &m_resizeWidgets[0];
121  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width));
122 
123  data = &m_resizeWidgets[1];
124  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width));
125  }
126 }
127 
129 {
131 }
132 
134 {
135  m_currentPlaylistItem = item;
136 
137  createLabels();
138 
139  if(!m_resizeWidgets.isEmpty())
140  {
141  if(TTK::isCoverValid(item.m_coverUrl))
142  {
143  MusicCoverRequest *d = G_DOWNLOAD_QUERY_PTR->makeCoverRequest(this);
144  connect(d, SIGNAL(downLoadRawDataChanged(QByteArray)), SLOT(downLoadFinished(QByteArray)));
145  d->startToRequest(item.m_coverUrl);
146  }
147 
148  const int width = G_SETTING_PTR->value(MusicSettingManager::WidgetSize).toSize().width() - WINDOW_WIDTH_MIN + 390;
149 
150  TTKResizeWidget *data = &m_resizeWidgets[0];
151  data->m_label->setToolTip(item.m_name);
152  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width));
153 
154  data = &m_resizeWidgets[1];
155  data->m_label->setToolTip(tr("Type: %1").arg(item.m_nickName));
156  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width));
157  }
158 }
159 
161 {
163 }
164 
166 {
167  initThirdWidget();
168  m_container->show();
169 
170  layout()->removeWidget(m_mainWindow);
171  QScrollArea *scrollArea = new QScrollArea(this);
173  layout()->addWidget(scrollArea);
174 
175  QWidget *function = new QWidget(m_mainWindow);
176  function->setStyleSheet(TTK::UI::CheckBoxStyle01 + TTK::UI::PushButtonStyle03);
177  QVBoxLayout *grid = new QVBoxLayout(function);
178 
179  QWidget *firstTopFuncWidget = new QWidget(function);
180  QHBoxLayout *firstTopFuncLayout = new QHBoxLayout(firstTopFuncWidget);
181 
182  QLabel *firstLabel = new QLabel(function);
183  firstLabel->setText(tr("<font color=#158FE1> MVRadio > %1 </font>").arg(m_currentPlaylistItem.m_name));
184 
185  QPushButton *backButton = new QPushButton(tr("Back"));
186  backButton->setFixedSize(90, 30);
187  backButton->setStyleSheet(TTK::UI::PushButtonStyle03);
188  backButton->setCursor(QCursor(Qt::PointingHandCursor));
189  connect(backButton, SIGNAL(clicked()), this, SIGNAL(backToMainMenu()));
190 
191  firstTopFuncLayout->addWidget(firstLabel);
192  firstTopFuncLayout->addWidget(backButton);
193  grid->addWidget(firstTopFuncWidget);
194  //
195  QWidget *topFuncWidget = new QWidget(function);
196  QHBoxLayout *topFuncLayout = new QHBoxLayout(topFuncWidget);
197 
198  m_iconLabel = new QLabel(topFuncWidget);
199  m_iconLabel->setPixmap(QPixmap(":/image/lb_warning").scaled(180, 180));
200  m_iconLabel->setFixedSize(210, 180);
201  //
202  QWidget *topLineWidget = new QWidget(topFuncWidget);
203  QVBoxLayout *topLineLayout = new QVBoxLayout(topLineWidget);
204  topLineLayout->setContentsMargins(10, 5, 5, 0);
205 
206  QLabel *nameLabel = new QLabel(topLineWidget);
207  QFont nameFont = nameLabel->font();
208  nameFont.setPixelSize(20);
209  nameLabel->setFont(nameFont);
210  nameLabel->setStyleSheet(TTK::UI::FontStyle01);
211  nameLabel->setText(TTK_DEFAULT_STR);
212 
213  QLabel *typeLabel = new QLabel(topLineWidget);
214  typeLabel->setStyleSheet(TTK::UI::ColorStyle04 + TTK::UI::FontStyle03);
215  typeLabel->setText(TTK_DEFAULT_STR);
216 
217  topLineLayout->addWidget(nameLabel);
218  topLineLayout->addStretch(1);
219  topLineLayout->addWidget(typeLabel);
220  topLineLayout->addStretch(5);
221  topLineWidget->setLayout(topLineLayout);
222 
223  topFuncLayout->addWidget(m_iconLabel);
224  topFuncLayout->addWidget(topLineWidget);
225  topFuncWidget->setLayout(topFuncLayout);
226  grid->addWidget(topFuncWidget);
227  //
228  QWidget *functionWidget = new QWidget(this);
229  functionWidget->setStyleSheet(TTK::UI::PushButtonStyle03);
230  QHBoxLayout *hLayout = new QHBoxLayout(functionWidget);
231 
232  m_songButton = new QPushButton(functionWidget);
233  m_songButton->setText(tr("SongItems"));
234  m_songButton->setFixedSize(100, 25);
235  m_songButton->setCursor(QCursor(Qt::PointingHandCursor));
236 
237  hLayout->addWidget(m_songButton);
238  hLayout->addStretch(1);
239  functionWidget->setLayout(hLayout);
240 
241  QButtonGroup *buttonGroup = new QButtonGroup(this);
242  buttonGroup->addButton(m_songButton, 0);
243  QtButtonGroupConnect(buttonGroup, m_container, setCurrentIndex, TTK_SLOT);
244 
245 #ifdef Q_OS_UNIX
246  backButton->setFocusPolicy(Qt::NoFocus);
247  m_songButton->setFocusPolicy(Qt::NoFocus);
248 #endif
249  grid->addWidget(functionWidget);
250  grid->addWidget(m_container);
251  grid->addStretch(1);
252 
253  function->setLayout(grid);
254  m_mainWindow->layout()->addWidget(function);
255 
256  m_resizeWidgets.push_back({nameLabel, nameLabel->font()});
257  m_resizeWidgets.push_back({typeLabel, typeLabel->font()});
258 }
259 
261 {
262  QWidget *songWidget = new QWidget(this);
263  QVBoxLayout *vLayout = new QVBoxLayout(songWidget);
264  vLayout->setSpacing(0);
265  vLayout->setContentsMargins(0, 0, 0, 0);
266 
267  QWidget *middleFuncWidget = new QWidget(songWidget);
268  middleFuncWidget->setStyleSheet(TTK::UI::PushButtonStyle03);
269  QHBoxLayout *middleFuncLayout = new QHBoxLayout(middleFuncWidget);
270  middleFuncLayout->setContentsMargins(0, 5, 0, 5);
271 
272  QLabel *marginLabel = new QLabel(middleFuncWidget);
273  marginLabel->setFixedWidth(1);
274  QCheckBox *allCheckBox = new QCheckBox(TTK_SPACE + tr("All"), middleFuncWidget);
275  QPushButton *downloadButton = new QPushButton(tr("Download"), middleFuncWidget);
276  downloadButton->setFixedSize(55, 25);
277  downloadButton->setCursor(QCursor(Qt::PointingHandCursor));
278 
279 #ifdef Q_OS_UNIX
280  allCheckBox->setFocusPolicy(Qt::NoFocus);
281  downloadButton->setFocusPolicy(Qt::NoFocus);
282 #endif
283 
284  middleFuncLayout->addWidget(marginLabel);
285  middleFuncLayout->addWidget(allCheckBox);
286  middleFuncLayout->addStretch(1);
287  middleFuncLayout->addWidget(downloadButton);
288  connect(allCheckBox, SIGNAL(clicked(bool)), m_queryTableWidget, SLOT(checkedItemsState(bool)));
289  connect(downloadButton, SIGNAL(clicked()), SLOT(downloadMVsButtonClicked()));
290 
291  vLayout->addWidget(middleFuncWidget);
292  vLayout->addWidget(m_queryTableWidget);
293  vLayout->addStretch(1);
294  songWidget->setLayout(vLayout);
295 
296  m_queryTableWidget->show();
297  m_container->addWidget(songWidget);
298 }
static MusicRightAreaWidget * instance()
void setQueryInput(MusicAbstractQueryRequest *query)
The class of the search result data item.
#define TTK_DEFAULT_STR
Definition: ttkglobal.h:203
static const QString FontStyle03
MusicItemQueryTableWidget * m_queryTableWidget
virtual void startToRequest(const QString &url)=0
static const QString CheckBoxStyle01
CheckBox.
The class of the mv radio program request.
static const QString ColorStyle04
Definition: musicuiobject.h:46
virtual void setCurrentValue(const QString &value)
static const QString FontStyle01
Font.
void movieRadioSearchByID(const QVariant &data)
The class of the query item table widget.
virtual void itemDoubleClicked(int row, int column) overridefinal
virtual void resizeWidget() overridefinal
static const QString PushButtonStyle03
virtual void setCurrentValue(const QString &value) overridefinal
virtual void removeItems() overridefinal
TTK_MODULE_EXPORT QString elidedText(const QFont &font, const QString &text, Qt::TextElideMode mode, int width)
#define TTK_SLOT
Definition: ttkqtglobal.h:181
MusicWebMVRadioInfoWidget(QWidget *parent=nullptr)
The class of the music mv info table widget.
void createMVRadioProgramItem(const MusicResultDataItem &item)
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 item query widget base.
static const QString MenuStyle02
virtual void downloadQueryResult(int row) override
virtual void startToSearchByText(const QString &text) overridefinal
#define WINDOW_WIDTH_MIN
Definition: musicobject.h:155
#define G_DOWNLOAD_QUERY_PTR
virtual void itemCellClicked(int row, int column) override
The class of the cover data download request.
The class of the abstract query download data from net.
virtual void contextMenuEvent(QContextMenuEvent *event) overridefinal
const TTK::MusicSongInformationList & items() const
virtual void itemCellClicked(int row, int column) overridefinal
MusicAbstractQueryRequest * m_networkRequest
#define TTK_SPACE
Definition: ttkglobal.h:195
The class of the music song information.
Definition: musicobject.h:283
#define G_SETTING_PTR