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