Merge "Show view mode button in action bar on Downloads."

This commit is contained in:
Steve McKay
2016-02-03 00:48:15 +00:00
committed by Android (Google) Code Review
6 changed files with 67 additions and 40 deletions

View File

@ -29,7 +29,8 @@
android:icon="@drawable/ic_menu_search"
android:showAsAction="always"
android:actionViewClass="android.widget.SearchView"
android:imeOptions="actionSearch" />
android:imeOptions="actionSearch"
android:visible="false" />
<item
android:id="@+id/menu_sort"
android:title="@string/menu_sort"
@ -51,12 +52,13 @@
android:id="@+id/menu_grid"
android:title="@string/menu_grid"
android:icon="@drawable/ic_menu_view_grid"
android:showAsAction="never" />
android:showAsAction="always" />
<item
android:id="@+id/menu_list"
android:title="@string/menu_list"
android:icon="@drawable/ic_menu_view_list"
android:showAsAction="never" />
android:showAsAction="always" />
<item
android:id="@+id/menu_new_window"
android:title="@string/menu_new_window"

View File

@ -38,6 +38,7 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.DocumentsContract;
import android.provider.DocumentsContract.Root;
import android.support.annotation.CallSuper;
import android.support.annotation.LayoutRes;
import android.support.annotation.Nullable;
import android.util.Log;
@ -138,10 +139,12 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
}
@Override
@CallSuper
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
final RootInfo root = getCurrentRoot();
mSearchManager.showMenu(canSearchRoot());
final boolean inRecents = getCurrentDirectory() == null;
final MenuItem sort = menu.findItem(R.id.menu_sort);
@ -150,24 +153,17 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
final MenuItem list = menu.findItem(R.id.menu_list);
final MenuItem advanced = menu.findItem(R.id.menu_advanced);
final MenuItem fileSize = menu.findItem(R.id.menu_file_size);
final MenuItem search = menu.findItem(R.id.menu_search);
// I'm thinkin' this isn't necesary here. If it is...'cuz of a bug....
// then uncomment the linke and let's get a proper bug reference here.
// mSearchManager.update(root);
// Search uses backend ranking; no sorting
// Search uses backend ranking; no sorting, recents doesn't support sort.
sort.setVisible(!inRecents && !mSearchManager.isSearching());
sortSize.setVisible(mState.showSize); // Only sort by size when file sizes are visible
fileSize.setVisible(!mState.forceSize);
// grid/list is effectively a toggle.
grid.setVisible(mState.derivedMode != State.MODE_GRID);
list.setVisible(mState.derivedMode != State.MODE_LIST);
sortSize.setVisible(mState.showSize); // Only sort by size when visible
fileSize.setVisible(!mState.forceSize);
advanced.setVisible(!mState.forceAdvanced);
search.setVisible(canSearchRoot());
advanced.setTitle(LocalPreferences.getDisplayAdvancedDevices(this)
? R.string.menu_advanced_hide : R.string.menu_advanced_show);
fileSize.setTitle(LocalPreferences.getDisplayFileSize(this)
@ -271,8 +267,10 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
return true;
case R.id.menu_paste_from_clipboard:
DirectoryFragment.get(getFragmentManager())
.pasteFromClipboard();
DirectoryFragment dir = getDirectoryFragment();
if (dir != null) {
dir.pasteFromClipboard();
}
return true;
case R.id.menu_advanced:
@ -295,6 +293,10 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
}
}
final @Nullable DirectoryFragment getDirectoryFragment() {
return DirectoryFragment.get(getFragmentManager());
}
void showCreateDirectoryDialog() {
CreateDirectoryFragment.show(getFragmentManager());
}
@ -423,7 +425,10 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
void setDisplayFileSize(boolean display) {
LocalPreferences.setDisplayFileSize(this, display);
mState.showSize = display;
DirectoryFragment.get(getFragmentManager()).onDisplayStateChanged();
DirectoryFragment dir = getDirectoryFragment();
if (dir != null) {
dir.onDisplayStateChanged();
}
invalidateOptionsMenu();
}
@ -432,7 +437,10 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
*/
void setUserSortOrder(int sortOrder) {
mState.userSortOrder = sortOrder;
DirectoryFragment.get(getFragmentManager()).onSortOrderChanged();
DirectoryFragment dir = getDirectoryFragment();
if (dir != null) {
dir.onSortOrderChanged();
};
}
/**
@ -447,7 +455,10 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
// in onOptionsItemSelected, and not do the full invalidation
// But! That's a larger refactoring we'll save for another day.
invalidateOptionsMenu();
DirectoryFragment.get(getFragmentManager()).onViewModeChanged();
DirectoryFragment dir = getDirectoryFragment();
if (dir != null) {
dir.onViewModeChanged();
};
}
public void setPending(boolean pending) {
@ -496,7 +507,8 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
return;
}
if (DirectoryFragment.get(getFragmentManager()).onBackPressed()) {
DirectoryFragment dir = getDirectoryFragment();
if (dir != null && dir.onBackPressed()) {
return;
}

View File

@ -293,18 +293,24 @@ public class DocumentsActivity extends BaseActivity {
final DocumentInfo cwd = getCurrentDirectory();
boolean picking = mState.action == ACTION_CREATE
|| mState.action == ACTION_OPEN_TREE
|| mState.action == ACTION_PICK_COPY_DESTINATION;
if (picking) {
// May already be hidden because the root
// doesn't support search.
mSearchManager.showMenu(false);
}
final MenuItem createDir = menu.findItem(R.id.menu_create_dir);
final MenuItem grid = menu.findItem(R.id.menu_grid);
final MenuItem list = menu.findItem(R.id.menu_list);
final MenuItem fileSize = menu.findItem(R.id.menu_file_size);
boolean recents = cwd == null;
boolean picking = mState.action == ACTION_CREATE
|| mState.action == ACTION_OPEN_TREE
|| mState.action == ACTION_PICK_COPY_DESTINATION;
createDir.setVisible(picking && !recents && cwd.isCreateSupported());
mSearchManager.showMenu(!picking);
// No display options in recent directories
if (picking && recents) {

View File

@ -150,14 +150,12 @@ public class DownloadsActivity extends BaseActivity {
final MenuItem newWindow = menu.findItem(R.id.menu_new_window);
final MenuItem pasteFromCb = menu.findItem(R.id.menu_paste_from_clipboard);
final MenuItem fileSize = menu.findItem(R.id.menu_file_size);
final MenuItem search = menu.findItem(R.id.menu_search);
advanced.setVisible(false);
createDir.setVisible(false);
pasteFromCb.setEnabled(false);
newWindow.setEnabled(false);
fileSize.setVisible(false);
search.setVisible(false);
Menus.disableHiddenItems(menu);
return true;

View File

@ -245,20 +245,20 @@ public class FilesActivity extends BaseActivity {
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
final RootInfo root = getCurrentRoot();
final MenuItem createDir = menu.findItem(R.id.menu_create_dir);
final MenuItem pasteFromCb = menu.findItem(R.id.menu_paste_from_clipboard);
final MenuItem settings = menu.findItem(R.id.menu_settings);
createDir.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
createDir.setVisible(true);
createDir.setEnabled(canCreateDirectory());
pasteFromCb.setEnabled(mClipper.hasItemsToPaste());
settings.setVisible(root.hasSettings());
// TODO: For some reason menu is ignoring this being set
// to never in activity.xml. File a bug.
// TODO: For some reason settings menu item is not
// honoring the "showAsAction=never" setting in activity.xml.
settings.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
Menus.disableHiddenItems(menu, pasteFromCb);
@ -276,9 +276,10 @@ public class FilesActivity extends BaseActivity {
createNewWindow();
return true;
case R.id.menu_paste_from_clipboard:
DirectoryFragment dir = DirectoryFragment.get(getFragmentManager());
dir = DirectoryFragment.get(getFragmentManager());
dir.pasteFromClipboard();
DirectoryFragment dir = getDirectoryFragment();
if (dir != null) {
dir.pasteFromClipboard();
}
return true;
}
@ -381,20 +382,26 @@ public class FilesActivity extends BaseActivity {
@Override
public boolean onKeyShortcut(int keyCode, KeyEvent event) {
DirectoryFragment dir;
// TODO: All key events should be statically bound using alphabeticShortcut.
// But not working.
switch (keyCode) {
case KeyEvent.KEYCODE_A:
dir = DirectoryFragment.get(getFragmentManager());
dir.selectAllFiles();
dir = getDirectoryFragment();
if (dir != null) {
dir.selectAllFiles();
}
return true;
case KeyEvent.KEYCODE_C:
// TODO: Should be statically bound using alphabeticShortcut. See b/21330356.
dir = DirectoryFragment.get(getFragmentManager());
dir.copySelectedToClipboard();
dir = getDirectoryFragment();
if (dir != null) {
dir.copySelectedToClipboard();
}
return true;
case KeyEvent.KEYCODE_V:
// TODO: Should be statically bound using alphabeticShortcut. See b/21330356.
dir = DirectoryFragment.get(getFragmentManager());
dir.pasteFromClipboard();
dir = getDirectoryFragment();
if (dir != null) {
dir.pasteFromClipboard();
}
return true;
default:
return super.onKeyShortcut(keyCode, event);

View File

@ -302,8 +302,10 @@ public class RootsFragment extends Fragment {
for (final RootInfo root : roots) {
final RootItem item = new RootItem(root);
if (root.isLibrary()) {
if (DEBUG) Log.d(TAG, "Adding " + root + " as library.");
libraries.add(item);
} else {
if (DEBUG) Log.d(TAG, "Adding " + root + " as non-library.");
others.add(item);
}
}