Correct support for multiply clients
[qtrapids] / src / include / qtrapids / format.hpp
1 #ifndef _QTRAPIDS_FORMAT_HPP_
2 #define _QTRAPIDS_FORMAT_HPP_
3
4 #include <qtrapids/info.hpp>
5 #include <QtCore/QString>
6
7
8
9 namespace qtrapids
10 {
11
12    
13     static inline QString formatProgress(uint progress)
14     {
15         return QString::number(progress / torrent_progress_percent);
16     }
17
18     namespace 
19     {
20
21         static const qulonglong size_KB = 1024;
22         static const qulonglong size_MB = size_KB << 10;
23         static const qulonglong size_GB = size_MB << 10;
24
25         static char const* size_names[] = {
26             "GB",
27             "MB",
28             "KB",
29             "B"
30         };
31     }
32
33     static inline QString formatSize(qulonglong size)
34     {
35         qulonglong unit = size_GB;
36         char const ** unit_name = &size_names[0];
37         QString ret("");
38         for (unit = size_GB; unit > 0; unit >>= 10, ++unit_name) {
39             if (size & (~(unit - 1))) {
40                 ret += (QString::number(size / unit) + *unit_name);
41                 return ret;
42             }
43         }
44         ret = QString::number(size) + "B";
45         return ret;
46     }
47
48
49 } // namespace qtrapids
50
51 #endif // _QTRAPIDS_FORMAT_HPP_
52