Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit caedd1b5 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Moving Menu-related logic from BaseActivity to MenuManager."

parents c70323ac 8eafd50a
Loading
Loading
Loading
Loading
+0 −26
Original line number Diff line number Diff line
@@ -165,33 +165,7 @@ public abstract class BaseActivity extends Activity
    @CallSuper
    public boolean onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);

        mSearchManager.showMenu(canSearchRoot());

        final boolean inRecents = getCurrentDirectory() == null;

        final MenuItem sort = menu.findItem(R.id.menu_sort);
        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 advanced = menu.findItem(R.id.menu_advanced);
        final MenuItem fileSize = menu.findItem(R.id.menu_file_size);

        // Search uses backend ranking; no sorting, recents doesn't support sort.
        sort.setEnabled(!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);

        advanced.setVisible(mState.showAdvancedOption);
        advanced.setTitle(mState.showAdvancedOption && mState.showAdvanced
                ? 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);

        return true;
    }

+7 −40
Original line number Diff line number Diff line
@@ -25,15 +25,14 @@ import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION;
import android.view.Menu;
import android.view.MenuItem;

import com.android.documentsui.MenuManager.DirectoryDetails;

final class DocumentsMenuManager extends MenuManager {

    private final State mState;
    private final SearchViewManager mSearchManager;
    private boolean mPicking;

    public DocumentsMenuManager(SearchViewManager searchManager, State displayState) {
        mSearchManager = searchManager;
        mState = displayState;
        super(searchManager, displayState);

        mPicking = mState.action == ACTION_CREATE
                || mState.action == ACTION_OPEN_TREE
@@ -56,24 +55,17 @@ final class DocumentsMenuManager extends MenuManager {
        if (mPicking && directoryDetails.isInRecents()) {
            grid.setVisible(false);
            list.setVisible(false);
        } else {
            super.updateModePicker(grid, list, directoryDetails);
        }
    }

    @Override
    void updateFileSize(MenuItem fileSize, DirectoryDetails directoryDetails) {
        super.updateFileSize(fileSize, directoryDetails);
        fileSize.setVisible(fileSize.isVisible() && !mPicking);
    }

    @Override
    void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
        //assert(!settings.isVisible());
    }

    @Override
    void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
        //assert(!newWindow.isVisible());
    }

    @Override
    void updateSelectAll(MenuItem selectAll, SelectionDetails selectionDetails) {
        selectAll.setVisible(mState.allowMultiple);
@@ -90,29 +82,4 @@ final class DocumentsMenuManager extends MenuManager {
        open.setVisible(mState.action == ACTION_GET_CONTENT
                || mState.action == ACTION_OPEN);
    }

    @Override
    void updateShare(MenuItem share, SelectionDetails selectionDetails) {
        share.setVisible(false);
    }

    @Override
    void updateDelete(MenuItem delete, SelectionDetails selectionDetails) {
        delete.setVisible(false);
    }

    @Override
    void updateRename(MenuItem rename, SelectionDetails selectionDetails) {
        rename.setVisible(false);
    }

    @Override
    void updateMoveTo(MenuItem moveTo, SelectionDetails selectionDetails) {
        //assert(!moveTo.isVisible());
    }

    @Override
    void updateCopyTo(MenuItem copyTo, SelectionDetails selectionDetails) {
        //assert(!copyTo.isVisible());
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -82,7 +82,7 @@ public class FilesActivity extends BaseActivity {
        super.onCreate(icicle);

        mClipper = DocumentsApplication.getDocumentClipper(this);
        mMenuManager = new FilesMenuManager(mSearchManager);
        mMenuManager = new FilesMenuManager(mSearchManager, getDisplayState());
        mDetails = new DirectoryDetails(this) {
            @Override
            public boolean hasItemsToPaste() {
+11 −21
Original line number Diff line number Diff line
@@ -16,15 +16,21 @@

package com.android.documentsui;

import static com.android.documentsui.State.ACTION_CREATE;
import static com.android.documentsui.State.ACTION_GET_CONTENT;
import static com.android.documentsui.State.ACTION_OPEN;
import static com.android.documentsui.State.ACTION_OPEN_TREE;
import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION;

import android.view.Menu;
import android.view.MenuItem;

final class FilesMenuManager extends MenuManager {
import com.android.documentsui.MenuManager.DirectoryDetails;

    private final SearchViewManager mSearchManager;
final class FilesMenuManager extends MenuManager {

    public FilesMenuManager(SearchViewManager searchManager) {
        mSearchManager = searchManager;
    public FilesMenuManager(SearchViewManager searchManager, State displayState) {
        super(searchManager, displayState);
    }

    @Override
@@ -35,17 +41,6 @@ final class FilesMenuManager extends MenuManager {
        mSearchManager.updateMenu();
    }

    @Override
    void updateModePicker(MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
        //assert(!grid.isVisible());
        //assert(list.isVisible());
    }

    @Override
    void updateFileSize(MenuItem fileSize, DirectoryDetails directoryDetails) {
        //assert(fileSize.isVisible());
    }

    @Override
    void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
        settings.setVisible(directoryDetails.hasRootSettings());
@@ -70,7 +65,7 @@ final class FilesMenuManager extends MenuManager {

    @Override
    void updateSelectAll(MenuItem selectAll, SelectionDetails selectionDetails) {
        assert(selectAll.isVisible());
        selectAll.setVisible(true);
    }

    @Override
@@ -79,11 +74,6 @@ final class FilesMenuManager extends MenuManager {
        createDir.setEnabled(directoryDetails.canCreateDirectory());
    }

    @Override
    void updateOpen(MenuItem open, SelectionDetails selectionDetails) {
        open.setVisible(false);
    }

    @Override
    void updateShare(MenuItem share, SelectionDetails selectionDetails) {
        share.setVisible(!selectionDetails.containsDirectories()
+79 −16
Original line number Diff line number Diff line
@@ -22,6 +22,14 @@ import android.view.MenuItem;

public abstract class MenuManager {

    final State mState;
    final SearchViewManager mSearchManager;

    public MenuManager(SearchViewManager searchManager, State displayState) {
        mSearchManager = searchManager;
        mState = displayState;
    }

    /** @See DirectoryFragment.SelectionModeListener#updateActionMenu */
    public void updateActionMenu(Menu menu, SelectionDetails selection) {
        updateOpen(menu.findItem(R.id.menu_open), selection);
@@ -36,12 +44,17 @@ public abstract class MenuManager {
    }

    /** @See Activity#onPrepareOptionsMenu */
    public void updateOptionMenu(Menu menu, DirectoryDetails details) {
        updateCreateDir(menu.findItem(R.id.menu_create_dir), details);
        updateSettings(menu.findItem(R.id.menu_settings), details);
        updateNewWindow(menu.findItem(R.id.menu_new_window), details);
        updateFileSize(menu.findItem(R.id.menu_file_size), details);
        updateModePicker(menu.findItem(R.id.menu_grid), menu.findItem(R.id.menu_list), details);
    public void updateOptionMenu(Menu menu, DirectoryDetails directoryDetails) {
        updateCreateDir(menu.findItem(R.id.menu_create_dir), directoryDetails);
        updateSettings(menu.findItem(R.id.menu_settings), directoryDetails);
        updateNewWindow(menu.findItem(R.id.menu_new_window), directoryDetails);
        updateFileSize(menu.findItem(R.id.menu_file_size), directoryDetails);
        updateModePicker(menu.findItem(
                R.id.menu_grid), menu.findItem(R.id.menu_list), directoryDetails);
        updateSort(menu.findItem(R.id.menu_sort),
                menu.findItem(R.id.menu_sort_size),
                directoryDetails);
        updateAdvanced(menu.findItem(R.id.menu_advanced), directoryDetails);

        Menus.disableHiddenItems(menu);
    }
@@ -81,18 +94,64 @@ public abstract class MenuManager {
        delete.setVisible(true);
    }

    abstract void updateModePicker(MenuItem grid, MenuItem list, DirectoryDetails directoryDetails);
    abstract void updateFileSize(MenuItem fileSize, DirectoryDetails directoryDetails);
    abstract void updateSettings(MenuItem settings, DirectoryDetails directoryDetails);
    abstract void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails);
    abstract void updateMoveTo(MenuItem moveTo, SelectionDetails selectionDetails);
    abstract void updateCopyTo(MenuItem copyTo, SelectionDetails selectionDetails);
    void updateModePicker(MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
        grid.setVisible(mState.derivedMode != State.MODE_GRID);
        list.setVisible(mState.derivedMode != State.MODE_LIST);
    }

    void updateFileSize(MenuItem fileSize, DirectoryDetails directoryDetails) {
        fileSize.setVisible(!mState.forceSize);
        fileSize.setTitle(directoryDetails.getDisplayFileSize()
                ? R.string.menu_file_size_hide : R.string.menu_file_size_show);
    }

    void updateSort(MenuItem sort, MenuItem sortSize, DirectoryDetails directoryDetails) {
        // Search uses backend ranking; no sorting, recents doesn't support sort.
        sort.setEnabled(!directoryDetails.isInRecents() && !mSearchManager.isSearching());
        sort.setVisible(true);
        sortSize.setVisible(mState.showSize); // Only sort by size when file sizes are visible
    }

    void updateAdvanced(MenuItem advanced, DirectoryDetails directoryDetails) {
        advanced.setVisible(mState.showAdvancedOption);
        advanced.setTitle(mState.showAdvancedOption && mState.showAdvanced
                ? R.string.menu_advanced_hide : R.string.menu_advanced_show);
    }

    void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
        settings.setVisible(false);
    }

    void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
        newWindow.setVisible(false);
    }

    void updateOpen(MenuItem open, SelectionDetails selectionDetails) {
        open.setVisible(false);
    }

    void updateShare(MenuItem share, SelectionDetails selectionDetails) {
        share.setVisible(false);
    }

    void updateDelete(MenuItem delete, SelectionDetails selectionDetails) {
        delete.setVisible(false);
    }

    void updateRename(MenuItem rename, SelectionDetails selectionDetails) {
        rename.setVisible(false);
    }

    void updateMoveTo(MenuItem moveTo, SelectionDetails selectionDetails) {
        moveTo.setVisible(false);
    }

    void updateCopyTo(MenuItem copyTo, SelectionDetails selectionDetails) {
        copyTo.setVisible(false);
    }

    abstract void updateSelectAll(MenuItem selectAll, SelectionDetails selectionDetails);
    abstract void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails);
    abstract void updateOpen(MenuItem open, SelectionDetails selectionDetails);
    abstract void updateShare(MenuItem share, SelectionDetails selectionDetails);
    abstract void updateRename(MenuItem rename, SelectionDetails selectionDetails);
    abstract void updateDelete(MenuItem delete, SelectionDetails selectionDetails);

    /**
     * Access to meta data about the selection.
@@ -135,5 +194,9 @@ public abstract class MenuManager {
        public boolean canCreateDirectory() {
            return mActivity.canCreateDirectory();
        }

        public boolean getDisplayFileSize() {
            return LocalPreferences.getDisplayFileSize(mActivity);
        }
    }
}
Loading