TTKMusicPlayer  4.3.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicgiflabelwidget.cpp
Go to the documentation of this file.
1 #include "musicgiflabelwidget.h"
2 #include "musicwidgetheaders.h"
3 
4 #include <QTimer>
5 
6 static constexpr int GIF_BALLON_WHITE = 35;
7 static constexpr int GIF_CICLE_BLUE = 58;
8 static constexpr int GIF_RICE_FONT_WHITE = 26;
9 static constexpr int GIF_RICE_FONT_BLACK_BIG = 42;
10 static constexpr int GIF_RICE_FONT_BLACK = 16;
11 static constexpr int GIF_HOURGLASS_WHITE = 38;
12 static constexpr int GIF_RADIO_BLUE = 14;
13 static constexpr int GIF_CHECK_BLUE = 93;
14 static constexpr int GIF_RECORD_RED = 30;
15 static constexpr int GIF_CLOSE_WHITE_WIDTH = 350;
16 static constexpr int GIF_CLOSE_WHITE_HEIGHT = 50;
17 
19  : QLabel(parent),
20  m_index(-1),
21  m_type(Module::BallonWhite),
22  m_isRunning(false),
23  m_infinited(true)
24 {
25  setFixedSize(GIF_CICLE_BLUE, GIF_CICLE_BLUE);
26 
27  m_timer = new QTimer(this);
28  m_timer->setInterval(100 * TTK_DN_MS);
29  connect(m_timer, SIGNAL(timeout()), SLOT(updateRender()));
30 }
31 
33  : MusicGifLabelWidget(parent)
34 {
35  setType(type);
36 }
37 
39 {
40  delete m_timer;
41 }
42 
44 {
45  m_index = 0;
46  switch(m_type = type)
47  {
48  case Module::BallonWhite: setFixedSize(GIF_BALLON_WHITE, GIF_BALLON_WHITE); break;
49  case Module::CicleBlue: setFixedSize(GIF_CICLE_BLUE, GIF_CICLE_BLUE); break;
54  case Module::RadioBlue: setFixedSize(GIF_RADIO_BLUE, GIF_RADIO_BLUE); break;
55  case Module::CheckBlue: setFixedSize(GIF_CHECK_BLUE, GIF_CHECK_BLUE); break;
56  case Module::RecordRed: setFixedSize(GIF_RECORD_RED, GIF_RECORD_RED); break;
58  default: break;
59  }
60 }
61 
63 {
64  return m_type;
65 }
66 
68 {
69  m_timer->setInterval(msec);
70 }
71 
73 {
74  return m_timer->interval();
75 }
76 
77 void MusicGifLabelWidget::setInfinited(bool s) noexcept
78 {
79  m_infinited = s;
80 }
81 
83 {
84  return m_infinited;
85 }
86 
88 {
89  if(run)
90  {
91  show();
92  start();
93  }
94  else
95  {
96  hide();
97  stop();
98  }
99 }
100 
102 {
103  m_timer->start();
104  m_isRunning = true;
105 }
106 
108 {
109  m_timer->stop();
110  m_isRunning = false;
111 }
112 
114 {
115  ++m_index;
116  switch(m_type)
117  {
118  case Module::BallonWhite:
119  {
120  if(m_index == 40 && infinitedModeCheck())
121  {
122  break;
123  }
124 
125  m_renderer = QPixmap(":/gif/lb_ballon_white").copy(GIF_BALLON_WHITE * m_index, 0, width(), height());
126  update();
127  break;
128  }
129  case Module::CicleBlue:
130  {
131  if(m_index == 12 && infinitedModeCheck())
132  {
133  break;
134  }
135 
136  m_renderer = QPixmap(":/gif/lb_cicle_blue").copy(GIF_CICLE_BLUE * m_index, 0, width(), height());
137  update();
138  break;
139  }
141  {
142  if(m_index == 8 && infinitedModeCheck())
143  {
144  break;
145  }
146 
147  m_renderer = QPixmap(":/gif/lb_rice_font_white").copy(GIF_RICE_FONT_WHITE * m_index, 0, width(), height());
148  update();
149  break;
150  }
152  {
153  if(m_index == 8 && infinitedModeCheck())
154  {
155  break;
156  }
157 
158  m_renderer = QPixmap(":/gif/lb_rice_font_black_big").copy(GIF_RICE_FONT_BLACK_BIG * m_index, 0, width(), height());
159  update();
160  break;
161  }
163  {
164  if(m_index == 12 && infinitedModeCheck())
165  {
166  break;
167  }
168 
169  m_renderer = QPixmap(":/gif/lb_rice_font_black").copy(GIF_RICE_FONT_BLACK * m_index, 0, width(), height());
170  update();
171  break;
172  }
174  {
175  if(m_index == 16 && infinitedModeCheck())
176  {
177  break;
178  }
179 
180  m_renderer = QPixmap(":/gif/lb_hourglass_white").copy(GIF_HOURGLASS_WHITE * m_index, 0, width(), height());
181  update();
182  break;
183  }
184  case Module::RadioBlue:
185  {
186  if(m_index == 10 && infinitedModeCheck())
187  {
188  break;
189  }
190 
191  m_renderer = QPixmap(":/gif/lb_radio_blue").copy(GIF_RADIO_BLUE * m_index, 0, width(), height());
192  update();
193  break;
194  }
195  case Module::CheckBlue:
196  {
197  if(m_index == 22 && infinitedModeCheck())
198  {
199  break;
200  }
201 
202  m_renderer = QPixmap(":/gif/lb_check_blue").copy(GIF_CHECK_BLUE * m_index, 0, width(), height());
203  update();
204  break;
205  }
206  case Module::RecordRed:
207  {
208  if(m_index == 5 && infinitedModeCheck())
209  {
210  break;
211  }
212 
213  m_renderer = QPixmap(":/gif/lb_record_red").copy(GIF_RECORD_RED * m_index, 0, width(), height());
214  update();
215  break;
216  }
217  case Module::CloseWhite:
218  {
219  if(m_index == 12 && infinitedModeCheck())
220  {
221  break;
222  }
223 
224  m_renderer = QPixmap(":/gif/lb_close_white").copy(GIF_CLOSE_WHITE_WIDTH * m_index, 0, width(), height());
225  update();
226  break;
227  }
228  default: break;
229  }
230 }
231 
232 void MusicGifLabelWidget::paintEvent(QPaintEvent *event)
233 {
234  Q_UNUSED(event);
235 
236  QPainter painter(this);
237  painter.setRenderHint(QPainter::SmoothPixmapTransform);
238  painter.drawPixmap(0, 0, m_renderer);
239 }
240 
242 {
243  m_index = 0;
244  if(!m_infinited)
245  {
246  stop();
247  return true;
248  }
249  else
250  {
251  return false;
252  }
253 }
254 
255 
256 
258  : QWidget(parent)
259 {
260  QVBoxLayout *layout = new QVBoxLayout(this);
261  layout->setContentsMargins(0, 0, 0, 0);
262  layout->setSpacing(0);
263  setLayout(layout);
264 
266  layout->addWidget(m_loadingLabel, 0, Qt::AlignCenter);
267 }
268 
270 {
271  delete m_loadingLabel;
272 }
273 
275 {
276  if(run)
277  {
278  m_loadingLabel->execute(true);
279  raise();
280  show();
281  }
282  else if(m_loadingLabel->isRunning())
283  {
284  m_loadingLabel->execute(false);
285  lower();
286  hide();
287  }
288 }
289 
291 {
292  return m_loadingLabel->isRunning();
293 }
294 
295 void MusicGifLabelMaskWidget::paintEvent(QPaintEvent *event)
296 {
297  Q_UNUSED(event);
298 
299  QPainter painter(this);
300  painter.setRenderHint(QPainter::Antialiasing);
301  painter.fillRect(rect(), QColor(50, 50, 50, 150));
302 }
303 
304 
305 
307  : MusicGifLabelMaskWidget(parent)
308  , m_value(0)
309 {
310  setMinimumSize(m_loadingLabel->size());
311 }
312 
313 void MusicGifLabelValueWidget::paintEvent(QPaintEvent *event)
314 {
315  Q_UNUSED(event);
316 
317  QPainter painter(this);
318  painter.setRenderHint(QPainter::TextAntialiasing);
319  painter.setPen(QPen(QColor(0x15, 0x8F, 0xE1), 1));
320  painter.drawText(rect(), Qt::AlignCenter, QString::number(m_value));
321 }
MusicGifLabelWidget(QWidget *parent=nullptr)
virtual void paintEvent(QPaintEvent *event) override
MusicGifLabelWidget * m_loadingLabel
Module type() const noexcept
static constexpr int GIF_CLOSE_WHITE_HEIGHT
static constexpr int GIF_BALLON_WHITE
bool isRunning() const noexcept
virtual void paintEvent(QPaintEvent *event) overridefinal
static constexpr int GIF_CICLE_BLUE
void setType(Module type)
MusicGifLabelValueWidget(QWidget *parent=nullptr)
static constexpr int GIF_RADIO_BLUE
bool isRunning() const noexcept
The class of the float gif label mask widget.
static constexpr int GIF_RICE_FONT_WHITE
static constexpr int GIF_CHECK_BLUE
virtual void paintEvent(QPaintEvent *event) overridefinal
static constexpr int GIF_RICE_FONT_BLACK
The class of the float gif label widget.
bool infinited() const noexcept
static constexpr int GIF_HOURGLASS_WHITE
static constexpr int GIF_RICE_FONT_BLACK_BIG
static constexpr int GIF_CLOSE_WHITE_WIDTH
#define const
Definition: zconf.h:233
void setInfinited(bool s) noexcept
#define TTK_DN_MS
Definition: ttkglobal.h:349
MusicGifLabelMaskWidget(QWidget *parent=nullptr)
static constexpr int GIF_RECORD_RED