[WifiSettings] Add Wi-Fi dialog activity

Add a Wi-Fi dialog activity that can be started by setup wizard to
connect to a Wi-Fi access point.

Also refactored mEdit and mModify in WifiConfigController into an
int-enum mMode, with modes view, connect and modify. This is how the
new modes maps to the old flags:

MODE_VIEW     --  mEdit = false, mModify = *
MODE_CONNECT  --  mEdit = true, mModify = false
MODE_MODIFY   --  mEdit = true, mModify = true

Bug: 23426311
Change-Id: I8e2221fd3c42577068e07686dab245dd5888e0ae
This commit is contained in:
Maurice Lam
2015-09-08 10:36:43 -07:00
parent 2662df8433
commit 771fac591f
8 changed files with 187 additions and 53 deletions

View File

@@ -112,8 +112,7 @@ public class WifiSettings extends RestrictedSettingsFragment
private static final int WRITE_NFC_DIALOG_ID = 6;
// Instance state keys
private static final String SAVE_DIALOG_EDIT_MODE = "edit_mode";
private static final String SAVE_DIALOG_MODIFY_MODE = "modify_mode";
private static final String SAVE_DIALOG_MODE = "dialog_mode";
private static final String SAVE_DIALOG_ACCESS_POINT_STATE = "wifi_ap_state";
private static final String SAVED_WIFI_NFC_DIALOG_STATE = "wifi_nfc_dlg_state";
@@ -145,8 +144,7 @@ public class WifiSettings extends RestrictedSettingsFragment
private boolean mEnableNextOnConnection;
// Save the dialog details
private boolean mDlgModify;
private boolean mDlgEdit;
private int mDialogMode;
private AccessPoint mDlgAccessPoint;
private Bundle mAccessPointSavedState;
private Bundle mWifiNfcDialogSavedState;
@@ -243,8 +241,7 @@ public class WifiSettings extends RestrictedSettingsFragment
};
if (savedInstanceState != null) {
mDlgEdit = savedInstanceState.getBoolean(SAVE_DIALOG_EDIT_MODE);
mDlgModify = savedInstanceState.getBoolean(SAVE_DIALOG_MODIFY_MODE);
mDialogMode = savedInstanceState.getInt(SAVE_DIALOG_MODE);
if (savedInstanceState.containsKey(SAVE_DIALOG_ACCESS_POINT_STATE)) {
mAccessPointSavedState =
savedInstanceState.getBundle(SAVE_DIALOG_ACCESS_POINT_STATE);
@@ -375,8 +372,7 @@ public class WifiSettings extends RestrictedSettingsFragment
// If the dialog is showing, save its state.
if (mDialog != null && mDialog.isShowing()) {
outState.putBoolean(SAVE_DIALOG_EDIT_MODE, mDlgEdit);
outState.putBoolean(SAVE_DIALOG_MODIFY_MODE, mDlgModify);
outState.putInt(SAVE_DIALOG_MODE, mDialogMode);
if (mDlgAccessPoint != null) {
mAccessPointSavedState = new Bundle();
mDlgAccessPoint.saveWifiState(mAccessPointSavedState);
@@ -504,8 +500,7 @@ public class WifiSettings extends RestrictedSettingsFragment
mSelectedAccessPoint.generateOpenNetworkConfig();
connect(mSelectedAccessPoint.getConfig());
} else {
mDlgModify = false;
showDialog(mSelectedAccessPoint, true);
showDialog(mSelectedAccessPoint, WifiConfigUiBase.MODE_CONNECT);
}
return true;
}
@@ -514,8 +509,7 @@ public class WifiSettings extends RestrictedSettingsFragment
return true;
}
case MENU_ID_MODIFY: {
mDlgModify = true;
showDialog(mSelectedAccessPoint, true);
showDialog(mSelectedAccessPoint, WifiConfigUiBase.MODE_MODIFY);
return true;
}
case MENU_ID_WRITE_NFC:
@@ -540,11 +534,9 @@ public class WifiSettings extends RestrictedSettingsFragment
}
connect(mSelectedAccessPoint.getConfig());
} else if (mSelectedAccessPoint.isSaved()){
mDlgModify = false;
showDialog(mSelectedAccessPoint, false);
showDialog(mSelectedAccessPoint, WifiConfigUiBase.MODE_VIEW);
} else {
mDlgModify = false;
showDialog(mSelectedAccessPoint, true);
showDialog(mSelectedAccessPoint, WifiConfigUiBase.MODE_CONNECT);
}
} else {
return super.onPreferenceTreeClick(screen, preference);
@@ -552,7 +544,7 @@ public class WifiSettings extends RestrictedSettingsFragment
return true;
}
private void showDialog(AccessPoint accessPoint, boolean edit) {
private void showDialog(AccessPoint accessPoint, int dialogMode) {
if (accessPoint != null) {
WifiConfiguration config = accessPoint.getConfig();
if (isEditabilityLockedDown(getActivity(), config) && accessPoint.isActive()) {
@@ -587,7 +579,7 @@ public class WifiSettings extends RestrictedSettingsFragment
// Save the access point and edit mode
mDlgAccessPoint = accessPoint;
mDlgEdit = edit;
mDialogMode = dialogMode;
showDialog(WIFI_DIALOG_ID);
}
@@ -610,8 +602,8 @@ public class WifiSettings extends RestrictedSettingsFragment
mSelectedAccessPoint = ap;
final boolean hideForget = (ap == null || isEditabilityLockedDown(getActivity(),
ap.getConfig()));
mDialog = new WifiDialog(getActivity(), this, ap, mDlgEdit,
mDlgModify, /* no hide submit/connect */ false,
mDialog = new WifiDialog(getActivity(), this, ap, mDialogMode,
/* no hide submit/connect */ false,
/* hide forget if config locked down */ hideForget);
return mDialog;
case WPS_PBC_DIALOG_ID:
@@ -830,7 +822,7 @@ public class WifiSettings extends RestrictedSettingsFragment
&& mSelectedAccessPoint.isSaved()) {
connect(mSelectedAccessPoint.getConfig());
}
} else if (configController.isModify()) {
} else if (configController.getMode() == WifiConfigUiBase.MODE_MODIFY) {
mWifiManager.save(config, mSaveListener);
} else {
mWifiManager.save(config, mSaveListener);
@@ -891,7 +883,7 @@ public class WifiSettings extends RestrictedSettingsFragment
MetricsLogger.action(getActivity(), MetricsLogger.ACTION_WIFI_ADD_NETWORK);
// No exact access point is selected.
mSelectedAccessPoint = null;
showDialog(null, true);
showDialog(null, WifiConfigUiBase.MODE_CONNECT);
}
/* package */ int getAccessPointsCount() {