Add additional preference items to WifiSettings for configuring Wi-Fi.
Removed the gear icon that links to ConfigureWifiSettings activity, and added links to ConfigureWifiSettings and SavedAccessPointSettings. Included these links in the wifi disabled screen. Also refactored code to have dividers between wifi list and other settings, and changed refresh menu item to a button. Bug: 34518148 Bug: 33110624 Test: Manual inspection Change-Id: Ie40935f553faea59b7a76fc050d970d431cef5ad
This commit is contained in:
@@ -40,11 +40,10 @@ import android.os.HandlerThread;
|
||||
import android.os.Process;
|
||||
import android.provider.Settings;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceCategory;
|
||||
import android.support.v7.preference.PreferenceManager;
|
||||
import android.support.v7.preference.PreferenceViewHolder;
|
||||
import android.text.Spannable;
|
||||
import android.text.TextUtils;
|
||||
import android.text.style.TextAppearanceSpan;
|
||||
import android.util.Log;
|
||||
import android.view.ContextMenu;
|
||||
import android.view.ContextMenu.ContextMenuInfo;
|
||||
@@ -53,8 +52,6 @@ import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import android.widget.TextView.BufferType;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
@@ -102,7 +99,6 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
private static final int MENU_ID_FORGET = Menu.FIRST + 7;
|
||||
private static final int MENU_ID_MODIFY = Menu.FIRST + 8;
|
||||
private static final int MENU_ID_WRITE_NFC = Menu.FIRST + 9;
|
||||
private static final int MENU_ID_CONFIGURE = Menu.FIRST + 10;
|
||||
|
||||
public static final int WIFI_DIALOG_ID = 1;
|
||||
/* package */ static final int WPS_PBC_DIALOG_ID = 2;
|
||||
@@ -115,6 +111,9 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
private static final String SAVED_WIFI_NFC_DIALOG_STATE = "wifi_nfc_dlg_state";
|
||||
|
||||
private static final String PREF_KEY_EMPTY_WIFI_LIST = "wifi_empty_list";
|
||||
private static final String PREF_KEY_ACCESS_POINTS = "access_points";
|
||||
private static final String PREF_KEY_ADDITIONAL_SETTINGS = "additional_settings";
|
||||
private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks";
|
||||
|
||||
protected WifiManager mWifiManager;
|
||||
private WifiManager.ActionListener mConnectListener;
|
||||
@@ -152,7 +151,12 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
private HandlerThread mBgThread;
|
||||
|
||||
private AccessPointPreference.UserBadgeCache mUserBadgeCache;
|
||||
|
||||
private PreferenceCategory mAccessPointsPreferenceCategory;
|
||||
private PreferenceCategory mAdditionalSettingsPreferenceCategory;
|
||||
private Preference mAddPreference;
|
||||
private Preference mSavedNetworksPreference;
|
||||
private LinkablePreference mStatusMessagePreference;
|
||||
|
||||
private MenuItem mScanMenuItem;
|
||||
|
||||
@@ -177,9 +181,18 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
getPreferenceManager().setPreferenceComparisonCallback(
|
||||
new PreferenceManager.SimplePreferenceComparisonCallback());
|
||||
addPreferencesFromResource(R.xml.wifi_settings);
|
||||
mAddPreference = new Preference(getContext());
|
||||
|
||||
mAccessPointsPreferenceCategory =
|
||||
(PreferenceCategory) findPreference(PREF_KEY_ACCESS_POINTS);
|
||||
mAdditionalSettingsPreferenceCategory =
|
||||
(PreferenceCategory) findPreference(PREF_KEY_ADDITIONAL_SETTINGS);
|
||||
mSavedNetworksPreference = findPreference(PREF_KEY_SAVED_NETWORKS);
|
||||
|
||||
Context prefContext = getPrefContext();
|
||||
mAddPreference = new Preference(prefContext);
|
||||
mAddPreference.setIcon(R.drawable.ic_menu_add_inset);
|
||||
mAddPreference.setTitle(R.string.wifi_add_network);
|
||||
mStatusMessagePreference = new LinkablePreference(prefContext);
|
||||
|
||||
mUserBadgeCache = new AccessPointPreference.UserBadgeCache(getPackageManager());
|
||||
|
||||
@@ -314,7 +327,6 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
public void onResume() {
|
||||
final Activity activity = getActivity();
|
||||
super.onResume();
|
||||
removePreference("dummy");
|
||||
if (mWifiEnabler != null) {
|
||||
mWifiEnabler.resume(activity);
|
||||
}
|
||||
@@ -346,14 +358,13 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
* @param menu
|
||||
*/
|
||||
void addOptionsMenuItems(Menu menu) {
|
||||
final boolean wifiIsEnabled = mWifiTracker.isWifiEnabled();
|
||||
mScanMenuItem = menu.add(Menu.NONE, MENU_ID_SCAN, 0, R.string.menu_stats_refresh);
|
||||
mScanMenuItem.setEnabled(wifiIsEnabled)
|
||||
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
|
||||
menu.add(Menu.NONE, MENU_ID_ADVANCED, 0, R.string.wifi_menu_advanced)
|
||||
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
|
||||
menu.add(Menu.NONE, MENU_ID_CONFIGURE, 0, R.string.wifi_menu_configure)
|
||||
.setIcon(R.drawable.ic_settings_24dp)
|
||||
|
||||
final boolean wifiIsEnabled = mWifiTracker.isWifiEnabled();
|
||||
mScanMenuItem = menu.add(Menu.NONE, MENU_ID_SCAN, 0, R.string.menu_stats_refresh)
|
||||
.setIcon(com.android.internal.R.drawable.ic_menu_refresh);
|
||||
mScanMenuItem.setEnabled(wifiIsEnabled)
|
||||
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
}
|
||||
|
||||
@@ -424,18 +435,6 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
null);
|
||||
}
|
||||
return true;
|
||||
case MENU_ID_CONFIGURE:
|
||||
if (getActivity() instanceof SettingsActivity) {
|
||||
((SettingsActivity) getActivity()).startPreferencePanel(
|
||||
ConfigureWifiSettings.class.getCanonicalName(), null,
|
||||
R.string.wifi_configure_titlebar, null, this, 0);
|
||||
} else {
|
||||
startFragment(this, ConfigureWifiSettings.class.getCanonicalName(),
|
||||
R.string.wifi_configure_titlebar, -1 /* Do not request a results */,
|
||||
null);
|
||||
}
|
||||
return true;
|
||||
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
@@ -622,10 +621,10 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
// Safeguard from some delayed event handling
|
||||
if (getActivity() == null) return;
|
||||
if (isUiRestricted()) {
|
||||
mAccessPointsPreferenceCategory.removeAll();
|
||||
if (!isUiRestrictedByOnlyAdmin()) {
|
||||
addMessagePreference(R.string.wifi_empty_list_user_restricted);
|
||||
}
|
||||
getPreferenceScreen().removeAll();
|
||||
return;
|
||||
}
|
||||
final int wifiState = mWifiManager.getWifiState();
|
||||
@@ -638,7 +637,8 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
|
||||
boolean hasAvailableAccessPoints = false;
|
||||
int index = 0;
|
||||
cacheRemoveAllPrefs(getPreferenceScreen());
|
||||
mAccessPointsPreferenceCategory.removePreference(mStatusMessagePreference);
|
||||
cacheRemoveAllPrefs(mAccessPointsPreferenceCategory);
|
||||
for (AccessPoint accessPoint : accessPoints) {
|
||||
// Ignore access points that are out of range.
|
||||
if (accessPoint.getLevel() != -1) {
|
||||
@@ -665,12 +665,12 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
onPreferenceTreeClick(preference);
|
||||
mOpenSsid = null;
|
||||
}
|
||||
getPreferenceScreen().addPreference(preference);
|
||||
mAccessPointsPreferenceCategory.addPreference(preference);
|
||||
accessPoint.setListener(this);
|
||||
preference.refresh();
|
||||
}
|
||||
}
|
||||
removeCachedPrefs(getPreferenceScreen());
|
||||
removeCachedPrefs(mAccessPointsPreferenceCategory);
|
||||
if (!hasAvailableAccessPoints) {
|
||||
setProgressBarVisible(true);
|
||||
Preference pref = new Preference(getContext()) {
|
||||
@@ -683,14 +683,16 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
};
|
||||
pref.setSelectable(false);
|
||||
pref.setSummary(R.string.wifi_empty_list_wifi_on);
|
||||
pref.setOrder(0);
|
||||
pref.setOrder(index++);
|
||||
pref.setKey(PREF_KEY_EMPTY_WIFI_LIST);
|
||||
getPreferenceScreen().addPreference(pref);
|
||||
mAddPreference.setOrder(1);
|
||||
getPreferenceScreen().addPreference(mAddPreference);
|
||||
mAccessPointsPreferenceCategory.addPreference(pref);
|
||||
mAddPreference.setOrder(index++);
|
||||
mAccessPointsPreferenceCategory.addPreference(mAddPreference);
|
||||
setSavedNetworkPreferenceVisibility();
|
||||
} else {
|
||||
mAddPreference.setOrder(index++);
|
||||
getPreferenceScreen().addPreference(mAddPreference);
|
||||
mAccessPointsPreferenceCategory.addPreference(mAddPreference);
|
||||
setSavedNetworkPreferenceVisibility();
|
||||
setProgressBarVisible(false);
|
||||
}
|
||||
if (mScanMenuItem != null) {
|
||||
@@ -699,7 +701,7 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
break;
|
||||
|
||||
case WifiManager.WIFI_STATE_ENABLING:
|
||||
getPreferenceScreen().removeAll();
|
||||
mAccessPointsPreferenceCategory.removeAll();
|
||||
setProgressBarVisible(true);
|
||||
break;
|
||||
|
||||
@@ -710,6 +712,7 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
|
||||
case WifiManager.WIFI_STATE_DISABLED:
|
||||
setOffMessage();
|
||||
setSavedNetworkPreferenceVisibility();
|
||||
setProgressBarVisible(false);
|
||||
if (mScanMenuItem != null) {
|
||||
mScanMenuItem.setEnabled(false);
|
||||
@@ -718,17 +721,20 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
}
|
||||
}
|
||||
|
||||
private void setSavedNetworkPreferenceVisibility() {
|
||||
if (mWifiTracker.doSavedNetworksExist()) {
|
||||
mAdditionalSettingsPreferenceCategory.addPreference(mSavedNetworksPreference);
|
||||
} else {
|
||||
mAdditionalSettingsPreferenceCategory.removePreference(mSavedNetworksPreference);
|
||||
}
|
||||
}
|
||||
|
||||
private void setOffMessage() {
|
||||
if (isUiRestricted()) {
|
||||
if (!isUiRestrictedByOnlyAdmin()) {
|
||||
addMessagePreference(R.string.wifi_empty_list_user_restricted);
|
||||
}
|
||||
getPreferenceScreen().removeAll();
|
||||
return;
|
||||
}
|
||||
|
||||
TextView emptyTextView = getEmptyTextView();
|
||||
if (emptyTextView == null) {
|
||||
mAccessPointsPreferenceCategory.removeAll();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -744,35 +750,27 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
if (!wifiScanningMode) {
|
||||
// Show only the brief text if the user is not allowed to configure scanning settings,
|
||||
// or the scanning mode has been turned off.
|
||||
emptyTextView.setText(briefText, BufferType.SPANNABLE);
|
||||
mStatusMessagePreference.setTitle(briefText);
|
||||
} else {
|
||||
// Append the description of scanning settings with link.
|
||||
final StringBuilder contentBuilder = new StringBuilder();
|
||||
contentBuilder.append(briefText);
|
||||
contentBuilder.append("\n\n");
|
||||
contentBuilder.append(getText(R.string.wifi_scan_notify_text));
|
||||
LinkifyUtils.linkify(emptyTextView, contentBuilder, new LinkifyUtils.OnClickListener() {
|
||||
LinkifyUtils.OnClickListener clickListener = new LinkifyUtils.OnClickListener() {
|
||||
@Override
|
||||
public void onClick() {
|
||||
final SettingsActivity activity =
|
||||
(SettingsActivity) WifiSettings.this.getActivity();
|
||||
final SettingsActivity activity = (SettingsActivity) getActivity();
|
||||
activity.startPreferencePanel(ScanningSettings.class.getName(), null,
|
||||
R.string.location_scanning_screen_title, null, null, 0);
|
||||
}
|
||||
});
|
||||
};
|
||||
mStatusMessagePreference.setText(
|
||||
briefText, getText(R.string.wifi_scan_notify_text), clickListener);
|
||||
}
|
||||
// Embolden and enlarge the brief description anyway.
|
||||
Spannable boldSpan = (Spannable) emptyTextView.getText();
|
||||
boldSpan.setSpan(
|
||||
new TextAppearanceSpan(getActivity(), android.R.style.TextAppearance_Medium), 0,
|
||||
briefText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
getPreferenceScreen().removeAll();
|
||||
mAccessPointsPreferenceCategory.removeAll();
|
||||
mAccessPointsPreferenceCategory.addPreference(mStatusMessagePreference);
|
||||
}
|
||||
|
||||
private void addMessagePreference(int messageId) {
|
||||
TextView emptyTextView = getEmptyTextView();
|
||||
if (emptyTextView != null) emptyTextView.setText(messageId);
|
||||
getPreferenceScreen().removeAll();
|
||||
mStatusMessagePreference.setTitle(messageId);
|
||||
mAccessPointsPreferenceCategory.removeAll();
|
||||
mAccessPointsPreferenceCategory.addPreference(mStatusMessagePreference);
|
||||
}
|
||||
|
||||
protected void setProgressBarVisible(boolean visible) {
|
||||
|
Reference in New Issue
Block a user