TTKMusicPlayer  4.1.3.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicnumberutils.cpp
Go to the documentation of this file.
1 #include "musicnumberutils.h"
2 #include "ttktime.h"
3 
4 #include <QColor>
5 #include <QStringList>
6 
7 static QString size2Number(qint64 size)
8 {
9  if(size < TTK_SN_KB2B)
10  {
11  return QString::number(size * 1.0, 'f', 1);
12  }
13  else if(TTK_SN_KB2B <= size && size < TTK_SN_MB2B)
14  {
15  return QString::number(size * 1.0 / TTK_SN_KB2B, 'f', 1);
16  }
17  else if(TTK_SN_MB2B <= size && size < TTK_SN_GB2B)
18  {
19  return QString::number(size * 1.0 / TTK_SN_MB2B, 'f', 1);
20  }
21  else if(TTK_SN_GB2B <= size && size < TTK_SN_TB2B)
22  {
23  return QString::number(size * 1.0 / TTK_SN_GB2B, 'f', 1);
24  }
25  else
26  {
27  return QString::number(size * 1.0 / TTK_SN_TB2B, 'f', 1);
28  }
29 }
30 
32 {
33  if(size < 0)
34  {
35  return "0.0B";
36  }
37 
38  const QString &label = size2Number(size);
39  if(size < TTK_SN_KB2B)
40  {
41  return QString("%1B").arg(label);
42  }
43  else if(TTK_SN_KB2B <= size && size < TTK_SN_MB2B)
44  {
45  return QString("%1K").arg(label);
46  }
47  else if(TTK_SN_MB2B <= size && size < TTK_SN_GB2B)
48  {
49  return QString("%1M").arg(label);
50  }
51  else if(TTK_SN_GB2B <= size && size < TTK_SN_TB2B)
52  {
53  return QString("%1G").arg(label);
54  }
55  else
56  {
57  return QString("%1T").arg(label);
58  }
59 }
60 
61 QString TTK::Number::sizeByteToLabel(const QString &duration, int bitrate)
62 {
63  if(duration.isEmpty() || duration == TTK_DEFAULT_STR)
64  {
65  return "0.0B";
66  }
67  return TTK::Number::sizeByteToLabel(TTKTime::formatDuration(duration) * bitrate / 8.0);
68 }
69 
71 {
72  if(size < 0)
73  {
74  return "0.0B/s";
75  }
76 
77  const QString &label = size2Number(size);
78  if(size < TTK_SN_KB2B)
79  {
80  return QString("%1B/s").arg(label);
81  }
82  else if(TTK_SN_KB2B <= size && size < TTK_SN_MB2B)
83  {
84  return QString("%1K/s").arg(label);
85  }
86  else if(TTK_SN_MB2B <= size && size < TTK_SN_GB2B)
87  {
88  return QString("%1M/s").arg(label);
89  }
90  else if(TTK_SN_GB2B <= size && size < TTK_SN_TB2B)
91  {
92  return QString("%1G/s").arg(label);
93  }
94  else
95  {
96  return QString("%1T/s").arg(label);
97  }
98 }
99 
101 {
102  if(bitrate <= 0)
103  {
104  return QueryQuality::None;
105  }
106  else if(0 < bitrate && bitrate <= TTK_BN_128)
107  {
108  return QueryQuality::Standard;
109  }
110  else if(TTK_BN_128 < bitrate && bitrate <= TTK_BN_192)
111  {
112  return QueryQuality::High;
113  }
114  else if(TTK_BN_192 < bitrate && bitrate <= TTK_BN_320)
115  {
116  return QueryQuality::Super;
117  }
118  else
119  {
120  return QueryQuality::Lossless;
121  }
122 }
123 
125 {
126  if(bitrate.isEmpty())
127  {
128  return QueryQuality::None;
129  }
130 
131  const QStringList &data(bitrate.split(TTK_SPACE));
132  if(data.count() >= 2)
133  {
134  const int rate = data.front().trimmed().toInt();
135  return TTK::Number::bitrateToLevel(rate);
136  }
137  return QueryQuality::None;
138 }
139 
140 void TTK::Number::bitrateToQuality(TTK::QueryQuality level, QString &bitrate, QColor &color)
141 {
142  bitrate = QObject::tr("UnKnow");
143  color = QColor(131, 131, 131);
144 
145  switch(level)
146  {
147  case QueryQuality::Standard:
148  {
149  bitrate = QObject::tr("SD");
150  color = QColor(211, 0, 70);
151  break;
152  }
153  case QueryQuality::High:
154  {
155  bitrate = QObject::tr("HQ");
156  color = QColor(0, 134, 211);
157  break;
158  }
159  case QueryQuality::Super:
160  {
161  bitrate = QObject::tr("SQ");
162  color = QColor(236, 138, 48);
163  break;
164  }
165  case QueryQuality::Lossless:
166  {
167  bitrate = QObject::tr("CD");
168  color = QColor(117, 0, 206);
169  break;
170  }
171  default: break;
172  }
173 }
static QString size2Number(qint64 size)
#define TTK_DEFAULT_STR
Definition: ttkglobal.h:203
voidpf void uLong size
Definition: ioapi.h:136
TTK_MODULE_EXPORT QString sizeByteToLabel(qint64 size)
#define TTK_SN_GB2B
Definition: ttkglobal.h:325
TTK_MODULE_EXPORT QString speedByteToLabel(qint64 size)
TTK_MODULE_EXPORT TTK::QueryQuality bitrateToLevel(int bitrate)
#define TTK_SN_KB2B
Definition: ttkglobal.h:314
QueryQuality
Definition: musicobject.h:193
#define TTK_BN_320
Definition: ttkglobal.h:356
#define TTK_SN_MB2B
Definition: ttkglobal.h:319
#define TTK_SN_TB2B
Definition: ttkglobal.h:332
#define TTK_BN_192
Definition: ttkglobal.h:354
#define TTK_SPACE
Definition: ttkglobal.h:195
TTK_MODULE_EXPORT void bitrateToQuality(TTK::QueryQuality level, QString &bitrate, QColor &color)
#define TTK_BN_128
Definition: ttkglobal.h:353
static qint64 formatDuration(const QString &time) noexcept
Definition: ttktime.cpp:123