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

Commit dbfc9c21 authored by shawnlin's avatar shawnlin
Browse files

Fixed menu item "get info" getting disabled on changing device orientation.

Update menu items status after doc is loaded.

Change-Id: Ib22d2fbeaf0ab0e3456d344e87fbf8f03c1df4aa
Fixes: 112714255
Test: atest DocumentsUITests
parent d3608d2e
Loading
Loading
Loading
Loading
+23 −10
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.documentsui;

import android.app.Fragment;
import android.util.Log;
import android.view.KeyboardShortcutGroup;
import android.view.Menu;
import android.view.MenuInflater;
@@ -24,6 +25,7 @@ import android.view.MenuItem;
import android.view.View;

import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.EventListener;
import com.android.documentsui.base.Menus;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.State;
@@ -36,11 +38,14 @@ import java.util.List;
import java.util.function.IntFunction;

public abstract class MenuManager {
    private final static String TAG = "MenuManager";

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

    protected Menu mOptionMenu;

    public MenuManager(
            SearchViewManager searchManager,
            State displayState,
@@ -70,16 +75,24 @@ public abstract class MenuManager {

    /** @see BaseActivity#onPrepareOptionsMenu */
    public void updateOptionMenu(Menu menu) {
        updateCreateDir(menu.findItem(R.id.option_menu_create_dir));
        updateSettings(menu.findItem(R.id.option_menu_settings));
        updateSelectAll(menu.findItem(R.id.option_menu_select_all));
        updateNewWindow(menu.findItem(R.id.option_menu_new_window));
        updateModePicker(menu.findItem(R.id.option_menu_grid),
                menu.findItem(R.id.option_menu_list));
        updateAdvanced(menu.findItem(R.id.option_menu_advanced));
        updateDebug(menu.findItem(R.id.option_menu_debug));
        updateInspect(menu.findItem(R.id.option_menu_inspect));
        Menus.disableHiddenItems(menu);
        mOptionMenu = menu;
        updateOptionMenu();
    }

    public void updateOptionMenu() {
        if (mOptionMenu == null) {
            return;
        }
        updateCreateDir(mOptionMenu.findItem(R.id.option_menu_create_dir));
        updateSettings(mOptionMenu.findItem(R.id.option_menu_settings));
        updateSelectAll(mOptionMenu.findItem(R.id.option_menu_select_all));
        updateNewWindow(mOptionMenu.findItem(R.id.option_menu_new_window));
        updateModePicker(mOptionMenu.findItem(R.id.option_menu_grid),
                mOptionMenu.findItem(R.id.option_menu_list));
        updateAdvanced(mOptionMenu.findItem(R.id.option_menu_advanced));
        updateDebug(mOptionMenu.findItem(R.id.option_menu_debug));
        updateInspect(mOptionMenu.findItem(R.id.option_menu_inspect));
        Menus.disableHiddenItems(mOptionMenu);
    }

    /**
+3 −4
Original line number Diff line number Diff line
@@ -1089,10 +1089,9 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On
            if (!mModel.isLoading()) {
                mActivity.notifyDirectoryLoaded(
                        mModel.doc != null ? mModel.doc.derivedUri : null);
                if (mModel.doc == null) {
                    // Invalid model, then update options menu to disable some items.
                    mActivity.invalidateOptionsMenu();
                }
                // For orientation changed case, sometimes the docs loading comes after the menu
                // update. We need to update the menu here to ensure the status is correct.
                mInjector.menuManager.updateOptionMenu();
            }
        }
    }