TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musictoplistquerywidget.cpp
Go to the documentation of this file.
3 #include "musiccoverrequest.h"
5 
8 {
9 
10 }
11 
13 {
14  removeItems();
15 }
16 
18 {
20  if(parent()->metaObject()->indexOfSlot("queryAllFinished()") != -1)
21  {
22  connect(m_networkRequest, SIGNAL(downLoadDataChanged(QString)), parent(), SLOT(queryAllFinished()));
23  }
24 }
25 
26 
27 
30  m_categoryButton(nullptr)
31 {
33  m_queryTableWidget->hide();
34 
35  MusicAbstractQueryRequest *d = G_DOWNLOAD_QUERY_PTR->makeToplistRequest(this);
37 
39 }
40 
42 {
43  delete m_categoryButton;
44 }
45 
46 void MusicToplistQueryWidget::setCurrentValue(const QString &value)
47 {
50  createLabels();
51 }
52 
54 {
56 
57  if(!m_resizeWidgets.isEmpty())
58  {
59  const int width = G_SETTING_PTR->value(MusicSettingManager::WidgetSize).toSize().width() - WINDOW_WIDTH_MIN + 410;
60 
61  TTKResizeWidget *data = &m_resizeWidgets[0];
62  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width - 20));
63 
64  data = &m_resizeWidgets[1];
65  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width));
66 
67  data = &m_resizeWidgets[2];
68  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width));
69 
70  data = &m_resizeWidgets[3];
71  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width + 410 * 10));
72  }
73 }
74 
76 {
78 }
79 
81 {
82  delete m_statusLabel;
83  m_statusLabel = nullptr;
84 
86  m_container->show();
87 
88  layout()->removeWidget(m_mainWindow);
89  QScrollArea *scrollArea = new QScrollArea(this);
91  layout()->addWidget(scrollArea);
92 
93  QWidget *function = new QWidget(m_mainWindow);
94  function->setStyleSheet(TTK::UI::CheckBoxStyle01 + TTK::UI::PushButtonStyle03);
95  QVBoxLayout *grid = new QVBoxLayout(function);
96 
97  QLabel *firstLabel = new QLabel(function);
98  firstLabel->setText(tr("<font color=#158FE1> Rank </font>"));
99  grid->addWidget(firstLabel);
100  //
101  QWidget *categoryWidget = new QWidget(function);
102  QHBoxLayout *categoryWidgetLayout = new QHBoxLayout(categoryWidget);
103 
106 
107  categoryWidgetLayout->addWidget(m_categoryButton);
108  categoryWidgetLayout->addStretch(1);
109  categoryWidget->setLayout(categoryWidgetLayout);
110  grid->addWidget(categoryWidget);
111  //
112  QWidget *topFuncWidget = new QWidget(function);
113  QHBoxLayout *topFuncLayout = new QHBoxLayout(topFuncWidget);
114 
115  m_iconLabel = new QLabel(topFuncWidget);
116  m_iconLabel->setPixmap(QPixmap(":/image/lb_warning").scaled(180, 180));
117  m_iconLabel->setFixedSize(210, 180);
118  //
119  QWidget *topLineWidget = new QWidget(topFuncWidget);
120  QVBoxLayout *topLineLayout = new QVBoxLayout(topLineWidget);
121  topLineLayout->setContentsMargins(10, 5, 5, 0);
122 
123  QLabel *nameLabel = new QLabel(topLineWidget);
124  QFont toplistFont = nameLabel->font();
125  toplistFont.setPixelSize(20);
126  nameLabel->setFont(toplistFont);
127  nameLabel->setStyleSheet(TTK::UI::FontStyle01);
128 
129  QLabel *playCountLabel = new QLabel(topLineWidget);
130  playCountLabel->setStyleSheet(TTK::UI::ColorStyle04 + TTK::UI::FontStyle03);
131  QLabel *updateTimeLabel = new QLabel(topLineWidget);
132  updateTimeLabel->setStyleSheet(TTK::UI::ColorStyle04 + TTK::UI::FontStyle03);
133  QLabel *descriptionLabel = new QLabel(topLineWidget);
134  descriptionLabel->setStyleSheet(TTK::UI::ColorStyle04 + TTK::UI::FontStyle03);
135  descriptionLabel->setWordWrap(true);
136 
137  topLineLayout->addWidget(nameLabel);
138  topLineLayout->addWidget(playCountLabel);
139  topLineLayout->addWidget(updateTimeLabel);
140  topLineLayout->addWidget(descriptionLabel);
141  topLineWidget->setLayout(topLineLayout);
142 
143  topFuncLayout->addWidget(m_iconLabel);
144  topFuncLayout->addWidget(topLineWidget);
145  topFuncWidget->setLayout(topFuncLayout);
146  grid->addWidget(topFuncWidget);
147 
148  QWidget *functionWidget = new QWidget(this);
149  functionWidget->setStyleSheet(TTK::UI::PushButtonStyle03);
150  QHBoxLayout *hLayout = new QHBoxLayout(functionWidget);
151 
152  m_songButton = new QPushButton(functionWidget);
153  m_songButton->setText(tr("SongItems"));
154  m_songButton->setFixedSize(100, 25);
155  m_songButton->setCursor(QCursor(Qt::PointingHandCursor));
156 
157  hLayout->addWidget(m_songButton);
158  hLayout->addStretch(1);
159  functionWidget->setLayout(hLayout);
160 
161  QButtonGroup *buttonGroup = new QButtonGroup(this);
162  buttonGroup->addButton(m_songButton, 0);
163  QtButtonGroupConnect(buttonGroup, m_container, setCurrentIndex, TTK_SLOT);
164 
165 #ifdef Q_OS_UNIX
166  m_songButton->setFocusPolicy(Qt::NoFocus);
167 #endif
168  grid->addWidget(functionWidget);
169  grid->addWidget(m_container);
170  grid->addStretch(1);
171 
172  function->setLayout(grid);
173  m_mainWindow->layout()->addWidget(function);
174 
175  m_resizeWidgets.push_back({nameLabel, nameLabel->font()});
176  m_resizeWidgets.push_back({playCountLabel, playCountLabel->font()});
177  m_resizeWidgets.push_back({updateTimeLabel, updateTimeLabel->font()});
178  m_resizeWidgets.push_back({descriptionLabel, descriptionLabel->font()});
179 }
180 
182 {
183  if(!m_resizeWidgets.isEmpty())
184  {
185  const int width = G_SETTING_PTR->value(MusicSettingManager::WidgetSize).toSize().width() - WINDOW_WIDTH_MIN + 410;
186 
187  TTKResizeWidget *data = &m_resizeWidgets[0];
188  data->m_label->setToolTip(item.m_name);
189  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width - 20));
190 
191  data = &m_resizeWidgets[1];
192  data->m_label->setToolTip(tr("PlayCount: %1").arg(item.m_count));
193  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width));
194 
195  data = &m_resizeWidgets[2];
196  data->m_label->setToolTip(tr("UpdateTime: %1").arg(item.m_updateTime));
197  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width));
198 
199  data = &m_resizeWidgets[3];
200  data->m_label->setToolTip(tr("Description: %1").arg(item.m_description));
201  data->m_label->setText(TTK::Widget::elidedText(data->m_font, data->m_label->toolTip(), Qt::ElideRight, width + 410 * 10));
202  }
203 
204  if(!item.m_coverUrl.isEmpty() && item.m_coverUrl != TTK_NULL_STR)
205  {
206  MusicCoverRequest *d = G_DOWNLOAD_QUERY_PTR->makeCoverRequest(this);
207  connect(d, SIGNAL(downLoadRawDataChanged(QByteArray)), SLOT(downLoadFinished(QByteArray)));
208  d->startToRequest(item.m_coverUrl);
209  }
210 }
211 
213 {
214  if(m_categoryButton)
215  {
216  m_categoryButton->setToolTip(category.m_value);
217  m_categoryButton->setText(TTK::Widget::elidedText(m_categoryButton->font(), category.m_value, Qt::ElideRight, m_categoryButton->width() - 20));
219 
220  m_songButton->setText(tr("SongItems"));
222  }
223 }
virtual void setQueryInput(MusicAbstractQueryRequest *query)
void categoryChanged(const MusicResultsCategoryItem &category)
The class of the search result data item.
MusicToplistQueryTableWidget(QWidget *parent=nullptr)
MusicToplistQueryCategoryPopWidget * m_categoryButton
static const QString FontStyle03
MusicItemQueryTableWidget * m_queryTableWidget
The class of the toplist music query category pop widget.
virtual void startToRequest(const QString &url)=0
static const QString CheckBoxStyle01
CheckBox.
virtual void resizeWidget() overridefinal
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.
MusicToplistQueryWidget(QWidget *parent=nullptr)
MusicAbstractQueryRequest * queryInput() const
static const QString PushButtonStyle03
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:165
#define TTK_NULL_STR
Definition: ttkglobal.h:202
#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.
void setCategory(const QString &server, QObject *obj)
TTK_MODULE_EXPORT void generateVScrollAreaFormat(QWidget *widget, QWidget *parent, bool background=true)
The class of the results category item.
void createToplistItem(const MusicResultDataItem &item)
#define WINDOW_WIDTH_MIN
Definition: musicobject.h:153
virtual void setCurrentValue(const QString &value) overridefinal
#define G_DOWNLOAD_QUERY_PTR
The class of the cover data download request.
virtual void startToSearch(const QString &value)=0
The class of the abstract query download data from net.
The class of the toplist music query table widget.
virtual void setQueryInput(MusicAbstractQueryRequest *query) overridefinal
MusicAbstractQueryRequest * m_networkRequest
#define G_SETTING_PTR