ConfigureWifiSettings.java revision 2fca2ebddfca4e704d8676bec15bd2b6750ee933
1/*
2 * Copyright (C) 2015 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 */
16package com.android.settings.wifi;
17
18import android.app.INotificationManager;
19import android.content.Context;
20import android.content.Intent;
21import android.net.NetworkScoreManager;
22import android.net.wifi.WifiManager;
23import android.os.ServiceManager;
24import android.provider.SearchIndexableResource;
25import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
26import com.android.settings.R;
27import com.android.settings.SettingsActivity;
28import com.android.settings.core.PreferenceController;
29import com.android.settings.dashboard.DashboardFragment;
30import com.android.settings.network.NetworkScoreManagerWrapper;
31import com.android.settings.network.NetworkScorerPickerPreferenceController;
32import com.android.settings.network.WifiCallingPreferenceController;
33import com.android.settings.search.BaseSearchIndexProvider;
34import com.android.settings.search.Indexable;
35import com.android.settings.utils.NotificationChannelHelper;
36import com.android.settings.wifi.p2p.WifiP2pPreferenceController;
37
38import java.util.ArrayList;
39import java.util.Arrays;
40import java.util.List;
41
42public class ConfigureWifiSettings extends DashboardFragment {
43
44    private static final String TAG = "ConfigureWifiSettings";
45
46    private UseOpenWifiPreferenceController mUseOpenWifiPreferenceController;
47
48    @Override
49    public int getMetricsCategory() {
50        return MetricsEvent.CONFIGURE_WIFI;
51    }
52
53    @Override
54    protected String getLogTag() {
55        return TAG;
56    }
57
58    @Override
59    public void onAttach(Context context) {
60        super.onAttach(context);
61        mProgressiveDisclosureMixin.setTileLimit(
62            mUseOpenWifiPreferenceController.isAvailable() ? 3 : 2);
63        ((SettingsActivity) getActivity()).setDisplaySearchMenu(true);
64    }
65
66    @Override
67    protected int getPreferenceScreenResId() {
68        return R.xml.wifi_configure_settings;
69    }
70
71    @Override
72    protected List<PreferenceController> getPreferenceControllers(Context context) {
73        final NetworkScoreManagerWrapper networkScoreManagerWrapper =
74                new NetworkScoreManagerWrapper(context.getSystemService(NetworkScoreManager.class));
75        final NotificationChannelHelper notificationChannelHelper =
76                new NotificationChannelHelper(INotificationManager.Stub.asInterface(
77                        ServiceManager.getService(Context.NOTIFICATION_SERVICE)));
78        final WifiManager wifiManager = context.getSystemService(WifiManager.class);
79        mUseOpenWifiPreferenceController = new UseOpenWifiPreferenceController(context, this,
80                networkScoreManagerWrapper, getLifecycle());
81        final List<PreferenceController> controllers = new ArrayList<>();
82        controllers.add(new WifiWakeupPreferenceController(context, getLifecycle()));
83        controllers.add(new NetworkScorerPickerPreferenceController(context,
84                networkScoreManagerWrapper));
85        controllers.add(new NotifyOpenNetworksPreferenceController(context,
86                networkScoreManagerWrapper, notificationChannelHelper, getPackageManager()));
87        controllers.add(mUseOpenWifiPreferenceController);
88        controllers.add(new WifiInfoPreferenceController(context, getLifecycle(), wifiManager));
89        controllers.add(new CellularFallbackPreferenceController(context));
90        controllers.add(new WifiP2pPreferenceController(context, getLifecycle(), wifiManager));
91        controllers.add(new WifiCallingPreferenceController(context));
92        controllers.add(new WpsPreferenceController(
93                context, getLifecycle(), wifiManager, getFragmentManager()));
94        return controllers;
95    }
96
97    @Override
98    public void onActivityResult(int requestCode, int resultCode, Intent data) {
99        if (mUseOpenWifiPreferenceController == null ||
100                !mUseOpenWifiPreferenceController.onActivityResult(requestCode, resultCode)) {
101            super.onActivityResult(requestCode, resultCode, data);
102        }
103    }
104
105    public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
106            new BaseSearchIndexProvider() {
107                @Override
108                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
109                        boolean enabled) {
110                    final SearchIndexableResource sir = new SearchIndexableResource(context);
111                    sir.xmlResId = R.xml.wifi_configure_settings;
112                    return Arrays.asList(sir);
113                }
114            };
115}
116