Home | History | Annotate | Download | only in network
      1 /*
      2  * Copyright (C) 2016 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 package com.android.settings.network;
     17 
     18 import android.app.AlertDialog;
     19 import android.app.Dialog;
     20 import android.content.Context;
     21 import android.provider.SearchIndexableResource;
     22 import android.util.Log;
     23 import android.view.Menu;
     24 import android.view.MenuInflater;
     25 
     26 import com.android.internal.logging.nano.MetricsProto;
     27 import com.android.settings.R;
     28 import com.android.settings.core.PreferenceController;
     29 import com.android.settings.core.lifecycle.Lifecycle;
     30 import com.android.settings.dashboard.DashboardFragment;
     31 import com.android.settings.overlay.FeatureFactory;
     32 import com.android.settings.search.BaseSearchIndexProvider;
     33 import com.android.settings.wifi.WifiMasterSwitchPreferenceController;
     34 
     35 import java.util.ArrayList;
     36 import java.util.Arrays;
     37 import java.util.List;
     38 
     39 import static com.android.settings.network.MobilePlanPreferenceController
     40         .MANAGE_MOBILE_PLAN_DIALOG_ID;
     41 
     42 public class NetworkDashboardFragment extends DashboardFragment implements
     43         MobilePlanPreferenceController.MobilePlanPreferenceHost {
     44 
     45     private static final String TAG = "NetworkDashboardFrag";
     46 
     47     private NetworkResetActionMenuController mNetworkResetController;
     48 
     49     @Override
     50     public int getMetricsCategory() {
     51         return MetricsProto.MetricsEvent.SETTINGS_NETWORK_CATEGORY;
     52     }
     53 
     54     @Override
     55     protected String getLogTag() {
     56         return TAG;
     57     }
     58 
     59     @Override
     60     protected int getPreferenceScreenResId() {
     61         return R.xml.network_and_internet;
     62     }
     63 
     64     @Override
     65     public void onAttach(Context context) {
     66         super.onAttach(context);
     67         mNetworkResetController = new NetworkResetActionMenuController(context);
     68     }
     69 
     70     @Override
     71     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
     72         super.onCreateOptionsMenu(menu, inflater);
     73         mNetworkResetController.buildMenuItem(menu);
     74     }
     75 
     76     @Override
     77     protected List<PreferenceController> getPreferenceControllers(Context context) {
     78         final AirplaneModePreferenceController airplaneModePreferenceController =
     79                 new AirplaneModePreferenceController(context, this /* fragment */);
     80         final MobilePlanPreferenceController mobilePlanPreferenceController =
     81                 new MobilePlanPreferenceController(context, this);
     82         final WifiMasterSwitchPreferenceController wifiPreferenceController =
     83                 new WifiMasterSwitchPreferenceController(context, mMetricsFeatureProvider);
     84         final MobileNetworkPreferenceController mobileNetworkPreferenceController =
     85                 new MobileNetworkPreferenceController(context);
     86         final VpnPreferenceController vpnPreferenceController =
     87                 new VpnPreferenceController(context);
     88         final Lifecycle lifecycle = getLifecycle();
     89         lifecycle.addObserver(airplaneModePreferenceController);
     90         lifecycle.addObserver(mobilePlanPreferenceController);
     91         lifecycle.addObserver(wifiPreferenceController);
     92         lifecycle.addObserver(mobileNetworkPreferenceController);
     93         lifecycle.addObserver(vpnPreferenceController);
     94 
     95         final List<PreferenceController> controllers = new ArrayList<>();
     96         controllers.add(airplaneModePreferenceController);
     97         controllers.add(mobileNetworkPreferenceController);
     98         controllers.add(new TetherPreferenceController(context, lifecycle));
     99         controllers.add(vpnPreferenceController);
    100         controllers.add(new ProxyPreferenceController(context));
    101         controllers.add(mobilePlanPreferenceController);
    102         controllers.add(wifiPreferenceController);
    103         return controllers;
    104     }
    105 
    106     @Override
    107     public void showMobilePlanMessageDialog() {
    108         showDialog(MANAGE_MOBILE_PLAN_DIALOG_ID);
    109     }
    110 
    111     @Override
    112     public Dialog onCreateDialog(int dialogId) {
    113         Log.d(TAG, "onCreateDialog: dialogId=" + dialogId);
    114         switch (dialogId) {
    115             case MANAGE_MOBILE_PLAN_DIALOG_ID:
    116                 final MobilePlanPreferenceController controller =
    117                         getPreferenceController(MobilePlanPreferenceController.class);
    118                 return new AlertDialog.Builder(getActivity())
    119                         .setMessage(controller.getMobilePlanDialogMessage())
    120                         .setCancelable(false)
    121                         .setPositiveButton(com.android.internal.R.string.ok,
    122                                 (dialog, id) -> controller.setMobilePlanDialogMessage(null))
    123                         .create();
    124         }
    125         return super.onCreateDialog(dialogId);
    126     }
    127 
    128     @Override
    129     public int getDialogMetricsCategory(int dialogId) {
    130         if (MANAGE_MOBILE_PLAN_DIALOG_ID == dialogId) {
    131             return MetricsProto.MetricsEvent.DIALOG_MANAGE_MOBILE_PLAN;
    132         }
    133         return 0;
    134     }
    135 
    136     public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
    137             new BaseSearchIndexProvider() {
    138                 @Override
    139                 public List<SearchIndexableResource> getXmlResourcesToIndex(
    140                         Context context, boolean enabled) {
    141                     final SearchIndexableResource sir = new SearchIndexableResource(context);
    142                     sir.xmlResId = R.xml.network_and_internet;
    143                     return Arrays.asList(sir);
    144                 }
    145 
    146                 @Override
    147                 public List<String> getNonIndexableKeys(Context context) {
    148                     List<String> keys = new ArrayList<>();
    149                     // Remove master switch as a result
    150                     keys.add(WifiMasterSwitchPreferenceController.KEY_TOGGLE_WIFI);
    151                     return keys;
    152                 }
    153             };
    154 }
    155