Merge "Correctly remove ViewPager views" into ub-launcher3-qt-r1-dev
diff --git a/src/com/android/customization/widget/OptionSelectorController.java b/src/com/android/customization/widget/OptionSelectorController.java
index efd73ea..5e3a423 100644
--- a/src/com/android/customization/widget/OptionSelectorController.java
+++ b/src/com/android/customization/widget/OptionSelectorController.java
@@ -15,17 +15,17 @@
*/
package com.android.customization.widget;
+import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
+import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.ViewGroup.MarginLayoutParams;
import android.view.WindowManager;
-import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -35,7 +35,6 @@
import com.android.customization.model.CustomizationManager;
import com.android.customization.model.CustomizationOption;
-import com.android.customization.model.theme.custom.ThemeComponentOption;
import com.android.wallpaper.R;
import java.util.HashSet;
@@ -130,26 +129,19 @@
if (holder instanceof TileViewHolder) {
TileViewHolder tileHolder = (TileViewHolder) holder;
- if (tileHolder.labelView != null) {
- if (isActivated) {
- if (option == mAppliedOption) {
- CharSequence cd = mContainer.getContext().getString(
- R.string.option_applied_previewed_description,
- option.getTitle());
- tileHolder.labelView.setContentDescription(cd);
- } else {
- CharSequence cd = mContainer.getContext().getString(
- R.string.option_previewed_description, option.getTitle());
- tileHolder.labelView.setContentDescription(cd);
- }
- } else if (option == mAppliedOption) {
- CharSequence cd = mContainer.getContext().getString(
- R.string.option_applied_description, option.getTitle());
- tileHolder.labelView.setContentDescription(cd);
+ if (isActivated) {
+ if (option == mAppliedOption && mShowCheckmark) {
+ tileHolder.setContentDescription(mContainer.getContext(), option,
+ R.string.option_applied_previewed_description);
} else {
- // Remove content description
- tileHolder.labelView.setContentDescription(null);
+ tileHolder.setContentDescription(mContainer.getContext(), option,
+ R.string.option_previewed_description);
}
+ } else if (option == mAppliedOption && mShowCheckmark) {
+ tileHolder.setContentDescription(mContainer.getContext(), option,
+ R.string.option_applied_description);
+ } else {
+ tileHolder.resetContentDescription();
}
}
} else {
@@ -213,9 +205,12 @@
holder.tileView.setForeground(checkedFrame);
// Initialize the currently applied option
- CharSequence cd = mContainer.getContext().getString(
- R.string.option_applied_previewed_description, option.getTitle());
- holder.labelView.setContentDescription(cd);
+ holder.setContentDescription(mContainer.getContext(), option,
+ R.string.option_applied_previewed_description);
+ } else if (option.equals(mAppliedOption)) {
+ // Initialize with "previewed" description if we don't show checkmark
+ holder.setContentDescription(mContainer.getContext(), option,
+ R.string.option_previewed_description);
} else if (mShowCheckmark) {
holder.tileView.setForeground(null);
}
@@ -290,11 +285,42 @@
private static class TileViewHolder extends RecyclerView.ViewHolder {
TextView labelView;
View tileView;
+ CharSequence title;
TileViewHolder(@NonNull View itemView) {
super(itemView);
labelView = itemView.findViewById(R.id.option_label);
tileView = itemView.findViewById(R.id.option_tile);
+ title = null;
+ }
+
+ /**
+ * Set the content description for this holder using the given string id.
+ * If the option does not have a label, the description will be set on the tile view.
+ * @param context The view's context
+ * @param option The customization option
+ * @param id Resource ID of the string to use for the content description
+ */
+ public void setContentDescription(Context context, CustomizationOption option, int id) {
+ title = option.getTitle();
+ if (TextUtils.isEmpty(title) && tileView != null) {
+ title = tileView.getContentDescription();
+ }
+
+ CharSequence cd = context.getString(id, title);
+ if (labelView != null && !TextUtils.isEmpty(labelView.getText())) {
+ labelView.setContentDescription(cd);
+ } else if (tileView != null) {
+ tileView.setContentDescription(cd);
+ }
+ }
+
+ public void resetContentDescription() {
+ if (labelView != null && !TextUtils.isEmpty(labelView.getText())) {
+ labelView.setContentDescription(title);
+ } else if (tileView != null) {
+ tileView.setContentDescription(title);
+ }
}
}
}