diff --git a/res/layout/storage_item.xml b/res/layout/storage_item.xml new file mode 100644 index 00000000000..2da54942d4b --- /dev/null +++ b/res/layout/storage_item.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java index 0c65528bf67..6a98efdb31a 100644 --- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java +++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java @@ -430,7 +430,7 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { } private void updatePreference(StorageItemPreference pref, long size) { - pref.setSummary(Formatter.formatFileSize(getActivity(), size)); + pref.setStorageSize(size, mVolume.getPath().getTotalSpace()); } /** diff --git a/src/com/android/settings/deviceinfo/StorageItemPreference.java b/src/com/android/settings/deviceinfo/StorageItemPreference.java index 41d84c6c407..a5eacc48d53 100644 --- a/src/com/android/settings/deviceinfo/StorageItemPreference.java +++ b/src/com/android/settings/deviceinfo/StorageItemPreference.java @@ -19,14 +19,22 @@ package com.android.settings.deviceinfo; import android.content.Context; import android.os.UserHandle; import android.preference.Preference; +import android.text.format.Formatter; +import android.view.View; +import android.widget.ProgressBar; import com.android.settings.R; public class StorageItemPreference extends Preference { public final int userHandle; + private ProgressBar progressBar; + private static final int PROGRESS_MAX = 100; + private int progress = -1; + public StorageItemPreference(Context context, int titleRes) { this(context, context.getText(titleRes), UserHandle.USER_NULL); + setLayoutResource(R.layout.storage_item); } public StorageItemPreference(Context context, CharSequence title, int userHandle) { @@ -41,4 +49,31 @@ public class StorageItemPreference extends Preference { public void setLoading() { setSummary(R.string.memory_calculating_size); } + + public void setStorageSize(long size, long total) { + setSummary(Formatter.formatFileSize(getContext(), size)); + progress = (int)(size * PROGRESS_MAX / total); + updateProgressBar(); + } + + protected void updateProgressBar() { + if (progressBar == null) + return; + + if (progress == -1) { + progressBar.setVisibility(View.GONE); + return; + } + + progressBar.setVisibility(View.VISIBLE); + progressBar.setMax(PROGRESS_MAX); + progressBar.setProgress(progress); + } + + @Override + protected void onBindView(View view) { + progressBar = (ProgressBar) view.findViewById(android.R.id.progress); + updateProgressBar(); + super.onBindView(view); + } }