From cb9a934f862c42bc5e7b25567cc073f4762651aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Thu, 23 Jan 2020 15:22:28 -0500
Subject: [PATCH] file transfer: use system API for file size

Change-Id: I2007c2f2f6a6a2a2d6ab6c4f207890216de8658b
---
 .../cx/ring/adapters/ConversationAdapter.java |  5 ++--
 .../services/NotificationServiceImpl.java     |  3 ++-
 .../main/java/cx/ring/utils/FileUtils.java    | 24 -------------------
 3 files changed, 5 insertions(+), 27 deletions(-)

diff --git a/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java b/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java
index ac900454f..5235cf0a4 100644
--- a/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java
+++ b/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java
@@ -32,6 +32,7 @@ import android.graphics.drawable.Drawable;
 import android.media.MediaPlayer;
 import android.net.Uri;
 import android.text.format.DateUtils;
+import android.text.format.Formatter;
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.ContextMenu;
@@ -384,10 +385,10 @@ public class ConversationAdapter extends RecyclerView.Adapter<ConversationViewHo
         viewHolder.compositeDisposable.add(timestampUpdateTimer.subscribe(t -> {
             if (file.getStatus() == InteractionStatus.TRANSFER_FINISHED) {
                 viewHolder.mMsgDetailTxt.setText(String.format("%s - %s",
-                        timeString, FileUtils.readableFileSize(file.getTotalSize())));
+                        timeString, Formatter.formatFileSize(viewHolder.itemView.getContext(), file.getTotalSize())));
             } else {
                 viewHolder.mMsgDetailTxt.setText(String.format("%s - %s - %s",
-                        timeString, FileUtils.readableFileSize(file.getTotalSize()),
+                        timeString, Formatter.formatFileSize(viewHolder.itemView.getContext(), file.getTotalSize()),
                         ResourceMapper.getReadableFileTransferStatus(conversationFragment.getActivity(), file.getStatus())));
             }
         }));
diff --git a/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
index f6bff844f..10452b66f 100644
--- a/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
+++ b/ring-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.java
@@ -35,6 +35,7 @@ import android.media.RingtoneManager;
 import android.os.Build;
 import android.os.Bundle;
 import android.text.TextUtils;
+import android.text.format.Formatter;
 import android.util.Log;
 import android.util.SparseArray;
 
@@ -731,7 +732,7 @@ public class NotificationServiceImpl implements NotificationService {
                 .setCategory(NotificationCompat.CATEGORY_PROGRESS)
                 .setOnlyAlertOnce(true)
                 .setContentText(event == Interaction.InteractionStatus.TRANSFER_ONGOING ?
-                        FileUtils.readableFileProgress(info.getBytesProgress(), info.getTotalSize()) :
+                        Formatter.formatFileSize(mContext, info.getBytesProgress()) + " / " + Formatter.formatFileSize(mContext, info.getTotalSize()) :
                         info.getDisplayName() + ": " + ResourceMapper.getReadableFileTransferStatus(mContext, event))
                 .setContentIntent(PendingIntent.getService(mContext, random.nextInt(), intentConversation, 0))
                 .setColor(ResourcesCompat.getColor(mContext.getResources(), R.color.color_primary_dark, null));
diff --git a/ring-android/libringclient/src/main/java/cx/ring/utils/FileUtils.java b/ring-android/libringclient/src/main/java/cx/ring/utils/FileUtils.java
index 3bca4261d..c3e36322c 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/utils/FileUtils.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/utils/FileUtils.java
@@ -29,9 +29,6 @@ import java.text.DecimalFormat;
 public class FileUtils {
     private static final String TAG = FileUtils.class.getSimpleName();
 
-    private static final String[] SIZE_UNITS = new String[]{"B", "kB", "MB", "GB", "TB"};
-    private static final DecimalFormat SIZE_FORMAT = new DecimalFormat("#,##0.##");
-
     public static void copyFile(InputStream in, OutputStream out) throws IOException {
         // Buffer size based on https://stackoverflow.com/questions/10143731/android-optimal-buffer-size
         byte[] buffer = new byte[64 * 1024];
@@ -75,25 +72,4 @@ public class FileUtils {
         Log.d(TAG, "moveFile: moved " + file + " to " + dest);
         return true;
     }
-
-    private static int getSizeDigitGroup(long size) {
-        return (int) (Math.log10(size) / Math.log10(1024));
-    }
-
-    public static String readableFileSize(long size) {
-        if (size <= 0) {
-            return "0";
-        }
-        int digitGroups = getSizeDigitGroup(size);
-        return SIZE_FORMAT.format(size / Math.pow(1024, digitGroups)) + " " + SIZE_UNITS[digitGroups];
-    }
-
-    public static CharSequence readableFileProgress(long progress, long total) {
-        if (progress < 0 || total < 0)
-            return "";
-        int digitGroups = getSizeDigitGroup(Math.max(progress, total));
-        double den = Math.pow(1024, digitGroups);
-        String unit = SIZE_UNITS[digitGroups];
-        return SIZE_FORMAT.format(progress / den) + " / " + SIZE_FORMAT.format(total / den) + " " + unit;
-    }
 }
-- 
GitLab