source: trunk/qt/formatter.cc @ 11054

Last change on this file since 11054 was 11054, checked in by charles, 12 years ago

(trunk qt) silence a few compiler warnings

File size: 4.3 KB
Line 
1/*
2 * This file Copyright (C) 2010 Mnemosyne LLC
3 *
4 * This file is licensed by the GPL version 2.  Works owned by the
5 * Transmission project are granted a special exemption to clause 2(b)
6 * so that the bulk of its code can remain under the MIT license.
7 * This exemption does not extend to derived works not owned by
8 * the Transmission project.
9 *
10 * $Id$
11 */
12
13#include <iostream>
14
15#include <libtransmission/transmission.h>
16#include <libtransmission/utils.h> // tr_formatter
17
18#include "formatter.h"
19#include "speed.h"
20
21/***
22****  Constants
23***/
24
25namespace
26{
27    unsigned int speed_K;
28    unsigned int mem_K;
29    unsigned int size_K;
30}
31
32QString Formatter::unitStrings[3][5];
33
34void
35Formatter :: initUnits( )
36{
37    speed_K = 1000;
38    unitStrings[SPEED][B]  = tr(  "B/s" );
39    unitStrings[SPEED][KB] = tr( "kB/s" );
40    unitStrings[SPEED][MB] = tr( "MB/s" );
41    unitStrings[SPEED][GB] = tr( "GB/s" );
42    unitStrings[SPEED][TB] = tr( "TB/s" );
43    tr_formatter_speed_init( speed_K,
44                             qPrintable( unitStrings[SPEED][KB] ),
45                             qPrintable( unitStrings[SPEED][MB] ),
46                             qPrintable( unitStrings[SPEED][GB] ),
47                             qPrintable( unitStrings[SPEED][TB] ) );
48
49    size_K = 1000;
50    unitStrings[SIZE][B]  = tr(  "B" );
51    unitStrings[SIZE][KB] = tr( "KB" );
52    unitStrings[SIZE][MB] = tr( "MB" );
53    unitStrings[SIZE][GB] = tr( "GB" );
54    unitStrings[SIZE][TB] = tr( "TB" );
55    tr_formatter_size_init( size_K,
56                            qPrintable( unitStrings[SIZE][KB] ),
57                            qPrintable( unitStrings[SIZE][MB] ),
58                            qPrintable( unitStrings[SIZE][GB] ),
59                            qPrintable( unitStrings[SIZE][TB] ) );
60
61    mem_K = 1024;
62    unitStrings[MEM][B]  = tr(   "B" );
63    unitStrings[MEM][KB] = tr( "KiB" );
64    unitStrings[MEM][MB] = tr( "MiB" );
65    unitStrings[MEM][GB] = tr( "GiB" );
66    unitStrings[MEM][TB] = tr( "TiB" );
67    tr_formatter_mem_init( mem_K,
68                           qPrintable( unitStrings[MEM][KB] ),
69                           qPrintable( unitStrings[MEM][MB] ),
70                           qPrintable( unitStrings[MEM][GB] ),
71                           qPrintable( unitStrings[MEM][TB] ) );
72}
73
74/***
75****
76***/
77
78double
79Speed :: KBps( ) const
80{
81    return _Bps / speed_K;
82}
83
84Speed
85Speed :: fromKBps( double KBps )
86{
87    return int( KBps * speed_K );
88}
89
90/***
91****
92***/
93
94QString
95Formatter :: memToString( uint64_t bytes )
96{
97    if( !bytes )
98        return tr( "None" );
99    else {
100        char buf[128];
101        tr_formatter_mem_B( buf, bytes, sizeof( buf ) );
102        return buf;
103    }
104}
105
106QString
107Formatter :: sizeToString( uint64_t bytes )
108{
109    if( !bytes )
110        return tr( "None" );
111    else {
112        char buf[128];
113        tr_formatter_size_B( buf, bytes, sizeof( buf ) );
114        return buf;
115    }
116}
117
118QString
119Formatter :: speedToString( const Speed& speed )
120{
121    if( speed.isZero( ) )
122        return tr( "None" );
123    else {
124        char buf[128];
125        tr_formatter_speed_KBps( buf, speed.KBps( ), sizeof( buf ) );
126        return buf;
127    }
128}
129
130QString
131Formatter :: percentToString( double x )
132{
133    char buf[128];
134    return QString( tr_strpercent( buf, x, sizeof(buf) ) );
135}
136
137QString
138Formatter :: ratioToString( double ratio )
139{
140    char buf[128];
141    return QString::fromUtf8( tr_strratio( buf, sizeof(buf), ratio, "\xE2\x88\x9E" ) );
142}
143
144QString
145Formatter :: timeToString( int seconds )
146{
147    int days, hours, minutes;
148    QString d, h, m, s;
149    QString str;
150
151    if( seconds < 0 )
152        seconds = 0;
153
154    days = seconds / 86400;
155    hours = ( seconds % 86400 ) / 3600;
156    minutes = ( seconds % 3600 ) / 60;
157    seconds %= 60;
158
159    d = tr( "%Ln day(s)", 0, days );
160    h = tr( "%Ln hour(s)", 0, hours );
161    m = tr( "%Ln minute(s)", 0, minutes );
162    s = tr( "%Ln second(s)", 0, seconds );
163
164    if( days )
165    {
166        if( days >= 4 || !hours )
167            str = d;
168        else
169            str = tr( "%1, %2" ).arg( d ).arg( h );
170    }
171    else if( hours )
172    {
173        if( hours >= 4 || !minutes )
174            str = h;
175        else
176            str = tr( "%1, %2" ).arg( h ).arg( m );
177    }
178    else if( minutes )
179    {
180        if( minutes >= 4 || !seconds )
181            str = m;
182        else
183            str = tr( "%1, %2" ).arg( m ).arg( s );
184    }
185    else
186    {
187        str = s;
188    }
189
190    return str;
191}
Note: See TracBrowser for help on using the repository browser.