1 //
2 // C++ Implementation: global
3 //
4 // Description:
5 //
6 //
7 // Author: Daniel Faust <hessijames@gmail.com>, (C) 2008
8 //
9 // Copyright: See COPYING file that comes with this distribution
10 //
11 //
12 #include "global.h"
13
14 #include <KLocale>
15 #include <KGlobal>
16
17
Global()18 Global::Global()
19 {}
20
~Global()21 Global::~Global()
22 {}
23
prettyNumber(double num,QString unit,short digits)24 QString Global::prettyNumber( double num, QString unit, short digits )
25 {
26 QString prettyString;
27 if( unit == "%" && digits == 3 )
28 {
29 if( num < 10 )
30 prettyString.sprintf("%.2f %%",num);
31 else if( num < 100 )
32 prettyString.sprintf("%.1f %%",num);
33 else
34 prettyString.sprintf("%.0f %%",num);
35
36 if( KGlobal::locale()->decimalSymbol() != "." )
37 prettyString.replace(".",KGlobal::locale()->decimalSymbol());
38 }
39 else if( unit == "%" && digits == 2 )
40 {
41 if( num < 10 )
42 prettyString.sprintf("%.1f %%",num);
43 else
44 prettyString.sprintf("%.0f %%",num);
45
46 if( KGlobal::locale()->decimalSymbol() != "." )
47 prettyString.replace(".",KGlobal::locale()->decimalSymbol());
48 }
49 else if( unit == "B" )
50 {
51 short pow = 0;
52 while( num > 1024 )
53 {
54 num /= 1024;
55 pow++;
56 }
57 if( pow == 0 )
58 unit = "B";
59 else if( pow == 1 )
60 unit = "KiB";
61 else if( pow == 2 )
62 unit = "MiB";
63 else if( pow == 3 )
64 unit = "GiB";
65 else if( pow == 4 )
66 unit = "TiB";
67 else if( pow == 5 )
68 unit = "PiB";
69 else if( pow == 6 )
70 unit = "EiB";
71 else if( pow == 7 )
72 unit = "ZiB";
73 else if( pow == 8 )
74 unit = "YiB";
75 else
76 unit = "Nan";
77
78 if( num < 100 || num > 999 )
79 prettyString = QString::number(num).left(4);
80 else
81 prettyString = QString::number(num).left(3);
82
83 prettyString = prettyString + " " + unit;
84
85 if( KGlobal::locale()->decimalSymbol() != "." )
86 prettyString.replace(".",KGlobal::locale()->decimalSymbol());
87 }
88 else if( unit == "ms" )
89 {
90 short days = (int)(num/86400000.0f);
91 short hours = (int)(num/3600000.0f)%24;
92 short minutes = (int)(num/60000.0f)%60;
93 short seconds = (int)(num/1000.0f)%60;
94 short milliseconds = (int)num%1000;
95
96 if( days >= 10 )
97 prettyString = QString("%1%2").arg(days).arg(i18nc("days","d"));
98 else if( days >= 1 )
99 prettyString = QString("%1%2 %3%4").arg(days).arg(i18nc("days","d")).arg(hours).arg(i18nc("hours","h"));
100 else if( hours >= 1 )
101 prettyString = QString("%1%2 %3%4").arg(hours).arg(i18nc("hours","h")).arg(minutes).arg(i18nc("minutes","m"));
102 else if( minutes >= 1 && seconds < 10 )
103 prettyString = QString("%1%2 0%3%4").arg(minutes).arg(i18nc("minutes","m")).arg(seconds).arg(i18nc("seconds","s"));
104 else if( minutes >= 1 )
105 prettyString = QString("%1%2 %3%4").arg(minutes).arg(i18nc("minutes","m")).arg(seconds).arg(i18nc("seconds","s"));
106 else if( seconds >= 1 && milliseconds < 10 )
107 prettyString = QString("%1%2 00%3%4").arg(seconds).arg(i18nc("seconds","s")).arg(milliseconds).arg(i18nc("milliseconds","ms"));
108 else if( seconds >= 1 && milliseconds < 100 )
109 prettyString = QString("%1%2 0%3%4").arg(seconds).arg(i18nc("seconds","s")).arg(milliseconds).arg(i18nc("milliseconds","ms"));
110 else if( seconds >= 1 )
111 prettyString = QString("%1%2 %3%4").arg(seconds).arg(i18nc("seconds","s")).arg(milliseconds).arg(i18nc("milliseconds","ms"));
112 else if( milliseconds >= 1 )
113 prettyString = QString("%1%2").arg(milliseconds).arg(i18nc("milliseconds","ms"));
114 }
115 else if( unit == "s" )
116 {
117 short days = (int)(num/86400);
118 short hours = (int)(num/3600)%24;
119 short minutes = (int)(num/60)%60;
120 short seconds = (int)(num)%60;
121
122 if( days >= 10 )
123 prettyString = QString("%1%2").arg(days).arg(i18nc("days","d"));
124 else if( days >= 1 )
125 prettyString = QString("%1%2 %3%4").arg(days).arg(i18nc("days","d")).arg(hours).arg(i18nc("hours","h"));
126 else if( hours >= 1 )
127 prettyString = QString("%1%2 %3%4").arg(hours).arg(i18nc("hours","h")).arg(minutes).arg(i18nc("minutes","m"));
128 else if( minutes >= 1 && seconds < 10 )
129 prettyString = QString("%1%2 0%3%4").arg(minutes).arg(i18nc("minutes","m")).arg(seconds).arg(i18nc("seconds","s"));
130 else if( minutes >= 1 )
131 prettyString = QString("%1%2 %3%4").arg(minutes).arg(i18nc("minutes","m")).arg(seconds).arg(i18nc("seconds","s"));
132 else if( seconds >= 1 )
133 prettyString = QString("%1%2").arg(seconds).arg(i18nc("seconds","s"));
134 }
135 return prettyString;
136 }
137