Remove obsolete WifiSettingsForSetupWizardXL
Bug: 18405549 Change-Id: I30c7c9ee8f544054b13cfc24f7433bdc1448e339
This commit is contained in:
@@ -208,13 +208,6 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity android:name=".wifi.WifiSettingsForSetupWizardXL"
|
|
||||||
android:theme="@android:style/Theme.Material.Light.NoActionBar"
|
|
||||||
android:screenOrientation="behind"
|
|
||||||
android:clearTaskOnLaunch="true"
|
|
||||||
android:windowSoftInputMode="adjustResize"
|
|
||||||
android:exported="true" />
|
|
||||||
|
|
||||||
<activity android:name="Settings$AdvancedWifiSettingsActivity"
|
<activity android:name="Settings$AdvancedWifiSettingsActivity"
|
||||||
android:taskAffinity="com.android.settings"
|
android:taskAffinity="com.android.settings"
|
||||||
android:label="@string/wifi_advanced_settings_label"
|
android:label="@string/wifi_advanced_settings_label"
|
||||||
|
@@ -1,430 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Copyright (C) 2010 The Android Open Source Project
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
<!-- All ids in this layout must be in wifi_dialog.xml -->
|
|
||||||
<LinearLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
<!-- UI components that should be shown appropriately -->
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/eap_not_supported"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:minHeight="360dip"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:visibility="gone">
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:lineSpacingExtra="12dip"
|
|
||||||
android:text="@string/wifi_setup_eap_not_supported"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp" />
|
|
||||||
</FrameLayout>
|
|
||||||
<!-- In "add network" flow, we have security type field (@id/security below) below
|
|
||||||
this View, so need a bit different layout than the other flow, in which we'll use
|
|
||||||
@id/eap_not_supported. -->
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/eap_not_supported_for_add_network"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:visibility="gone">
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:lineSpacingExtra="12dip"
|
|
||||||
android:text="@string/wifi_setup_eap_not_supported"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp" />
|
|
||||||
</FrameLayout>
|
|
||||||
<TableLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginBottom="16dip">
|
|
||||||
<!-- To accomodate @id/type into TableLayout, we splitted the layout into two:
|
|
||||||
@id/type_ssid and @id/type_security. -->
|
|
||||||
<TableRow
|
|
||||||
android:id="@+id/type_ssid"
|
|
||||||
android:minHeight="56dip"
|
|
||||||
android:visibility="gone">
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/ssid_text"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:minWidth="128dip"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:minHeight="56dip"
|
|
||||||
android:paddingEnd="16dip"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:text="@string/wifi_ssid"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:gravity="start|center_vertical" />
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/ssid_layout"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignBottom="@id/ssid_text"
|
|
||||||
android:layout_toEndOf="@id/ssid_text">
|
|
||||||
<EditText
|
|
||||||
android:id="@+id/ssid"
|
|
||||||
android:layout_width="368dip"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:hint="@string/wifi_ssid_hint"
|
|
||||||
android:inputType="textNoSuggestions"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp" />
|
|
||||||
</FrameLayout>
|
|
||||||
</TableRow>
|
|
||||||
|
|
||||||
<TableRow
|
|
||||||
android:id="@+id/security_fields"
|
|
||||||
android:minHeight="56dip"
|
|
||||||
android:visibility="gone">
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/password_text"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:minWidth="128dip"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:minHeight="56dip"
|
|
||||||
android:text="@string/wifi_password"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:gravity="start|center_vertical" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/password_layout"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="bottom">
|
|
||||||
<EditText
|
|
||||||
android:id="@+id/password"
|
|
||||||
android:layout_width="368dip"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:minHeight="56dip"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:password="true"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- It looks CheckBox isn't aligned well with TableRow -->
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
<CheckBox
|
|
||||||
android:id="@+id/show_password"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:minHeight="56dip"
|
|
||||||
android:text="@string/wifi_show_password"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp" />
|
|
||||||
</FrameLayout>
|
|
||||||
</TableRow>
|
|
||||||
|
|
||||||
<TableRow
|
|
||||||
android:id="@+id/type_security"
|
|
||||||
android:minHeight="56dip"
|
|
||||||
android:visibility="gone">
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/security_text"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:minWidth="128dip"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:minHeight="56dip"
|
|
||||||
android:text="@string/wifi_security"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:gravity="bottom"/>
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="bottom">
|
|
||||||
<Spinner
|
|
||||||
android:id="@+id/security"
|
|
||||||
android:layout_width="368dip"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:minHeight="56dip"
|
|
||||||
android:paddingStart="4dip"/>
|
|
||||||
</FrameLayout>
|
|
||||||
</TableRow>
|
|
||||||
</TableLayout>
|
|
||||||
|
|
||||||
<!-- All the views below are "gone".
|
|
||||||
We want them as data storage, not as UI components. -->
|
|
||||||
<LinearLayout
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:visibility="gone">
|
|
||||||
|
|
||||||
<LinearLayout android:id="@+id/info"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"/>
|
|
||||||
|
|
||||||
<!-- android:id="@+id/security_fields" -->
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:visibility="gone">
|
|
||||||
|
|
||||||
<LinearLayout android:id="@+id/eap"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:visibility="gone">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/wifi_eap_method" />
|
|
||||||
|
|
||||||
<Spinner android:id="@+id/method"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:prompt="@string/wifi_eap_method"
|
|
||||||
android:entries="@array/wifi_eap_method" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/please_select_phase2" />
|
|
||||||
|
|
||||||
<Spinner android:id="@+id/phase2"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:prompt="@string/please_select_phase2"
|
|
||||||
android:entries="@array/wifi_phase2_entries" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/wifi_eap_ca_cert" />
|
|
||||||
|
|
||||||
<Spinner android:id="@+id/ca_cert"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:prompt="@string/wifi_eap_ca_cert" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/wifi_eap_user_cert" />
|
|
||||||
|
|
||||||
<Spinner android:id="@+id/user_cert"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:prompt="@string/wifi_eap_user_cert" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/wifi_eap_identity" />
|
|
||||||
|
|
||||||
<EditText android:id="@+id/identity"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:inputType="textNoSuggestions" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/wifi_eap_anonymous" />
|
|
||||||
|
|
||||||
<EditText android:id="@+id/anonymous"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:inputType="textNoSuggestions" />
|
|
||||||
</LinearLayout> <!-- android:id="@+id/eap" -->
|
|
||||||
|
|
||||||
<!-- <TextView android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/wifi_password" />
|
|
||||||
|
|
||||||
<EditText android:id="@+id/password"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:password="true" />
|
|
||||||
|
|
||||||
<CheckBox android:id="@+id/show_password"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/wifi_show_password" /> -->
|
|
||||||
</LinearLayout> <!-- android:id="@+id/security_fields" -->
|
|
||||||
|
|
||||||
<LinearLayout android:id="@+id/proxy_settings_fields"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:visibility="gone">
|
|
||||||
|
|
||||||
<TextView android:id="@+id/proxy_settings_title"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/proxy_settings_title" />
|
|
||||||
|
|
||||||
<Spinner android:id="@+id/proxy_settings"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:prompt="@string/proxy_settings_title"
|
|
||||||
android:entries="@array/wifi_proxy_settings" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout android:id="@+id/proxy_warning_limited_support"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:visibility="gone">
|
|
||||||
|
|
||||||
<!-- Dummy to enable right-justification of warning -->
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/proxy_warning_limited_support" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout android:id="@+id/proxy_fields"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:visibility="gone">
|
|
||||||
<TextView android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/proxy_hostname_label" />
|
|
||||||
|
|
||||||
<EditText android:id="@+id/proxy_hostname"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:inputType="textNoSuggestions" />
|
|
||||||
|
|
||||||
<TextView android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/proxy_port_label" />
|
|
||||||
|
|
||||||
<EditText android:id="@+id/proxy_port"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:inputType="textNoSuggestions" />
|
|
||||||
|
|
||||||
<TextView android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/proxy_exclusionlist_label" />
|
|
||||||
|
|
||||||
<EditText android:id="@+id/proxy_exclusionlist"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:inputType="textNoSuggestions" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout android:id="@+id/ip_fields"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:visibility="gone">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/wifi_ip_settings" />
|
|
||||||
|
|
||||||
<Spinner android:id="@+id/ip_settings"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:prompt="@string/wifi_ip_settings"
|
|
||||||
android:entries="@array/wifi_ip_settings" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout android:id="@+id/staticip"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:visibility="gone">
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/wifi_ip_address" />
|
|
||||||
|
|
||||||
<EditText android:id="@+id/ipaddress"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:inputType="textNoSuggestions" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/wifi_gateway" />
|
|
||||||
|
|
||||||
<EditText android:id="@+id/gateway"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:inputType="textNoSuggestions" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/wifi_network_prefix_length" />
|
|
||||||
|
|
||||||
<EditText android:id="@+id/network_prefix_length"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:inputType="textNoSuggestions" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/wifi_dns1" />
|
|
||||||
|
|
||||||
<EditText android:id="@+id/dns1"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:inputType="textNoSuggestions" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/wifi_dns2" />
|
|
||||||
|
|
||||||
<EditText android:id="@+id/dns2"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:inputType="textNoSuggestions" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
@@ -99,9 +99,6 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
/* Full list of phase2 methods */
|
/* Full list of phase2 methods */
|
||||||
private final ArrayAdapter<String> PHASE2_FULL_ADAPTER;
|
private final ArrayAdapter<String> PHASE2_FULL_ADAPTER;
|
||||||
|
|
||||||
// True when this instance is used in SetupWizard XL context.
|
|
||||||
private final boolean mInXlSetupWizard;
|
|
||||||
|
|
||||||
private final Handler mTextViewChangedHandler;
|
private final Handler mTextViewChangedHandler;
|
||||||
|
|
||||||
// e.g. AccessPoint.SECURITY_NONE
|
// e.g. AccessPoint.SECURITY_NONE
|
||||||
@@ -148,7 +145,6 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
public WifiConfigController(
|
public WifiConfigController(
|
||||||
WifiConfigUiBase parent, View view, AccessPoint accessPoint, boolean edit) {
|
WifiConfigUiBase parent, View view, AccessPoint accessPoint, boolean edit) {
|
||||||
mConfigUi = parent;
|
mConfigUi = parent;
|
||||||
mInXlSetupWizard = (parent instanceof WifiConfigUiForSetupWizardXL);
|
|
||||||
|
|
||||||
mView = view;
|
mView = view;
|
||||||
mAccessPoint = accessPoint;
|
mAccessPoint = accessPoint;
|
||||||
@@ -184,18 +180,7 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
mSsidView.addTextChangedListener(this);
|
mSsidView.addTextChangedListener(this);
|
||||||
mSecuritySpinner = ((Spinner) mView.findViewById(R.id.security));
|
mSecuritySpinner = ((Spinner) mView.findViewById(R.id.security));
|
||||||
mSecuritySpinner.setOnItemSelectedListener(this);
|
mSecuritySpinner.setOnItemSelectedListener(this);
|
||||||
if (mInXlSetupWizard) {
|
|
||||||
mView.findViewById(R.id.type_ssid).setVisibility(View.VISIBLE);
|
|
||||||
mView.findViewById(R.id.type_security).setVisibility(View.VISIBLE);
|
|
||||||
// We want custom layout. The content must be same as the other cases.
|
|
||||||
|
|
||||||
ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext,
|
|
||||||
R.layout.wifi_setup_custom_list_item_1, android.R.id.text1,
|
|
||||||
res.getStringArray(R.array.wifi_security_no_eap));
|
|
||||||
mSecuritySpinner.setAdapter(adapter);
|
|
||||||
} else {
|
|
||||||
mView.findViewById(R.id.type).setVisibility(View.VISIBLE);
|
mView.findViewById(R.id.type).setVisibility(View.VISIBLE);
|
||||||
}
|
|
||||||
|
|
||||||
showIpConfigFields();
|
showIpConfigFields();
|
||||||
showProxyFields();
|
showProxyFields();
|
||||||
@@ -605,13 +590,6 @@ public class WifiConfigController implements TextWatcher,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showSecurityFields() {
|
private void showSecurityFields() {
|
||||||
if (mInXlSetupWizard) {
|
|
||||||
// Note: XL SetupWizard won't hide "EAP" settings here.
|
|
||||||
if (!((WifiSettingsForSetupWizardXL)mConfigUi.getContext()).initSecurityFields(mView,
|
|
||||||
mAccessPointSecurity)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (mAccessPointSecurity == AccessPoint.SECURITY_NONE) {
|
if (mAccessPointSecurity == AccessPoint.SECURITY_NONE) {
|
||||||
mView.findViewById(R.id.security_fields).setVisibility(View.GONE);
|
mView.findViewById(R.id.security_fields).setVisibility(View.GONE);
|
||||||
return;
|
return;
|
||||||
|
@@ -21,8 +21,7 @@ import android.view.LayoutInflater;
|
|||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Foundation interface glues between Activities and UIs like
|
* Foundation interface glues between Activities and UIs like {@link WifiDialog}.
|
||||||
* {@link WifiDialog} or {@link WifiConfigUiForSetupWizardXL}.
|
|
||||||
*/
|
*/
|
||||||
public interface WifiConfigUiBase {
|
public interface WifiConfigUiBase {
|
||||||
public Context getContext();
|
public Context getContext();
|
||||||
|
@@ -1,211 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2010 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.android.settings.wifi;
|
|
||||||
|
|
||||||
import com.android.settings.R;
|
|
||||||
import com.android.settingslib.wifi.AccessPoint;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.os.Handler;
|
|
||||||
import android.util.Log;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.View.OnFocusChangeListener;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.view.inputmethod.InputMethodManager;
|
|
||||||
import android.widget.Button;
|
|
||||||
import android.widget.EditText;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Shows simplified UI for configuring a wifi network. Used only in SetupWizard for XLarge
|
|
||||||
* screen.
|
|
||||||
*/
|
|
||||||
public class WifiConfigUiForSetupWizardXL implements WifiConfigUiBase, OnFocusChangeListener {
|
|
||||||
private static final String TAG = "SetupWizard";
|
|
||||||
|
|
||||||
private Button mConnectButton;
|
|
||||||
private Button mCancelButton;
|
|
||||||
|
|
||||||
private final WifiSettingsForSetupWizardXL mActivity;
|
|
||||||
private View mView;
|
|
||||||
private WifiConfigController mController;
|
|
||||||
private AccessPoint mAccessPoint;
|
|
||||||
private boolean mEdit;
|
|
||||||
private Handler mHandler = new Handler();
|
|
||||||
|
|
||||||
private final InputMethodManager mInputMethodManager;
|
|
||||||
|
|
||||||
private LayoutInflater mInflater;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param activity Activity which creates this object.
|
|
||||||
* @param parent Parent ViewGroup (typically some layout) holding a view object created by
|
|
||||||
* this object
|
|
||||||
* @param accessPoint target AccessPoint to be configured.
|
|
||||||
* @param edit
|
|
||||||
*/
|
|
||||||
public WifiConfigUiForSetupWizardXL(
|
|
||||||
WifiSettingsForSetupWizardXL activity, ViewGroup parent,
|
|
||||||
AccessPoint accessPoint, boolean edit) {
|
|
||||||
mActivity = activity;
|
|
||||||
mConnectButton = (Button)activity.findViewById(R.id.wifi_setup_connect);
|
|
||||||
mCancelButton = (Button)activity.findViewById(R.id.wifi_setup_cancel);
|
|
||||||
mAccessPoint = accessPoint;
|
|
||||||
mEdit = edit;
|
|
||||||
mInflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
|
||||||
|
|
||||||
mView = mInflater.inflate(R.layout.wifi_config_ui_for_setup_wizard, parent, true);
|
|
||||||
mController = new WifiConfigController(this, mView, mAccessPoint, edit);
|
|
||||||
|
|
||||||
mInputMethodManager = (InputMethodManager)
|
|
||||||
activity.getSystemService(Context.INPUT_METHOD_SERVICE);
|
|
||||||
|
|
||||||
if (mView.findViewById(R.id.security_fields).getVisibility() == View.VISIBLE) {
|
|
||||||
requestFocusAndShowKeyboard(R.id.password);
|
|
||||||
} else if (mView.findViewById(R.id.type_ssid).getVisibility() == View.VISIBLE) {
|
|
||||||
// Add Network flow.
|
|
||||||
requestFocusAndShowKeyboard(R.id.ssid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param editViewId must be EditView
|
|
||||||
*/
|
|
||||||
public void requestFocusAndShowKeyboard(int editViewId) {
|
|
||||||
// Set Focus to password View.
|
|
||||||
final View viewToBeFocused = mView.findViewById(editViewId);
|
|
||||||
if (viewToBeFocused == null) {
|
|
||||||
Log.w(TAG, "password field to be focused not found.");
|
|
||||||
} else if (!(viewToBeFocused instanceof EditText)) {
|
|
||||||
Log.w(TAG, "password field is not EditText");
|
|
||||||
} else {
|
|
||||||
if (viewToBeFocused.isFocused()) {
|
|
||||||
Log.i(TAG, "Already focused");
|
|
||||||
if (!mInputMethodManager.showSoftInput(viewToBeFocused, 0)) {
|
|
||||||
Log.w(TAG, "Failed to show SoftInput");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// After acquiring the focus, we show software keyboard.
|
|
||||||
viewToBeFocused.setOnFocusChangeListener(this);
|
|
||||||
final boolean requestFocusResult = viewToBeFocused.requestFocus();
|
|
||||||
Log.i(TAG, String.format("Focus request: %s",
|
|
||||||
(requestFocusResult ? "successful" : "failed")));
|
|
||||||
if (!requestFocusResult) {
|
|
||||||
viewToBeFocused.setOnFocusChangeListener(null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public View getView() {
|
|
||||||
return mView;
|
|
||||||
}
|
|
||||||
|
|
||||||
public AccessPoint getAccessPoint() {
|
|
||||||
return mAccessPoint;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WifiConfigController getController() {
|
|
||||||
return mController;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isEdit() {
|
|
||||||
return mEdit;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public LayoutInflater getLayoutInflater() {
|
|
||||||
return mInflater;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Button getSubmitButton() {
|
|
||||||
return mConnectButton;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Button getForgetButton() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Button getCancelButton() {
|
|
||||||
return mCancelButton;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setSubmitButton(CharSequence text) {
|
|
||||||
mConnectButton.setVisibility(View.VISIBLE);
|
|
||||||
mConnectButton.setText(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setForgetButton(CharSequence text) {
|
|
||||||
// In XL setup screen, we won't show Forget button for simplifying the UI.
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setCancelButton(CharSequence text) {
|
|
||||||
mCancelButton.setVisibility(View.VISIBLE);
|
|
||||||
// We don't want "cancel" label given from caller.
|
|
||||||
// mCancelButton.setText(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Context getContext() {
|
|
||||||
return mActivity;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setTitle(int id) {
|
|
||||||
Log.d(TAG, "Ignoring setTitle");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setTitle(CharSequence title) {
|
|
||||||
Log.d(TAG, "Ignoring setTitle");
|
|
||||||
}
|
|
||||||
|
|
||||||
private class FocusRunnable implements Runnable {
|
|
||||||
final View mViewToBeFocused;
|
|
||||||
public FocusRunnable(View viewToBeFocused) {
|
|
||||||
mViewToBeFocused = viewToBeFocused;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
// mInputMethodManager.focusIn(mViewToBeFocused);
|
|
||||||
final boolean showSoftInputResult =
|
|
||||||
mInputMethodManager.showSoftInput(mViewToBeFocused, 0);
|
|
||||||
if (showSoftInputResult) {
|
|
||||||
mActivity.setPaddingVisibility(View.GONE);
|
|
||||||
} else {
|
|
||||||
Log.w(TAG, "Failed to show software keyboard ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFocusChange(View view, boolean hasFocus) {
|
|
||||||
view.setOnFocusChangeListener(null);
|
|
||||||
if (hasFocus) {
|
|
||||||
mHandler.post(new FocusRunnable(view));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,770 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2010 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.android.settings.wifi;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.pm.ActivityInfo;
|
|
||||||
import android.net.NetworkInfo.DetailedState;
|
|
||||||
import android.net.wifi.WifiConfiguration;
|
|
||||||
import android.net.wifi.WifiManager;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.preference.PreferenceScreen;
|
|
||||||
import android.text.TextUtils;
|
|
||||||
import android.util.Log;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.View.OnClickListener;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.view.Window;
|
|
||||||
import android.view.inputmethod.InputMethodManager;
|
|
||||||
import android.widget.Button;
|
|
||||||
import android.widget.ProgressBar;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import com.android.settings.R;
|
|
||||||
import com.android.settingslib.wifi.AccessPoint;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.EnumMap;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* WifiSetings Activity specific for SetupWizard with X-Large screen size.
|
|
||||||
*/
|
|
||||||
public class WifiSettingsForSetupWizardXL extends Activity implements OnClickListener {
|
|
||||||
private static final String TAG = "SetupWizard";
|
|
||||||
private static final boolean DEBUG = true;
|
|
||||||
|
|
||||||
// lock orientation into landscape or portrait
|
|
||||||
private static final String EXTRA_PREFS_LANDSCAPE_LOCK = "extra_prefs_landscape_lock";
|
|
||||||
private static final String EXTRA_PREFS_PORTRAIT_LOCK = "extra_prefs_portrait_lock";
|
|
||||||
|
|
||||||
private static final EnumMap<DetailedState, DetailedState> sNetworkStateMap =
|
|
||||||
new EnumMap<DetailedState, DetailedState>(DetailedState.class);
|
|
||||||
|
|
||||||
static {
|
|
||||||
sNetworkStateMap.put(DetailedState.IDLE, DetailedState.DISCONNECTED);
|
|
||||||
sNetworkStateMap.put(DetailedState.SCANNING, DetailedState.SCANNING);
|
|
||||||
sNetworkStateMap.put(DetailedState.CONNECTING, DetailedState.CONNECTING);
|
|
||||||
sNetworkStateMap.put(DetailedState.AUTHENTICATING, DetailedState.CONNECTING);
|
|
||||||
sNetworkStateMap.put(DetailedState.OBTAINING_IPADDR, DetailedState.CONNECTING);
|
|
||||||
sNetworkStateMap.put(DetailedState.CONNECTED, DetailedState.CONNECTED);
|
|
||||||
sNetworkStateMap.put(DetailedState.SUSPENDED, DetailedState.SUSPENDED); // ?
|
|
||||||
sNetworkStateMap.put(DetailedState.DISCONNECTING, DetailedState.DISCONNECTED);
|
|
||||||
sNetworkStateMap.put(DetailedState.DISCONNECTED, DetailedState.DISCONNECTED);
|
|
||||||
sNetworkStateMap.put(DetailedState.FAILED, DetailedState.FAILED);
|
|
||||||
}
|
|
||||||
|
|
||||||
private WifiSettings mWifiSettings;
|
|
||||||
private WifiManager mWifiManager;
|
|
||||||
|
|
||||||
/** Used for resizing a padding above title. Hiden when software keyboard is shown. */
|
|
||||||
private View mTopPadding;
|
|
||||||
|
|
||||||
/** Used for resizing a padding of main content. Hiden when software keyboard is shown. */
|
|
||||||
private View mContentPadding;
|
|
||||||
|
|
||||||
private TextView mTitleView;
|
|
||||||
/**
|
|
||||||
* The name of a network currently connecting, or trying to connect.
|
|
||||||
* This may be empty ("") at first, and updated when configuration is changed.
|
|
||||||
*/
|
|
||||||
private CharSequence mNetworkName = "";
|
|
||||||
private CharSequence mEditingTitle;
|
|
||||||
|
|
||||||
private ProgressBar mProgressBar;
|
|
||||||
private View mTopDividerNoProgress;
|
|
||||||
/**
|
|
||||||
* Used for resizing a padding between WifiSettings preference and bottom bar when
|
|
||||||
* ProgressBar is visible as a top divider.
|
|
||||||
*/
|
|
||||||
private View mBottomPadding;
|
|
||||||
|
|
||||||
private Button mAddNetworkButton;
|
|
||||||
private Button mRefreshButton;
|
|
||||||
private Button mSkipOrNextButton;
|
|
||||||
private Button mBackButton;
|
|
||||||
|
|
||||||
private Button mConnectButton;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* View enclosing {@link WifiSettings}.
|
|
||||||
*/
|
|
||||||
private View mWifiSettingsFragmentLayout;
|
|
||||||
private View mConnectingStatusLayout;
|
|
||||||
private TextView mConnectingStatusView;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* States of current screen, which should be saved and restored when Activity is relaunched
|
|
||||||
* with orientation change, etc.
|
|
||||||
*/
|
|
||||||
private static final int SCREEN_STATE_DISCONNECTED = 0;
|
|
||||||
private static final int SCREEN_STATE_EDITING = 1;
|
|
||||||
private static final int SCREEN_STATE_CONNECTING = 2;
|
|
||||||
private static final int SCREEN_STATE_CONNECTED = 3;
|
|
||||||
|
|
||||||
/** Current screen state. */
|
|
||||||
private int mScreenState = SCREEN_STATE_DISCONNECTED;
|
|
||||||
|
|
||||||
private WifiConfigUiForSetupWizardXL mWifiConfig;
|
|
||||||
|
|
||||||
private InputMethodManager mInputMethodManager;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Previous network connection state reported by main Wifi module.
|
|
||||||
*
|
|
||||||
* Note that we don't use original {@link DetailedState} object but simplified one translated
|
|
||||||
* using sNetworkStateMap.
|
|
||||||
*/
|
|
||||||
private DetailedState mPreviousNetworkState = DetailedState.DISCONNECTED;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
|
||||||
setContentView(R.layout.wifi_settings_for_setup_wizard_xl);
|
|
||||||
|
|
||||||
mWifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
|
|
||||||
// There's no button here enabling wifi network, so we need to enable it without
|
|
||||||
// users' request.
|
|
||||||
mWifiManager.setWifiEnabled(true);
|
|
||||||
|
|
||||||
mWifiSettings =
|
|
||||||
(WifiSettings)getFragmentManager().findFragmentById(R.id.wifi_setup_fragment);
|
|
||||||
mInputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
|
|
||||||
|
|
||||||
initViews();
|
|
||||||
|
|
||||||
// At first, Wifi module doesn't return SCANNING state (it's too early), so we manually
|
|
||||||
// show it.
|
|
||||||
showScanningState();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initViews() {
|
|
||||||
Intent intent = getIntent();
|
|
||||||
|
|
||||||
if (intent.getBooleanExtra("firstRun", false)) {
|
|
||||||
final View layoutRoot = findViewById(R.id.layout_root);
|
|
||||||
layoutRoot.setSystemUiVisibility(View.STATUS_BAR_DISABLE_BACK);
|
|
||||||
}
|
|
||||||
if (intent.getBooleanExtra(EXTRA_PREFS_LANDSCAPE_LOCK, false)) {
|
|
||||||
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
|
|
||||||
}
|
|
||||||
if (intent.getBooleanExtra(EXTRA_PREFS_PORTRAIT_LOCK, false)) {
|
|
||||||
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
mTitleView = (TextView)findViewById(R.id.wifi_setup_title);
|
|
||||||
mProgressBar = (ProgressBar)findViewById(R.id.scanning_progress_bar);
|
|
||||||
mProgressBar.setMax(2);
|
|
||||||
mTopDividerNoProgress = findViewById(R.id.top_divider_no_progress);
|
|
||||||
mBottomPadding = findViewById(R.id.bottom_padding);
|
|
||||||
|
|
||||||
mProgressBar.setVisibility(View.VISIBLE);
|
|
||||||
mProgressBar.setIndeterminate(true);
|
|
||||||
mTopDividerNoProgress.setVisibility(View.GONE);
|
|
||||||
|
|
||||||
mAddNetworkButton = (Button)findViewById(R.id.wifi_setup_add_network);
|
|
||||||
mAddNetworkButton.setOnClickListener(this);
|
|
||||||
mRefreshButton = (Button)findViewById(R.id.wifi_setup_refresh_list);
|
|
||||||
mRefreshButton.setOnClickListener(this);
|
|
||||||
mSkipOrNextButton = (Button)findViewById(R.id.wifi_setup_skip_or_next);
|
|
||||||
mSkipOrNextButton.setOnClickListener(this);
|
|
||||||
mConnectButton = (Button)findViewById(R.id.wifi_setup_connect);
|
|
||||||
mConnectButton.setOnClickListener(this);
|
|
||||||
mBackButton = (Button)findViewById(R.id.wifi_setup_cancel);
|
|
||||||
mBackButton.setOnClickListener(this);
|
|
||||||
|
|
||||||
mTopPadding = findViewById(R.id.top_padding);
|
|
||||||
mContentPadding = findViewById(R.id.content_padding);
|
|
||||||
|
|
||||||
mWifiSettingsFragmentLayout = findViewById(R.id.wifi_settings_fragment_layout);
|
|
||||||
mConnectingStatusLayout = findViewById(R.id.connecting_status_layout);
|
|
||||||
mConnectingStatusView = (TextView) findViewById(R.id.connecting_status);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void restoreFirstVisibilityState() {
|
|
||||||
showDefaultTitle();
|
|
||||||
mAddNetworkButton.setVisibility(View.VISIBLE);
|
|
||||||
mRefreshButton.setVisibility(View.VISIBLE);
|
|
||||||
mSkipOrNextButton.setVisibility(View.VISIBLE);
|
|
||||||
mConnectButton.setVisibility(View.GONE);
|
|
||||||
mBackButton.setVisibility(View.GONE);
|
|
||||||
setPaddingVisibility(View.VISIBLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(View view) {
|
|
||||||
hideSoftwareKeyboard();
|
|
||||||
if (view == mAddNetworkButton) {
|
|
||||||
if (DEBUG) Log.d(TAG, "AddNetwork button pressed");
|
|
||||||
onAddNetworkButtonPressed();
|
|
||||||
} else if (view == mRefreshButton) {
|
|
||||||
if (DEBUG) Log.d(TAG, "Refresh button pressed");
|
|
||||||
refreshAccessPoints(true);
|
|
||||||
} else if (view == mSkipOrNextButton) {
|
|
||||||
if (DEBUG) Log.d(TAG, "Skip/Next button pressed");
|
|
||||||
if (TextUtils.equals(getString(R.string.wifi_setup_skip), ((Button)view).getText())) {
|
|
||||||
// We don't want to let Wifi enabled when a user press skip without choosing
|
|
||||||
// any access point.
|
|
||||||
mWifiManager.setWifiEnabled(false);
|
|
||||||
// Notify "skip"
|
|
||||||
setResult(RESULT_FIRST_USER);
|
|
||||||
} else {
|
|
||||||
setResult(RESULT_OK);
|
|
||||||
}
|
|
||||||
finish();
|
|
||||||
} else if (view == mConnectButton) {
|
|
||||||
if (DEBUG) Log.d(TAG, "Connect button pressed");
|
|
||||||
onConnectButtonPressed();
|
|
||||||
} else if (view == mBackButton) {
|
|
||||||
if (DEBUG) Log.d(TAG, "Back button pressed");
|
|
||||||
onBackButtonPressed();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void hideSoftwareKeyboard() {
|
|
||||||
if (DEBUG) Log.i(TAG, "Hiding software keyboard.");
|
|
||||||
final View focusedView = getCurrentFocus();
|
|
||||||
if (focusedView != null) {
|
|
||||||
mInputMethodManager.hideSoftInputFromWindow(focusedView.getWindowToken(), 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Called from WifiSettings
|
|
||||||
/* package */ void updateConnectionState(DetailedState originalState) {
|
|
||||||
final DetailedState state = sNetworkStateMap.get(originalState);
|
|
||||||
|
|
||||||
if (originalState == DetailedState.FAILED) {
|
|
||||||
// We clean up the current connectivity status and let users select another network
|
|
||||||
// if they want.
|
|
||||||
refreshAccessPoints(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (state) {
|
|
||||||
case SCANNING: {
|
|
||||||
if (mScreenState == SCREEN_STATE_DISCONNECTED) {
|
|
||||||
if (mWifiSettings.getAccessPointsCount() == 0) {
|
|
||||||
showScanningState();
|
|
||||||
} else {
|
|
||||||
showDisconnectedProgressBar();
|
|
||||||
mWifiSettingsFragmentLayout.setVisibility(View.VISIBLE);
|
|
||||||
mBottomPadding.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
showDisconnectedProgressBar();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CONNECTING: {
|
|
||||||
if (mScreenState == SCREEN_STATE_CONNECTING) {
|
|
||||||
showConnectingState();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CONNECTED: {
|
|
||||||
showConnectedState();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: // DISCONNECTED, FAILED
|
|
||||||
if (mScreenState != SCREEN_STATE_CONNECTED &&
|
|
||||||
mWifiSettings.getAccessPointsCount() > 0) {
|
|
||||||
showDisconnectedState(AccessPoint.getSummary(this, state, false /* isEphemeral */));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
mPreviousNetworkState = state;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showDisconnectedState(String stateString) {
|
|
||||||
showDisconnectedProgressBar();
|
|
||||||
if (mScreenState == SCREEN_STATE_DISCONNECTED &&
|
|
||||||
mWifiSettings.getAccessPointsCount() > 0) {
|
|
||||||
mWifiSettingsFragmentLayout.setVisibility(View.VISIBLE);
|
|
||||||
mBottomPadding.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
mAddNetworkButton.setEnabled(true);
|
|
||||||
mRefreshButton.setEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showConnectingState() {
|
|
||||||
mScreenState = SCREEN_STATE_CONNECTING;
|
|
||||||
|
|
||||||
mBackButton.setVisibility(View.VISIBLE);
|
|
||||||
// We save this title and show it when authentication failed.
|
|
||||||
mEditingTitle = mTitleView.getText();
|
|
||||||
showConnectingTitle();
|
|
||||||
showConnectingProgressBar();
|
|
||||||
|
|
||||||
setPaddingVisibility(View.VISIBLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showConnectedState() {
|
|
||||||
// Once we show "connected" screen, we won't change it even when the device becomes
|
|
||||||
// disconnected afterwards. We keep the state unless a user explicitly cancel it
|
|
||||||
// (by pressing "back" button).
|
|
||||||
mScreenState = SCREEN_STATE_CONNECTED;
|
|
||||||
|
|
||||||
hideSoftwareKeyboard();
|
|
||||||
setPaddingVisibility(View.VISIBLE);
|
|
||||||
|
|
||||||
showConnectedTitle();
|
|
||||||
showConnectedProgressBar();
|
|
||||||
|
|
||||||
mWifiSettingsFragmentLayout.setVisibility(View.GONE);
|
|
||||||
mConnectingStatusLayout.setVisibility(View.VISIBLE);
|
|
||||||
|
|
||||||
mConnectingStatusView.setText(R.string.wifi_setup_description_connected);
|
|
||||||
mConnectButton.setVisibility(View.GONE);
|
|
||||||
mAddNetworkButton.setVisibility(View.GONE);
|
|
||||||
mRefreshButton.setVisibility(View.GONE);
|
|
||||||
mBackButton.setVisibility(View.VISIBLE);
|
|
||||||
mBackButton.setText(R.string.wifi_setup_back);
|
|
||||||
mSkipOrNextButton.setVisibility(View.VISIBLE);
|
|
||||||
mSkipOrNextButton.setEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showDefaultTitle() {
|
|
||||||
mTitleView.setText(getString(R.string.wifi_setup_title));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showAddNetworkTitle() {
|
|
||||||
mNetworkName = "";
|
|
||||||
mTitleView.setText(R.string.wifi_setup_title_add_network);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showEditingTitle() {
|
|
||||||
if (TextUtils.isEmpty(mNetworkName) && mWifiConfig != null) {
|
|
||||||
if (mWifiConfig.getController() != null &&
|
|
||||||
mWifiConfig.getController().getConfig() != null) {
|
|
||||||
mNetworkName = mWifiConfig.getController().getConfig().SSID;
|
|
||||||
} else {
|
|
||||||
Log.w(TAG, "Unexpected null found (WifiController or WifiConfig is null). " +
|
|
||||||
"Ignore them.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mTitleView.setText(getString(R.string.wifi_setup_title_editing_network, mNetworkName));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showConnectingTitle() {
|
|
||||||
if (TextUtils.isEmpty(mNetworkName) && mWifiConfig != null) {
|
|
||||||
if (mWifiConfig.getController() != null &&
|
|
||||||
mWifiConfig.getController().getConfig() != null) {
|
|
||||||
mNetworkName = mWifiConfig.getController().getConfig().SSID;
|
|
||||||
} else {
|
|
||||||
Log.w(TAG, "Unexpected null found (WifiController or WifiConfig is null). " +
|
|
||||||
"Ignore them.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mTitleView.setText(getString(R.string.wifi_setup_title_connecting_network, mNetworkName));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showConnectedTitle() {
|
|
||||||
if (TextUtils.isEmpty(mNetworkName) && mWifiConfig != null) {
|
|
||||||
if (mWifiConfig.getController() != null &&
|
|
||||||
mWifiConfig.getController().getConfig() != null) {
|
|
||||||
mNetworkName = mWifiConfig.getController().getConfig().SSID;
|
|
||||||
} else {
|
|
||||||
Log.w(TAG, "Unexpected null found (WifiController or WifiConfig is null). " +
|
|
||||||
"Ignore them.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mTitleView.setText(getString(R.string.wifi_setup_title_connected_network, mNetworkName));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Shows top divider with ProgressBar without defining the state of the ProgressBar.
|
|
||||||
*
|
|
||||||
* @see #showScanningProgressBar()
|
|
||||||
* @see #showConnectedProgressBar()
|
|
||||||
* @see #showConnectingProgressBar()
|
|
||||||
*/
|
|
||||||
private void showTopDividerWithProgressBar() {
|
|
||||||
mProgressBar.setVisibility(View.VISIBLE);
|
|
||||||
mTopDividerNoProgress.setVisibility(View.GONE);
|
|
||||||
mBottomPadding.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showScanningState() {
|
|
||||||
setPaddingVisibility(View.VISIBLE);
|
|
||||||
mWifiSettingsFragmentLayout.setVisibility(View.GONE);
|
|
||||||
showScanningProgressBar();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onAddNetworkButtonPressed() {
|
|
||||||
mWifiSettings.onAddNetworkPressed();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when the screen enters wifi configuration UI. UI widget for configuring network
|
|
||||||
* (a.k.a. ConfigPreference) should be taken care of by caller side.
|
|
||||||
* This method should handle buttons' visibility/enabled.
|
|
||||||
* @param selectedAccessPoint AccessPoint object being selected. null when a user pressed
|
|
||||||
* "Add network" button, meaning there's no selected access point.
|
|
||||||
*/
|
|
||||||
/* package */ void showConfigUi(AccessPoint selectedAccessPoint, boolean edit) {
|
|
||||||
mScreenState = SCREEN_STATE_EDITING;
|
|
||||||
|
|
||||||
if (selectedAccessPoint != null &&
|
|
||||||
(selectedAccessPoint.getSecurity() == AccessPoint.SECURITY_WEP ||
|
|
||||||
selectedAccessPoint.getSecurity() == AccessPoint.SECURITY_PSK)) {
|
|
||||||
// We forcibly set edit as true so that users can modify every field if they want,
|
|
||||||
// while config UI doesn't allow them to edit some of them when edit is false
|
|
||||||
// (e.g. password field is hiden when edit==false).
|
|
||||||
edit = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We don't want to keep scanning Wifi networks during users' configuring a network.
|
|
||||||
mWifiSettings.pauseWifiScan();
|
|
||||||
|
|
||||||
mWifiSettingsFragmentLayout.setVisibility(View.GONE);
|
|
||||||
mConnectingStatusLayout.setVisibility(View.GONE);
|
|
||||||
final ViewGroup parent = (ViewGroup)findViewById(R.id.wifi_config_ui);
|
|
||||||
parent.setVisibility(View.VISIBLE);
|
|
||||||
parent.removeAllViews();
|
|
||||||
mWifiConfig = new WifiConfigUiForSetupWizardXL(this, parent, selectedAccessPoint, edit);
|
|
||||||
|
|
||||||
if (selectedAccessPoint == null) { // "Add network" flow
|
|
||||||
showAddNetworkTitle();
|
|
||||||
mConnectButton.setVisibility(View.VISIBLE);
|
|
||||||
|
|
||||||
showDisconnectedProgressBar();
|
|
||||||
showEditingButtonState();
|
|
||||||
} else if (selectedAccessPoint.getSecurity() == AccessPoint.SECURITY_NONE) {
|
|
||||||
mNetworkName = selectedAccessPoint.getSsid().toString();
|
|
||||||
|
|
||||||
// onConnectButtonPressed() will change visibility status.
|
|
||||||
mConnectButton.performClick();
|
|
||||||
} else {
|
|
||||||
mNetworkName = selectedAccessPoint.getSsid().toString();
|
|
||||||
showEditingTitle();
|
|
||||||
showDisconnectedProgressBar();
|
|
||||||
showEditingButtonState();
|
|
||||||
if (selectedAccessPoint.getSecurity() == AccessPoint.SECURITY_EAP) {
|
|
||||||
onEapNetworkSelected();
|
|
||||||
} else {
|
|
||||||
mConnectButton.setVisibility(View.VISIBLE);
|
|
||||||
|
|
||||||
// WifiConfigController shows Connect button as "Save" when edit==true and a user
|
|
||||||
// tried to connect the network.
|
|
||||||
// In SetupWizard, we just show the button as "Connect" instead.
|
|
||||||
mConnectButton.setText(R.string.wifi_connect);
|
|
||||||
mBackButton.setText(R.string.wifi_setup_cancel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called before security fields are correctly set by {@link WifiConfigController}.
|
|
||||||
*
|
|
||||||
* @param view security field view
|
|
||||||
* @param accessPointSecurity type of security. e.g. AccessPoint.SECURITY_NONE
|
|
||||||
* @return true when it is ok for the caller to init security fields. false when
|
|
||||||
* all security fields are managed by this method, and thus the caller shouldn't touch them.
|
|
||||||
*/
|
|
||||||
/* package */ boolean initSecurityFields(View view, int accessPointSecurity) {
|
|
||||||
// Reset all states tweaked below.
|
|
||||||
view.findViewById(R.id.eap_not_supported).setVisibility(View.GONE);
|
|
||||||
view.findViewById(R.id.eap_not_supported_for_add_network).setVisibility(View.GONE);
|
|
||||||
view.findViewById(R.id.ssid_text).setVisibility(View.VISIBLE);
|
|
||||||
view.findViewById(R.id.ssid_layout).setVisibility(View.VISIBLE);
|
|
||||||
|
|
||||||
if (accessPointSecurity == AccessPoint.SECURITY_EAP) {
|
|
||||||
setPaddingVisibility(View.VISIBLE);
|
|
||||||
hideSoftwareKeyboard();
|
|
||||||
|
|
||||||
// In SetupWizard for XLarge screen, we don't have enough space for showing
|
|
||||||
// configurations needed for EAP. We instead disable the whole feature there and let
|
|
||||||
// users configure those networks after the setup.
|
|
||||||
if (view.findViewById(R.id.type_ssid).getVisibility() == View.VISIBLE) {
|
|
||||||
view.findViewById(R.id.eap_not_supported_for_add_network)
|
|
||||||
.setVisibility(View.VISIBLE);
|
|
||||||
} else {
|
|
||||||
view.findViewById(R.id.eap_not_supported).setVisibility(View.VISIBLE);
|
|
||||||
}
|
|
||||||
view.findViewById(R.id.security_fields).setVisibility(View.GONE);
|
|
||||||
view.findViewById(R.id.ssid_text).setVisibility(View.GONE);
|
|
||||||
view.findViewById(R.id.ssid_layout).setVisibility(View.GONE);
|
|
||||||
onEapNetworkSelected();
|
|
||||||
|
|
||||||
// This method did init security fields by itself. The caller must not do it.
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
mConnectButton.setVisibility(View.VISIBLE);
|
|
||||||
setPaddingVisibility(View.GONE);
|
|
||||||
|
|
||||||
// In "add network" flow, we'll see multiple initSecurityFields() calls with different
|
|
||||||
// accessPointSecurity variable. We want to show software keyboard conditionally everytime
|
|
||||||
// when this method is called.
|
|
||||||
if (mWifiConfig != null) {
|
|
||||||
if (accessPointSecurity == AccessPoint.SECURITY_PSK ||
|
|
||||||
accessPointSecurity == AccessPoint.SECURITY_WEP) {
|
|
||||||
mWifiConfig.requestFocusAndShowKeyboard(R.id.password);
|
|
||||||
} else {
|
|
||||||
mWifiConfig.requestFocusAndShowKeyboard(R.id.ssid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Let the caller init security fields.
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onEapNetworkSelected() {
|
|
||||||
mConnectButton.setVisibility(View.GONE);
|
|
||||||
mBackButton.setText(R.string.wifi_setup_back);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showEditingButtonState() {
|
|
||||||
mSkipOrNextButton.setVisibility(View.GONE);
|
|
||||||
mAddNetworkButton.setVisibility(View.GONE);
|
|
||||||
mRefreshButton.setVisibility(View.GONE);
|
|
||||||
mBackButton.setVisibility(View.VISIBLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// May be called when user press "connect" button in WifiDialog
|
|
||||||
/* package */ void onConnectButtonPressed() {
|
|
||||||
mScreenState = SCREEN_STATE_CONNECTING;
|
|
||||||
|
|
||||||
mWifiSettings.submit(mWifiConfig.getController());
|
|
||||||
|
|
||||||
// updateConnectionState() isn't called soon by the main Wifi module after the user's
|
|
||||||
// "connect" request, and the user still sees "not connected" message for a while, which
|
|
||||||
// looks strange for users though legitimate from the view of the module.
|
|
||||||
//
|
|
||||||
// We instead manually show "connecting" message before the system gets actual
|
|
||||||
// "connecting" message from Wifi module.
|
|
||||||
showConnectingState();
|
|
||||||
|
|
||||||
// Might be better to delay showing this button.
|
|
||||||
mBackButton.setVisibility(View.VISIBLE);
|
|
||||||
mBackButton.setText(R.string.wifi_setup_back);
|
|
||||||
|
|
||||||
final ViewGroup parent = (ViewGroup)findViewById(R.id.wifi_config_ui);
|
|
||||||
parent.setVisibility(View.GONE);
|
|
||||||
mConnectingStatusLayout.setVisibility(View.VISIBLE);
|
|
||||||
mConnectingStatusView.setText(R.string.wifi_setup_description_connecting);
|
|
||||||
|
|
||||||
mSkipOrNextButton.setVisibility(View.VISIBLE);
|
|
||||||
mSkipOrNextButton.setEnabled(false);
|
|
||||||
mConnectButton.setVisibility(View.GONE);
|
|
||||||
mAddNetworkButton.setVisibility(View.GONE);
|
|
||||||
mRefreshButton.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onBackButtonPressed() {
|
|
||||||
|
|
||||||
if (mScreenState == SCREEN_STATE_CONNECTING || mScreenState == SCREEN_STATE_CONNECTED) {
|
|
||||||
if (DEBUG) Log.d(TAG, "Back button pressed after connect action.");
|
|
||||||
mScreenState = SCREEN_STATE_DISCONNECTED;
|
|
||||||
|
|
||||||
// When a user press "Back" button after pressing "Connect" button, we want to cancel
|
|
||||||
// the "Connect" request and refresh the whole Wifi status.
|
|
||||||
restoreFirstVisibilityState();
|
|
||||||
|
|
||||||
mSkipOrNextButton.setEnabled(true);
|
|
||||||
changeNextButtonState(false); // Skip
|
|
||||||
|
|
||||||
// Wifi list becomes empty for a moment. We show "scanning" effect to a user so that
|
|
||||||
// he/she won't be astonished there. This stops once the scan finishes.
|
|
||||||
showScanningState();
|
|
||||||
|
|
||||||
// Remembered networks may be re-used during SetupWizard, which confuse users.
|
|
||||||
// We force the module to forget them to reduce UX complexity
|
|
||||||
final List<WifiConfiguration> configs = mWifiManager.getConfiguredNetworks();
|
|
||||||
for (WifiConfiguration config : configs) {
|
|
||||||
if (DEBUG) {
|
|
||||||
Log.d(TAG, String.format("forgeting Wi-Fi network \"%s\" (id: %d)",
|
|
||||||
config.SSID, config.networkId));
|
|
||||||
}
|
|
||||||
mWifiManager.forget(config.networkId, new WifiManager.ActionListener() {
|
|
||||||
public void onSuccess() {
|
|
||||||
}
|
|
||||||
public void onFailure(int reason) {
|
|
||||||
//TODO: Add failure UI
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
mWifiSettingsFragmentLayout.setVisibility(View.GONE);
|
|
||||||
refreshAccessPoints(true);
|
|
||||||
} else { // During user's Wifi configuration.
|
|
||||||
mScreenState = SCREEN_STATE_DISCONNECTED;
|
|
||||||
mWifiSettings.resumeWifiScan();
|
|
||||||
|
|
||||||
restoreFirstVisibilityState();
|
|
||||||
|
|
||||||
mAddNetworkButton.setEnabled(true);
|
|
||||||
mRefreshButton.setEnabled(true);
|
|
||||||
mSkipOrNextButton.setEnabled(true);
|
|
||||||
showDisconnectedProgressBar();
|
|
||||||
mWifiSettingsFragmentLayout.setVisibility(View.VISIBLE);
|
|
||||||
mBottomPadding.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
|
|
||||||
setPaddingVisibility(View.VISIBLE);
|
|
||||||
mConnectingStatusLayout.setVisibility(View.GONE);
|
|
||||||
final ViewGroup parent = (ViewGroup)findViewById(R.id.wifi_config_ui);
|
|
||||||
parent.removeAllViews();
|
|
||||||
parent.setVisibility(View.GONE);
|
|
||||||
mWifiConfig = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param connected true when the device is connected to a specific network.
|
|
||||||
*/
|
|
||||||
/* package */ void changeNextButtonState(boolean connected) {
|
|
||||||
if (connected) {
|
|
||||||
mSkipOrNextButton.setText(R.string.wifi_setup_next);
|
|
||||||
} else {
|
|
||||||
mSkipOrNextButton.setText(R.string.wifi_setup_skip);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when the list of AccessPoints are modified and this Activity needs to refresh
|
|
||||||
* the list.
|
|
||||||
* @param preferenceScreen
|
|
||||||
*/
|
|
||||||
/* package */ void onAccessPointsUpdated(
|
|
||||||
PreferenceScreen preferenceScreen, Collection<AccessPoint> accessPoints) {
|
|
||||||
// If we already show some of access points but the bar still shows "scanning" state, it
|
|
||||||
// should be stopped.
|
|
||||||
if (mProgressBar.isIndeterminate() && accessPoints.size() > 0) {
|
|
||||||
showDisconnectedProgressBar();
|
|
||||||
if (mScreenState == SCREEN_STATE_DISCONNECTED) {
|
|
||||||
mWifiSettingsFragmentLayout.setVisibility(View.VISIBLE);
|
|
||||||
mBottomPadding.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
mAddNetworkButton.setEnabled(true);
|
|
||||||
mRefreshButton.setEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (AccessPoint accessPoint : accessPoints) {
|
|
||||||
AccessPointPreference preference = (AccessPointPreference) accessPoint.getTag();
|
|
||||||
if (preference == null) continue;
|
|
||||||
preference.setLayoutResource(R.layout.custom_preference);
|
|
||||||
preferenceScreen.addPreference(preference);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void refreshAccessPoints(boolean disconnectNetwork) {
|
|
||||||
showScanningState();
|
|
||||||
|
|
||||||
if (disconnectNetwork) {
|
|
||||||
mWifiManager.disconnect();
|
|
||||||
}
|
|
||||||
|
|
||||||
mWifiSettings.refreshAccessPoints();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when {@link WifiSettings} received
|
|
||||||
* {@link WifiManager#SUPPLICANT_STATE_CHANGED_ACTION}.
|
|
||||||
*/
|
|
||||||
/* package */ void onSupplicantStateChanged(Intent intent) {
|
|
||||||
final int errorCode = intent.getIntExtra(WifiManager.EXTRA_SUPPLICANT_ERROR, -1);
|
|
||||||
if (errorCode == WifiManager.ERROR_AUTHENTICATING) {
|
|
||||||
Log.i(TAG, "Received authentication error event.");
|
|
||||||
onAuthenticationFailure();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called once when Authentication failed.
|
|
||||||
*/
|
|
||||||
private void onAuthenticationFailure() {
|
|
||||||
mScreenState = SCREEN_STATE_EDITING;
|
|
||||||
|
|
||||||
mSkipOrNextButton.setVisibility(View.GONE);
|
|
||||||
mConnectButton.setVisibility(View.VISIBLE);
|
|
||||||
mConnectButton.setEnabled(true);
|
|
||||||
|
|
||||||
if (!TextUtils.isEmpty(mEditingTitle)) {
|
|
||||||
mTitleView.setText(mEditingTitle);
|
|
||||||
} else {
|
|
||||||
Log.w(TAG, "Title during editing/adding a network was empty.");
|
|
||||||
showEditingTitle();
|
|
||||||
}
|
|
||||||
|
|
||||||
final ViewGroup parent = (ViewGroup)findViewById(R.id.wifi_config_ui);
|
|
||||||
parent.setVisibility(View.VISIBLE);
|
|
||||||
mConnectingStatusLayout.setVisibility(View.GONE);
|
|
||||||
|
|
||||||
showDisconnectedProgressBar();
|
|
||||||
setPaddingVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Used by WifiConfigUiForSetupWizardXL
|
|
||||||
/* package */ void setPaddingVisibility(int visibility) {
|
|
||||||
mTopPadding.setVisibility(visibility);
|
|
||||||
mContentPadding.setVisibility(visibility);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showDisconnectedProgressBar() {
|
|
||||||
// The device may report DISCONNECTED during connecting to a network, at which we don't
|
|
||||||
// want to lose bottom padding of top divider implicitly added by ProgressBar.
|
|
||||||
if (mScreenState == SCREEN_STATE_DISCONNECTED) {
|
|
||||||
mProgressBar.setVisibility(View.GONE);
|
|
||||||
mProgressBar.setIndeterminate(false);
|
|
||||||
mTopDividerNoProgress.setVisibility(View.VISIBLE);
|
|
||||||
} else {
|
|
||||||
mProgressBar.setVisibility(View.VISIBLE);
|
|
||||||
mProgressBar.setIndeterminate(false);
|
|
||||||
mProgressBar.setProgress(0);
|
|
||||||
mTopDividerNoProgress.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Shows top divider with ProgressBar, whose state is intermediate.
|
|
||||||
*/
|
|
||||||
private void showScanningProgressBar() {
|
|
||||||
showTopDividerWithProgressBar();
|
|
||||||
mProgressBar.setIndeterminate(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Shows top divider with ProgressBar, showing "connecting" state.
|
|
||||||
*/
|
|
||||||
private void showConnectingProgressBar() {
|
|
||||||
showTopDividerWithProgressBar();
|
|
||||||
mProgressBar.setIndeterminate(false);
|
|
||||||
mProgressBar.setProgress(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showConnectedProgressBar() {
|
|
||||||
showTopDividerWithProgressBar();
|
|
||||||
mProgressBar.setIndeterminate(false);
|
|
||||||
mProgressBar.setProgress(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when WifiManager is requested to save a network.
|
|
||||||
*/
|
|
||||||
/* package */ void onSaveNetwork(WifiConfiguration config) {
|
|
||||||
// We want to both save and connect a network. connectNetwork() does both.
|
|
||||||
mWifiManager.connect(config, new WifiManager.ActionListener() {
|
|
||||||
public void onSuccess() {
|
|
||||||
}
|
|
||||||
public void onFailure(int reason) {
|
|
||||||
//TODO: Add failure UI
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
Reference in New Issue
Block a user