TTKMusicPlayer  3.7.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(value);
70 }
71 
73 {
74  return m_timer->interval();
75 }
76 
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.drawPixmap(0, 0, m_renderer);
238 }
239 
241 {
242  m_index = 0;
243  if(!m_infinited)
244  {
245  stop();
246  return true;
247  }
248  else
249  {
250  return false;
251  }
252 }
253 
254 
255 
257  : QWidget(parent)
258 {
259  QVBoxLayout *layout = new QVBoxLayout(this);
260  layout->setContentsMargins(0, 0, 0, 0);
261  layout->setSpacing(0);
262  setLayout(layout);
263 
265  layout->addWidget(m_loadingLabel, 0, Qt::AlignCenter);
266 }
267 
269 {
270  delete m_loadingLabel;
271 }
272 
274 {
275  if(run)
276  {
277  m_loadingLabel->run(true);
278  raise();
279  show();
280  }
281  else if(m_loadingLabel->isRunning())
282  {
283  m_loadingLabel->run(false);
284  lower();
285  hide();
286  }
287 }
288 
290 {
291  return m_loadingLabel->isRunning();
292 }
293 
294 void MusicGifLabelMaskWidget::paintEvent(QPaintEvent *event)
295 {
296  Q_UNUSED(event);
297 
298  QPainter painter(this);
299  painter.fillRect(rect(), QColor(50, 50, 50, 150));
300 }
301 
302 
303 
305  : MusicGifLabelMaskWidget(parent)
306  , m_value(0)
307 {
308  setMinimumSize(m_loadingLabel->size());
309 }
310 
311 void MusicGifLabelValueWidget::paintEvent(QPaintEvent *event)
312 {
313  Q_UNUSED(event);
314 
315  QPainter painter(this);
316  painter.setPen(QPen(QColor(0x15, 0x8F, 0xE1), 1));
317  painter.drawText(rect(), Qt::AlignCenter, QString::number(m_value));
318 }
MusicGifLabelWidget(QWidget *parent=nullptr)
virtual void paintEvent(QPaintEvent *event) override
MusicGifLabelWidget * m_loadingLabel
static constexpr int GIF_CLOSE_WHITE_HEIGHT
static constexpr int GIF_BALLON_WHITE
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
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.
static constexpr int GIF_HOURGLASS_WHITE
void setInterval(int value)
static constexpr int GIF_RICE_FONT_BLACK_BIG
static constexpr int GIF_CLOSE_WHITE_WIDTH
#define TTK_DN_MS
Definition: ttkglobal.h:270
MusicGifLabelMaskWidget(QWidget *parent=nullptr)
static constexpr int GIF_RECORD_RED