summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/documentsui/ActionModeController.java6
-rw-r--r--src/com/android/documentsui/NavigationViewManager.java69
-rw-r--r--src/com/android/documentsui/files/FilesActivity.java1
-rw-r--r--src/com/android/documentsui/picker/PickActivity.java1
-rw-r--r--src/com/android/documentsui/queries/SearchFragment.java6
5 files changed, 62 insertions, 21 deletions
diff --git a/src/com/android/documentsui/ActionModeController.java b/src/com/android/documentsui/ActionModeController.java
index d8cf59000..89b8ff383 100644
--- a/src/com/android/documentsui/ActionModeController.java
+++ b/src/com/android/documentsui/ActionModeController.java
@@ -46,6 +46,7 @@ public class ActionModeController extends SelectionObserver<String>
private final Activity mActivity;
private final SelectionTracker<String> mSelectionMgr;
+ private final NavigationViewManager mNavigator;
private final MenuManager mMenuManager;
private final MessageBuilder mMessages;
@@ -58,11 +59,13 @@ public class ActionModeController extends SelectionObserver<String>
public ActionModeController(
Activity activity,
SelectionTracker<String> selectionMgr,
+ NavigationViewManager navigator,
MenuManager menuManager,
MessageBuilder messages) {
mActivity = activity;
mSelectionMgr = selectionMgr;
+ mNavigator = navigator;
mMenuManager = menuManager;
mMessages = messages;
}
@@ -132,6 +135,8 @@ public class ActionModeController extends SelectionObserver<String>
// Re-enable TalkBack for the toolbars, as they are no longer covered by action mode.
mScope.accessibilityImportanceSetter.setAccessibilityImportance(
View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, R.id.toolbar, R.id.roots_toolbar);
+
+ mNavigator.setActionModeActivated(false);
}
@Override
@@ -141,6 +146,7 @@ public class ActionModeController extends SelectionObserver<String>
mode.setTitle(mActivity.getResources().getQuantityString(R.plurals.selected_count, size));
if (size > 0) {
+ mNavigator.setActionModeActivated(true);
// Hide the toolbars if action mode is enabled, so TalkBack doesn't navigate to
// these controls when using linear navigation.
diff --git a/src/com/android/documentsui/NavigationViewManager.java b/src/com/android/documentsui/NavigationViewManager.java
index 204971dce..52d2b1281 100644
--- a/src/com/android/documentsui/NavigationViewManager.java
+++ b/src/com/android/documentsui/NavigationViewManager.java
@@ -24,6 +24,7 @@ import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.View;
import android.view.ViewOutlineProvider;
+import android.widget.FrameLayout;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
@@ -35,7 +36,6 @@ import com.android.documentsui.dirlist.AnimationView;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
-import com.google.android.material.tabs.TabLayout;
import java.util.function.IntConsumer;
@@ -48,6 +48,7 @@ public class NavigationViewManager {
private final DrawerController mDrawer;
private final Toolbar mToolbar;
+ private final View mHeader;
private final State mState;
private final NavigationViewManager.Environment mEnv;
private final Breadcrumb mBreadcrumb;
@@ -55,9 +56,12 @@ public class NavigationViewManager {
private final View mSearchBarView;
private final CollapsingToolbarLayout mCollapsingBarLayout;
private final Drawable mDefaultActionBarBackground;
+ private final ViewOutlineProvider mDefaultOutlineProvider;
private final ViewOutlineProvider mSearchBarOutlineProvider;
private final boolean mShowSearchBar;
+ private boolean mIsActionModeActivated = false;
+
public NavigationViewManager(
BaseActivity activity,
DrawerController drawer,
@@ -68,6 +72,7 @@ public class NavigationViewManager {
UserIdManager userIdManager) {
mToolbar = activity.findViewById(R.id.toolbar);
+ mHeader = activity.findViewById(R.id.directory_header);
mDrawer = drawer;
mState = state;
mEnv = env;
@@ -85,6 +90,7 @@ public class NavigationViewManager {
mSearchBarView = activity.findViewById(R.id.searchbar_title);
mCollapsingBarLayout = activity.findViewById(R.id.collapsing_toolbar);
mDefaultActionBarBackground = mToolbar.getBackground();
+ mDefaultOutlineProvider = mToolbar.getOutlineProvider();
mShowSearchBar = activity.getResources().getBoolean(R.bool.show_search_bar);
final Resources resources = mToolbar.getResources();
@@ -138,6 +144,11 @@ public class NavigationViewManager {
return mProfileTabs.getSelectedUser();
}
+ public void setActionModeActivated(boolean actionModeActivated) {
+ mIsActionModeActivated = actionModeActivated;
+ update();
+ }
+
public void update() {
updateScrollFlag();
updateToolbar();
@@ -177,30 +188,44 @@ public class NavigationViewManager {
AppBarLayout.LayoutParams lp =
(AppBarLayout.LayoutParams) mCollapsingBarLayout.getLayoutParams();
- if (shouldShowSearchBar()) {
- lp.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL
- | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS
- | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS_COLLAPSED);
- } else {
- lp.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL
- | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
- }
+ lp.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL
+ | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
mCollapsingBarLayout.setLayoutParams(lp);
}
private void updateToolbar() {
- if (shouldShowSearchBar()) {
+ CollapsingToolbarLayout.LayoutParams toolbarLayoutParams =
+ (CollapsingToolbarLayout.LayoutParams) mToolbar.getLayoutParams();
+
+ int headerTopOffset = 0;
+ if (shouldShowSearchBar() && !mIsActionModeActivated) {
mToolbar.setBackgroundResource(R.drawable.search_bar_background);
mToolbar.setOutlineProvider(mSearchBarOutlineProvider);
+ int searchBarMargin = mToolbar.getResources().getDimensionPixelSize(
+ R.dimen.search_bar_margin);
+ toolbarLayoutParams.setMargins(searchBarMargin, searchBarMargin, searchBarMargin,
+ searchBarMargin);
+ mToolbar.setLayoutParams(toolbarLayoutParams);
+ mToolbar.setElevation(
+ mToolbar.getResources().getDimensionPixelSize(R.dimen.search_bar_elevation));
+ headerTopOffset = toolbarLayoutParams.height + searchBarMargin * 2;
} else {
mToolbar.setBackground(mDefaultActionBarBackground);
- mToolbar.setOutlineProvider(null);
+ mToolbar.setOutlineProvider(mDefaultOutlineProvider);
+ int actionBarMargin = mToolbar.getResources().getDimensionPixelSize(
+ R.dimen.action_bar_margin);
+ toolbarLayoutParams.setMargins(0, 0, 0, /* bottom= */ actionBarMargin);
+ mToolbar.setLayoutParams(toolbarLayoutParams);
+ mToolbar.setElevation(
+ mToolbar.getResources().getDimensionPixelSize(R.dimen.action_bar_elevation));
+ headerTopOffset = toolbarLayoutParams.height + actionBarMargin;
}
- if (mCollapsingBarLayout != null) {
- View overlayBackground =
- mCollapsingBarLayout.findViewById(R.id.toolbar_background_layout);
- overlayBackground.setVisibility(shouldShowSearchBar() ? View.GONE : View.VISIBLE);
+ if (!mIsActionModeActivated) {
+ FrameLayout.LayoutParams headerLayoutParams =
+ (FrameLayout.LayoutParams) mHeader.getLayoutParams();
+ headerLayoutParams.setMargins(0, /* top= */ headerTopOffset, 0, 0);
+ mHeader.setLayoutParams(headerLayoutParams);
}
}
@@ -209,7 +234,8 @@ public class NavigationViewManager {
}
// Hamburger if drawer is present, else sad nullness.
- private @Nullable Drawable getActionBarIcon() {
+ private @Nullable
+ Drawable getActionBarIcon() {
if (mDrawer.isPresent()) {
return mToolbar.getContext().getDrawable(R.drawable.ic_hamburger);
} else {
@@ -223,16 +249,23 @@ public class NavigationViewManager {
interface Breadcrumb {
void setup(Environment env, State state, IntConsumer listener);
+
void show(boolean visibility);
+
void postUpdate();
}
interface Environment {
- @Deprecated // Use CommonAddones#getCurrentRoot
+ @Deprecated
+ // Use CommonAddones#getCurrentRoot
RootInfo getCurrentRoot();
+
String getDrawerTitle();
- @Deprecated // Use CommonAddones#refreshCurrentRootAndDirectory
+
+ @Deprecated
+ // Use CommonAddones#refreshCurrentRootAndDirectory
void refreshCurrentRootAndDirectory(int animation);
+
boolean isSearchExpanded();
}
}
diff --git a/src/com/android/documentsui/files/FilesActivity.java b/src/com/android/documentsui/files/FilesActivity.java
index 1afb38eac..a25672650 100644
--- a/src/com/android/documentsui/files/FilesActivity.java
+++ b/src/com/android/documentsui/files/FilesActivity.java
@@ -132,6 +132,7 @@ public class FilesActivity extends BaseActivity implements AbstractActionHandler
mInjector.actionModeController = new ActionModeController(
this,
mInjector.selectionMgr,
+ mNavigator,
mInjector.menuManager,
mInjector.messages);
diff --git a/src/com/android/documentsui/picker/PickActivity.java b/src/com/android/documentsui/picker/PickActivity.java
index 5328c640e..c2fbd50a0 100644
--- a/src/com/android/documentsui/picker/PickActivity.java
+++ b/src/com/android/documentsui/picker/PickActivity.java
@@ -121,6 +121,7 @@ public class PickActivity extends BaseActivity implements ActionHandler.Addons {
mInjector.actionModeController = new ActionModeController(
this,
mInjector.selectionMgr,
+ mNavigator,
mInjector.menuManager,
mInjector.messages);
diff --git a/src/com/android/documentsui/queries/SearchFragment.java b/src/com/android/documentsui/queries/SearchFragment.java
index 667dc8e48..0223559c1 100644
--- a/src/com/android/documentsui/queries/SearchFragment.java
+++ b/src/com/android/documentsui/queries/SearchFragment.java
@@ -40,7 +40,7 @@ import com.android.documentsui.R;
import java.util.List;
-public class SearchFragment extends Fragment{
+public class SearchFragment extends Fragment {
private static final String TAG = "SearchFragment";
private static final String KEY_QUERY = "query";
@@ -121,14 +121,14 @@ public class SearchFragment extends Fragment{
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(this::onHistoryItemClicked);
- View toolbar = getActivity().findViewById(R.id.toolbar_background_layout);
+ View toolbar = getActivity().findViewById(R.id.toolbar);
if (toolbar != null) {
// Align top with the bottom of search bar.
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
layoutParams.setMargins(0, getResources().getDimensionPixelSize(
- R.dimen.action_bar_space_height), 0, 0);
+ R.dimen.action_bar_margin) + toolbar.getLayoutParams().height, 0, 0);
getView().setLayoutParams(layoutParams);
}