source: trunk/qt/formatter.cc @ 14377

Last change on this file since 14377 was 14377, checked in by mikedld, 8 years ago

Strip spaces around :: in C++ code (Qt client)

  • Property svn:keywords set to Date Rev Author Id
File size: 4.3 KB
Line 
1/*
2 * This file Copyright (C) 2012-2014 Mnemosyne LLC
3 *
4 * It may be used under the GNU Public License v2 or v3 licenses,
5 * or any future license endorsed by Mnemosyne LLC.
6 *
7 * $Id: formatter.cc 14377 2014-12-12 23:05:10Z mikedld $
8 */
9
10#include <iostream>
11
12#include <libtransmission/transmission.h>
13#include <libtransmission/utils.h> // tr_formatter
14
15#include "formatter.h"
16#include "speed.h"
17
18/***
19****  Constants
20***/
21
22namespace
23{
24 unsigned int speed_K;
25 unsigned int mem_K;
26 unsigned int size_K;
27}
28
29QString Formatter::unitStrings[3][5];
30
31void
32Formatter::initUnits ()
33{
34 speed_K = 1000;
35 unitStrings[SPEED][B]  = tr ( "B/s");
36 unitStrings[SPEED][KB] = tr ("kB/s");
37 unitStrings[SPEED][MB] = tr ("MB/s");
38 unitStrings[SPEED][GB] = tr ("GB/s");
39 unitStrings[SPEED][TB] = tr ("TB/s");
40 tr_formatter_speed_init (speed_K,
41                          unitStrings[SPEED][KB].toUtf8().constData(),
42                          unitStrings[SPEED][MB].toUtf8().constData(),
43                          unitStrings[SPEED][GB].toUtf8().constData(),
44                          unitStrings[SPEED][TB].toUtf8().constData());
45
46  size_K = 1000;
47  unitStrings[SIZE][B]  = tr ( "B");
48  unitStrings[SIZE][KB] = tr ("kB");
49  unitStrings[SIZE][MB] = tr ("MB");
50  unitStrings[SIZE][GB] = tr ("GB");
51  unitStrings[SIZE][TB] = tr ("TB");
52  tr_formatter_size_init (size_K,
53                          unitStrings[SIZE][KB].toUtf8().constData(),
54                          unitStrings[SIZE][MB].toUtf8().constData(),
55                          unitStrings[SIZE][GB].toUtf8().constData(),
56                          unitStrings[SIZE][TB].toUtf8().constData());
57
58  mem_K = 1024;
59  unitStrings[MEM][B]  = tr (  "B");
60  unitStrings[MEM][KB] = tr ("KiB");
61  unitStrings[MEM][MB] = tr ("MiB");
62  unitStrings[MEM][GB] = tr ("GiB");
63  unitStrings[MEM][TB] = tr ("TiB");
64  tr_formatter_mem_init (mem_K,
65                         unitStrings[MEM][KB].toUtf8().constData(),
66                         unitStrings[MEM][MB].toUtf8().constData(),
67                         unitStrings[MEM][GB].toUtf8().constData(),
68                         unitStrings[MEM][TB].toUtf8().constData());
69}
70
71/***
72****
73***/
74
75double
76Speed::KBps () const
77{
78  return _Bps / (double)speed_K;
79}
80
81Speed
82Speed::fromKBps (double KBps)
83{
84  return int (KBps * speed_K);
85}
86
87/***
88****
89***/
90
91QString
92Formatter::memToString (int64_t bytes)
93{
94  if (bytes < 0)
95    return tr ("Unknown");
96
97  if (!bytes)
98    return tr ("None");
99
100  char buf[128];
101  tr_formatter_mem_B (buf, bytes, sizeof (buf));
102  return QString::fromUtf8 (buf);
103}
104
105QString
106Formatter::sizeToString (int64_t bytes)
107{
108  if (bytes < 0)
109    return tr ("Unknown");
110
111  if (!bytes)
112    return tr ("None");
113
114  char buf[128];
115  tr_formatter_size_B (buf, bytes, sizeof (buf));
116  return QString::fromUtf8 (buf);
117}
118
119QString
120Formatter::speedToString (const Speed& speed)
121{
122  char buf[128];
123  tr_formatter_speed_KBps (buf, speed.KBps (), sizeof (buf));
124  return QString::fromUtf8 (buf);
125}
126
127QString
128Formatter::uploadSpeedToString (const Speed& uploadSpeed)
129{
130  static const QChar uploadSymbol (0x25B4);
131
132  return tr ("%1 %2").arg (speedToString (uploadSpeed)).arg (uploadSymbol);
133}
134
135QString
136Formatter::downloadSpeedToString (const Speed& downloadSpeed)
137{
138  static const QChar downloadSymbol (0x25BE);
139
140  return tr ("%1 %2").arg (speedToString (downloadSpeed)).arg (downloadSymbol);
141}
142
143QString
144Formatter::percentToString (double x)
145{
146  char buf[128];
147  return QString (tr_strpercent (buf, x, sizeof (buf)));
148}
149
150QString
151Formatter::ratioToString (double ratio)
152{
153  char buf[128];
154  return QString::fromUtf8 (tr_strratio (buf, sizeof (buf), ratio, "\xE2\x88\x9E"));
155}
156
157QString
158Formatter::timeToString (int seconds)
159{
160  int days, hours, minutes;
161  QString d, h, m, s;
162  QString str;
163
164  if (seconds < 0)
165    seconds = 0;
166
167  days = seconds / 86400;
168  hours = (seconds % 86400) / 3600;
169  minutes = (seconds % 3600) / 60;
170  seconds %= 60;
171
172  d = tr ("%Ln day(s)", 0, days);
173  h = tr ("%Ln hour(s)", 0, hours);
174  m = tr ("%Ln minute(s)", 0, minutes);
175  s = tr ("%Ln second(s)", 0, seconds);
176
177  if (days)
178    {
179      if (days >= 4 || !hours)
180        str = d;
181      else
182        str = tr ("%1, %2").arg (d).arg (h);
183    }
184  else if (hours)
185    {
186      if (hours >= 4 || !minutes)
187        str = h;
188      else
189        str = tr ("%1, %2").arg (h).arg (m);
190    }
191  else if (minutes)
192    {
193      if (minutes >= 4 || !seconds)
194        str = m;
195      else
196        str = tr ("%1, %2").arg (m).arg (s);
197    }
198  else
199    {
200      str = s;
201    }
202
203  return str;
204}
Note: See TracBrowser for help on using the repository browser.