diff --git a/res/drawable/button_border_selected.xml b/res/drawable/button_border_selected.xml
index c2b947d83f1..65dfe1b67a3 100644
--- a/res/drawable/button_border_selected.xml
+++ b/res/drawable/button_border_selected.xml
@@ -19,7 +19,7 @@
diff --git a/res/layout/notif_importance_preference.xml b/res/layout/notif_importance_preference.xml
index 3507675c44a..2fc2740a829 100644
--- a/res/layout/notif_importance_preference.xml
+++ b/res/layout/notif_importance_preference.xml
@@ -33,7 +33,7 @@
android:focusable="true">
+ android:textAppearance="@style/TextAppearance.NotificationImportanceDetail"
+ android:visibility="gone" />
+ android:textAppearance="@style/TextAppearance.NotificationImportanceDetail"
+ android:visibility="gone" />
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5618c6f8a29..5083de49217 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8100,7 +8100,7 @@
Block
- Gentle
+ Silent
Prioritized
@@ -8117,19 +8117,10 @@
In the pull-down shade, collapse notifications to one line
- Helps you focus with notifications only in the pull-down shade. Always silent.
-
-
- Displays below priority notifications. Always silent.
-
-
- Displays below priority notifications. Always silent.
-
-
- Displays below priority notifications. Always silent.
+ Helps you focus without sound or vibration
- Gets your attention with sound & a status bar icon. Shows on lock screen.
+ Gets your attention with sound or vibration
When device is unlocked, show notifications as a banner across the top of the screen
diff --git a/src/com/android/settings/notification/ImportancePreference.java b/src/com/android/settings/notification/ImportancePreference.java
index f48882d8518..0d39c8f0fe0 100644
--- a/src/com/android/settings/notification/ImportancePreference.java
+++ b/src/com/android/settings/notification/ImportancePreference.java
@@ -24,6 +24,7 @@ import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.content.Context;
+import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable;
import android.transition.AutoTransition;
import android.transition.TransitionManager;
@@ -31,8 +32,10 @@ import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.ImageView;
import android.widget.TextView;
+import com.android.settings.Utils;
import com.android.settingslib.R;
import androidx.preference.Preference;
@@ -50,6 +53,7 @@ public class ImportancePreference extends Preference {
Drawable selectedBackground;
Drawable unselectedBackground;
private static final int BUTTON_ANIM_TIME_MS = 100;
+ private static final boolean SHOW_BUTTON_SUMMARY = false;
public ImportancePreference(Context context, AttributeSet attrs,
int defStyleAttr, int defStyleRes) {
@@ -140,32 +144,45 @@ public class ImportancePreference extends Preference {
});
}
+ private ColorStateList getAccentTint() {
+ return Utils.getColorAccent(getContext());
+ }
+
+ private ColorStateList getRegularTint() {
+ return Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary);
+ }
+
void setImportanceSummary(ViewGroup parent, int importance, boolean fromUser) {
if (fromUser) {
AutoTransition transition = new AutoTransition();
transition.setDuration(BUTTON_ANIM_TIME_MS);
TransitionManager.beginDelayedTransition(parent, transition);
}
+
+ ColorStateList colorAccent = getAccentTint();
+ ColorStateList colorNormal = getRegularTint();
+
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.alert_icon)).setImageTintList(colorAccent);
+ ((TextView) parent.findViewById(R.id.alert_label)).setTextColor(colorAccent);
+
TextView view = parent.findViewById(R.id.alert_summary);
view.setText(R.string.notification_channel_summary_default);
view.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.silence_icon)).setImageTintList(colorAccent);
+ ((TextView) parent.findViewById(R.id.silence_label)).setTextColor(colorAccent);
TextView view = parent.findViewById(R.id.silence_summary);
view.setVisibility(VISIBLE);
- if (mDisplayInStatusBar) {
- if (mDisplayOnLockscreen) {
- view.setText(R.string.notification_channel_summary_low_status_lock);
- } else {
- view.setText(R.string.notification_channel_summary_low_status);
- }
- } else if (mDisplayOnLockscreen) {
- view.setText(R.string.notification_channel_summary_low_lock);
- } else {
- view.setText(R.string.notification_channel_summary_low);
- }
+ view.setText(R.string.notification_channel_summary_low);
}
}
}
diff --git a/tests/robotests/src/com/android/settings/notification/ImportancePreferenceTest.java b/tests/robotests/src/com/android/settings/notification/ImportancePreferenceTest.java
index b4379aadc44..75b369a6e2b 100644
--- a/tests/robotests/src/com/android/settings/notification/ImportancePreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/notification/ImportancePreferenceTest.java
@@ -32,6 +32,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -143,84 +144,44 @@ public class ImportancePreferenceTest {
}
@Test
- public void setImportanceSummary_status() {
- ViewGroup parent = new LinearLayout(mContext);
- TextView tv = new TextView(mContext);
- tv.setId(R.id.silence_summary);
- parent.addView(tv);
- TextView other = new TextView(mContext);
- other.setId(R.id.alert_summary);
- parent.addView(other);
-
+ public void setImportanceSummary() {
final ImportancePreference preference = spy(new ImportancePreference(mContext));
+ final LayoutInflater inflater = LayoutInflater.from(mContext);
+ final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
+ inflater.inflate(R.layout.notif_importance_preference, null));
- preference.setDisplayInStatusBar(true);
- preference.setDisplayOnLockscreen(false);
+ preference.setConfigurable(true);
+ preference.setImportance(IMPORTANCE_DEFAULT);
+ preference.onBindViewHolder(holder);
- preference.setImportanceSummary(parent, IMPORTANCE_LOW, true);
-
- assertThat(tv.getText()).isEqualTo(
- mContext.getString(R.string.notification_channel_summary_low_status));
- }
-
- @Test
- public void setImportanceSummary_lock() {
- ViewGroup parent = new LinearLayout(mContext);
- TextView tv = new TextView(mContext);
- tv.setId(R.id.silence_summary);
- parent.addView(tv);
- TextView other = new TextView(mContext);
- other.setId(R.id.alert_summary);
- parent.addView(other);
-
- final ImportancePreference preference = spy(new ImportancePreference(mContext));
-
- preference.setDisplayInStatusBar(false);
- preference.setDisplayOnLockscreen(true);
-
- preference.setImportanceSummary(parent, IMPORTANCE_LOW, true);
-
- assertThat(tv.getText()).isEqualTo(
- mContext.getString(R.string.notification_channel_summary_low_lock));
- }
-
- @Test
- public void setImportanceSummary_statusLock() {
- ViewGroup parent = new LinearLayout(mContext);
- TextView tv = new TextView(mContext);
- tv.setId(R.id.silence_summary);
- parent.addView(tv);
- TextView other = new TextView(mContext);
- other.setId(R.id.alert_summary);
- parent.addView(other);
-
- final ImportancePreference preference = spy(new ImportancePreference(mContext));
+ TextView tv = holder.itemView.findViewById(R.id.silence_summary);
preference.setDisplayInStatusBar(true);
preference.setDisplayOnLockscreen(true);
- preference.setImportanceSummary(parent, IMPORTANCE_LOW, true);
+ preference.setImportanceSummary((ViewGroup) holder.itemView, IMPORTANCE_LOW, true);
assertThat(tv.getText()).isEqualTo(
- mContext.getString(R.string.notification_channel_summary_low_status_lock));
+ mContext.getString(R.string.notification_channel_summary_low));
}
@Test
- public void setImportanceSummary_statusLock_default() {
- ViewGroup parent = new LinearLayout(mContext);
- TextView tv = new TextView(mContext);
- tv.setId(R.id.alert_summary);
- parent.addView(tv);
- TextView other = new TextView(mContext);
- other.setId(R.id.silence_summary);
- parent.addView(other);
-
+ public void setImportanceSummary_default() {
final ImportancePreference preference = spy(new ImportancePreference(mContext));
+ final LayoutInflater inflater = LayoutInflater.from(mContext);
+ final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
+ inflater.inflate(R.layout.notif_importance_preference, null));
+
+ preference.setConfigurable(true);
+ preference.setImportance(IMPORTANCE_DEFAULT);
+ preference.onBindViewHolder(holder);
+
+ TextView tv = holder.itemView.findViewById(R.id.alert_summary);
preference.setDisplayInStatusBar(true);
preference.setDisplayOnLockscreen(true);
- preference.setImportanceSummary(parent, IMPORTANCE_DEFAULT, true);
+ preference.setImportanceSummary((ViewGroup) holder.itemView, IMPORTANCE_DEFAULT, true);
assertThat(tv.getText()).isEqualTo(
mContext.getString(R.string.notification_channel_summary_default));