Use Android's own file size formatter
This commit is contained in:
parent
29e5464c2e
commit
30d3619d05
@ -2,23 +2,24 @@ package de.danoeh.antennapod.adapter;
|
|||||||
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.widget.ProgressBar;
|
import android.text.format.Formatter;
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ProgressBar;
|
||||||
import android.widget.RadioButton;
|
import android.widget.RadioButton;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||||
import de.danoeh.antennapod.core.util.Converter;
|
|
||||||
import de.danoeh.antennapod.core.util.StorageUtils;
|
import de.danoeh.antennapod.core.util.StorageUtils;
|
||||||
import de.danoeh.antennapod.dialog.ChooseDataFolderDialog;
|
import de.danoeh.antennapod.dialog.ChooseDataFolderDialog;
|
||||||
|
|
||||||
@ -48,8 +49,9 @@ public class DataFolderAdapter extends RecyclerView.Adapter<DataFolderAdapter.Vi
|
|||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
||||||
StoragePath storagePath = entries.get(position);
|
StoragePath storagePath = entries.get(position);
|
||||||
String freeSpace = Converter.byteToString(storagePath.getAvailableSpace());
|
Context context = holder.root.getContext();
|
||||||
String totalSpace = Converter.byteToString(storagePath.getTotalSpace());
|
String freeSpace = Formatter.formatShortFileSize(context, storagePath.getAvailableSpace());
|
||||||
|
String totalSpace = Formatter.formatShortFileSize(context, storagePath.getTotalSpace());
|
||||||
|
|
||||||
holder.path.setText(storagePath.getShortPath());
|
holder.path.setText(storagePath.getShortPath());
|
||||||
holder.size.setText(String.format(freeSpaceString, freeSpace, totalSpace));
|
holder.size.setText(String.format(freeSpaceString, freeSpace, totalSpace));
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
package de.danoeh.antennapod.adapter;
|
package de.danoeh.antennapod.adapter;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.text.format.Formatter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
import de.danoeh.antennapod.core.storage.StatisticsItem;
|
import de.danoeh.antennapod.core.storage.StatisticsItem;
|
||||||
import de.danoeh.antennapod.core.util.Converter;
|
|
||||||
import de.danoeh.antennapod.view.PieChartView;
|
import de.danoeh.antennapod.view.PieChartView;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adapter for the download statistics list.
|
* Adapter for the download statistics list.
|
||||||
*/
|
*/
|
||||||
@ -25,7 +25,7 @@ public class DownloadStatisticsListAdapter extends StatisticsListAdapter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
String getHeaderValue() {
|
String getHeaderValue() {
|
||||||
return Converter.byteToString((long) pieChartData.getSum());
|
return Formatter.formatShortFileSize(context, (long) pieChartData.getSum());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -40,7 +40,7 @@ public class DownloadStatisticsListAdapter extends StatisticsListAdapter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
void onBindFeedViewHolder(StatisticsHolder holder, StatisticsItem item) {
|
void onBindFeedViewHolder(StatisticsHolder holder, StatisticsItem item) {
|
||||||
holder.value.setText(Converter.byteToString(item.totalDownloadSize));
|
holder.value.setText(Formatter.formatShortFileSize(context, item.totalDownloadSize));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package de.danoeh.antennapod.adapter;
|
package de.danoeh.antennapod.adapter;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.text.format.Formatter;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -14,7 +15,6 @@ import de.danoeh.antennapod.core.feed.FeedMedia;
|
|||||||
import de.danoeh.antennapod.core.service.download.DownloadRequest;
|
import de.danoeh.antennapod.core.service.download.DownloadRequest;
|
||||||
import de.danoeh.antennapod.core.service.download.DownloadStatus;
|
import de.danoeh.antennapod.core.service.download.DownloadStatus;
|
||||||
import de.danoeh.antennapod.core.service.download.Downloader;
|
import de.danoeh.antennapod.core.service.download.Downloader;
|
||||||
import de.danoeh.antennapod.core.util.Converter;
|
|
||||||
import de.danoeh.antennapod.core.util.ThemeUtils;
|
import de.danoeh.antennapod.core.util.ThemeUtils;
|
||||||
import de.danoeh.antennapod.view.CircularProgressBar;
|
import de.danoeh.antennapod.view.CircularProgressBar;
|
||||||
|
|
||||||
@ -79,9 +79,9 @@ public class DownloadlistAdapter extends BaseAdapter {
|
|||||||
if (request.getSoFar() <= 0) {
|
if (request.getSoFar() <= 0) {
|
||||||
status += context.getString(R.string.download_pending);
|
status += context.getString(R.string.download_pending);
|
||||||
} else {
|
} else {
|
||||||
status += Converter.byteToString(request.getSoFar());
|
status += Formatter.formatShortFileSize(context, request.getSoFar());
|
||||||
if (request.getSize() != DownloadStatus.SIZE_UNKNOWN) {
|
if (request.getSize() != DownloadStatus.SIZE_UNKNOWN) {
|
||||||
status += " / " + Converter.byteToString(request.getSize());
|
status += " / " + Formatter.formatShortFileSize(context, request.getSize());
|
||||||
holder.secondaryActionProgress.setPercentage(
|
holder.secondaryActionProgress.setPercentage(
|
||||||
0.01f * Math.max(1, request.getProgressPercent()), request);
|
0.01f * Math.max(1, request.getProgressPercent()), request);
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package de.danoeh.antennapod.view.viewholder;
|
|||||||
|
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.text.Layout;
|
import android.text.Layout;
|
||||||
|
import android.text.format.Formatter;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -9,9 +10,12 @@ import android.view.ViewGroup;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.cardview.widget.CardView;
|
import androidx.cardview.widget.CardView;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.joanzapata.iconify.Iconify;
|
import com.joanzapata.iconify.Iconify;
|
||||||
|
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
import de.danoeh.antennapod.activity.MainActivity;
|
import de.danoeh.antennapod.activity.MainActivity;
|
||||||
import de.danoeh.antennapod.adapter.CoverLoader;
|
import de.danoeh.antennapod.adapter.CoverLoader;
|
||||||
@ -153,14 +157,14 @@ public class EpisodeItemViewHolder extends RecyclerView.ViewHolder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (media.getSize() > 0) {
|
if (media.getSize() > 0) {
|
||||||
size.setText(Converter.byteToString(media.getSize()));
|
size.setText(Formatter.formatShortFileSize(activity, media.getSize()));
|
||||||
} else if (NetworkUtils.isEpisodeHeadDownloadAllowed() && !media.checkedOnSizeButUnknown()) {
|
} else if (NetworkUtils.isEpisodeHeadDownloadAllowed() && !media.checkedOnSizeButUnknown()) {
|
||||||
size.setText("{fa-spinner}");
|
size.setText("{fa-spinner}");
|
||||||
Iconify.addIcons(size);
|
Iconify.addIcons(size);
|
||||||
NetworkUtils.getFeedMediaSizeObservable(media).subscribe(
|
NetworkUtils.getFeedMediaSizeObservable(media).subscribe(
|
||||||
sizeValue -> {
|
sizeValue -> {
|
||||||
if (sizeValue > 0) {
|
if (sizeValue > 0) {
|
||||||
size.setText(Converter.byteToString(sizeValue));
|
size.setText(Formatter.formatShortFileSize(activity, sizeValue));
|
||||||
} else {
|
} else {
|
||||||
size.setText("");
|
size.setText("");
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package de.danoeh.antennapod.core.util;
|
package de.danoeh.antennapod.core.util;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
@ -15,53 +14,10 @@ public final class Converter {
|
|||||||
|
|
||||||
/** Logging tag. */
|
/** Logging tag. */
|
||||||
private static final String TAG = "Converter";
|
private static final String TAG = "Converter";
|
||||||
|
|
||||||
|
|
||||||
/** Indicates that the value is in the Byte range.*/
|
|
||||||
private static final int B_RANGE = 0;
|
|
||||||
/** Indicates that the value is in the Kilobyte range.*/
|
|
||||||
private static final int KB_RANGE = 1;
|
|
||||||
/** Indicates that the value is in the Megabyte range.*/
|
|
||||||
private static final int MB_RANGE = 2;
|
|
||||||
/** Indicates that the value is in the Gigabyte range.*/
|
|
||||||
private static final int GB_RANGE = 3;
|
|
||||||
/** Determines the length of the number for best readability.*/
|
|
||||||
private static final int NUM_LENGTH = 1024;
|
|
||||||
|
|
||||||
private static final int HOURS_MIL = 3600000;
|
private static final int HOURS_MIL = 3600000;
|
||||||
private static final int MINUTES_MIL = 60000;
|
private static final int MINUTES_MIL = 60000;
|
||||||
private static final int SECONDS_MIL = 1000;
|
private static final int SECONDS_MIL = 1000;
|
||||||
|
|
||||||
/** Takes a byte-value and converts it into a more readable
|
|
||||||
* String.
|
|
||||||
* @param input The value to convert
|
|
||||||
* @return The converted String with a unit
|
|
||||||
* */
|
|
||||||
public static String byteToString(final long input) {
|
|
||||||
int i = 0;
|
|
||||||
int result = 0;
|
|
||||||
|
|
||||||
for (i = 0; i < GB_RANGE + 1; i++) {
|
|
||||||
result = (int) (input / Math.pow(1024, i));
|
|
||||||
if (result < NUM_LENGTH) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (i) {
|
|
||||||
case B_RANGE:
|
|
||||||
return result + " B";
|
|
||||||
case KB_RANGE:
|
|
||||||
return result + " KB";
|
|
||||||
case MB_RANGE:
|
|
||||||
return result + " MB";
|
|
||||||
case GB_RANGE:
|
|
||||||
return result + " GB";
|
|
||||||
default:
|
|
||||||
Log.e(TAG, "Error happened in byteToString");
|
|
||||||
return "ERROR";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Converts milliseconds to a string containing hours, minutes and seconds */
|
/** Converts milliseconds to a string containing hours, minutes and seconds */
|
||||||
public static String getDurationStringLong(int duration) {
|
public static String getDurationStringLong(int duration) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user