From 7bc9235aaa6d8b68119f7635214fe9d72d4a7c42 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Tue, 14 Apr 2015 23:16:59 -0700 Subject: [PATCH] Avoid a few crashes around unmounting. Also refresh UI when metadata changes. Bug: 19993667 Change-Id: Ib0ea9be68a3db5c71d15fae6809f31df43fd9af0 --- .../deviceinfo/PrivateVolumeSettings.java | 8 +++++ .../PrivateVolumeUnmountConfirm.java | 2 +- .../deviceinfo/PublicVolumeSettings.java | 32 ++++++++++++------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java index f2d9791b66e..dec259b51e9 100644 --- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java +++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java @@ -433,6 +433,14 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { refresh(); } } + + @Override + public void onVolumeMetadataChanged(VolumeInfo vol) { + if (Objects.equals(mVolume.getId(), vol.getId())) { + mVolume = vol; + refresh(); + } + } }; /** diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeUnmountConfirm.java b/src/com/android/settings/deviceinfo/PrivateVolumeUnmountConfirm.java index dd7f91cc11c..614b7376405 100644 --- a/src/com/android/settings/deviceinfo/PrivateVolumeUnmountConfirm.java +++ b/src/com/android/settings/deviceinfo/PrivateVolumeUnmountConfirm.java @@ -48,7 +48,7 @@ public class PrivateVolumeUnmountConfirm extends InstrumentedFragment { final StorageManager storage = getActivity().getSystemService(StorageManager.class); final String volumeId = getArguments().getString(VolumeInfo.EXTRA_VOLUME_ID); mVolume = storage.findVolumeById(volumeId); - mDisk = storage.findDiskById(mVolume.getId()); + mDisk = storage.findDiskById(mVolume.getDiskId()); final View view = inflater.inflate(R.layout.storage_internal_unmount, container, false); final TextView body = (TextView) view.findViewById(R.id.body); diff --git a/src/com/android/settings/deviceinfo/PublicVolumeSettings.java b/src/com/android/settings/deviceinfo/PublicVolumeSettings.java index 71fe23dde87..94a505bc686 100644 --- a/src/com/android/settings/deviceinfo/PublicVolumeSettings.java +++ b/src/com/android/settings/deviceinfo/PublicVolumeSettings.java @@ -122,6 +122,18 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment { screen.addPreference(mGraph); screen.addPreference(mTotal); screen.addPreference(mAvailable); + + final File file = mVolume.getPath(); + mTotalSize = file.getTotalSpace(); + mAvailSize = file.getFreeSpace(); + + mTotal.setSummary(Formatter.formatFileSize(context, mTotalSize)); + mAvailable.setSummary(Formatter.formatFileSize(context, mAvailSize)); + + mGraph.clear(); + mGraph.addEntry(0, (mTotalSize - mAvailSize) / (float) mTotalSize, + android.graphics.Color.GRAY); + mGraph.commit(); } if (mVolume.getState() == VolumeInfo.STATE_UNMOUNTED) { @@ -134,18 +146,6 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment { if (mDisk.isAdoptable()) { screen.addPreference(mFormatInternal); } - - final File file = mVolume.getPath(); - mTotalSize = file.getTotalSpace(); - mAvailSize = file.getFreeSpace(); - - mTotal.setSummary(Formatter.formatFileSize(context, mTotalSize)); - mAvailable.setSummary(Formatter.formatFileSize(context, mAvailSize)); - - mGraph.clear(); - mGraph.addEntry(0, (mTotalSize - mAvailSize) / (float) mTotalSize, - android.graphics.Color.GRAY); - mGraph.commit(); } private UsageBarPreference buildGraph() { @@ -215,5 +215,13 @@ public class PublicVolumeSettings extends SettingsPreferenceFragment { refresh(); } } + + @Override + public void onVolumeMetadataChanged(VolumeInfo vol) { + if (Objects.equals(mVolume.getId(), vol.getId())) { + mVolume = vol; + refresh(); + } + } }; }