From 2f0bd6552c70b9b9f2297e9b9b023e4f2fad1866 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Tue, 24 Mar 2020 15:25:38 -0400 Subject: [PATCH] Update all conversations screen Update text, and filter the lower section to match the new header Test: atest Fixes: 151765526 Change-Id: I5bc052813745908df8602bf397434a76b294ba6c --- res/values/strings.xml | 4 ++-- res/xml/conversation_list_settings.xml | 4 ++-- .../AllConversationsPreferenceController.java | 9 +++++++-- .../ConversationListPreferenceController.java | 20 +++++++++++-------- ...rityConversationsPreferenceController.java | 8 ++++++-- ...versationListPreferenceControllerTest.java | 15 ++++++++------ 6 files changed, 38 insertions(+), 22 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index a5bbfa75f4e..4fb1a371888 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -8312,10 +8312,10 @@ Manage conversations - Important conversations + Priority conversations - All conversations + Other conversations Bubble important conversations diff --git a/res/xml/conversation_list_settings.xml b/res/xml/conversation_list_settings.xml index 238e92b0bee..90a7279cf17 100644 --- a/res/xml/conversation_list_settings.xml +++ b/res/xml/conversation_list_settings.xml @@ -39,8 +39,8 @@ diff --git a/src/com/android/settings/notification/app/AllConversationsPreferenceController.java b/src/com/android/settings/notification/app/AllConversationsPreferenceController.java index 1a139a289a4..8a0d7b8a18d 100644 --- a/src/com/android/settings/notification/app/AllConversationsPreferenceController.java +++ b/src/com/android/settings/notification/app/AllConversationsPreferenceController.java @@ -30,7 +30,7 @@ import java.util.List; public class AllConversationsPreferenceController extends ConversationListPreferenceController { - private static final String KEY = "all_conversations"; + private static final String KEY = "other_conversations"; private List mConversations; @@ -49,6 +49,11 @@ public class AllConversationsPreferenceController extends ConversationListPrefer return true; } + @Override + boolean matchesFilter(ConversationChannelWrapper conversation) { + return !conversation.getNotificationChannel().isImportantConversation(); + } + @Override public void updateState(Preference preference) { PreferenceCategory pref = (PreferenceCategory) preference; @@ -66,7 +71,7 @@ public class AllConversationsPreferenceController extends ConversationListPrefer if (mContext == null) { return; } - populateList(mConversations, pref, pref); + populateList(mConversations, pref); } }.execute(); } diff --git a/src/com/android/settings/notification/app/ConversationListPreferenceController.java b/src/com/android/settings/notification/app/ConversationListPreferenceController.java index 0ca31dfa4d9..2dc52bf050d 100644 --- a/src/com/android/settings/notification/app/ConversationListPreferenceController.java +++ b/src/com/android/settings/notification/app/ConversationListPreferenceController.java @@ -61,21 +61,25 @@ public abstract class ConversationListPreferenceController extends AbstractPrefe } protected void populateList(List conversations, - PreferenceGroup outerContainer, PreferenceGroup innerContainer) { + PreferenceGroup containerGroup) { // TODO: if preference has children, compare with newly loaded list - if (conversations.isEmpty()) { - outerContainer.setVisible(false); - } else { - outerContainer.setVisible(true); - populateConversations(conversations, innerContainer); + containerGroup.removeAll(); + if (conversations != null) { + populateConversations(conversations, containerGroup); + } + + if (containerGroup.getPreferenceCount() == 0) { + containerGroup.setVisible(false); } } + abstract boolean matchesFilter(ConversationChannelWrapper conversation); + protected void populateConversations(List conversations, PreferenceGroup containerGroup) { - containerGroup.removeAll(); for (ConversationChannelWrapper conversation : conversations) { - if (conversation.getNotificationChannel().isDemoted()) { + if (conversation.getNotificationChannel().isDemoted() + || !matchesFilter(conversation)) { continue; } containerGroup.addPreference(createConversationPref(conversation)); diff --git a/src/com/android/settings/notification/app/PriorityConversationsPreferenceController.java b/src/com/android/settings/notification/app/PriorityConversationsPreferenceController.java index ed12d7dd7ed..ae20d12d945 100644 --- a/src/com/android/settings/notification/app/PriorityConversationsPreferenceController.java +++ b/src/com/android/settings/notification/app/PriorityConversationsPreferenceController.java @@ -32,7 +32,6 @@ public class PriorityConversationsPreferenceController extends ConversationListPreferenceController { private static final String KEY = "important_conversations"; - private static final String LIST_KEY = "important_conversations_list"; private List mConversations; public PriorityConversationsPreferenceController(Context context, @@ -50,6 +49,11 @@ public class PriorityConversationsPreferenceController extends return true; } + @Override + boolean matchesFilter(ConversationChannelWrapper conversation) { + return conversation.getNotificationChannel().isImportantConversation(); + } + @Override public void updateState(Preference preference) { PreferenceCategory pref = (PreferenceCategory) preference; @@ -67,7 +71,7 @@ public class PriorityConversationsPreferenceController extends if (mContext == null) { return; } - populateList(mConversations, pref, pref.findPreference(LIST_KEY)); + populateList(mConversations, pref); } }.execute(); diff --git a/tests/robotests/src/com/android/settings/notification/app/ConversationListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/ConversationListPreferenceControllerTest.java index 0fab4e58c98..ad2e74affc0 100644 --- a/tests/robotests/src/com/android/settings/notification/app/ConversationListPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/app/ConversationListPreferenceControllerTest.java @@ -95,18 +95,16 @@ public class ConversationListPreferenceControllerTest { @Test public void testPopulateList_hideIfNoConversations() { PreferenceCategory outerContainer = mock(PreferenceCategory.class); - PreferenceCategory innerContainer = mock(PreferenceCategory.class); - mController.populateList(new ArrayList<>(), outerContainer, innerContainer); + mController.populateList(new ArrayList<>(), outerContainer); verify(outerContainer).setVisible(false); - verify(innerContainer, never()).addPreference(any()); + verify(outerContainer, never()).addPreference(any()); } @Test public void testPopulateList_validConversations() { PreferenceCategory outerContainer = mock(PreferenceCategory.class); - PreferenceCategory innerContainer = mock(PreferenceCategory.class); ConversationChannelWrapper ccw = new ConversationChannelWrapper(); ccw.setNotificationChannel(mock(NotificationChannel.class)); @@ -117,10 +115,10 @@ public class ConversationListPreferenceControllerTest { ArrayList list = new ArrayList<>(); list.add(ccw); - mController.populateList(list, outerContainer, innerContainer); + mController.populateList(list, outerContainer); verify(outerContainer).setVisible(true); - verify(innerContainer, times(1)).addPreference(any()); + verify(outerContainer, times(1)).addPreference(any()); } @Test @@ -233,6 +231,11 @@ public class ConversationListPreferenceControllerTest { super(context, backend); } + @Override + boolean matchesFilter(ConversationChannelWrapper conversation) { + return true; + } + @Override public String getPreferenceKey() { return "test";