summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Zemiao Zhu <zemiao@google.com> 2020-02-18 17:15:28 -0800
committer Zemiao Zhu <zemiao@google.com> 2020-03-18 11:44:30 -0700
commit7da7b0fd37580389833e59f3ab49b6f2333f42a0 (patch)
treee8c5680433b1949d9f9a4f099e30fd8df3c9cbfb
parentbfadf609caa642212df8b59b72a1a1b48b810eba (diff)
Remove hamburger icon when there is only one root.
Bug: 149070877 Test: manual; atest DocumentsUIGoogleTests Change-Id: I4d43e319966bc03e412e4b7d8a29b4bdaa3d7dad
-rw-r--r--src/com/android/documentsui/AbstractActionHandler.java5
-rw-r--r--src/com/android/documentsui/BaseActivity.java6
-rw-r--r--src/com/android/documentsui/DrawerController.java17
-rw-r--r--src/com/android/documentsui/sidebar/RootsFragment.java3
-rw-r--r--tests/common/com/android/documentsui/TestActivity.java7
-rw-r--r--tests/unit/com/android/documentsui/ProfileTabsTest.java5
6 files changed, 42 insertions, 1 deletions
diff --git a/src/com/android/documentsui/AbstractActionHandler.java b/src/com/android/documentsui/AbstractActionHandler.java
index 4d0a422cb..c450c70de 100644
--- a/src/com/android/documentsui/AbstractActionHandler.java
+++ b/src/com/android/documentsui/AbstractActionHandler.java
@@ -964,6 +964,11 @@ public abstract class AbstractActionHandler<T extends FragmentActivity & CommonA
boolean isInRecents();
void setRootsDrawerOpen(boolean open);
+ /**
+ * Set the locked status of the DrawerController.
+ */
+ void setRootsDrawerLocked(boolean locked);
+
// TODO: Let navigator listens to State
void updateNavigator();
diff --git a/src/com/android/documentsui/BaseActivity.java b/src/com/android/documentsui/BaseActivity.java
index 3bf222782..49ce20f07 100644
--- a/src/com/android/documentsui/BaseActivity.java
+++ b/src/com/android/documentsui/BaseActivity.java
@@ -437,6 +437,12 @@ public abstract class BaseActivity
}
@Override
+ public void setRootsDrawerLocked(boolean locked) {
+ mDrawer.setLocked(locked);
+ mNavigator.update();
+ }
+
+ @Override
public void onRootPicked(RootInfo root) {
// Clicking on the current root removes search
mSearchManager.cancelSearch();
diff --git a/src/com/android/documentsui/DrawerController.java b/src/com/android/documentsui/DrawerController.java
index fb2822aa9..cb536162d 100644
--- a/src/com/android/documentsui/DrawerController.java
+++ b/src/com/android/documentsui/DrawerController.java
@@ -20,6 +20,7 @@ import static com.android.documentsui.base.SharedMinimal.DEBUG;
import android.app.Activity;
import android.util.Log;
+import android.view.Gravity;
import android.view.View;
import androidx.annotation.ColorRes;
@@ -41,6 +42,7 @@ public abstract class DrawerController implements DrawerListener {
public abstract void update();
public abstract void setOpen(boolean open);
+ public abstract void setLocked(boolean locked);
public abstract boolean isPresent();
public abstract boolean isOpen();
abstract void setTitle(String title);
@@ -179,13 +181,23 @@ public abstract class DrawerController implements DrawerListener {
}
@Override
+ public void setLocked(boolean locked) {
+ if (locked) {
+ mLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
+ } else {
+ mLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
+ }
+ }
+
+ @Override
public boolean isOpen() {
return mLayout.isDrawerOpen(mDrawer);
}
@Override
public boolean isPresent() {
- return true;
+ return DrawerLayout.LOCK_MODE_UNLOCKED
+ == mLayout.getDrawerLockMode(Gravity.START);
}
@Override
@@ -231,6 +243,9 @@ public abstract class DrawerController implements DrawerListener {
public void setOpen(boolean open) {}
@Override
+ public void setLocked(boolean locked) {}
+
+ @Override
public boolean isOpen() {
return false;
}
diff --git a/src/com/android/documentsui/sidebar/RootsFragment.java b/src/com/android/documentsui/sidebar/RootsFragment.java
index 2cc62a03b..ec5989a19 100644
--- a/src/com/android/documentsui/sidebar/RootsFragment.java
+++ b/src/com/android/documentsui/sidebar/RootsFragment.java
@@ -254,6 +254,9 @@ public class RootsFragment extends Fragment {
DocumentsApplication.getUserIdManager(getContext()).getUserIds(),
maybeShowBadge);
+ // Disable drawer if only one root
+ activity.setRootsDrawerLocked(sortedItems.size() <= 1);
+
// Get the first visible position and offset
final int firstPosition = mList.getFirstVisiblePosition();
View firstChild = mList.getChildAt(0);
diff --git a/tests/common/com/android/documentsui/TestActivity.java b/tests/common/com/android/documentsui/TestActivity.java
index 40de47931..2506bdf96 100644
--- a/tests/common/com/android/documentsui/TestActivity.java
+++ b/tests/common/com/android/documentsui/TestActivity.java
@@ -79,6 +79,7 @@ public abstract class TestActivity extends AbstractBase {
public TestEventListener<Void> restoreRootAndDirectory;
public TestEventListener<Integer> refreshCurrentRootAndDirectory;
public TestEventListener<Boolean> setRootsDrawerOpen;
+ public TestEventListener<Boolean> setRootsDrawerLocked;
public TestEventListener<Uri> notifyDirectoryNavigated;
public TestEventHandler<Void> finishedHandler;
@@ -102,6 +103,7 @@ public abstract class TestActivity extends AbstractBase {
restoreRootAndDirectory = new TestEventListener<>();
refreshCurrentRootAndDirectory = new TestEventListener<>();
setRootsDrawerOpen = new TestEventListener<>();
+ setRootsDrawerLocked = new TestEventListener<>();
notifyDirectoryNavigated = new TestEventListener<>();
contentResolver = env.contentResolver;
loaderManager = new TestLoaderManager();
@@ -213,6 +215,11 @@ public abstract class TestActivity extends AbstractBase {
}
@Override
+ public final void setRootsDrawerLocked(boolean locked) {
+ setRootsDrawerLocked.accept(locked);
+ }
+
+ @Override
public final ContentResolver getContentResolver() {
return contentResolver;
}
diff --git a/tests/unit/com/android/documentsui/ProfileTabsTest.java b/tests/unit/com/android/documentsui/ProfileTabsTest.java
index 92aaaae6f..635380bad 100644
--- a/tests/unit/com/android/documentsui/ProfileTabsTest.java
+++ b/tests/unit/com/android/documentsui/ProfileTabsTest.java
@@ -326,6 +326,11 @@ public class ProfileTabsTest {
}
@Override
+ public void setRootsDrawerLocked(boolean locked) {
+ throw new UnsupportedOperationException("not implemented");
+ }
+
+ @Override
public void updateNavigator() {
throw new UnsupportedOperationException("not implemented");
}