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.network;
18 
19 import android.app.settings.SettingsEnums;
20 import android.content.Context;
21 import android.os.UserManager;
22 
23 import androidx.annotation.VisibleForTesting;
24 
25 import com.android.settings.R;
26 import com.android.settings.Utils;
27 import com.android.settings.dashboard.DashboardFragment;
28 import com.android.settings.network.telephony.CallsDefaultSubscriptionController;
29 import com.android.settings.network.telephony.NetworkProviderBackupCallingPreferenceController;
30 import com.android.settings.network.telephony.NetworkProviderWifiCallingPreferenceController;
31 import com.android.settings.network.telephony.SmsDefaultSubscriptionController;
32 import com.android.settings.search.BaseSearchIndexProvider;
33 import com.android.settingslib.core.AbstractPreferenceController;
34 import com.android.settingslib.search.SearchIndexable;
35 
36 import java.util.ArrayList;
37 import java.util.List;
38 
39 @SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
40 public class NetworkProviderCallsSmsFragment extends DashboardFragment {
41     @VisibleForTesting
42     static final String LOG_TAG = "NetworkProviderCallsSmsFragment";
43     @VisibleForTesting
44     static final String KEY_PREFERENCE_CATEGORY_CALLING = "provider_model_calling_category";
45     @VisibleForTesting
46     static final String KEY_PREFERENCE_CATEGORY_BACKUP_CALLING =
47             "provider_model_backup_calling_category";
48 
49     @VisibleForTesting
50     static final String KEY_PREFERENCE_CALLS= "provider_model_calls_preference";
51     @VisibleForTesting
52     static final String KEY_PREFERENCE_SMS = "provider_model_sms_preference";
53 
54     private NetworkProviderWifiCallingPreferenceController
55             mNetworkProviderWifiCallingPreferenceController;
56 
57     @Override
createPreferenceControllers(Context context)58     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
59         final List<AbstractPreferenceController> controllers = new ArrayList<>();
60         controllers.add(new CallsDefaultSubscriptionController(context, KEY_PREFERENCE_CALLS));
61         controllers.add(new SmsDefaultSubscriptionController(context, KEY_PREFERENCE_SMS));
62         mNetworkProviderWifiCallingPreferenceController =
63                 new NetworkProviderWifiCallingPreferenceController(context,
64                         KEY_PREFERENCE_CATEGORY_CALLING);
65         mNetworkProviderWifiCallingPreferenceController.init(getSettingsLifecycle());
66         controllers.add(mNetworkProviderWifiCallingPreferenceController);
67 
68         NetworkProviderBackupCallingPreferenceController backupCallingPrefCtrl =
69                 new NetworkProviderBackupCallingPreferenceController(context,
70                         KEY_PREFERENCE_CATEGORY_BACKUP_CALLING);
71         backupCallingPrefCtrl.init(getSettingsLifecycle());
72         controllers.add(backupCallingPrefCtrl);
73 
74         return controllers;
75     }
76 
77     @Override
onResume()78     public void onResume() {
79         super.onResume();
80         updatePreferenceStates();
81     }
82 
83     @Override
getPreferenceScreenResId()84     protected int getPreferenceScreenResId() {
85         return R.xml.network_provider_calls_sms;
86     }
87 
88     @Override
getLogTag()89     protected String getLogTag() {
90         return LOG_TAG;
91     }
92 
93     @Override
getMetricsCategory()94     public int getMetricsCategory() {
95         return SettingsEnums.ACTION_UNKNOWN;
96     }
97 
98     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
99             new BaseSearchIndexProvider(R.xml.network_provider_calls_sms) {
100 
101                 @Override
102                 protected boolean isPageSearchEnabled(Context context) {
103                     return context.getSystemService(UserManager.class).isAdminUser();
104                 }
105             };
106 }
107