Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09693d8b authored by Matt Casey's avatar Matt Casey Committed by Automerger Merge Worker
Browse files

Merge "Empty state UI tweaks" into tm-dev am: ec9b0f94

parents 1699d32a ec9b0f94
Loading
Loading
Loading
Loading
+4 −52
Original line number Diff line number Diff line
@@ -15,10 +15,8 @@
 */
package com.android.internal.app;

import android.annotation.DrawableRes;
import android.annotation.IntDef;
import android.annotation.Nullable;
import android.annotation.StringRes;
import android.app.AppGlobals;
import android.app.admin.DevicePolicyEventLogger;
import android.content.ContentResolver;
@@ -33,7 +31,6 @@ import android.stats.devicepolicy.DevicePolicyEnums;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.android.internal.R;
@@ -347,30 +344,6 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
    protected abstract void showNoWorkToPersonalIntentsEmptyState(
            ResolverListAdapter activeListAdapter);

    /**
     * Updates padding and visibilities as a result of an orientation change.
     * <p>They are not updated automatically, because the view is cached when created.
     * <p>When overridden, make sure to always call the super method.
     */
    void updateAfterConfigChange() {
        for (int i = 0; i < getItemCount(); i++) {
            ViewGroup emptyStateView = getItem(i).getEmptyStateView();
            ImageView icon = emptyStateView.findViewById(R.id.resolver_empty_state_icon);
            updateIconVisibility(icon, emptyStateView);
        }
    }

    private void updateIconVisibility(ImageView icon, ViewGroup emptyStateView) {
        if (isSpinnerShowing(emptyStateView)) {
            icon.setVisibility(View.INVISIBLE);
        } else if (mWorkProfileUserHandle != null
                && !getContext().getResources().getBoolean(R.bool.resolver_landscape_phone)) {
            icon.setVisibility(View.VISIBLE);
        } else {
            icon.setVisibility(View.GONE);
        }
    }

    /**
     * The empty state screens are shown according to their priority:
     * <ol>
@@ -461,27 +434,13 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
        }
    }

    protected void showEmptyState(ResolverListAdapter activeListAdapter,
            @DrawableRes int iconRes, @StringRes int titleRes, @StringRes int subtitleRes) {
        showEmptyState(activeListAdapter, iconRes, titleRes, subtitleRes, /* buttonOnClick */ null);
    }

    protected void showEmptyState(ResolverListAdapter activeListAdapter,
            @DrawableRes int iconRes, String title, String subtitle) {
        showEmptyState(activeListAdapter, iconRes, title, subtitle, /* buttonOnClick */ null);
    protected void showEmptyState(ResolverListAdapter activeListAdapter, String title,
            String subtitle) {
        showEmptyState(activeListAdapter, title, subtitle, /* buttonOnClick */ null);
    }

    protected void showEmptyState(ResolverListAdapter activeListAdapter,
            @DrawableRes int iconRes, @StringRes int titleRes, @StringRes int subtitleRes,
            View.OnClickListener buttonOnClick) {
        String title = titleRes == 0 ? null : mContext.getString(titleRes);
        String subtitle = subtitleRes == 0 ? null : mContext.getString(subtitleRes);
        showEmptyState(activeListAdapter, iconRes, title, subtitle, buttonOnClick);
    }

    protected void showEmptyState(ResolverListAdapter activeListAdapter,
            @DrawableRes int iconRes, String title, String subtitle,
            View.OnClickListener buttonOnClick) {
            String title, String subtitle, View.OnClickListener buttonOnClick) {
        ProfileDescriptor descriptor = getItem(
                userHandleToPageIndex(activeListAdapter.getUserHandle()));
        descriptor.rootView.findViewById(R.id.resolver_list).setVisibility(View.GONE);
@@ -507,10 +466,6 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
        button.setVisibility(buttonOnClick != null ? View.VISIBLE : View.GONE);
        button.setOnClickListener(buttonOnClick);

        ImageView icon = emptyStateView.findViewById(R.id.resolver_empty_state_icon);
        icon.setImageResource(iconRes);
        updateIconVisibility(icon, emptyStateView);

        activeListAdapter.markTabLoaded();
    }

@@ -537,7 +492,6 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
    }

    private void showSpinner(View emptyStateView) {
        emptyStateView.findViewById(R.id.resolver_empty_state_icon).setVisibility(View.INVISIBLE);
        emptyStateView.findViewById(R.id.resolver_empty_state_title).setVisibility(View.INVISIBLE);
        emptyStateView.findViewById(R.id.resolver_empty_state_button).setVisibility(View.INVISIBLE);
        emptyStateView.findViewById(R.id.resolver_empty_state_progress).setVisibility(View.VISIBLE);
@@ -545,7 +499,6 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
    }

    private void resetViewVisibilitiesForWorkProfileEmptyState(View emptyStateView) {
        emptyStateView.findViewById(R.id.resolver_empty_state_icon).setVisibility(View.VISIBLE);
        emptyStateView.findViewById(R.id.resolver_empty_state_title).setVisibility(View.VISIBLE);
        emptyStateView.findViewById(R.id.resolver_empty_state_subtitle).setVisibility(View.VISIBLE);
        emptyStateView.findViewById(R.id.resolver_empty_state_button).setVisibility(View.INVISIBLE);
@@ -554,7 +507,6 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter {
    }

    private void resetViewVisibilitiesForConsumerUserEmptyState(View emptyStateView) {
        emptyStateView.findViewById(R.id.resolver_empty_state_icon).setVisibility(View.GONE);
        emptyStateView.findViewById(R.id.resolver_empty_state_title).setVisibility(View.GONE);
        emptyStateView.findViewById(R.id.resolver_empty_state_subtitle).setVisibility(View.GONE);
        emptyStateView.findViewById(R.id.resolver_empty_state_button).setVisibility(View.GONE);
+2 −13
Original line number Diff line number Diff line
@@ -193,7 +193,6 @@ public class ChooserMultiProfilePagerAdapter extends AbstractMultiProfilePagerAd
    protected void showWorkProfileOffEmptyState(ResolverListAdapter activeListAdapter,
            View.OnClickListener listener) {
        showEmptyState(activeListAdapter,
                R.drawable.ic_work_apps_off,
                getWorkAppPausedTitle(),
                /* subtitle = */ null,
                listener);
@@ -203,12 +202,10 @@ public class ChooserMultiProfilePagerAdapter extends AbstractMultiProfilePagerAd
    protected void showNoPersonalToWorkIntentsEmptyState(ResolverListAdapter activeListAdapter) {
        if (mIsSendAction) {
            showEmptyState(activeListAdapter,
                    R.drawable.ic_sharing_disabled,
                    getCrossProfileBlockedTitle(),
                    getCantShareWithWorkMessage());
        } else {
            showEmptyState(activeListAdapter,
                    R.drawable.ic_sharing_disabled,
                    getCrossProfileBlockedTitle(),
                    getCantAccessWorkMessage());
        }
@@ -218,12 +215,10 @@ public class ChooserMultiProfilePagerAdapter extends AbstractMultiProfilePagerAd
    protected void showNoWorkToPersonalIntentsEmptyState(ResolverListAdapter activeListAdapter) {
        if (mIsSendAction) {
            showEmptyState(activeListAdapter,
                    R.drawable.ic_sharing_disabled,
                    getCrossProfileBlockedTitle(),
                    getCantShareWithPersonalMessage());
        } else {
            showEmptyState(activeListAdapter,
                    R.drawable.ic_sharing_disabled,
                    getCrossProfileBlockedTitle(),
                    getCantAccessPersonalMessage());
        }
@@ -231,19 +226,13 @@ public class ChooserMultiProfilePagerAdapter extends AbstractMultiProfilePagerAd

    @Override
    protected void showNoPersonalAppsAvailableEmptyState(ResolverListAdapter listAdapter) {
        showEmptyState(listAdapter,
                R.drawable.ic_no_apps,
                getNoPersonalAppsAvailableMessage(),
                /* subtitle= */ null);
        showEmptyState(listAdapter, getNoPersonalAppsAvailableMessage(), /* subtitle= */ null);

    }

    @Override
    protected void showNoWorkAppsAvailableEmptyState(ResolverListAdapter listAdapter) {
        showEmptyState(listAdapter,
                R.drawable.ic_no_apps,
                getNoWorkAppsAvailableMessage(),
                /* subtitle = */ null);
        showEmptyState(listAdapter, getNoWorkAppsAvailableMessage(), /* subtitle = */ null);
    }

    private String getWorkAppPausedTitle() {
+0 −1
Original line number Diff line number Diff line
@@ -673,7 +673,6 @@ public class ResolverActivity extends Activity implements
                getResources().getDimensionPixelSize(R.dimen.resolver_button_bar_spacing),
                buttonBar.getPaddingRight(),
                getResources().getDimensionPixelSize(R.dimen.resolver_button_bar_spacing));
        mMultiProfilePagerAdapter.updateAfterConfigChange();
    }

    @Override // ResolverListCommunicator
+0 −24
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import static android.app.admin.DevicePolicyResources.Strings.Core.RESOLVER_WORK
import android.annotation.Nullable;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.res.Resources;
import android.os.UserHandle;
import android.view.LayoutInflater;
import android.view.View;
@@ -74,24 +73,6 @@ public class ResolverMultiProfilePagerAdapter extends AbstractMultiProfilePagerA
        mShouldShowNoCrossProfileIntentsEmptyState = shouldShowNoCrossProfileIntentsEmptyState;
    }

    @Override
    void updateAfterConfigChange() {
        super.updateAfterConfigChange();
        for (ResolverProfileDescriptor descriptor : mItems) {
            View emptyStateCont =
                    descriptor.rootView.findViewById(R.id.resolver_empty_state_container);
            Resources resources = getContext().getResources();
            emptyStateCont.setPadding(
                    emptyStateCont.getPaddingLeft(),
                    resources.getDimensionPixelSize(
                            R.dimen.resolver_empty_state_container_padding_top),
                    emptyStateCont.getPaddingRight(),
                    resources.getDimensionPixelSize(
                            R.dimen.resolver_empty_state_container_padding_bottom));

        }
    }

    private ResolverProfileDescriptor createProfileDescriptor(
            ResolverListAdapter adapter) {
        final LayoutInflater inflater = LayoutInflater.from(getContext());
@@ -203,7 +184,6 @@ public class ResolverMultiProfilePagerAdapter extends AbstractMultiProfilePagerA
    protected void showWorkProfileOffEmptyState(ResolverListAdapter activeListAdapter,
            View.OnClickListener listener) {
        showEmptyState(activeListAdapter,
                R.drawable.ic_work_apps_off,
                getWorkAppPausedTitle(),
                /* subtitle = */ null,
                listener);
@@ -212,7 +192,6 @@ public class ResolverMultiProfilePagerAdapter extends AbstractMultiProfilePagerA
    @Override
    protected void showNoPersonalToWorkIntentsEmptyState(ResolverListAdapter activeListAdapter) {
        showEmptyState(activeListAdapter,
                R.drawable.ic_sharing_disabled,
                getCrossProfileBlockedTitle(),
                getCantAccessWorkMessage());
    }
@@ -220,7 +199,6 @@ public class ResolverMultiProfilePagerAdapter extends AbstractMultiProfilePagerA
    @Override
    protected void showNoWorkToPersonalIntentsEmptyState(ResolverListAdapter activeListAdapter) {
        showEmptyState(activeListAdapter,
                R.drawable.ic_sharing_disabled,
                getCrossProfileBlockedTitle(),
                getCantAccessPersonalMessage());
    }
@@ -228,7 +206,6 @@ public class ResolverMultiProfilePagerAdapter extends AbstractMultiProfilePagerA
    @Override
    protected void showNoPersonalAppsAvailableEmptyState(ResolverListAdapter listAdapter) {
        showEmptyState(listAdapter,
                R.drawable.ic_no_apps,
                getNoPersonalAppsAvailableMessage(),
                /* subtitle = */ null);
    }
@@ -236,7 +213,6 @@ public class ResolverMultiProfilePagerAdapter extends AbstractMultiProfilePagerA
    @Override
    protected void showNoWorkAppsAvailableEmptyState(ResolverListAdapter listAdapter) {
        showEmptyState(listAdapter,
                R.drawable.ic_no_apps,
                getNoWorkAppsAvailableMessage(),
                /* subtitle= */ null);
    }
+0 −4
Original line number Diff line number Diff line
<vector android:height="32dp" android:viewportHeight="24"
    android:viewportWidth="24" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="@color/resolver_empty_state_icon" android:fillType="evenOdd" android:pathData="M18.8123,20.0145L21.3999,22.6021L22.602,21.4L2.602,1.4L1.3999,2.6021L3.9873,5.1895C3.6248,5.552 3.3998,6.052 3.3998,6.602C3.3998,7.702 4.2998,8.602 5.3998,8.602C5.9498,8.602 6.4498,8.377 6.8123,8.0145L9.9873,11.1895C9.6248,11.552 9.3998,12.052 9.3998,12.602C9.3998,13.702 10.2998,14.602 11.3998,14.602C11.9498,14.602 12.4498,14.377 12.8123,14.0145L15.9873,17.1895C15.6248,17.552 15.3998,18.052 15.3998,18.602C15.3998,19.702 16.2998,20.602 17.3998,20.602C17.9498,20.602 18.4498,20.377 18.8123,20.0145ZM17.3998,8.602C16.2998,8.602 15.3998,7.7021 15.3998,6.602C15.3998,5.502 16.2998,4.602 17.3998,4.602C18.4998,4.602 19.3998,5.502 19.3998,6.602C19.3998,7.7021 18.4998,8.602 17.3998,8.602ZM5.3998,14.6021C6.4998,14.6021 7.3998,13.7021 7.3998,12.6021C7.3998,11.5021 6.4998,10.6021 5.3998,10.6021C4.2998,10.6021 3.3998,11.5021 3.3998,12.6021C3.3998,13.7021 4.2998,14.6021 5.3998,14.6021ZM7.3998,18.6021C7.3998,19.7021 6.4998,20.6021 5.3998,20.6021C4.2998,20.6021 3.3998,19.7021 3.3998,18.6021C3.3998,17.5021 4.2998,16.6021 5.3998,16.6021C6.4998,16.6021 7.3998,17.5021 7.3998,18.6021ZM13.3998,18.6021C13.3998,19.7021 12.4998,20.6021 11.3998,20.6021C10.2998,20.6021 9.3998,19.7021 9.3998,18.6021C9.3998,17.5021 10.2998,16.6021 11.3998,16.6021C12.4998,16.6021 13.3998,17.5021 13.3998,18.6021ZM13.3999,6.602C13.3999,7.547 12.7357,8.3444 11.8511,8.5504L9.4516,6.1509C9.6576,5.2663 10.4549,4.602 11.3999,4.602C12.4999,4.602 13.3999,5.502 13.3999,6.602ZM17.8511,14.5504C18.7357,14.3444 19.3999,13.547 19.3999,12.6021C19.3999,11.5021 18.4999,10.6021 17.3999,10.6021C16.4549,10.6021 15.6576,11.2663 15.4516,12.1509L17.8511,14.5504Z"/>
</vector>
Loading