TTKMusicPlayer  4.3.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.setRenderHint(QPainter::SmoothPixmapTransform);
39  painter.drawPixmap(width() - 17, height() - 17, 17, 17, QPixmap(":/tiny/lb_selected"));
40  }
41 }
42 
43 
44 
46  : MusicToolMenuWidget(parent)
47 {
48  initialize();
49 }
50 
52 {
53  qDeleteAll(m_items);
54 }
55 
57 {
58  m_menu->exec(mapToGlobal(QPoint(-m_containWidget->width() + width(), 0)));
59 }
60 
62 {
63  if(m_exclusive)
64  {
66  {
67  item->setChecked(false);
68  }
69  }
70 
71  const QStringList &types = spectrumTypeList();
72  bool state = !m_items[index]->isChecked();
73  m_items[index]->setChecked(state);
74 
75  Q_EMIT stateChanged(state, types[index]);
76  if(!state)
77  {
78  m_items[index]->setChecked(false);
79  }
80  m_menu->close();
81 }
82 
84 {
85  m_exclusive = false;
86 
87  const QString &style = TTK::UI::BorderStyle02 + TTK::UI::BackgroundStyle10;
88  setObjectName(MusicSpectrumLayoutWidget::metaObject()->className());
89  setStyleSheet(QString("#%1{ %2 }").arg(objectName(), style));
90 
91  m_containWidget->setFixedSize(240, 440);
92  m_containWidget->setObjectName("ContainWidget");
93  m_containWidget->setStyleSheet(QString("#%1{ %2 }").arg(m_containWidget->objectName(), style));
94 
95  QVBoxLayout *layout = new QVBoxLayout(m_containWidget);
96  layout->setContentsMargins(0, 0, 0, 0);
97  layout->setSpacing(0);
98 
99  QScrollArea *scrollArea = new QScrollArea(m_containWidget);
100  QWidget *containWidget = new QWidget(scrollArea);
101  containWidget->setStyleSheet(TTK::UI::BackgroundStyle10);
102  m_containLayout = new QVBoxLayout(containWidget);
103  m_containLayout->setContentsMargins(5, 0, 0, 0);
104  m_containLayout->setSpacing(20);
105  containWidget->setLayout(m_containLayout);
106 
107  TTK::Widget::generateVScrollAreaStyle(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->addWidget(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("Jakdaw"));
179  items << SpectrumInfo(":/spectrum/flow_5", tr("MadSpin"));
180  items << SpectrumInfo(":/spectrum/flow_6", tr("Infinity"));
181  items << SpectrumInfo(":/spectrum/flow_7", tr("Mountain"));
182  items << SpectrumInfo(":/spectrum/flow_8", tr("Matrix"));
183  items << SpectrumInfo(":/spectrum/flow_9", tr("VU Meter"));
184  addCellItems(items);
185 }
186 
188 {
189  return {"flowgoom", "flowprojectm", "flowsonique", "flowjakdaw", "flowmadspin", "flowinfinity", "flowmountain", "flowmatrix", "flowvumeter"};
190 }
191 
192 
193 
195  : MusicSpectrumLayoutWidget(parent)
196 {
197  SpectrumInfoList items;
198  items << SpectrumInfo(":/spectrum/wave_1", tr("Voice"));
199  items << SpectrumInfo(":/spectrum/wave_2", tr("Crest"));
200  items << SpectrumInfo(":/spectrum/wave_3", tr("Volume"));
201  items << SpectrumInfo(":/spectrum/wave_4", tr("WaveForm"));
202  addCellItems(items);
203 }
204 
206 {
207  return {"wavevoice", "wavecrest", "wavevolume", "lightwaveform"};
208 }
209 
210 
211 
213  : MusicSpectrumLayoutWidget(parent)
214 {
215  m_exclusive = true;
216 
217  SpectrumInfoList items;
218  items << SpectrumInfo(":/spectrum/florid_1", tr("Reverb"));
219  items << SpectrumInfo(":/spectrum/florid_2", tr("Autism"));
220  items << SpectrumInfo(":/spectrum/florid_3", tr("Bass"));
221  items << SpectrumInfo(":/spectrum/florid_4", tr("Surround"));
222  items << SpectrumInfo(":/spectrum/florid_5", tr("Ancient"));
223  items << SpectrumInfo(":/spectrum/florid_6", tr("Electric"));
224  items << SpectrumInfo(":/spectrum/florid_7", tr("Picture"));
225  addCellItems(items);
226 }
227 
229 {
230  return {"floridreverb", "floridautism", "floridbass", "floridsurround", "floridancient", "floridelectric", "floridpicture"};
231 }
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 addWidget(QWidget *widget, int id=-1)
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:57
QPair< QString, QString > SpectrumInfo
virtual QStringList spectrumTypeList() const overridefinal
QList< MusicSpectrumLayoutItem * > m_items
void stateChanged(bool &state, const QString &name)
TTK_MODULE_EXPORT void generateVScrollAreaStyle(QWidget *widget, QWidget *parent, bool background=true)
MusicSpectrumLayoutItem(QWidget *parent=nullptr)
static const QString BackgroundStyle10
void addCellItem(const QString &item, const QString &tip)
MusicSpectrumFlowLayoutWidget(QWidget *parent=nullptr)
static const QString BorderStyle02
virtual void paintEvent(QPaintEvent *event) overridefinal
virtual QStringList spectrumTypeList() const =0
QList< SpectrumInfo > SpectrumInfoList
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