Fix colors in importance and conversation priority preferences

This would have been simpler and faster, but the ChannelPanelActivity
was giving me a context where Material colors always inflated in light
theme even if the device was in dark theme, so I had to work around it.

On the plus side, whoever next needs to change these colors will find
them neatly organized in themes.xml!

Bug: 284380876
Test: manual
Change-Id: I2eee877fe44d307a96d60168d0317444ff002669
This commit is contained in:
Julia Tuttle
2023-06-09 13:30:25 -04:00
parent 42339b4e56
commit b23136041d
8 changed files with 80 additions and 37 deletions

View File

@@ -163,13 +163,13 @@ public class BubblePreference extends Preference implements View.OnClickListener
void setSelected(Context context, boolean selected) {
mView.setBackground(mContext.getDrawable(selected
? R.drawable.button_border_selected
: R.drawable.button_border_unselected));
? R.drawable.notification_importance_button_background_selected
: R.drawable.notification_importance_button_background_unselected));
mView.setSelected(selected);
int colorResId = selected
? com.android.internal.R.attr.materialColorOnSecondaryContainer
: com.android.internal.R.attr.materialColorOnSurfaceVariant;
? R.attr.notification_importance_button_foreground_color_selected
: R.attr.notification_importance_button_foreground_color_unselected;
ColorStateList stateList = Utils.getColorAttr(context, colorResId);
mImageView.setImageTintList(stateList);
mTextView.setTextColor(stateList);

View File

@@ -127,12 +127,14 @@ public class ConversationPriorityPreference extends Preference {
});
}
private ColorStateList getAccentTint() {
return Utils.getColorAccent(getContext());
private ColorStateList getSelectedColor() {
return Utils.getColorAttr(getContext(),
R.attr.notification_importance_button_foreground_color_selected);
}
private ColorStateList getRegularTint() {
return Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary);
private ColorStateList getUnselectedColor() {
return Utils.getColorAttr(getContext(),
R.attr.notification_importance_button_foreground_color_unselected);
}
void updateToggles(ViewGroup parent, int importance, boolean isPriority,
@@ -161,20 +163,21 @@ public class ConversationPriorityPreference extends Preference {
}
void setSelected(View view, boolean selected) {
ColorStateList colorAccent = getAccentTint();
ColorStateList colorNormal = getRegularTint();
ColorStateList colorSelected = getSelectedColor();
ColorStateList colorUnselected = getUnselectedColor();
ImageView icon = view.findViewById(R.id.icon);
TextView label = view.findViewById(R.id.label);
TextView summary = view.findViewById(R.id.summary);
icon.setImageTintList(selected ? colorAccent : colorNormal);
label.setTextColor(selected ? colorAccent : colorNormal);
icon.setImageTintList(selected ? colorSelected : colorUnselected);
label.setTextColor(selected ? colorSelected : colorUnselected);
summary.setTextColor(selected ? colorSelected : colorUnselected);
summary.setVisibility(selected ? VISIBLE : GONE);
view.setBackground(mContext.getDrawable(selected
? R.drawable.button_border_selected
: R.drawable.button_border_unselected));
? R.drawable.notification_importance_button_background_selected
: R.drawable.notification_importance_button_background_unselected));
// a11y service won't always read the newly appearing text in the right order if the
// selection happens too soon (readback happens on a different thread as layout). post
// the selection to make that conflict less likely

View File

@@ -77,8 +77,10 @@ public class ImportancePreference extends Preference {
private void init(Context context) {
mContext = context;
selectedBackground = mContext.getDrawable(R.drawable.button_border_selected);
unselectedBackground = mContext.getDrawable(R.drawable.button_border_unselected);
selectedBackground = mContext.getDrawable(
R.drawable.notification_importance_button_background_selected);
unselectedBackground = mContext.getDrawable(
R.drawable.notification_importance_button_background_unselected);
setLayoutResource(R.layout.notif_importance_preference);
}
@@ -152,12 +154,14 @@ public class ImportancePreference extends Preference {
});
}
private ColorStateList getAccentTint() {
return Utils.getColorAccent(getContext());
private ColorStateList getSelectedColor() {
return Utils.getColorAttr(getContext(),
R.attr.notification_importance_button_foreground_color_selected);
}
private ColorStateList getRegularTint() {
return Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary);
private ColorStateList getUnselectedColor() {
return Utils.getColorAttr(getContext(),
R.attr.notification_importance_button_foreground_color_unselected);
}
void setImportanceSummary(ViewGroup parent, int importance, boolean fromUser) {
@@ -167,25 +171,25 @@ public class ImportancePreference extends Preference {
TransitionManager.beginDelayedTransition(parent, transition);
}
ColorStateList colorAccent = getAccentTint();
ColorStateList colorNormal = getRegularTint();
ColorStateList colorSelected = getSelectedColor();
ColorStateList colorUnselected = getUnselectedColor();
if (importance >= IMPORTANCE_DEFAULT) {
parent.findViewById(R.id.silence_summary).setVisibility(GONE);
((ImageView) parent.findViewById(R.id.silence_icon)).setImageTintList(colorNormal);
((TextView) parent.findViewById(R.id.silence_label)).setTextColor(colorNormal);
((ImageView) parent.findViewById(R.id.silence_icon)).setImageTintList(colorUnselected);
((TextView) parent.findViewById(R.id.silence_label)).setTextColor(colorUnselected);
((ImageView) parent.findViewById(R.id.alert_icon)).setImageTintList(colorAccent);
((TextView) parent.findViewById(R.id.alert_label)).setTextColor(colorAccent);
((ImageView) parent.findViewById(R.id.alert_icon)).setImageTintList(colorSelected);
((TextView) parent.findViewById(R.id.alert_label)).setTextColor(colorSelected);
parent.findViewById(R.id.alert_summary).setVisibility(VISIBLE);
} else {
parent.findViewById(R.id.alert_summary).setVisibility(GONE);
((ImageView) parent.findViewById(R.id.alert_icon)).setImageTintList(colorNormal);
((TextView) parent.findViewById(R.id.alert_label)).setTextColor(colorNormal);
((ImageView) parent.findViewById(R.id.alert_icon)).setImageTintList(colorUnselected);
((TextView) parent.findViewById(R.id.alert_label)).setTextColor(colorUnselected);
((ImageView) parent.findViewById(R.id.silence_icon)).setImageTintList(colorAccent);
((TextView) parent.findViewById(R.id.silence_label)).setTextColor(colorAccent);
((ImageView) parent.findViewById(R.id.silence_icon)).setImageTintList(colorSelected);
((TextView) parent.findViewById(R.id.silence_label)).setTextColor(colorSelected);
parent.findViewById(R.id.silence_summary).setVisibility(VISIBLE);
}
}