diff options
author | 2025-01-24 02:44:23 +0000 | |
---|---|---|
committer | 2025-01-31 05:20:14 +0000 | |
commit | 5d24d06793cb85d760193d833eaa84c1f11fab9f (patch) | |
tree | 344479bff532ed207461fc8b7ed0af4995d9c3b8 | |
parent | 570216d4a99c48cfcf510b98c0cf33675b840580 (diff) |
Determine visibility of the "Extract all" menu item
Bug: 391731541
Flag: com.android.documentsui.flags.zip_ng
Test: Manual
Change-Id: Ie282e1f5c22a9117dc151434284a1f519b7cfd33
6 files changed, 31 insertions, 0 deletions
diff --git a/src/com/android/documentsui/MenuManager.java b/src/com/android/documentsui/MenuManager.java index 2d1e2a59a..1d53a9c32 100644 --- a/src/com/android/documentsui/MenuManager.java +++ b/src/com/android/documentsui/MenuManager.java @@ -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(); } diff --git a/src/com/android/documentsui/files/MenuManager.java b/src/com/android/documentsui/files/MenuManager.java index 3e2e00feb..0fb7c4fa1 100644 --- a/src/com/android/documentsui/files/MenuManager.java +++ b/src/com/android/documentsui/files/MenuManager.java @@ -225,6 +225,11 @@ public final class MenuManager extends com.android.documentsui.MenuManager { } @Override + protected void updateExtractAll(MenuItem it) { + Menus.setEnabledAndVisible(it, mDirDetails.isInArchive()); + } + + @Override protected void updateSelectAll(MenuItem selectAll) { Menus.setEnabledAndVisible(selectAll, true); } diff --git a/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java b/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java index 28416775a..fb1a7b6db 100644 --- a/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java +++ b/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java @@ -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; @@ -50,6 +51,11 @@ public class TestDirectoryDetails extends DirectoryDetails { } @Override + public boolean isInArchive() { + return isInArchive; + } + + @Override public boolean canCreateDoc() { return canCreateDoc; } diff --git a/tests/common/com/android/documentsui/testing/TestMenu.java b/tests/common/com/android/documentsui/testing/TestMenu.java index 10e0ea493..ef20d6721 100644 --- a/tests/common/com/android/documentsui/testing/TestMenu.java +++ b/tests/common/com/android/documentsui/testing/TestMenu.java @@ -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, diff --git a/tests/unit/com/android/documentsui/files/MenuManagerTest.java b/tests/unit/com/android/documentsui/files/MenuManagerTest.java index 6f97de814..e1612db88 100644 --- a/tests/unit/com/android/documentsui/files/MenuManagerTest.java +++ b/tests/unit/com/android/documentsui/files/MenuManagerTest.java @@ -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); diff --git a/tests/unit/com/android/documentsui/picker/MenuManagerTest.java b/tests/unit/com/android/documentsui/picker/MenuManagerTest.java index e18a16fe3..01b6af2c5 100644 --- a/tests/unit/com/android/documentsui/picker/MenuManagerTest.java +++ b/tests/unit/com/android/documentsui/picker/MenuManagerTest.java @@ -103,6 +103,7 @@ public final class MenuManagerTest { private TestMenuItem optionSort; private TestMenuItem mOptionLauncher; private TestMenuItem mOptionShowHiddenFiles; + private TestMenuItem mOptionExtractAll; private TestMenuItem subOptionGrid; private TestMenuItem subOptionList; @@ -164,6 +165,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); |