• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 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.wifi.details;
17 
18 import static com.android.settings.wifi.WifiSettings.WIFI_DIALOG_ID;
19 
20 import android.app.Dialog;
21 import android.content.Context;
22 import android.net.ConnectivityManager;
23 import android.net.wifi.WifiManager;
24 import android.os.Bundle;
25 import android.os.Handler;
26 import android.os.Looper;
27 import android.view.Menu;
28 import android.view.MenuInflater;
29 import android.view.MenuItem;
30 
31 import com.android.internal.logging.nano.MetricsProto;
32 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
33 import com.android.settings.R;
34 import com.android.settings.dashboard.DashboardFragment;
35 import com.android.settings.wifi.WifiConfigUiBase;
36 import com.android.settings.wifi.WifiDialog;
37 import com.android.settingslib.RestrictedLockUtils;
38 import com.android.settingslib.core.AbstractPreferenceController;
39 import com.android.settingslib.wifi.AccessPoint;
40 
41 import java.util.ArrayList;
42 import java.util.List;
43 
44 /**
45  * Detail page for the currently connected wifi network.
46  *
47  * <p>The AccessPoint should be saved to the intent Extras when launching this class via
48  * {@link AccessPoint#saveWifiState(Bundle)} in order to properly render this page.
49  */
50 public class WifiNetworkDetailsFragment extends DashboardFragment {
51 
52     private static final String TAG = "WifiNetworkDetailsFrg";
53 
54     private AccessPoint mAccessPoint;
55     private WifiDetailPreferenceController mWifiDetailPreferenceController;
56 
57     @Override
onAttach(Context context)58     public void onAttach(Context context) {
59         mAccessPoint = new AccessPoint(context, getArguments());
60         super.onAttach(context);
61     }
62 
63     @Override
getMetricsCategory()64     public int getMetricsCategory() {
65         return MetricsProto.MetricsEvent.WIFI_NETWORK_DETAILS;
66     }
67 
68     @Override
getLogTag()69     protected String getLogTag() {
70         return TAG;
71     }
72 
73     @Override
getPreferenceScreenResId()74     protected int getPreferenceScreenResId() {
75         return R.xml.wifi_network_details_fragment;
76     }
77 
78     @Override
getDialogMetricsCategory(int dialogId)79     public int getDialogMetricsCategory(int dialogId) {
80         if (dialogId == WIFI_DIALOG_ID) {
81             return MetricsEvent.DIALOG_WIFI_AP_EDIT;
82         }
83         return 0;
84     }
85 
86     @Override
onCreateDialog(int dialogId)87     public Dialog onCreateDialog(int dialogId) {
88         if (getActivity() == null || mWifiDetailPreferenceController == null
89                 || mAccessPoint == null) {
90             return null;
91         }
92         return WifiDialog.createModal(getActivity(), mWifiDetailPreferenceController, mAccessPoint,
93                 WifiConfigUiBase.MODE_MODIFY);
94     }
95 
96 
97     @Override
onCreateOptionsMenu(Menu menu, MenuInflater inflater)98     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
99         MenuItem item = menu.add(0, Menu.FIRST, 0, R.string.wifi_modify);
100         item.setIcon(R.drawable.ic_mode_edit);
101         item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
102         super.onCreateOptionsMenu(menu, inflater);
103     }
104 
105     @Override
onOptionsItemSelected(MenuItem menuItem)106     public boolean onOptionsItemSelected(MenuItem menuItem) {
107         switch (menuItem.getItemId()) {
108             case Menu.FIRST:
109                 if (!mWifiDetailPreferenceController.canModifyNetwork()) {
110                     RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(),
111                             RestrictedLockUtils.getDeviceOwner(getContext()));
112                 } else {
113                     showDialog(WIFI_DIALOG_ID);
114                 }
115                 return true;
116             default:
117                 return super.onOptionsItemSelected(menuItem);
118         }
119     }
120 
121     @Override
createPreferenceControllers(Context context)122     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
123         final List<AbstractPreferenceController> controllers = new ArrayList<>();
124         final ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
125         mWifiDetailPreferenceController = WifiDetailPreferenceController.newInstance(
126                 mAccessPoint,
127                 cm,
128                 context,
129                 this,
130                 new Handler(Looper.getMainLooper()),  // UI thread.
131                 getLifecycle(),
132                 context.getSystemService(WifiManager.class),
133                 mMetricsFeatureProvider);
134 
135         controllers.add(mWifiDetailPreferenceController);
136         controllers.add(new WifiMeteredPreferenceController(context, mAccessPoint.getConfig()));
137 
138         return controllers;
139     }
140 }
141