Add a "Add Network" button to SavedAccessPointsWifiSettings
Bug: 36719359 Test: runtest --path packages/apps/Settings/tests/unit/src/com/android/settings/wifi/SavedNetworkSettingsTest.java Test: Open saved networks from WifiSettings. Ensure that exiting and resuming the activity keeps the "Add Network" button on the bottom of the network list. This is tested through the cases where networks are forgotten/saved before resuming, and that pausing/resuming when the dialog is open or closed does not affect the result. Change-Id: Ib719a1f6b9468c0f8f44470eeed9144904672cf1
This commit is contained in:
@@ -16,13 +16,12 @@
|
||||
|
||||
package com.android.settings.wifi;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.icu.text.Collator;
|
||||
import android.net.wifi.WifiConfiguration;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.net.wifi.hotspot2.PasspointConfiguration;
|
||||
import android.os.Bundle;
|
||||
import android.provider.SearchIndexableResource;
|
||||
import android.support.v7.preference.Preference;
|
||||
@@ -48,6 +47,7 @@ import java.util.List;
|
||||
|
||||
/**
|
||||
* UI to manage saved networks/access points.
|
||||
* TODO(b/64806699): convert to {@link DashboardFragment} with {@link PreferenceController}s
|
||||
*/
|
||||
public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
||||
implements Indexable, WifiDialog.WifiDialogListener {
|
||||
@@ -83,6 +83,7 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
||||
private AccessPoint mDlgAccessPoint;
|
||||
private Bundle mAccessPointSavedState;
|
||||
private AccessPoint mSelectedAccessPoint;
|
||||
private Preference mAddNetworkPreference;
|
||||
|
||||
private AccessPointPreference.UserBadgeCache mUserBadgeCache;
|
||||
|
||||
@@ -142,23 +143,38 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
||||
preference.setIcon(null);
|
||||
preferenceScreen.addPreference(preference);
|
||||
}
|
||||
preference.setOrder(i);
|
||||
}
|
||||
|
||||
removeCachedPrefs(preferenceScreen);
|
||||
|
||||
if (mAddNetworkPreference == null) {
|
||||
mAddNetworkPreference = new Preference(getPrefContext());
|
||||
mAddNetworkPreference.setIcon(R.drawable.ic_menu_add_inset);
|
||||
mAddNetworkPreference.setTitle(R.string.wifi_add_network);
|
||||
}
|
||||
mAddNetworkPreference.setOrder(accessPointsSize);
|
||||
preferenceScreen.addPreference(mAddNetworkPreference);
|
||||
|
||||
if(getPreferenceScreen().getPreferenceCount() < 1) {
|
||||
Log.w(TAG, "Saved networks activity loaded, but there are no saved networks!");
|
||||
}
|
||||
}
|
||||
|
||||
private void showDialog(LongPressAccessPointPreference accessPoint, boolean edit) {
|
||||
private void showWifiDialog(@Nullable LongPressAccessPointPreference accessPoint) {
|
||||
if (mDialog != null) {
|
||||
removeDialog(WifiSettings.WIFI_DIALOG_ID);
|
||||
mDialog = null;
|
||||
}
|
||||
|
||||
// Save the access point and edit mode
|
||||
mDlgAccessPoint = accessPoint.getAccessPoint();
|
||||
if (accessPoint != null) {
|
||||
// Save the access point and edit mode
|
||||
mDlgAccessPoint = accessPoint.getAccessPoint();
|
||||
} else {
|
||||
// No access point is selected. Clear saved state.
|
||||
mDlgAccessPoint = null;
|
||||
mAccessPointSavedState = null;
|
||||
}
|
||||
|
||||
showDialog(WifiSettings.WIFI_DIALOG_ID);
|
||||
}
|
||||
@@ -167,15 +183,23 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
||||
public Dialog onCreateDialog(int dialogId) {
|
||||
switch (dialogId) {
|
||||
case WifiSettings.WIFI_DIALOG_ID:
|
||||
if (mDlgAccessPoint == null) { // For re-launch from saved state
|
||||
mDlgAccessPoint = new AccessPoint(getActivity(), mAccessPointSavedState);
|
||||
// Reset the saved access point data
|
||||
mAccessPointSavedState = null;
|
||||
if (mDlgAccessPoint == null && mAccessPointSavedState == null) {
|
||||
// Add new network
|
||||
mDialog = WifiDialog.createFullscreen(getActivity(), this, null,
|
||||
WifiConfigUiBase.MODE_CONNECT);
|
||||
} else {
|
||||
// Modify network
|
||||
if (mDlgAccessPoint == null) {
|
||||
// Restore AP from save state
|
||||
mDlgAccessPoint = new AccessPoint(getActivity(), mAccessPointSavedState);
|
||||
// Reset the saved access point data
|
||||
mAccessPointSavedState = null;
|
||||
}
|
||||
mDialog = WifiDialog.createModal(getActivity(), this, mDlgAccessPoint,
|
||||
WifiConfigUiBase.MODE_VIEW);
|
||||
}
|
||||
mSelectedAccessPoint = mDlgAccessPoint;
|
||||
|
||||
mDialog = WifiDialog.createModal(getActivity(), this, mDlgAccessPoint,
|
||||
WifiConfigUiBase.MODE_VIEW);
|
||||
return mDialog;
|
||||
}
|
||||
return super.onCreateDialog(dialogId);
|
||||
@@ -233,9 +257,12 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
||||
@Override
|
||||
public boolean onPreferenceTreeClick(Preference preference) {
|
||||
if (preference instanceof LongPressAccessPointPreference) {
|
||||
showDialog((LongPressAccessPointPreference) preference, false);
|
||||
showWifiDialog((LongPressAccessPointPreference) preference);
|
||||
return true;
|
||||
} else{
|
||||
} else if (preference == mAddNetworkPreference) {
|
||||
showWifiDialog(null);
|
||||
return true;
|
||||
} else {
|
||||
return super.onPreferenceTreeClick(preference);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user