TTKMusicPlayer  4.3.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicwebmvradioquerycategorypopwidget.cpp
Go to the documentation of this file.
2 #include "musicwidgetutils.h"
3 #include "musicwidgetheaders.h"
4 #include "ttkclickedgroup.h"
5 #include "ttkclickedlabel.h"
6 
7 static constexpr int ITEM_MAX_COLUMN = 2;
8 static constexpr int ITEM_LABEL_HEIGHT = 20;
9 
11  : QWidget(parent)
12 {
13  setStyleSheet({});
14 }
15 
17 {
18  m_category = category;
19 
20  QHBoxLayout *layout = new QHBoxLayout(this);
21  QLabel *label = new QLabel(category.m_category, this);
22  label->setStyleSheet(TTK::UI::ColorStyle03 + TTK::UI::FontStyle03);
23  label->setFixedSize(100, ITEM_LABEL_HEIGHT);
24  layout->addWidget(label, 0, Qt::AlignTop);
25 
26  QWidget *item = new QWidget(this);
27  QGridLayout *itemLayout = new QGridLayout(item);
28  itemLayout->setContentsMargins(0, 0, 0, 0);
29 
30  TTKClickedGroup *clickedGroup = new TTKClickedGroup(this);
31  connect(clickedGroup, SIGNAL(clicked(int)), SLOT(buttonClicked(int)));
32 
33  for(int i = 0; i < m_category.m_items.count(); ++i)
34  {
35  TTKClickedLabel *label = new TTKClickedLabel(m_category.m_items[i].m_value, item);
36  label->setStyleSheet(QString("QLabel::hover{ %1 }").arg(TTK::UI::ColorStyle07));
37  label->setFixedSize(200, ITEM_LABEL_HEIGHT);
38 
39  clickedGroup->addWidget(label);
40  itemLayout->addWidget(label, i / ITEM_MAX_COLUMN, i % ITEM_MAX_COLUMN, Qt::AlignLeft);
41  }
42 
43  item->setLayout(itemLayout);
44  layout->addWidget(item, 0, Qt::AlignTop);
45  setLayout(layout);
46 }
47 
49 {
50  if(0 <= index && index < m_category.m_items.count())
51  {
52  Q_EMIT categoryChanged(m_category.m_items[index]);
53  }
54 }
55 
56 
58  : MusicToolMenuWidget(parent)
59 {
60  initialize();
61 }
62 
63 void MusicWebMVRadioQueryCategoryPopWidget::setCategory(const QString &server, QObject *obj)
64 {
65  MusicResultsCategoryList categorys;
66  MusicCategoryConfigManager manager(server);
68  {
69  manager.readBuffer(categorys);
70  }
71 
72  QVBoxLayout *layout = new QVBoxLayout(m_containWidget);
73  QWidget *containWidget = new QWidget(m_containWidget);
74  containWidget->setStyleSheet(TTK::UI::BackgroundStyle10);
75  QVBoxLayout *containLayout = new QVBoxLayout(containWidget);
76  containWidget->setLayout(containLayout);
77 
78  QScrollArea *scrollArea = new QScrollArea(this);
79  TTK::Widget::generateVScrollAreaStyle(scrollArea, containWidget);
80  layout->addWidget(scrollArea);
81 
82  for(const MusicResultsCategory &category : qAsConst(categorys))
83  {
85  connect(item, SIGNAL(categoryChanged(MusicResultsCategoryItem)), obj, SLOT(categoryChanged(MusicResultsCategoryItem)));
86  item->setCategory(category);
87  containLayout->addWidget(item);
88  }
89  m_containWidget->setLayout(layout);
90 }
91 
93 {
94  m_menu->close();
95 }
96 
98 {
99  m_menu->exec(mapToGlobal(QPoint(0, 0)));
100 }
101 
103 {
104  setFixedSize(150, 30);
106  setText(tr("All"));
107 
108  const QString &style = TTK::UI::BorderStyle02 + TTK::UI::BackgroundStyle10;
109  setObjectName(MusicWebMVRadioQueryCategoryPopWidget::metaObject()->className());
110  setStyleSheet(QString("#%1{ %2 }").arg(objectName(), style));
111 
112  m_menu->setStyleSheet(TTK::UI::MenuStyle05);
113  m_containWidget->setFixedSize(480, 200);
114  m_containWidget->setObjectName("ContainWidget");
115  m_containWidget->setStyleSheet(QString("#%1{ %2 }").arg(m_containWidget->objectName(), style));
116 }
void categoryChanged(const MusicResultsCategoryItem &category)
The class of the tool menu base widget.
static constexpr int ITEM_MAX_COLUMN
static const QString FontStyle03
MusicToolMenu * m_menu
The class of the label widget that can click.
virtual bool readBuffer(MusicResultsCategoryList &items) overridefinal
void setCategory(const MusicResultsCategory &category)
static constexpr int ITEM_LABEL_HEIGHT
void addWidget(QWidget *widget, int id=-1)
The class of the results category core.
static const QString MenuStyle05
#define qAsConst
Definition: ttkqtglobal.h:57
The class of the category config manager.
TTK_MODULE_EXPORT void generateVScrollAreaStyle(QWidget *widget, QWidget *parent, bool background=true)
static const QString BackgroundStyle10
static const QString ColorStyle07
Definition: musicuiobject.h:55
static const QString ColorStyle03
Definition: musicuiobject.h:43
The class of the results category item.
static const QString BorderStyle02
void setCategory(const QString &server, QObject *obj)
The class of the music mv category item.
MusicResultsCategoryItemList m_items
The class of the label widget click group mapper.