diff --git a/packages/DocumentsUI/AndroidManifest.xml b/packages/DocumentsUI/AndroidManifest.xml
index 915e2f96efdea..e95e5ec322ef8 100644
--- a/packages/DocumentsUI/AndroidManifest.xml
+++ b/packages/DocumentsUI/AndroidManifest.xml
@@ -42,12 +42,6 @@
-
-
+
diff --git a/packages/DocumentsUI/res/values/strings.xml b/packages/DocumentsUI/res/values/strings.xml
index c1a9d72ea38c3..268ce181deedd 100644
--- a/packages/DocumentsUI/res/values/strings.xml
+++ b/packages/DocumentsUI/res/values/strings.xml
@@ -47,6 +47,20 @@
Select \"^1\"
+
+ Show internal storage
+
+ Show SD card
+
+ Hide internal storage
+
+ Hide SD card
+
+
+ Show file size
+
+ Hide file size
+
%1$d selected
@@ -83,12 +97,6 @@
More apps
-
- Display advanced devices
-
- Display file size
- Display device size
-
No items
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
index 0a7eedc5a9286..caa07ab5bddfe 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
@@ -351,6 +351,10 @@ public class DirectoryFragment extends Fragment {
updateDisplayState();
}
+ public void onDisplayStateChanged() {
+ updateDisplayState();
+ }
+
public void onUserSortOrderChanged() {
// Sort order change always triggers reload; we'll trigger state change
// on the flip side.
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
index 29f8b9dd8a630..0ed82d91f8ded 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
@@ -254,7 +254,13 @@ public class DocumentsActivity extends Activity {
mState.localOnly = intent.getBooleanExtra(Intent.EXTRA_LOCAL_ONLY, false);
mState.forceAdvanced = intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, false);
mState.showAdvanced = mState.forceAdvanced
- | SettingsActivity.getDisplayAdvancedDevices(this);
+ | LocalPreferences.getDisplayAdvancedDevices(this);
+
+ if (mState.action == ACTION_MANAGE) {
+ mState.showSize = true;
+ } else {
+ mState.showSize = LocalPreferences.getDisplayFileSize(this);
+ }
}
private class RestoreRootTask extends AsyncTask {
@@ -352,18 +358,6 @@ public class DocumentsActivity extends Activity {
}
}
- @Override
- public void onResume() {
- super.onResume();
-
- if (mState.action == ACTION_MANAGE) {
- mState.showSize = true;
- } else {
- mState.showSize = SettingsActivity.getDisplayFileSize(this);
- invalidateOptionsMenu();
- }
- }
-
private DrawerListener mDrawerListener = new DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
@@ -463,10 +457,17 @@ public class DocumentsActivity extends Activity {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.activity, menu);
- // Actions are always visible when showing as dialog
+ // Most actions are visible when showing as dialog
if (mShowAsDialog) {
for (int i = 0; i < menu.size(); i++) {
- menu.getItem(i).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+ final MenuItem item = menu.getItem(i);
+ switch (item.getItemId()) {
+ case R.id.menu_advanced:
+ case R.id.menu_file_size:
+ break;
+ default:
+ item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+ }
}
}
@@ -543,7 +544,8 @@ public class DocumentsActivity extends Activity {
final MenuItem sortSize = menu.findItem(R.id.menu_sort_size);
final MenuItem grid = menu.findItem(R.id.menu_grid);
final MenuItem list = menu.findItem(R.id.menu_list);
- final MenuItem settings = menu.findItem(R.id.menu_settings);
+ final MenuItem advanced = menu.findItem(R.id.menu_advanced);
+ final MenuItem fileSize = menu.findItem(R.id.menu_file_size);
sort.setVisible(cwd != null);
grid.setVisible(mState.derivedMode != MODE_GRID);
@@ -594,7 +596,13 @@ public class DocumentsActivity extends Activity {
// TODO: close any search in-progress when hiding
search.setVisible(searchVisible);
- settings.setVisible(mState.action != ACTION_MANAGE);
+ advanced.setTitle(LocalPreferences.getDisplayAdvancedDevices(this)
+ ? R.string.menu_advanced_hide : R.string.menu_advanced_show);
+ fileSize.setTitle(LocalPreferences.getDisplayFileSize(this)
+ ? R.string.menu_file_size_hide : R.string.menu_file_size_show);
+
+ advanced.setVisible(mState.action != ACTION_MANAGE);
+ fileSize.setVisible(mState.action != ACTION_MANAGE);
return true;
}
@@ -629,14 +637,31 @@ public class DocumentsActivity extends Activity {
} else if (id == R.id.menu_list) {
setUserMode(State.MODE_LIST);
return true;
- } else if (id == R.id.menu_settings) {
- startActivity(new Intent(this, SettingsActivity.class));
+ } else if (id == R.id.menu_advanced) {
+ setDisplayAdvancedDevices(!LocalPreferences.getDisplayAdvancedDevices(this));
+ return true;
+ } else if (id == R.id.menu_file_size) {
+ setDisplayFileSize(!LocalPreferences.getDisplayFileSize(this));
return true;
} else {
return super.onOptionsItemSelected(item);
}
}
+ private void setDisplayAdvancedDevices(boolean display) {
+ LocalPreferences.setDisplayAdvancedDevices(this, display);
+ mState.showAdvanced = mState.forceAdvanced | display;
+ RootsFragment.get(getFragmentManager()).onDisplayStateChanged();
+ invalidateOptionsMenu();
+ }
+
+ private void setDisplayFileSize(boolean display) {
+ LocalPreferences.setDisplayFileSize(this, display);
+ mState.showSize = display;
+ DirectoryFragment.get(getFragmentManager()).onDisplayStateChanged();
+ invalidateOptionsMenu();
+ }
+
/**
* Update UI to reflect internal state changes not from user.
*/
diff --git a/packages/DocumentsUI/src/com/android/documentsui/SettingsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/LocalPreferences.java
similarity index 52%
rename from packages/DocumentsUI/src/com/android/documentsui/SettingsActivity.java
rename to packages/DocumentsUI/src/com/android/documentsui/LocalPreferences.java
index d423e3feeef3c..e6c5ae23c4f53 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/SettingsActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/LocalPreferences.java
@@ -16,15 +16,10 @@
package com.android.documentsui;
-import android.app.ActionBar;
-import android.app.Activity;
import android.content.Context;
-import android.os.Bundle;
-import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
-import android.view.MenuItem;
-public class SettingsActivity extends Activity {
+public class LocalPreferences {
private static final String KEY_ADVANCED_DEVICES = "advancedDevices";
private static final String KEY_FILE_SIZE = "fileSize";
@@ -38,34 +33,13 @@ public class SettingsActivity extends Activity {
.getBoolean(KEY_FILE_SIZE, false);
}
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- getFragmentManager()
- .beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
-
- final ActionBar bar = getActionBar();
- if (bar != null) {
- bar.setDisplayShowHomeEnabled(false);
- bar.setDisplayHomeAsUpEnabled(true);
- }
+ public static void setDisplayAdvancedDevices(Context context, boolean display) {
+ PreferenceManager.getDefaultSharedPreferences(context).edit()
+ .putBoolean(KEY_ADVANCED_DEVICES, display).apply();
}
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId() == android.R.id.home) {
- finish();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
-
- public static class SettingsFragment extends PreferenceFragment {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.preferences);
- }
+ public static void setDisplayFileSize(Context context, boolean display) {
+ PreferenceManager.getDefaultSharedPreferences(context).edit()
+ .putBoolean(KEY_FILE_SIZE, display).apply();
}
}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java b/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
index 923c79c06a144..b19e028aeb573 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
@@ -133,11 +133,12 @@ public class RootsFragment extends Fragment {
@Override
public void onResume() {
super.onResume();
+ onDisplayStateChanged();
+ }
+ public void onDisplayStateChanged() {
final Context context = getActivity();
final State state = ((DocumentsActivity) context).getDisplayState();
- state.showAdvanced = state.forceAdvanced
- | SettingsActivity.getDisplayAdvancedDevices(context);
if (state.action == ACTION_GET_CONTENT) {
mList.setOnItemLongClickListener(mItemLongClickListener);