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

Commit 5d24d067 authored by François Degros's avatar François Degros
Browse files

Determine visibility of the "Extract all" menu item

Bug: 391731541
Flag: com.android.documentsui.flags.zip_ng
Test: Manual
Change-Id: Ie282e1f5c22a9117dc151434284a1f519b7cfd33
parent 570216d4
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -27,11 +27,13 @@ import android.view.View;
import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.Fragment;

import com.android.documentsui.archives.ArchivesProvider;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.Menus;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.State;
import com.android.documentsui.dirlist.DirectoryFragment;
import com.android.documentsui.flags.Flags;
import com.android.documentsui.queries.SearchViewManager;
import com.android.documentsui.sidebar.RootsFragment;

@@ -91,6 +93,9 @@ public abstract class MenuManager {
            return;
        }
        updateCreateDir(mOptionMenu.findItem(R.id.option_menu_create_dir));
        if (Flags.zipNg()) {
            updateExtractAll(mOptionMenu.findItem(R.id.option_menu_extract_all));
        }
        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));
@@ -397,6 +402,10 @@ public abstract class MenuManager {
        Menus.setEnabledAndVisible(launcher, false);
    }

    protected void updateExtractAll(MenuItem it) {
        Menus.setEnabledAndVisible(it, false);
    }

    protected abstract void updateSelectAll(MenuItem selectAll);
    protected abstract void updateSelectAll(MenuItem selectAll, SelectionDetails selectionDetails);
    protected abstract void updateDeselectAll(
@@ -455,6 +464,12 @@ public abstract class MenuManager {
            return mActivity.isInRecents();
        }

        /** Is the current directory showing the contents of an archive? */
        public boolean isInArchive() {
            final DocumentInfo dir = mActivity.getCurrentDirectory();
            return dir != null && ArchivesProvider.AUTHORITY.equals(dir.authority);
        }

        public boolean canCreateDirectory() {
            return mActivity.canCreateDirectory();
        }
+5 −0
Original line number Diff line number Diff line
@@ -224,6 +224,11 @@ public final class MenuManager extends com.android.documentsui.MenuManager {
                && mDirDetails.hasItemsToPaste());
    }

    @Override
    protected void updateExtractAll(MenuItem it) {
        Menus.setEnabledAndVisible(it, mDirDetails.isInArchive());
    }

    @Override
    protected void updateSelectAll(MenuItem selectAll) {
        Menus.setEnabledAndVisible(selectAll, true);
+6 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.documentsui.MenuManager.DirectoryDetails;
public class TestDirectoryDetails extends DirectoryDetails {

    public boolean isInRecents;
    public boolean isInArchive;
    public boolean hasRootSettings;
    public boolean hasItemsToPaste;
    public boolean canCreateDoc;
@@ -49,6 +50,11 @@ public class TestDirectoryDetails extends DirectoryDetails {
        return isInRecents;
    }

    @Override
    public boolean isInArchive() {
        return isInArchive;
    }

    @Override
    public boolean canCreateDoc() {
        return canCreateDoc;
+1 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ public abstract class TestMenu implements Menu {
                R.id.option_menu_debug,
                R.id.option_menu_new_window,
                R.id.option_menu_create_dir,
                R.id.option_menu_extract_all,
                R.id.option_menu_select_all,
                R.id.option_menu_settings,
                R.id.option_menu_inspect,
+2 −0
Original line number Diff line number Diff line
@@ -111,6 +111,7 @@ public final class MenuManagerTest {
    private TestMenuItem optionSort;
    private TestMenuItem mOptionLauncher;
    private TestMenuItem mOptionShowHiddenFiles;
    private TestMenuItem mOptionExtractAll;

    /* Sub Option Menu items */
    private TestMenuItem subOptionGrid;
@@ -185,6 +186,7 @@ public final class MenuManagerTest {
        optionSort = testMenu.findItem(R.id.option_menu_sort);
        mOptionLauncher = testMenu.findItem(R.id.option_menu_launcher);
        mOptionShowHiddenFiles = testMenu.findItem(R.id.option_menu_show_hidden_files);
        mOptionExtractAll = testMenu.findItem(R.id.option_menu_extract_all);

        // Menu actions on root title row.
        subOptionGrid = testMenu.findItem(R.id.sub_menu_grid);
Loading