[SYSDM] Improvements to the user profile size format
authorEric Kohl <eric.kohl@reactos.org>
Wed, 11 Sep 2019 13:12:26 +0000 (15:12 +0200)
committerEric Kohl <eric.kohl@reactos.org>
Wed, 11 Sep 2019 13:12:26 +0000 (15:12 +0200)
dll/cpl/sysdm/userprofile.c

index d2dcb66..fedb19d 100644 (file)
@@ -431,6 +431,33 @@ GetProfileName(
 }
 
 
+static
+VOID
+FormatProfileSize(LPWSTR Buffer, double size)
+{
+    const LPWSTR units[] = {L"MB", L"GB", L"TB"};
+    int i = 0, j;
+
+    size /= 1024;
+    size /= 1024;
+
+    while (size >= 1024 && i < 3)
+    {
+        size /= 1024;
+        i++;
+    }
+
+    if (size < 10)
+        j = 2;
+    else if (size < 100)
+        j = 1;
+    else
+        j = 0;
+
+    swprintf(Buffer, L"%.*f %s", j, size, units[i]);
+}
+
+
 static VOID
 AddUserProfile(
     _In_ HWND hwndListView,
@@ -532,8 +559,8 @@ AddUserProfile(
     lvi.lParam = (LPARAM)pProfileData;
     iItem = ListView_InsertItem(hwndListView, &lvi);
 
-    /* FIXME: Set the profile size */
-    swprintf(szNameBuffer, L"%I64u MB", ullProfileSize / (1024 * 1024));
+    /* Set the profile size */
+    FormatProfileSize(szNameBuffer, (double)ullProfileSize);
     ListView_SetItemText(hwndListView, iItem, 1, szNameBuffer);
 
     /* Set the profile type */