From 1f6ddac9f41f341073e7cedd8f777a43b7d11679 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Thu, 12 Jul 2012 15:20:13 -0700 Subject: [PATCH] If external storage is emulated, don't show it as separate entries. The installed app details UI is really complicted for the two-partition internal and external storage case... however, in our lovely new world of emulated external storage, there is no reason for this, since the external storage is using the same partition as internal storage. So in this case, don't show external storage as a separate item, just combine it into the base app size and data size values. Change-Id: Iea0e78f2d532ad50e20fef98740c93b2e897890a --- .../applications/ApplicationsState.java | 5 ++- .../applications/InstalledAppDetails.java | 43 ++++++++++++------- .../applications/ManageApplications.java | 3 +- 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/src/com/android/settings/applications/ApplicationsState.java b/src/com/android/settings/applications/ApplicationsState.java index 3256fb2e85b..cca9086016c 100644 --- a/src/com/android/settings/applications/ApplicationsState.java +++ b/src/com/android/settings/applications/ApplicationsState.java @@ -786,7 +786,10 @@ public class ApplicationsState { private long getTotalExternalSize(PackageStats ps) { if (ps != null) { + // We also include the cache size here because for non-emulated + // we don't automtically clean cache files. return ps.externalCodeSize + ps.externalDataSize + + ps.externalCacheSize + ps.externalMediaSize + ps.externalObbSize; } return SIZE_INVALID; @@ -822,7 +825,7 @@ public class ApplicationsState { long externalCodeSize = stats.externalCodeSize + stats.externalObbSize; long externalDataSize = stats.externalDataSize - + stats.externalMediaSize + stats.externalCacheSize; + + stats.externalMediaSize; long newSize = externalCodeSize + externalDataSize + getTotalInternalSize(stats); if (entry.size != newSize || diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index d85c3417131..22908abe9bd 100644 --- a/src/com/android/settings/applications/InstalledAppDetails.java +++ b/src/com/android/settings/applications/InstalledAppDetails.java @@ -384,7 +384,12 @@ public class InstalledAppDetails extends Fragment mDataSize = (TextView)view.findViewById(R.id.data_size_text); mExternalCodeSize = (TextView)view.findViewById(R.id.external_code_size_text); mExternalDataSize = (TextView)view.findViewById(R.id.external_data_size_text); - + + if (Environment.isExternalStorageEmulated()) { + ((View)mExternalCodeSize.getParent()).setVisibility(View.GONE); + ((View)mExternalDataSize.getParent()).setVisibility(View.GONE); + } + // Get Control button panel View btnPanel = view.findViewById(R.id.control_buttons_panel); mForceStopButton = (Button) btnPanel.findViewById(R.id.left_button); @@ -675,22 +680,28 @@ public class InstalledAppDetails extends Fragment } else { mHaveSizes = true; - if (mLastCodeSize != mAppEntry.codeSize) { - mLastCodeSize = mAppEntry.codeSize; - mAppSize.setText(getSizeStr(mAppEntry.codeSize)); + long codeSize = mAppEntry.codeSize; + long dataSize = mAppEntry.dataSize; + if (Environment.isExternalStorageEmulated()) { + codeSize += mAppEntry.externalCodeSize; + dataSize += mAppEntry.externalDataSize; + } else { + if (mLastExternalCodeSize != mAppEntry.externalCodeSize) { + mLastExternalCodeSize = mAppEntry.externalCodeSize; + mExternalCodeSize.setText(getSizeStr(mAppEntry.externalCodeSize)); + } + if (mLastExternalDataSize != mAppEntry.externalDataSize) { + mLastExternalDataSize = mAppEntry.externalDataSize; + mExternalDataSize.setText(getSizeStr( mAppEntry.externalDataSize)); + } } - if (mLastDataSize != mAppEntry.dataSize) { - mLastDataSize = mAppEntry.dataSize; - mDataSize.setText(getSizeStr(mAppEntry.dataSize)); + if (mLastCodeSize != codeSize) { + mLastCodeSize = codeSize; + mAppSize.setText(getSizeStr(codeSize)); } - if (mLastExternalCodeSize != mAppEntry.externalCodeSize) { - mLastExternalCodeSize = mAppEntry.externalCodeSize; - mExternalCodeSize.setText(getSizeStr(mAppEntry.externalCodeSize)); - } - long nonCacheExtDataSize = mAppEntry.externalDataSize - mAppEntry.externalCacheSize; - if (mLastExternalDataSize != nonCacheExtDataSize) { - mLastExternalDataSize = nonCacheExtDataSize; - mExternalDataSize.setText(getSizeStr(nonCacheExtDataSize)); + if (mLastDataSize != dataSize) { + mLastDataSize = dataSize; + mDataSize.setText(getSizeStr(dataSize)); } long cacheSize = mAppEntry.cacheSize + mAppEntry.externalCacheSize; if (mLastCacheSize != cacheSize) { @@ -702,7 +713,7 @@ public class InstalledAppDetails extends Fragment mTotalSize.setText(getSizeStr(mAppEntry.size)); } - if ((mAppEntry.dataSize+nonCacheExtDataSize) <= 0 || !mCanClearData) { + if ((mAppEntry.dataSize+ mAppEntry.externalDataSize) <= 0 || !mCanClearData) { mClearDataButton.setEnabled(false); } else { mClearDataButton.setEnabled(true); diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java index 1cc9dcc791f..1240d4349a5 100644 --- a/src/com/android/settings/applications/ManageApplications.java +++ b/src/com/android/settings/applications/ManageApplications.java @@ -341,7 +341,8 @@ public class ManageApplications extends Fragment implements final int N = mApplications.getCount(); for (int i=0; i