Przeglądaj źródła

Add helper function for creating a readable byte size string.

archshift 11 lat temu
rodzic
commit
f297a59985
2 zmienionych plików z 16 dodań i 0 usunięć
  1. 12 0
      src/citra_qt/util/util.cpp
  2. 4 0
      src/citra_qt/util/util.h

+ 12 - 0
src/citra_qt/util/util.cpp

@@ -2,6 +2,9 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
+#include <array>
+#include <cmath>
+
 #include "citra_qt/util/util.h"
 
 QFont GetMonospaceFont() {
@@ -11,3 +14,12 @@ QFont GetMonospaceFont() {
     font.setFixedPitch(true);
     return font;
 }
+
+QString ReadableByteSize(qulonglong size) {
+    static const std::array<const char*, 6> units = { "B", "KiB", "MiB", "GiB", "TiB", "PiB" };
+    if (size == 0)
+        return "0";
+    int digit_groups = std::min<int>((int)(std::log10(size) / std::log10(1024)), units.size());
+    return QString("%L1 %2").arg(size / std::pow(1024, digit_groups), 0, 'f', 1)
+                            .arg(units[digit_groups]);
+}

+ 4 - 0
src/citra_qt/util/util.h

@@ -5,6 +5,10 @@
 #pragma once
 
 #include <QFont>
+#include <QString>
 
 /// Returns a QFont object appropriate to use as a monospace font for debugging widgets, etc.
 QFont GetMonospaceFont();
+
+/// Convert a size in bytes into a readable format (KiB, MiB, etc.)
+QString ReadableByteSize(qulonglong size);