From 800095948e28b673898cd7d96e5a945c0935a1d4 Mon Sep 17 00:00:00 2001 From: Setup Wizard Team Date: Thu, 25 Apr 2019 11:08:07 +0800 Subject: Import updated Android Setupdesign Library 245164738 Copied from google3/third_party/java_src/android_libs/setupdesign Bug: 129790844 Test: mm Included changes: - 245164738 Mixins use updateContentBackgroundColorWithPartnerConfig() - 245161869 update RecyclerItem background color only when heavy theme - 244793840 Suppress DayNight theme for any setupwizard flow - 244113160 Background color should only apply when heavy theme. - 243733289 Adds radius and allcaps for alert dialog in glifv3. - 243191012 Update dark mode text field color to 202124 PiperOrigin-RevId: 245164738 Change-Id: Ia410ec050c9913a01949b40b24544a5b78eefdb4 --- main/res/values/colors.xml | 2 +- main/res/values/dimens.xml | 1 + main/res/values/styles.xml | 12 +++++++-- .../com/google/android/setupdesign/GlifLayout.java | 30 +++++++++++++++++++--- .../android/setupdesign/SetupWizardLayout.java | 2 +- .../setupdesign/items/RecyclerItemAdapter.java | 8 +++--- .../android/setupdesign/template/HeaderMixin.java | 11 ++++---- .../android/setupdesign/template/IconMixin.java | 12 ++++----- .../setupdesign/template/RecyclerMixin.java | 12 ++++++--- .../android/setupdesign/util/ThemeResolver.java | 2 +- 10 files changed, 62 insertions(+), 30 deletions(-) (limited to 'main') diff --git a/main/res/values/colors.xml b/main/res/values/colors.xml index 1e9c24c..66e1c2f 100644 --- a/main/res/values/colors.xml +++ b/main/res/values/colors.xml @@ -45,7 +45,7 @@ #ff1a73e8 #ff000000 #ffffffff - #0affffff + #ff202124 #0a000000 #ffffffff #1f000000 diff --git a/main/res/values/dimens.xml b/main/res/values/dimens.xml index 57e6fe2..404d906 100644 --- a/main/res/values/dimens.xml +++ b/main/res/values/dimens.xml @@ -33,6 +33,7 @@ 24dp 56dp + 8dp 4dp diff --git a/main/res/values/styles.xml b/main/res/values/styles.xml index db812d8..81d769c 100644 --- a/main/res/values/styles.xml +++ b/main/res/values/styles.xml @@ -627,8 +627,16 @@ @dimen/sud_edit_text_min_height - - diff --git a/main/src/com/google/android/setupdesign/GlifLayout.java b/main/src/com/google/android/setupdesign/GlifLayout.java index cb187d9..26e55d3 100644 --- a/main/src/com/google/android/setupdesign/GlifLayout.java +++ b/main/src/com/google/android/setupdesign/GlifLayout.java @@ -23,10 +23,10 @@ import android.content.res.TypedArray; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Build.VERSION_CODES; +import androidx.annotation.ColorInt; import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.VisibleForTesting; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; @@ -36,6 +36,8 @@ import android.widget.ProgressBar; import android.widget.ScrollView; import android.widget.TextView; import com.google.android.setupcompat.PartnerCustomizationLayout; +import com.google.android.setupcompat.partnerconfig.PartnerConfig; +import com.google.android.setupcompat.partnerconfig.PartnerConfigHelper; import com.google.android.setupcompat.template.StatusBarMixin; import com.google.android.setupdesign.template.HeaderMixin; import com.google.android.setupdesign.template.IconMixin; @@ -71,7 +73,7 @@ public class GlifLayout extends PartnerCustomizationLayout { private boolean backgroundPatterned = true; - @VisibleForTesting public boolean applyPartnerHeavyThemeResource = false; + private boolean applyPartnerHeavyThemeResource = false; /** The color of the background. If null, the color will inherit from primaryColor. */ @Nullable private ColorStateList backgroundBaseColor; @@ -112,9 +114,9 @@ public class GlifLayout extends PartnerCustomizationLayout { registerMixin( HeaderMixin.class, - new HeaderMixin(this, attrs, defStyleAttr, applyPartnerHeavyThemeResource)); + new HeaderMixin(this, attrs, defStyleAttr)); registerMixin( - IconMixin.class, new IconMixin(this, attrs, defStyleAttr, applyPartnerHeavyThemeResource)); + IconMixin.class, new IconMixin(this, attrs, defStyleAttr)); registerMixin(ProgressBarMixin.class, new ProgressBarMixin(this)); final RequireScrollMixin requireScrollMixin = new RequireScrollMixin(this); registerMixin(RequireScrollMixin.class, requireScrollMixin); @@ -130,6 +132,10 @@ public class GlifLayout extends PartnerCustomizationLayout { setPrimaryColor(primaryColor); } + if (applyPartnerHeavyThemeResource) { + updateContentBackgroundColorWithPartnerConfig(); + } + ColorStateList backgroundColor = a.getColorStateList(R.styleable.SudGlifLayout_sudBackgroundBaseColor); setBackgroundBaseColor(backgroundColor); @@ -302,4 +308,20 @@ public class GlifLayout extends PartnerCustomizationLayout { public ProgressBar peekProgressBar() { return getMixin(ProgressBarMixin.class).peekProgressBar(); } + + /** + * Returns if the current layout/activity applies heavy partner customized configurations or not. + */ + public boolean shouldApplyPartnerHeavyThemeResource() { + return applyPartnerHeavyThemeResource; + } + + /** Updates the background color of this layout with the partner-customizable background color. */ + private void updateContentBackgroundColorWithPartnerConfig() { + @ColorInt + int color = + PartnerConfigHelper.get(getContext()) + .getColor(getContext(), PartnerConfig.CONFIG_LAYOUT_BACKGROUND_COLOR); + this.getRootView().setBackgroundColor(color); + } } diff --git a/main/src/com/google/android/setupdesign/SetupWizardLayout.java b/main/src/com/google/android/setupdesign/SetupWizardLayout.java index 62ceab1..5797aa7 100644 --- a/main/src/com/google/android/setupdesign/SetupWizardLayout.java +++ b/main/src/com/google/android/setupdesign/SetupWizardLayout.java @@ -83,7 +83,7 @@ public class SetupWizardLayout extends TemplateLayout { registerMixin(SystemNavBarMixin.class, new SystemNavBarMixin(this, /* window= */ null)); registerMixin( HeaderMixin.class, - new HeaderMixin(this, attrs, defStyleAttr, /* applyPartnerResource= */ false)); + new HeaderMixin(this, attrs, defStyleAttr)); registerMixin(ProgressBarMixin.class, new ProgressBarMixin(this)); registerMixin(NavigationBarMixin.class, new NavigationBarMixin(this)); final RequireScrollMixin requireScrollMixin = new RequireScrollMixin(this); diff --git a/main/src/com/google/android/setupdesign/items/RecyclerItemAdapter.java b/main/src/com/google/android/setupdesign/items/RecyclerItemAdapter.java index 3577f7e..3526bf5 100644 --- a/main/src/com/google/android/setupdesign/items/RecyclerItemAdapter.java +++ b/main/src/com/google/android/setupdesign/items/RecyclerItemAdapter.java @@ -60,15 +60,15 @@ public class RecyclerItemAdapter extends RecyclerView.Adapter } private final ItemHierarchy itemHierarchy; - private final boolean applyPartnerResource; + @VisibleForTesting public final boolean applyPartnerHeavyThemeResource; private OnItemSelectedListener listener; public RecyclerItemAdapter(ItemHierarchy hierarchy) { this(hierarchy, false); } - public RecyclerItemAdapter(ItemHierarchy hierarchy, boolean applyPartnerResource) { - this.applyPartnerResource = applyPartnerResource; + public RecyclerItemAdapter(ItemHierarchy hierarchy, boolean applyPartnerHeavyThemeResource) { + this.applyPartnerHeavyThemeResource = applyPartnerHeavyThemeResource; itemHierarchy = hierarchy; itemHierarchy.registerObserver(this); } @@ -118,7 +118,7 @@ public class RecyclerItemAdapter extends RecyclerView.Adapter } else { background = view.getBackground(); if (background == null) { - if (applyPartnerResource) { + if (applyPartnerHeavyThemeResource) { int color = PartnerConfigHelper.get(view.getContext()) .getColor(view.getContext(), PartnerConfig.CONFIG_LAYOUT_BACKGROUND_COLOR); diff --git a/main/src/com/google/android/setupdesign/template/HeaderMixin.java b/main/src/com/google/android/setupdesign/template/HeaderMixin.java index 181561c..c2ad460 100644 --- a/main/src/com/google/android/setupdesign/template/HeaderMixin.java +++ b/main/src/com/google/android/setupdesign/template/HeaderMixin.java @@ -36,6 +36,7 @@ import com.google.android.setupcompat.internal.TemplateLayout; import com.google.android.setupcompat.partnerconfig.PartnerConfig; import com.google.android.setupcompat.partnerconfig.PartnerConfigHelper; import com.google.android.setupcompat.template.Mixin; +import com.google.android.setupdesign.GlifLayout; import java.util.Locale; /** @@ -49,13 +50,9 @@ public class HeaderMixin implements Mixin { * @param layout The layout this Mixin belongs to. * @param attrs XML attributes given to the layout. * @param defStyleAttr The default style attribute as given to the constructor of the layout. - * @param applyPartnerResource Whether to apply partner resources or not. */ public HeaderMixin( - @NonNull TemplateLayout layout, - @Nullable AttributeSet attrs, - @AttrRes int defStyleAttr, - boolean applyPartnerResource) { + @NonNull TemplateLayout layout, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) { templateLayout = layout; final Context context = layout.getContext(); @@ -79,7 +76,9 @@ public class HeaderMixin implements Mixin { a.recycle(); TextView header = layout.findManagedViewById(R.id.suc_layout_title); - if (header != null && applyPartnerResource) { + if (header != null + && (layout instanceof GlifLayout) + && ((GlifLayout) layout).shouldApplyPartnerHeavyThemeResource()) { applyPartnerCustomizationStyle(context, header); } } diff --git a/main/src/com/google/android/setupdesign/template/IconMixin.java b/main/src/com/google/android/setupdesign/template/IconMixin.java index d0a85c3..334d473 100644 --- a/main/src/com/google/android/setupdesign/template/IconMixin.java +++ b/main/src/com/google/android/setupdesign/template/IconMixin.java @@ -31,6 +31,7 @@ import android.widget.ImageView; import android.widget.LinearLayout; import com.google.android.setupcompat.internal.TemplateLayout; import com.google.android.setupcompat.template.Mixin; +import com.google.android.setupdesign.GlifLayout; import com.google.android.setupdesign.R; import com.google.android.setupdesign.util.PartnerStyleHelper; @@ -49,13 +50,8 @@ public class IconMixin implements Mixin { * @param layout The template layout that this Mixin is a part of. * @param attrs XML attributes given to the layout. * @param defStyleAttr The default style attribute as given to the constructor of the layout. - * @param shouldApplyPartnerResource Whether to apply partner resources or not. */ - public IconMixin( - TemplateLayout layout, - AttributeSet attrs, - int defStyleAttr, - boolean shouldApplyPartnerResource) { + public IconMixin(TemplateLayout layout, AttributeSet attrs, int defStyleAttr) { templateLayout = layout; final Context context = layout.getContext(); @@ -89,7 +85,9 @@ public class IconMixin implements Mixin { a.recycle(); ImageView iconImage = layout.findManagedViewById(R.id.sud_layout_icon); - if (iconImage != null && shouldApplyPartnerResource) { + if (iconImage != null + && (layout instanceof GlifLayout) + && ((GlifLayout) layout).shouldApplyPartnerHeavyThemeResource()) { applyPartnerCustomizationStyle(context, iconImage); } } diff --git a/main/src/com/google/android/setupdesign/template/RecyclerMixin.java b/main/src/com/google/android/setupdesign/template/RecyclerMixin.java index d017916..11e9144 100644 --- a/main/src/com/google/android/setupdesign/template/RecyclerMixin.java +++ b/main/src/com/google/android/setupdesign/template/RecyclerMixin.java @@ -29,10 +29,10 @@ import androidx.recyclerview.widget.RecyclerView.Adapter; import androidx.recyclerview.widget.RecyclerView.ViewHolder; import android.util.AttributeSet; import android.view.View; -import com.google.android.setupcompat.PartnerCustomizationLayout; import com.google.android.setupcompat.internal.TemplateLayout; import com.google.android.setupcompat.template.Mixin; import com.google.android.setupdesign.DividerItemDecoration; +import com.google.android.setupdesign.GlifLayout; import com.google.android.setupdesign.R; import com.google.android.setupdesign.items.ItemHierarchy; import com.google.android.setupdesign.items.ItemInflater; @@ -107,10 +107,14 @@ public class RecyclerMixin implements Mixin { if (entries != 0) { final ItemHierarchy inflated = new ItemInflater(context).inflate(entries); - boolean applyPartnerResource = - ((PartnerCustomizationLayout) templateLayout).shouldApplyPartnerResource(); + boolean applyPartnerHeavyThemeResource = false; + if (templateLayout instanceof GlifLayout) { + applyPartnerHeavyThemeResource = + ((GlifLayout) templateLayout).shouldApplyPartnerHeavyThemeResource(); + } - final RecyclerItemAdapter adapter = new RecyclerItemAdapter(inflated, applyPartnerResource); + final RecyclerItemAdapter adapter = + new RecyclerItemAdapter(inflated, applyPartnerHeavyThemeResource); adapter.setHasStableIds(a.getBoolean(R.styleable.SudRecyclerMixin_sudHasStableIds, false)); setAdapter(adapter); } diff --git a/main/src/com/google/android/setupdesign/util/ThemeResolver.java b/main/src/com/google/android/setupdesign/util/ThemeResolver.java index 03d90e5..98b8883 100644 --- a/main/src/com/google/android/setupdesign/util/ThemeResolver.java +++ b/main/src/com/google/android/setupdesign/util/ThemeResolver.java @@ -82,7 +82,7 @@ public class ThemeResolver { public int resolve(Intent intent) { return resolve( intent.getStringExtra(WizardManagerHelper.EXTRA_THEME), - /* suppressDayNight= */ WizardManagerHelper.isSetupWizardIntent(intent)); + /* suppressDayNight= */ WizardManagerHelper.isAnySetupWizard(intent)); } /** -- cgit v1.2.3