WifiSettingsForSetupWizard.java revision 6a627652cbac48a7d5bea5bc81772f90d7d82af9
1d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner/* 2d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * Copyright (C) 2014 The Android Open Source Project 3d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * 4d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * Licensed under the Apache License, Version 2.0 (the "License"); 5d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * you may not use this file except in compliance with the License. 6d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * You may obtain a copy of the License at 7d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * 8d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * http://www.apache.org/licenses/LICENSE-2.0 9d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * 10d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * Unless required by applicable law or agreed to in writing, software 11d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * distributed under the License is distributed on an "AS IS" BASIS, 12d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * See the License for the specific language governing permissions and 14d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * limitations under the License. 15d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner */ 16d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 17d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerpackage com.android.settings.wifi; 18d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 19d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerimport android.content.Intent; 20d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerimport android.content.res.TypedArray; 216a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lamimport android.net.wifi.WifiConfiguration; 22d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerimport android.os.Bundle; 23d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerimport android.view.LayoutInflater; 24d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerimport android.view.Menu; 25d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerimport android.view.MenuItem; 26d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerimport android.view.View; 27d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerimport android.view.View.OnClickListener; 28d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerimport android.view.ViewGroup; 29d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerimport android.widget.ImageButton; 30588e61aa055eff73c968e2b8f45b6848bd8f7766Maurice Lamimport android.widget.ListView; 31d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerimport android.widget.PopupMenu; 32d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerimport android.widget.PopupMenu.OnMenuItemClickListener; 33588e61aa055eff73c968e2b8f45b6848bd8f7766Maurice Lamimport android.widget.TextView; 34d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 35d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerimport com.android.settings.R; 36d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 37d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner/** 38d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * This customized version of WifiSettings is shown to the user only during Setup Wizard. Menu 39d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * selections are limited, clicking on an access point will auto-advance to the next screen (once 40d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * connected), and, if the user opts to skip ahead without a wifi connection, a warning message 41d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner * alerts of possible carrier data charges or missing software updates. 42d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner */ 43d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brennerpublic class WifiSettingsForSetupWizard extends WifiSettings { 44d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 45d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner private static final String TAG = "WifiSettingsForSetupWizard"; 46d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 47d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner // show a text regarding data charges when wifi connection is required during setup wizard 48d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner protected static final String EXTRA_SHOW_WIFI_REQUIRED_INFO = "wifi_show_wifi_required_info"; 49d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 50d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner @Override 51d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner public View onCreateView(final LayoutInflater inflater, ViewGroup container, 52d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner Bundle savedInstanceState) { 53d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 54d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner final View view = inflater.inflate(R.layout.setup_preference, container, false); 55588e61aa055eff73c968e2b8f45b6848bd8f7766Maurice Lam 56588e61aa055eff73c968e2b8f45b6848bd8f7766Maurice Lam final ListView list = (ListView) view.findViewById(android.R.id.list); 57588e61aa055eff73c968e2b8f45b6848bd8f7766Maurice Lam final View title = view.findViewById(R.id.title); 58588e61aa055eff73c968e2b8f45b6848bd8f7766Maurice Lam if (title == null) { 59588e61aa055eff73c968e2b8f45b6848bd8f7766Maurice Lam final View header = inflater.inflate(R.layout.setup_wizard_header, list, false); 605aee7d5c684f77252eb7f16b1e9f19e83c07b2ffMaurice Lam list.addHeaderView(header, null, false); 61588e61aa055eff73c968e2b8f45b6848bd8f7766Maurice Lam } 62588e61aa055eff73c968e2b8f45b6848bd8f7766Maurice Lam 63588e61aa055eff73c968e2b8f45b6848bd8f7766Maurice Lam final View other = inflater.inflate(R.layout.setup_wifi_add_network, list, false); 64588e61aa055eff73c968e2b8f45b6848bd8f7766Maurice Lam list.addFooterView(other, null, true); 65d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner other.setOnClickListener(new OnClickListener() { 66d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner @Override 67d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner public void onClick(View v) { 68d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner if (mWifiManager.isWifiEnabled()) { 69d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner onAddNetworkPressed(); 70d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner } 71d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner } 72d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner }); 73d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 74d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner final Intent intent = getActivity().getIntent(); 75d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner if (intent.getBooleanExtra(EXTRA_SHOW_WIFI_REQUIRED_INFO, false)) { 76d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner view.findViewById(R.id.wifi_required_info).setVisibility(View.VISIBLE); 77d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner } 78d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 79d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner return view; 80d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner } 81d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 82d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner @Override 83d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner public void onActivityCreated(Bundle savedInstanceState) { 84d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner super.onActivityCreated(savedInstanceState); 85d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 86d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner getView().setSystemUiVisibility( 87d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner View.STATUS_BAR_DISABLE_HOME | 88d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner View.STATUS_BAR_DISABLE_RECENT | 89d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner View.STATUS_BAR_DISABLE_NOTIFICATION_ALERTS | 90d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner View.STATUS_BAR_DISABLE_CLOCK); 91d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 926a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam if (hasNextButton()) { 936a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam getNextButton().setVisibility(View.GONE); 94d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner } 95d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner } 96d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 97d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner @Override 98d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner public void registerForContextMenu(View view) { 99d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner // Suppressed during setup wizard 100d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner } 101d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 102d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner @Override 103d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner /* package */ WifiEnabler createWifiEnabler() { 104d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner // Not shown during setup wizard 105d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner return null; 106d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner } 107d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner 108d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner @Override 109d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner /* package */ void addOptionsMenuItems(Menu menu) { 110d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner final boolean wifiIsEnabled = mWifiManager.isWifiEnabled(); 111d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner final TypedArray ta = getActivity().getTheme() 112d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner .obtainStyledAttributes(new int[] {R.attr.ic_wps}); 113d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner menu.add(Menu.NONE, MENU_ID_WPS_PBC, 0, R.string.wifi_menu_wps_pbc) 114d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner .setIcon(ta.getDrawable(0)) 115d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner .setEnabled(wifiIsEnabled) 116d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 117d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner menu.add(Menu.NONE, MENU_ID_ADD_NETWORK, 0, R.string.wifi_add_network) 118d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner .setEnabled(wifiIsEnabled) 119d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 120d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner ta.recycle(); 121d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner } 1226a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam 1236a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam @Override 1246a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam protected void connect(final WifiConfiguration config) { 1256a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam WifiSetupActivity activity = (WifiSetupActivity) getActivity(); 1266a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam activity.networkSelected(); 1276a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam super.connect(config); 1286a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam } 1296a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam 1306a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam @Override 1316a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam protected void connect(final int networkId) { 1326a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam WifiSetupActivity activity = (WifiSetupActivity) getActivity(); 1336a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam activity.networkSelected(); 1346a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam super.connect(networkId); 1356a627652cbac48a7d5bea5bc81772f90d7d82af9Maurice Lam } 136d3446c5708aff2580d4ddb9f559e72784bfac55eRussell Brenner} 137