summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author François Degros <fdegros@google.com> 2025-01-24 02:44:23 +0000
committer François Degros <fdegros@google.com> 2025-01-31 05:20:14 +0000
commit5d24d06793cb85d760193d833eaa84c1f11fab9f (patch)
tree344479bff532ed207461fc8b7ed0af4995d9c3b8
parent570216d4a99c48cfcf510b98c0cf33675b840580 (diff)
Determine visibility of the "Extract all" menu item
Bug: 391731541 Flag: com.android.documentsui.flags.zip_ng Test: Manual Change-Id: Ie282e1f5c22a9117dc151434284a1f519b7cfd33
-rw-r--r--src/com/android/documentsui/MenuManager.java15
-rw-r--r--src/com/android/documentsui/files/MenuManager.java5
-rw-r--r--tests/common/com/android/documentsui/testing/TestDirectoryDetails.java6
-rw-r--r--tests/common/com/android/documentsui/testing/TestMenu.java1
-rw-r--r--tests/unit/com/android/documentsui/files/MenuManagerTest.java2
-rw-r--r--tests/unit/com/android/documentsui/picker/MenuManagerTest.java2
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);