diff options
Diffstat (limited to 'java/src')
4 files changed, 49 insertions, 30 deletions
diff --git a/java/src/com/android/intentresolver/v2/ChooserActivity.java b/java/src/com/android/intentresolver/v2/ChooserActivity.java index a755b9e9..9a8b0e2a 100644 --- a/java/src/com/android/intentresolver/v2/ChooserActivity.java +++ b/java/src/com/android/intentresolver/v2/ChooserActivity.java @@ -1473,7 +1473,8 @@ public class ChooserActivity extends Hilt_ChooserActivity implements rowsToShow--; } } else { - ViewGroup currentEmptyStateView = getActiveEmptyStateView(); + ViewGroup currentEmptyStateView = + mChooserMultiProfilePagerAdapter.getActiveEmptyStateView(); if (currentEmptyStateView.getVisibility() == View.VISIBLE) { offset += currentEmptyStateView.getHeight(); } @@ -1507,11 +1508,6 @@ public class ChooserActivity extends Hilt_ChooserActivity implements return PROFILE_PERSONAL; } - private ViewGroup getActiveEmptyStateView() { - int currentPage = mChooserMultiProfilePagerAdapter.getCurrentPage(); - return mChooserMultiProfilePagerAdapter.getEmptyStateView(currentPage); - } - @Override // ResolverListCommunicator public void onHandlePackagesChanged(ResolverListAdapter listAdapter) { mChooserMultiProfilePagerAdapter.getActiveListAdapter().notifyDataSetChanged(); @@ -1782,8 +1778,6 @@ public class ChooserActivity extends Hilt_ChooserActivity implements if (shouldShowTabs()) { mChooserMultiProfilePagerAdapter .setEmptyStateBottomOffset(insets.getSystemWindowInsetBottom()); - mChooserMultiProfilePagerAdapter.setupContainerPadding( - getActiveEmptyStateView().findViewById(com.android.internal.R.id.resolver_empty_state_container)); } WindowInsets result = super.onApplyWindowInsets(v, insets); diff --git a/java/src/com/android/intentresolver/v2/ChooserMultiProfilePagerAdapter.java b/java/src/com/android/intentresolver/v2/ChooserMultiProfilePagerAdapter.java index d3c9efea..8ca976bc 100644 --- a/java/src/com/android/intentresolver/v2/ChooserMultiProfilePagerAdapter.java +++ b/java/src/com/android/intentresolver/v2/ChooserMultiProfilePagerAdapter.java @@ -128,6 +128,7 @@ public class ChooserMultiProfilePagerAdapter extends MultiProfilePagerAdapter< public void setEmptyStateBottomOffset(int bottomOffset) { mBottomPaddingOverrideSupplier.setEmptyStateBottomOffset(bottomOffset); + setupContainerPadding(); } /** diff --git a/java/src/com/android/intentresolver/v2/MultiProfilePagerAdapter.java b/java/src/com/android/intentresolver/v2/MultiProfilePagerAdapter.java index b2a167e1..ad9614b9 100644 --- a/java/src/com/android/intentresolver/v2/MultiProfilePagerAdapter.java +++ b/java/src/com/android/intentresolver/v2/MultiProfilePagerAdapter.java @@ -89,7 +89,6 @@ public class MultiProfilePagerAdapter< private final Function<SinglePageAdapterT, ListAdapterT> mListAdapterExtractor; private final AdapterBinder<PageViewT, SinglePageAdapterT> mAdapterBinder; private final Supplier<ViewGroup> mPageViewInflater; - private final Supplier<Optional<Integer>> mContainerBottomPaddingOverrideSupplier; private final ImmutableList<ProfileDescriptor<PageViewT, SinglePageAdapterT>> mItems; @@ -123,19 +122,20 @@ public class MultiProfilePagerAdapter< mListAdapterExtractor = listAdapterExtractor; mAdapterBinder = adapterBinder; mPageViewInflater = pageViewInflater; - mContainerBottomPaddingOverrideSupplier = containerBottomPaddingOverrideSupplier; ImmutableList.Builder<ProfileDescriptor<PageViewT, SinglePageAdapterT>> items = new ImmutableList.Builder<>(); for (SinglePageAdapterT adapter : adapters) { - items.add(createProfileDescriptor(adapter)); + items.add(createProfileDescriptor(adapter, containerBottomPaddingOverrideSupplier)); } mItems = items.build(); } private ProfileDescriptor<PageViewT, SinglePageAdapterT> createProfileDescriptor( - SinglePageAdapterT adapter) { - return new ProfileDescriptor<>(mPageViewInflater.get(), adapter); + SinglePageAdapterT adapter, + Supplier<Optional<Integer>> containerBottomPaddingOverrideSupplier) { + return new ProfileDescriptor<>( + mPageViewInflater.get(), adapter, containerBottomPaddingOverrideSupplier); } public void setOnProfileSelectedListener(OnProfileSelectedListener listener) { @@ -235,10 +235,14 @@ public class MultiProfilePagerAdapter< return mItems.get(pageIndex); } - public ViewGroup getEmptyStateView(int pageIndex) { + private ViewGroup getEmptyStateView(int pageIndex) { return getItem(pageIndex).getEmptyStateView(); } + public ViewGroup getActiveEmptyStateView() { + return getEmptyStateView(getCurrentPage()); + } + /** * Returns the number of {@link ProfileDescriptor} objects. * <p>For a normal consumer device with only one user returns <code>1</code>. @@ -454,12 +458,10 @@ public class MultiProfilePagerAdapter< descriptor.mRootView.findViewById( com.android.internal.R.id.resolver_list).setVisibility(View.GONE); descriptor.mEmptyStateUi.resetViewVisibilities(); + descriptor.setupContainerPadding(); ViewGroup emptyStateView = descriptor.getEmptyStateView(); - View container = emptyStateView.findViewById( - com.android.internal.R.id.resolver_empty_state_container); - setupContainerPadding(container); TextView titleView = emptyStateView.findViewById( com.android.internal.R.id.resolver_empty_state_title); @@ -493,17 +495,11 @@ public class MultiProfilePagerAdapter< } /** - * Sets up the padding of the view containing the empty state screens. - * <p>This method is meant to be overridden so that subclasses can customize the padding. + * Sets up the padding of the view containing the empty state screens for the current adapter + * view. */ - public void setupContainerPadding(View container) { - Optional<Integer> bottomPaddingOverride = mContainerBottomPaddingOverrideSupplier.get(); - bottomPaddingOverride.ifPresent(paddingBottom -> - container.setPadding( - container.getPaddingLeft(), - container.getPaddingTop(), - container.getPaddingRight(), - paddingBottom)); + protected final void setupContainerPadding() { + getItem(getCurrentPage()).setupContainerPadding(); } public void showListView(ListAdapterT activeListAdapter) { @@ -534,17 +530,25 @@ public class MultiProfilePagerAdapter< private final SinglePageAdapterT mAdapter; private final PageViewT mView; - ProfileDescriptor(ViewGroup rootView, SinglePageAdapterT adapter) { + ProfileDescriptor( + ViewGroup rootView, + SinglePageAdapterT adapter, + Supplier<Optional<Integer>> containerBottomPaddingOverrideSupplier) { mRootView = rootView; mAdapter = adapter; mEmptyStateView = rootView.findViewById(com.android.internal.R.id.resolver_empty_state); mView = (PageViewT) rootView.findViewById(com.android.internal.R.id.resolver_list); - mEmptyStateUi = new EmptyStateUiHelper(rootView); + mEmptyStateUi = + new EmptyStateUiHelper(rootView, containerBottomPaddingOverrideSupplier); } protected ViewGroup getEmptyStateView() { return mEmptyStateView; } + + private void setupContainerPadding() { + mEmptyStateUi.setupContainerPadding(); + } } /** Listener interface for changes between the per-profile UI tabs. */ diff --git a/java/src/com/android/intentresolver/v2/emptystate/EmptyStateUiHelper.java b/java/src/com/android/intentresolver/v2/emptystate/EmptyStateUiHelper.java index 7230b042..fc852f5c 100644 --- a/java/src/com/android/intentresolver/v2/emptystate/EmptyStateUiHelper.java +++ b/java/src/com/android/intentresolver/v2/emptystate/EmptyStateUiHelper.java @@ -18,16 +18,36 @@ package com.android.intentresolver.v2.emptystate; import android.view.View; import android.view.ViewGroup; +import java.util.Optional; +import java.util.function.Supplier; + /** * Helper for building `MultiProfilePagerAdapter` tab UIs for profile tabs that are "blocked" by * some empty-state status. */ public class EmptyStateUiHelper { private final View mEmptyStateView; + private final Supplier<Optional<Integer>> mContainerBottomPaddingOverrideSupplier; - public EmptyStateUiHelper(ViewGroup rootView) { + public EmptyStateUiHelper( + ViewGroup rootView, + Supplier<Optional<Integer>> containerBottomPaddingOverrideSupplier) { mEmptyStateView = rootView.requireViewById(com.android.internal.R.id.resolver_empty_state); + mContainerBottomPaddingOverrideSupplier = containerBottomPaddingOverrideSupplier; + } + + /** Sets up the padding of the view containing the empty state screens. */ + public void setupContainerPadding() { + View container = mEmptyStateView.requireViewById( + com.android.internal.R.id.resolver_empty_state_container); + Optional<Integer> bottomPaddingOverride = mContainerBottomPaddingOverrideSupplier.get(); + bottomPaddingOverride.ifPresent(paddingBottom -> + container.setPadding( + container.getPaddingLeft(), + container.getPaddingTop(), + container.getPaddingRight(), + paddingBottom)); } public void resetViewVisibilities() { |