1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.notification.app;
18 
19 import android.content.Context;
20 import android.os.AsyncTask;
21 import android.service.notification.ConversationChannelWrapper;
22 
23 import androidx.preference.Preference;
24 import androidx.preference.PreferenceCategory;
25 
26 import com.android.settings.R;
27 import com.android.settings.notification.NotificationBackend;
28 
29 import java.util.Collections;
30 import java.util.List;
31 
32 public class AllConversationsPreferenceController extends ConversationListPreferenceController {
33 
34     private static final String KEY = "other_conversations";
35 
36     private List<ConversationChannelWrapper> mConversations;
37 
AllConversationsPreferenceController(Context context, NotificationBackend backend)38     public AllConversationsPreferenceController(Context context,
39             NotificationBackend backend) {
40         super(context, backend);
41     }
42 
43     @Override
getPreferenceKey()44     public String getPreferenceKey() {
45         return KEY;
46     }
47 
48     @Override
isAvailable()49     public boolean isAvailable() {
50         return true;
51     }
52 
53     @Override
getSummaryPreference()54     Preference getSummaryPreference() {
55         Preference pref = new Preference(mContext);
56         pref.setOrder(1);
57         pref.setSummary(R.string.other_conversations_summary);
58         return pref;
59     }
60 
61     @Override
matchesFilter(ConversationChannelWrapper conversation)62     boolean matchesFilter(ConversationChannelWrapper conversation) {
63         return !conversation.getNotificationChannel().isImportantConversation();
64     }
65 
66     @Override
updateState(Preference preference)67     public void updateState(Preference preference) {
68         PreferenceCategory pref = (PreferenceCategory) preference;
69         // Load conversations
70         new AsyncTask<Void, Void, Void>() {
71             @Override
72             protected Void doInBackground(Void... unused) {
73                 mConversations = mBackend.getConversations(false).getList();
74                 Collections.sort(mConversations, mConversationComparator);
75                 return null;
76             }
77 
78             @Override
79             protected void onPostExecute(Void unused) {
80                 if (mContext == null) {
81                     return;
82                 }
83                 populateList(mConversations, pref);
84             }
85         }.execute();
86     }
87 }
88