Merge "Import translations. DO NOT MERGE" into jb-dev
diff --git a/src/com/android/settings/applications/ApplicationsState.java b/src/com/android/settings/applications/ApplicationsState.java
index 0a5c26e..3256fb2 100644
--- a/src/com/android/settings/applications/ApplicationsState.java
+++ b/src/com/android/settings/applications/ApplicationsState.java
@@ -73,6 +73,16 @@
         long dataSize;
         long externalCodeSize;
         long externalDataSize;
+
+        // This is the part of externalDataSize that is in the cache
+        // section of external storage.  Note that we don't just combine
+        // this with cacheSize because currently the platform can't
+        // automatically trim this data when needed, so it is something
+        // the user may need to manage.  The externalDataSize also includes
+        // this value, since what this is here is really the part of
+        // externalDataSize that we can just consider to be "cache" files
+        // for purposes of cleaning them up in the app details UI.
+        long externalCacheSize;
     }
     
     public static class AppEntry extends SizeInfo {
@@ -820,13 +830,15 @@
                                     entry.codeSize != stats.codeSize ||
                                     entry.dataSize != stats.dataSize ||
                                     entry.externalCodeSize != externalCodeSize ||
-                                    entry.externalDataSize != externalDataSize) {
+                                    entry.externalDataSize != externalDataSize ||
+                                    entry.externalCacheSize != stats.externalCacheSize) {
                                 entry.size = newSize;
                                 entry.cacheSize = stats.cacheSize;
                                 entry.codeSize = stats.codeSize;
                                 entry.dataSize = stats.dataSize;
                                 entry.externalCodeSize = externalCodeSize;
                                 entry.externalDataSize = externalDataSize;
+                                entry.externalCacheSize = stats.externalCacheSize;
                                 entry.sizeStr = getSizeStr(entry.size);
                                 entry.internalSize = getTotalInternalSize(stats);
                                 entry.internalSizeStr = getSizeStr(entry.internalSize);
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index 9166b15..d85c341 100644
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -394,8 +394,8 @@
         
         // Initialize clear data and move install location buttons
         View data_buttons_panel = view.findViewById(R.id.data_buttons_panel);
-        mClearDataButton = (Button) data_buttons_panel.findViewById(R.id.left_button);
-        mMoveAppButton = (Button) data_buttons_panel.findViewById(R.id.right_button);
+        mClearDataButton = (Button) data_buttons_panel.findViewById(R.id.right_button);
+        mMoveAppButton = (Button) data_buttons_panel.findViewById(R.id.left_button);
         
         // Cache section
         mCacheSize = (TextView) view.findViewById(R.id.cache_size_text);
@@ -687,26 +687,28 @@
                 mLastExternalCodeSize = mAppEntry.externalCodeSize;
                 mExternalCodeSize.setText(getSizeStr(mAppEntry.externalCodeSize));
             }
-            if (mLastExternalDataSize != mAppEntry.externalDataSize) {
-                mLastExternalDataSize = mAppEntry.externalDataSize;
-                mExternalDataSize.setText(getSizeStr(mAppEntry.externalDataSize));
+            long nonCacheExtDataSize = mAppEntry.externalDataSize - mAppEntry.externalCacheSize;
+            if (mLastExternalDataSize != nonCacheExtDataSize) {
+                mLastExternalDataSize = nonCacheExtDataSize;
+                mExternalDataSize.setText(getSizeStr(nonCacheExtDataSize));
             }
-            if (mLastCacheSize != mAppEntry.cacheSize) {
-                mLastCacheSize = mAppEntry.cacheSize;
-                mCacheSize.setText(getSizeStr(mAppEntry.cacheSize));
+            long cacheSize = mAppEntry.cacheSize + mAppEntry.externalCacheSize;
+            if (mLastCacheSize != cacheSize) {
+                mLastCacheSize = cacheSize;
+                mCacheSize.setText(getSizeStr(cacheSize));
             }
             if (mLastTotalSize != mAppEntry.size) {
                 mLastTotalSize = mAppEntry.size;
                 mTotalSize.setText(getSizeStr(mAppEntry.size));
             }
             
-            if (mAppEntry.dataSize <= 0 || !mCanClearData) {
+            if ((mAppEntry.dataSize+nonCacheExtDataSize) <= 0 || !mCanClearData) {
                 mClearDataButton.setEnabled(false);
             } else {
                 mClearDataButton.setEnabled(true);
                 mClearDataButton.setOnClickListener(this);
             }
-            if (mAppEntry.cacheSize <= 0) {
+            if (cacheSize <= 0) {
                 mClearCacheButton.setEnabled(false);
             } else {
                 mClearCacheButton.setEnabled(true);