TTKMusicPlayer  4.2.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 "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()
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
MusicItemQueryTableWidget * m_queryTableWidget
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.
void movieRadioSearchByID(const QVariant &data)
The class of the query item table widget.
virtual void itemDoubleClicked(int row, int column) overridefinal
bool isValid() const noexcept
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: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:101
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:167
#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
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:295
#define G_SETTING_PTR