diff --git a/res/values/strings.xml b/res/values/strings.xml
index 532f9aad6f9..e06e92d28c6 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";