From 472e19eae44da52cb0cd99e89f299b0287cd4c15 Mon Sep 17 00:00:00 2001 From: Evan Laird Date: Fri, 17 May 2019 17:05:27 -0400 Subject: [PATCH] Simplify channel importance settings screen Back to bell icons, and removed the flavor text Test: visual Bug: 132971502 Change-Id: I55ce6dd07404aed2ceb5423796b733a70c3bfa13 --- res/drawable/button_border_selected.xml | 2 +- res/layout/notif_importance_preference.xml | 10 ++- res/values/strings.xml | 15 +--- .../notification/ImportancePreference.java | 39 ++++++--- .../ImportancePreferenceTest.java | 83 +++++-------------- 5 files changed, 60 insertions(+), 89 deletions(-) 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 81044988316..61589d6a85c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -8072,7 +8072,7 @@ Block - Gentle + Silent Prioritized @@ -8089,19 +8089,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));