Skip to content

Commit 669f8e7

Browse files
jsharkeyJeff Sharkey
authored andcommitted
Move DocumentsUI settings into overflow menu.
Also use different strings based on device type to make clearer. Bug: 13437894 Change-Id: I4053780de2c7197fb45cc53aee7659e9d0d75c0a
1 parent 696bbee commit 669f8e7

7 files changed

Lines changed: 76 additions & 69 deletions

File tree

packages/DocumentsUI/AndroidManifest.xml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,6 @@
4242
</intent-filter>
4343
</activity>
4444

45-
<activity
46-
android:name=".SettingsActivity"
47-
android:label="@string/menu_settings"
48-
android:theme="@android:style/Theme.DeviceDefault.Light.DialogWhenLarge"
49-
android:exported="false" />
50-
5145
<provider
5246
android:name=".RecentsProvider"
5347
android:authorities="com.android.documentsui.recents"

packages/DocumentsUI/res/menu/activity.xml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,9 @@
5555
android:icon="@drawable/ic_menu_view_list"
5656
android:showAsAction="never" />
5757
<item
58-
android:id="@+id/menu_settings"
59-
android:title="@string/menu_settings"
60-
android:icon="@drawable/ic_menu_settings"
58+
android:id="@+id/menu_advanced"
59+
android:showAsAction="never" />
60+
<item
61+
android:id="@+id/menu_file_size"
6162
android:showAsAction="never" />
6263
</menu>

packages/DocumentsUI/res/values/strings.xml

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,20 @@
4747
<!-- Menu item title that selects the current directory [CHAR LIMIT=48] -->
4848
<string name="menu_select">Select \"<xliff:g id="directory" example="My Directory">^1</xliff:g>\"</string>
4949

50+
<!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
51+
<string name="menu_advanced_show" product="nosdcard">Show internal storage</string>
52+
<!-- Menu item that reveals SD cards built into the device [CHAR LIMIT=24] -->
53+
<string name="menu_advanced_show" product="default">Show SD card</string>
54+
<!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
55+
<string name="menu_advanced_hide" product="nosdcard">Hide internal storage</string>
56+
<!-- Menu item that hides SD cards built into the device [CHAR LIMIT=24] -->
57+
<string name="menu_advanced_hide" product="default">Hide SD card</string>
58+
59+
<!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
60+
<string name="menu_file_size_show">Show file size</string>
61+
<!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
62+
<string name="menu_file_size_hide">Hide file size</string>
63+
5064
<!-- Action mode title summarizing the number of documents selected [CHAR LIMIT=32] -->
5165
<string name="mode_selected_count"><xliff:g id="count" example="3">%1$d</xliff:g> selected</string>
5266

@@ -83,12 +97,6 @@
8397
<!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
8498
<string name="root_type_apps">More apps</string>
8599

86-
<!-- Title for setting that will show all advanced storage devices [CHAR LIMIT=32] -->
87-
<string name="pref_advanced_devices">Display advanced devices</string>
88-
<!-- Title for setting that will show file sizes for all documents [CHAR LIMIT=32] -->
89-
<string name="pref_file_size">Display file size</string>
90-
<string name="pref_device_size">Display device size</string>
91-
92100
<!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
93101
<string name="empty">No items</string>
94102

packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,10 @@ public void onResume() {
351351
updateDisplayState();
352352
}
353353

354+
public void onDisplayStateChanged() {
355+
updateDisplayState();
356+
}
357+
354358
public void onUserSortOrderChanged() {
355359
// Sort order change always triggers reload; we'll trigger state change
356360
// on the flip side.

packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,13 @@ private void buildDefaultState() {
254254
mState.localOnly = intent.getBooleanExtra(Intent.EXTRA_LOCAL_ONLY, false);
255255
mState.forceAdvanced = intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, false);
256256
mState.showAdvanced = mState.forceAdvanced
257-
| SettingsActivity.getDisplayAdvancedDevices(this);
257+
| LocalPreferences.getDisplayAdvancedDevices(this);
258+
259+
if (mState.action == ACTION_MANAGE) {
260+
mState.showSize = true;
261+
} else {
262+
mState.showSize = LocalPreferences.getDisplayFileSize(this);
263+
}
258264
}
259265

260266
private class RestoreRootTask extends AsyncTask<Void, Void, RootInfo> {
@@ -352,18 +358,6 @@ protected void onPostExecute(Void result) {
352358
}
353359
}
354360

355-
@Override
356-
public void onResume() {
357-
super.onResume();
358-
359-
if (mState.action == ACTION_MANAGE) {
360-
mState.showSize = true;
361-
} else {
362-
mState.showSize = SettingsActivity.getDisplayFileSize(this);
363-
invalidateOptionsMenu();
364-
}
365-
}
366-
367361
private DrawerListener mDrawerListener = new DrawerListener() {
368362
@Override
369363
public void onDrawerSlide(View drawerView, float slideOffset) {
@@ -463,10 +457,17 @@ public boolean onCreateOptionsMenu(Menu menu) {
463457
super.onCreateOptionsMenu(menu);
464458
getMenuInflater().inflate(R.menu.activity, menu);
465459

466-
// Actions are always visible when showing as dialog
460+
// Most actions are visible when showing as dialog
467461
if (mShowAsDialog) {
468462
for (int i = 0; i < menu.size(); i++) {
469-
menu.getItem(i).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
463+
final MenuItem item = menu.getItem(i);
464+
switch (item.getItemId()) {
465+
case R.id.menu_advanced:
466+
case R.id.menu_file_size:
467+
break;
468+
default:
469+
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
470+
}
470471
}
471472
}
472473

@@ -543,7 +544,8 @@ public boolean onPrepareOptionsMenu(Menu menu) {
543544
final MenuItem sortSize = menu.findItem(R.id.menu_sort_size);
544545
final MenuItem grid = menu.findItem(R.id.menu_grid);
545546
final MenuItem list = menu.findItem(R.id.menu_list);
546-
final MenuItem settings = menu.findItem(R.id.menu_settings);
547+
final MenuItem advanced = menu.findItem(R.id.menu_advanced);
548+
final MenuItem fileSize = menu.findItem(R.id.menu_file_size);
547549

548550
sort.setVisible(cwd != null);
549551
grid.setVisible(mState.derivedMode != MODE_GRID);
@@ -594,7 +596,13 @@ public boolean onPrepareOptionsMenu(Menu menu) {
594596
// TODO: close any search in-progress when hiding
595597
search.setVisible(searchVisible);
596598

597-
settings.setVisible(mState.action != ACTION_MANAGE);
599+
advanced.setTitle(LocalPreferences.getDisplayAdvancedDevices(this)
600+
? R.string.menu_advanced_hide : R.string.menu_advanced_show);
601+
fileSize.setTitle(LocalPreferences.getDisplayFileSize(this)
602+
? R.string.menu_file_size_hide : R.string.menu_file_size_show);
603+
604+
advanced.setVisible(mState.action != ACTION_MANAGE);
605+
fileSize.setVisible(mState.action != ACTION_MANAGE);
598606

599607
return true;
600608
}
@@ -629,14 +637,31 @@ public boolean onOptionsItemSelected(MenuItem item) {
629637
} else if (id == R.id.menu_list) {
630638
setUserMode(State.MODE_LIST);
631639
return true;
632-
} else if (id == R.id.menu_settings) {
633-
startActivity(new Intent(this, SettingsActivity.class));
640+
} else if (id == R.id.menu_advanced) {
641+
setDisplayAdvancedDevices(!LocalPreferences.getDisplayAdvancedDevices(this));
642+
return true;
643+
} else if (id == R.id.menu_file_size) {
644+
setDisplayFileSize(!LocalPreferences.getDisplayFileSize(this));
634645
return true;
635646
} else {
636647
return super.onOptionsItemSelected(item);
637648
}
638649
}
639650

651+
private void setDisplayAdvancedDevices(boolean display) {
652+
LocalPreferences.setDisplayAdvancedDevices(this, display);
653+
mState.showAdvanced = mState.forceAdvanced | display;
654+
RootsFragment.get(getFragmentManager()).onDisplayStateChanged();
655+
invalidateOptionsMenu();
656+
}
657+
658+
private void setDisplayFileSize(boolean display) {
659+
LocalPreferences.setDisplayFileSize(this, display);
660+
mState.showSize = display;
661+
DirectoryFragment.get(getFragmentManager()).onDisplayStateChanged();
662+
invalidateOptionsMenu();
663+
}
664+
640665
/**
641666
* Update UI to reflect internal state changes not from user.
642667
*/

packages/DocumentsUI/src/com/android/documentsui/SettingsActivity.java renamed to packages/DocumentsUI/src/com/android/documentsui/LocalPreferences.java

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,10 @@
1616

1717
package com.android.documentsui;
1818

19-
import android.app.ActionBar;
20-
import android.app.Activity;
2119
import android.content.Context;
22-
import android.os.Bundle;
23-
import android.preference.PreferenceFragment;
2420
import android.preference.PreferenceManager;
25-
import android.view.MenuItem;
2621

27-
public class SettingsActivity extends Activity {
22+
public class LocalPreferences {
2823
private static final String KEY_ADVANCED_DEVICES = "advancedDevices";
2924
private static final String KEY_FILE_SIZE = "fileSize";
3025

@@ -38,34 +33,13 @@ public static boolean getDisplayFileSize(Context context) {
3833
.getBoolean(KEY_FILE_SIZE, false);
3934
}
4035

41-
@Override
42-
protected void onCreate(Bundle savedInstanceState) {
43-
super.onCreate(savedInstanceState);
44-
45-
getFragmentManager()
46-
.beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
47-
48-
final ActionBar bar = getActionBar();
49-
if (bar != null) {
50-
bar.setDisplayShowHomeEnabled(false);
51-
bar.setDisplayHomeAsUpEnabled(true);
52-
}
53-
}
54-
55-
@Override
56-
public boolean onOptionsItemSelected(MenuItem item) {
57-
if (item.getItemId() == android.R.id.home) {
58-
finish();
59-
return true;
60-
}
61-
return super.onOptionsItemSelected(item);
36+
public static void setDisplayAdvancedDevices(Context context, boolean display) {
37+
PreferenceManager.getDefaultSharedPreferences(context).edit()
38+
.putBoolean(KEY_ADVANCED_DEVICES, display).apply();
6239
}
6340

64-
public static class SettingsFragment extends PreferenceFragment {
65-
@Override
66-
public void onCreate(Bundle savedInstanceState) {
67-
super.onCreate(savedInstanceState);
68-
addPreferencesFromResource(R.xml.preferences);
69-
}
41+
public static void setDisplayFileSize(Context context, boolean display) {
42+
PreferenceManager.getDefaultSharedPreferences(context).edit()
43+
.putBoolean(KEY_FILE_SIZE, display).apply();
7044
}
7145
}

packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,12 @@ public void onLoaderReset(Loader<Collection<RootInfo>> loader) {
133133
@Override
134134
public void onResume() {
135135
super.onResume();
136+
onDisplayStateChanged();
137+
}
136138

139+
public void onDisplayStateChanged() {
137140
final Context context = getActivity();
138141
final State state = ((DocumentsActivity) context).getDisplayState();
139-
state.showAdvanced = state.forceAdvanced
140-
| SettingsActivity.getDisplayAdvancedDevices(context);
141142

142143
if (state.action == ACTION_GET_CONTENT) {
143144
mList.setOnItemLongClickListener(mItemLongClickListener);

0 commit comments

Comments
 (0)