TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicspectrumlayoutwidget.cpp
Go to the documentation of this file.
2 #include "musicwidgetutils.h"
3 #include "musicimageutils.h"
4 #include "ttkclickedgroup.h"
5 
6 #include <QScrollArea>
7 
9  : TTKClickedLabel(parent),
10  m_isSelected(false)
11 {
12  setFixedSize(219, 123);
13 }
14 
15 void MusicSpectrumLayoutItem::addCellItem(const QString &item, const QString &tip)
16 {
17  setPixmap(TTK::Image::roundedPixmap(item, 10, 10));
18  setToolTip(tip);
19 }
20 
22 {
23  m_isSelected = checked;
24  update();
25 }
26 
28 {
29  return m_isSelected;
30 }
31 
32 void MusicSpectrumLayoutItem::paintEvent(QPaintEvent *event)
33 {
34  TTKClickedLabel::paintEvent(event);
35  if(m_isSelected)
36  {
37  QPainter painter(this);
38  painter.drawPixmap(width() - 17, height() - 17, 17, 17, QPixmap(":/tiny/lb_selected"));
39  }
40 }
41 
42 
43 
45  : MusicToolMenuWidget(parent)
46 {
47  initialize();
48 }
49 
51 {
52  qDeleteAll(m_items);
53 }
54 
56 {
57  m_menu->exec(mapToGlobal(QPoint(-m_containWidget->width() + width(), 0)));
58 }
59 
61 {
62  if(m_exclusive)
63  {
65  {
66  item->setChecked(false);
67  }
68  }
69 
70  const QStringList &types = spectrumTypeList();
71  bool state = !m_items[index]->isChecked();
72  m_items[index]->setChecked(state);
73 
74  Q_EMIT stateChanged(state, types[index]);
75  if(!state)
76  {
77  m_items[index]->setChecked(false);
78  }
79  m_menu->close();
80 }
81 
83 {
84  m_exclusive = false;
85 
86  const QString &style = TTK::UI::BorderStyle03 + TTK::UI::BackgroundStyle10;
87  setObjectName(className());
88  setStyleSheet(QString("#%1{%2}").arg(className(), style));
89 
90  m_containWidget->setFixedSize(240, 440);
91  m_containWidget->setObjectName("ContainWidget");
92  m_containWidget->setStyleSheet(QString("#ContainWidget{%1}").arg(style));
93 
94  QVBoxLayout *layout = new QVBoxLayout(m_containWidget);
95  layout->setContentsMargins(0, 0, 0, 0);
96  layout->setSpacing(0);
97 
98  QScrollArea *scrollArea = new QScrollArea(m_containWidget);
99  QWidget *containWidget = new QWidget(scrollArea);
100  containWidget->setStyleSheet(TTK::UI::BackgroundStyle10);
101  m_containLayout = new QVBoxLayout(containWidget);
102 
103  m_containLayout->setContentsMargins(5, 0, 0, 0);
104  m_containLayout->setSpacing(20);
105  containWidget->setLayout(m_containLayout);
106 
107  TTK::Widget::generateVScrollAreaFormat(scrollArea, containWidget);
108  scrollArea->viewport()->setStyleSheet(TTK::UI::BackgroundStyle10);
109  layout->addWidget(scrollArea);
110 
111  m_containWidget->setLayout(layout);
112 }
113 
115 {
116  TTKClickedGroup *clickedGroup = new TTKClickedGroup(this);
117  connect(clickedGroup, SIGNAL(clicked(int)), SLOT(labelClicked(int)));
118 
119  for(int i = 0; i < items.count(); ++i)
120  {
121  const SpectrumInfo &info = items[i];
123  item->addCellItem(info.first, info.second);
124 
125  clickedGroup->mapped(item);
126  m_containLayout->addWidget(item);
127  m_items << item;
128  }
129 }
130 
131 
132 
134  : MusicSpectrumLayoutWidget(parent)
135 {
136  SpectrumInfoList items;
137  items << SpectrumInfo(":/spectrum/normal_1", tr("Analyzer"));
138  items << SpectrumInfo(":/spectrum/normal_2", tr("EWave"));
139  items << SpectrumInfo(":/spectrum/normal_3", tr("FlowWave"));
140  items << SpectrumInfo(":/spectrum/normal_4", tr("Histogram"));
141  items << SpectrumInfo(":/spectrum/normal_5", tr("Line"));
142  addCellItems(items);
143 }
144 
146 {
147  return {"normalanalyzer", "normalewave", "normalflowwave", "normalhistogram", "normalline"};
148 }
149 
150 
151 
153  : MusicSpectrumLayoutWidget(parent)
154 {
155  SpectrumInfoList items;
156  items << SpectrumInfo(":/spectrum/plus_1", tr("FoldWave"));
157  items << SpectrumInfo(":/spectrum/plus_2", tr("XRays"));
158  items << SpectrumInfo(":/spectrum/plus_3", tr("BlurXRays"));
159  addCellItems(items);
160 }
161 
163 {
164  return {"plusfoldwave", "plusxrays", "plusblurxrays"};
165 }
166 
167 
168 
170  : MusicSpectrumLayoutWidget(parent)
171 {
172  m_exclusive = true;
173 
174  SpectrumInfoList items;
175  items << SpectrumInfo(":/spectrum/flow_1", tr("Goom"));
176  items << SpectrumInfo(":/spectrum/flow_2", tr("Dazzle"));
177  items << SpectrumInfo(":/spectrum/flow_3", tr("Sonique"));
178  items << SpectrumInfo(":/spectrum/flow_4", tr("Infinity"));
179  items << SpectrumInfo(":/spectrum/flow_5", tr("Mountain"));
180  items << SpectrumInfo(":/spectrum/flow_6", tr("Matrix"));
181  items << SpectrumInfo(":/spectrum/flow_7", tr("VU Meter"));
182  addCellItems(items);
183 }
184 
186 {
187  return {"flowgoom", "flowprojectm", "flowsonique", "flowinfinity", "flowmountain", "flowmatrix", "flowvumeter"};
188 }
189 
190 
191 
193  : MusicSpectrumLayoutWidget(parent)
194 {
195  SpectrumInfoList items;
196  items << SpectrumInfo(":/spectrum/wave_1", tr("Voice"));
197  items << SpectrumInfo(":/spectrum/wave_2", tr("Crest"));
198  items << SpectrumInfo(":/spectrum/wave_3", tr("Volume"));
199  items << SpectrumInfo(":/spectrum/wave_4", tr("WaveForm"));
200  addCellItems(items);
201 }
202 
204 {
205  return {"wavevoice", "wavecrest", "wavevolume", "lightwaveform"};
206 }
207 
208 
209 
211  : MusicSpectrumLayoutWidget(parent)
212 {
213  m_exclusive = true;
214 
215  SpectrumInfoList items;
216  items << SpectrumInfo(":/spectrum/florid_1", tr("Reverb"));
217  items << SpectrumInfo(":/spectrum/florid_2", tr("Autism"));
218  items << SpectrumInfo(":/spectrum/florid_3", tr("Bass"));
219  items << SpectrumInfo(":/spectrum/florid_4", tr("Surround"));
220  items << SpectrumInfo(":/spectrum/florid_5", tr("Ancient"));
221  items << SpectrumInfo(":/spectrum/florid_6", tr("Electric"));
222  items << SpectrumInfo(":/spectrum/florid_7", tr("Picture"));
223  addCellItems(items);
224 }
225 
227 {
228  return {"floridreverb", "floridautism", "floridbass", "floridsurround", "floridancient", "floridelectric", "floridpicture"};
229 }
MusicSpectrumWaveLayoutWidget(QWidget *parent=nullptr)
The class of the tool menu base widget.
The class of the music spectrum layout item.
virtual QStringList spectrumTypeList() const overridefinal
void addCellItems(const SpectrumInfoList &items)
MusicSpectrumFloridLayoutWidget(QWidget *parent=nullptr)
MusicToolMenu * m_menu
virtual QStringList spectrumTypeList() const overridefinal
The class of the label widget that can click.
TTK_MODULE_EXPORT QPixmap roundedPixmap(const QPixmap &input, int ratioX, int ratioY)
void mapped(QWidget *widget)
virtual QStringList spectrumTypeList() const overridefinal
virtual void popupMenu() overridefinal
The class of the music spectrum layout widget.
MusicSpectrumLayoutWidget(QWidget *parent=nullptr)
#define qAsConst
Definition: ttkqtglobal.h:53
QPair< QString, QString > SpectrumInfo
virtual QStringList spectrumTypeList() const overridefinal
QList< MusicSpectrumLayoutItem * > m_items
void stateChanged(bool &state, const QString &name)
MusicSpectrumLayoutItem(QWidget *parent=nullptr)
static const QString BackgroundStyle10
void addCellItem(const QString &item, const QString &tip)
TTK_MODULE_EXPORT void generateVScrollAreaFormat(QWidget *widget, QWidget *parent, bool background=true)
MusicSpectrumFlowLayoutWidget(QWidget *parent=nullptr)
virtual void paintEvent(QPaintEvent *event) overridefinal
virtual QStringList spectrumTypeList() const =0
QList< SpectrumInfo > SpectrumInfoList
static const QString BorderStyle03
MusicSpectrumPlusLayoutWidget(QWidget *parent=nullptr)
MusicSpectrumNormalLayoutWidget(QWidget *parent=nullptr)
state
Definition: http_parser.c:279
The class of the label widget click group mapper.
virtual QStringList spectrumTypeList() const overridefinal