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);