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

Commit e5d6ca2c authored by Steve McKay's avatar Steve McKay
Browse files

Inject DirectoryDetails into MenuManager Const.

Rather than passing to *every* method.

Change-Id: I5890891fa8c98b7db542775655b67c270e699886
parent 990f76ea
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -152,12 +152,6 @@ public abstract class BaseActivity extends Activity
     */
    public abstract MenuManager getMenuManager();

    /**
     * Provides Activity a means of injection into and specialization of
     * DirectoryFragment.
     */
    public abstract DirectoryDetails getDirectoryDetails();

    public abstract void onDocumentPicked(DocumentInfo doc, Model model);
    public abstract void onDocumentsPicked(List<DocumentInfo> docs);

+21 −19
Original line number Diff line number Diff line
@@ -31,12 +31,17 @@ import com.android.internal.annotations.VisibleForTesting;

public abstract class MenuManager {

    final protected State mState;
    final protected SearchViewManager mSearchManager;
    final protected State mState;
    final protected DirectoryDetails mDirDetails;

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

    /** @see ActionModeController */
@@ -53,14 +58,13 @@ public abstract class MenuManager {
    }

    /** @see BaseActivity#onPrepareOptionsMenu */
    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);
        updateModePicker(menu.findItem(
                R.id.menu_grid), menu.findItem(R.id.menu_list), directoryDetails);
    public void updateOptionMenu(Menu menu) {
        updateCreateDir(menu.findItem(R.id.menu_create_dir));
        updateSettings(menu.findItem(R.id.menu_settings));
        updateNewWindow(menu.findItem(R.id.menu_new_window));
        updateModePicker(menu.findItem(R.id.menu_grid), menu.findItem(R.id.menu_list));
        // Sort menu item is managed by SortMenuManager
        updateAdvanced(menu.findItem(R.id.menu_advanced), directoryDetails);
        updateAdvanced(menu.findItem(R.id.menu_advanced));

        Menus.disableHiddenItems(menu);
    }
@@ -77,8 +81,7 @@ public abstract class MenuManager {
        // Pickers don't have any context menu at this moment.
    }

    public void inflateContextMenuForContainer(
            Menu menu, MenuInflater inflater, DirectoryDetails directoryDetails) {
    public void inflateContextMenuForContainer(Menu menu, MenuInflater inflater) {
        throw new UnsupportedOperationException("Pickers don't allow context menu.");
    }

@@ -166,11 +169,11 @@ public abstract class MenuManager {
     * Called when user tries to generate a context menu anchored to an empty pane.
     */
    @VisibleForTesting
    public void updateContextMenuForContainer(Menu menu, DirectoryDetails directoryDetails) {
    public void updateContextMenuForContainer(Menu menu) {
        MenuItem paste = menu.findItem(R.id.menu_paste_from_clipboard);
        MenuItem selectAll = menu.findItem(R.id.menu_select_all);

        paste.setEnabled(directoryDetails.hasItemsToPaste() && directoryDetails.canCreateDoc());
        paste.setEnabled(mDirDetails.hasItemsToPaste() && mDirDetails.canCreateDoc());
        updateSelectAll(selectAll);
    }

@@ -185,19 +188,18 @@ public abstract class MenuManager {
        updateEject(eject, root);
    }

    protected void updateModePicker(
            MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
    protected void updateModePicker(MenuItem grid, MenuItem list) {
        grid.setVisible(mState.derivedMode != State.MODE_GRID);
        list.setVisible(mState.derivedMode != State.MODE_LIST);
    }

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

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

@@ -209,7 +211,7 @@ public abstract class MenuManager {
        eject.setVisible(false);
    }

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

@@ -253,7 +255,7 @@ public abstract class MenuManager {
    protected abstract void updateOpenInContextMenu(
            MenuItem open, SelectionDetails selectionDetails);
    protected abstract void updateSelectAll(MenuItem selectAll);
    protected abstract void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails);
    protected abstract void updateCreateDir(MenuItem createDir);

    /**
     * Access to meta data about the selection.
+1 −2
Original line number Diff line number Diff line
@@ -448,8 +448,7 @@ public class DirectoryFragment extends Fragment
            // TODO: inject DirectoryDetails into MenuManager constructor
            // Since both classes are supplied by Activity and created
            // at the same time.
            mMenuManager.inflateContextMenuForContainer(
                    menu, inflater, getBaseActivity().getDirectoryDetails());
            mMenuManager.inflateContextMenuForContainer(menu, inflater);
        } else {
            mMenuManager.inflateContextMenuForDocs(menu, inflater, mSelectionMetadata);
        }
+10 −14
Original line number Diff line number Diff line
@@ -81,7 +81,6 @@ public class ManageActivity extends BaseActivity {
    private long mDrawerLastFiddled;
    private Tuner mTuner;
    private MenuManager mMenuManager;
    private DirectoryDetails mDetails;
    private DocumentClipper mClipper;

    public ManageActivity() {
@@ -93,14 +92,16 @@ public class ManageActivity extends BaseActivity {
        super.onCreate(icicle);

        mClipper = DocumentsApplication.getDocumentClipper(this);
        mMenuManager = new MenuManager(mSearchManager, mState);
        mTuner = new Tuner(this, mState);
        mDetails = new DirectoryDetails(this) {
        mMenuManager = new MenuManager(
                mSearchManager,
                mState,
                new DirectoryDetails(this) {
                    @Override
                    public boolean hasItemsToPaste() {
                        return mClipper.hasItemsToPaste();
                    }
        };
                });
        mTuner = new Tuner(this, mState);
        mClipper = DocumentsApplication.getDocumentClipper(this);

        RootsFragment.show(getFragmentManager(), this::openRootSettings);
@@ -223,7 +224,7 @@ public class ManageActivity extends BaseActivity {
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);
        mMenuManager.updateOptionMenu(menu, mDetails);
        mMenuManager.updateOptionMenu(menu);
        return true;
    }

@@ -543,11 +544,6 @@ public class ManageActivity extends BaseActivity {
        return mMenuManager;
    }

    @Override
    public DirectoryDetails getDirectoryDetails() {
        return mDetails;
    }

    /**
     * Builds a stack for the specific Uris. Multi roots are not supported, as it's impossible
     * to know which root to select. Also, the stack doesn't contain intermediate directories.
+16 −14
Original line number Diff line number Diff line
@@ -29,13 +29,16 @@ import com.android.documentsui.base.State;

public final class MenuManager extends com.android.documentsui.MenuManager {

    public MenuManager(SearchViewManager searchManager, State displayState) {
        super(searchManager, displayState);
    public MenuManager(
            SearchViewManager searchManager,
            State displayState,
            DirectoryDetails dirDetails) {
        super(searchManager, displayState, dirDetails);
    }

    @Override
    public void updateOptionMenu(Menu menu, DirectoryDetails details) {
        super.updateOptionMenu(menu, details);
    public void updateOptionMenu(Menu menu) {
        super.updateOptionMenu(menu);

        // It hides icon if searching in progress
        mSearchManager.updateMenu();
@@ -50,10 +53,9 @@ public final class MenuManager extends com.android.documentsui.MenuManager {
    }

    @Override
    public void inflateContextMenuForContainer(
            Menu menu, MenuInflater inflater, DirectoryDetails directoryDetails) {
    public void inflateContextMenuForContainer(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.container_context_menu, menu);
        updateContextMenuForContainer(menu, directoryDetails);
        updateContextMenuForContainer(menu);
    }

    @Override
@@ -92,13 +94,13 @@ public final class MenuManager extends com.android.documentsui.MenuManager {
    }

    @Override
    protected void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
        settings.setVisible(directoryDetails.hasRootSettings());
    protected void updateSettings(MenuItem settings) {
        settings.setVisible(mDirDetails.hasRootSettings());
    }

    @Override
    protected void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
        newWindow.setVisible(directoryDetails.shouldShowFancyFeatures());
    protected void updateNewWindow(MenuItem newWindow) {
        newWindow.setVisible(mDirDetails.shouldShowFancyFeatures());
    }

    @Override
@@ -143,9 +145,9 @@ public final class MenuManager extends com.android.documentsui.MenuManager {
    }

    @Override
    protected void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails) {
    protected void updateCreateDir(MenuItem createDir) {
        createDir.setVisible(true);
        createDir.setEnabled(directoryDetails.canCreateDirectory());
        createDir.setEnabled(mDirDetails.canCreateDirectory());
    }

    @Override
Loading