diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 596057292b8..c5e5eb73409 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -130,7 +130,8 @@ - + @@ -138,7 +139,8 @@ - + @@ -146,7 +148,8 @@ - + @@ -154,7 +157,8 @@ - + @@ -163,7 +167,7 @@ + android:targetActivity="Settings"> @@ -311,7 +315,8 @@ + android:label="@string/builtin_keyboard_settings_title" + android:theme="@android:style/Theme.Holo.DialogWhenLarge"> @@ -391,7 +396,7 @@ @@ -407,7 +412,7 @@ + android:theme="@*android:style/Theme.Holo.Dialog.Alert"> @@ -416,7 +421,7 @@ + android:theme="@*android:style/Theme.Holo.Dialog.Alert"> @@ -586,7 +591,9 @@ - @@ -667,7 +674,9 @@ - @@ -692,7 +701,9 @@ android:resource="@id/storage_settings" /> - + diff --git a/res/values/strings.xml b/res/values/strings.xml index 3aaed74c3d5..7a5174e7242 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -2711,6 +2711,8 @@ found in the list of installed applications. Add VPN Add VPN + + VPN details Add %s VPN diff --git a/res/values/styles.xml b/res/values/styles.xml index c24359b1652..991637b8997 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -79,7 +79,7 @@ @null - diff --git a/res/xml/device_info_settings.xml b/res/xml/device_info_settings.xml index 860c2ea012b..492c9d12ddb 100644 --- a/res/xml/device_info_settings.xml +++ b/res/xml/device_info_settings.xml @@ -35,11 +35,9 @@ - diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java index 41ff87f0c28..3c771f592ee 100644 --- a/src/com/android/settings/SettingsPreferenceFragment.java +++ b/src/com/android/settings/SettingsPreferenceFragment.java @@ -63,50 +63,12 @@ public class SettingsPreferenceFragment extends PreferenceFragment private Button mNextButton; - @Override - public void onResume() { - super.onResume(); - - final Fragment f = getTargetFragment(); - final int requestCode = getTargetRequestCode(); - - // TargetFragment becomes invalid when this object is resumed. Notify it to - // FragmentManager. Without this code, FragmentManager wrongly take the TargetFragment - // as live, and throws IllegalStateException. - setTargetFragment(null, -1); - - if (f != null && (f instanceof SettingsPreferenceFragment)) { - final SettingsPreferenceFragment spf = (SettingsPreferenceFragment)f; - final int resultCode = spf.getResultCode(); - final Intent resultData = spf.getResultData(); - onActivityResult(requestCode, resultCode, resultData); - } - } - @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setupButtonBar(); } - public final void setResult(int resultCode) { - mResultCode = resultCode; - mResultData = null; - } - - public final void setResult(int resultCode, Intent data) { - mResultCode = resultCode; - mResultData = data; - } - - public final int getResultCode() { - return mResultCode; - } - - public final Intent getResultData() { - return mResultData; - } - /* * The name is intentionally made different from Activity#finish(), so that * users won't misunderstand its meaning. @@ -196,9 +158,8 @@ public class SettingsPreferenceFragment extends PreferenceFragment Fragment caller, String fragmentClass, int requestCode, Bundle extras) { if (getActivity() instanceof PreferenceActivity) { PreferenceActivity preferenceActivity = (PreferenceActivity)getActivity(); - Fragment f = Fragment.instantiate(getActivity(), fragmentClass, extras); - caller.setTargetFragment(f, requestCode); - preferenceActivity.switchToHeader(fragmentClass, extras); + preferenceActivity.startPreferencePanel(fragmentClass, extras, 0, null, caller, + requestCode); return true; } else { Log.w(TAG, "Parent isn't PreferenceActivity, thus there's no way to launch the " diff --git a/src/com/android/settings/fuelgauge/PowerUsageDetail.java b/src/com/android/settings/fuelgauge/PowerUsageDetail.java index c4b6db4779c..7717503945a 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageDetail.java +++ b/src/com/android/settings/fuelgauge/PowerUsageDetail.java @@ -42,8 +42,14 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; + +import com.android.settings.DisplaySettings; import com.android.settings.R; +import com.android.settings.SecuritySettings; +import com.android.settings.WirelessSettings; import com.android.settings.applications.InstalledAppDetails; +import com.android.settings.bluetooth.BluetoothSettings; +import com.android.settings.wifi.WifiSettings; public class PowerUsageDetail extends Fragment implements Button.OnClickListener { @@ -253,24 +259,30 @@ public class PowerUsageDetail extends Fragment implements Button.OnClickListener } private void doAction(int action) { + PreferenceActivity pa = (PreferenceActivity)getActivity(); switch (action) { case ACTION_DISPLAY_SETTINGS: - startActivity(new Intent(Settings.ACTION_DISPLAY_SETTINGS)); + pa.startPreferencePanel(DisplaySettings.class.getName(), null, + R.string.display_settings_title, null, null, 0); break; case ACTION_WIFI_SETTINGS: - startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); + pa.startPreferencePanel(WifiSettings.class.getName(), null, + R.string.wifi_settings, null, null, 0); break; case ACTION_BLUETOOTH_SETTINGS: - startActivity(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS)); + pa.startPreferencePanel(BluetoothSettings.class.getName(), null, + R.string.bluetooth_settings, null, null, 0); break; case ACTION_WIRELESS_SETTINGS: - startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS)); + pa.startPreferencePanel(WirelessSettings.class.getName(), null, + R.string.radio_controls_title, null, null, 0); break; case ACTION_APP_DETAILS: startApplicationDetailsActivity(); break; case ACTION_SECURITY_SETTINGS: - startActivity(new Intent(Settings.ACTION_SECURITY_SETTINGS)); + pa.startPreferencePanel(SecuritySettings.class.getName(), null, + R.string.security_settings_title, null, null, 0); break; case ACTION_FORCE_STOP: killProcesses(); diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java index 25ab6dabd35..a13a292c8c6 100644 --- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java +++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java @@ -52,8 +52,6 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment { final TextUtils.SimpleStringSplitter mStringColonSplitter = new TextUtils.SimpleStringSplitter(':'); - - private String mLastTickedInputMethodId; private AlertDialog mDialog = null; @@ -145,7 +143,6 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment { InputMethodAndSubtypeUtil.loadInputMethodSubtypeList( this, getContentResolver(), mInputMethodProperties); - mLastTickedInputMethodId = null; if (mLanguagePref != null) { Configuration conf = getResources().getConfiguration(); @@ -161,7 +158,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment { public void onPause() { super.onPause(); InputMethodAndSubtypeUtil.saveInputMethodSubtypeList(this, getContentResolver(), - mInputMethodProperties, mHaveHardKeyboard, mLastTickedInputMethodId); + mInputMethodProperties, mHaveHardKeyboard); } @Override @@ -184,7 +181,6 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment { selImi = imi; if (isSystemIme(imi)) { // This is a built-in IME, so no need to warn. - mLastTickedInputMethodId = id; return super.onPreferenceTreeClick(preferenceScreen, preference); } } @@ -203,7 +199,6 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment { new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { chkPref.setChecked(true); - mLastTickedInputMethodId = id; } }) @@ -223,8 +218,6 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment { R.string.ime_security_warning, selImi.getServiceInfo().applicationInfo.loadLabel(getPackageManager()))); mDialog.show(); - } else if (id.equals(mLastTickedInputMethodId)) { - mLastTickedInputMethodId = null; } } else if (preference instanceof PreferenceScreen) { if (preference.getFragment() != null) { diff --git a/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java b/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java index 3659dbbf623..cb9051428e5 100644 --- a/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java +++ b/src/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.java @@ -42,8 +42,6 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { private List mInputMethodProperties; - private String mLastTickedInputMethodId; - private AlertDialog mDialog = null; @Override @@ -60,14 +58,13 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { super.onResume(); InputMethodAndSubtypeUtil.loadInputMethodSubtypeList( this, getContentResolver(), mInputMethodProperties); - mLastTickedInputMethodId = null; } @Override public void onPause() { super.onPause(); InputMethodAndSubtypeUtil.saveInputMethodSubtypeList(this, getContentResolver(), - mInputMethodProperties, mHaveHardKeyboard, mLastTickedInputMethodId); + mInputMethodProperties, mHaveHardKeyboard); } @Override @@ -89,7 +86,6 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { InputMethodAndSubtypeUtil.setSubtypesPreferenceEnabled( this, mInputMethodProperties, id, true); // This is a built-in IME, so no need to warn. - mLastTickedInputMethodId = id; return super.onPreferenceTreeClick(preferenceScreen, preference); } break; @@ -111,7 +107,6 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { InputMethodAndSubtypeUtil.setSubtypesPreferenceEnabled( InputMethodAndSubtypeEnabler.this, mInputMethodProperties, id, true); - mLastTickedInputMethodId = id; } }) @@ -132,9 +127,6 @@ public class InputMethodAndSubtypeEnabler extends SettingsPreferenceFragment { selImi.getServiceInfo().applicationInfo.loadLabel(getPackageManager()))); mDialog.show(); } else { - if (id.equals(mLastTickedInputMethodId)) { - mLastTickedInputMethodId = null; - } InputMethodAndSubtypeUtil.setSubtypesPreferenceEnabled( this, mInputMethodProperties, id, false); } diff --git a/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java b/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java index 709dacecb11..288e6c26f03 100644 --- a/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java +++ b/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java @@ -98,15 +98,13 @@ public class InputMethodAndSubtypeUtil { public static void saveInputMethodSubtypeList( SettingsPreferenceFragment context, ContentResolver resolver, - List inputMethodProperties, - boolean hasHardKeyboard, String lastTickedInputMethodId) { + List inputMethodProperties, boolean hasHardKeyboard) { String currentInputMethodId = Settings.Secure.getString(resolver, Settings.Secure.DEFAULT_INPUT_METHOD); final int selectedInputMethodSubtype = getInputMethodSubtypeSelected(resolver); StringBuilder builder = new StringBuilder(); StringBuilder disabledSysImes = new StringBuilder(); - InputMethodInfo firstEnabledIMI = null; int firstSubtypeHashCode = NOT_A_SUBTYPE_ID; final boolean onlyOneIME = inputMethodProperties.size() == 1; @@ -121,9 +119,6 @@ public class InputMethodAndSubtypeUtil { || (pref != null && pref.isChecked())) { if (builder.length() > 0) builder.append(INPUT_METHOD_SEPARATER); builder.append(id); - if (firstEnabledIMI == null) { - firstEnabledIMI = property; - } for (InputMethodSubtype subtype : property.getSubtypes()) { CheckBoxPreference subtypePref = (CheckBoxPreference) context.findPreference( id + subtype.hashCode()); @@ -141,8 +136,11 @@ public class InputMethodAndSubtypeUtil { } else if (isCurrentInputMethod) { // We are processing the current input method, but found that it's not enabled. // This means that the current input method has been uninstalled. - // If currentInputMethod is already uninstalled, selects last ticked IME - currentInputMethodId = lastTickedInputMethodId; + // If currentInputMethod is already uninstalled, InputMethodManagerService will + // find the applicable IME from the history and the system locale. + if (DEBUG) { + Log.d(TAG, "Current IME was uninstalled or disabled."); + } } // If it's a disabled system ime, add it to the disabled list so that it // doesn't get enabled automatically on any changes to the package list @@ -152,15 +150,6 @@ public class InputMethodAndSubtypeUtil { } } - // If the last input method is unset, set it as the first enabled one. - if (TextUtils.isEmpty(currentInputMethodId)) { - if (firstEnabledIMI != null) { - currentInputMethodId = firstEnabledIMI.getId(); - } else { - currentInputMethodId = null; - } - } - if (DEBUG) { Log.d(TAG, "--- Save enabled inputmethod settings. :" + builder.toString()); Log.d(TAG, "--- Save disable system inputmethod settings. :" @@ -183,6 +172,8 @@ public class InputMethodAndSubtypeUtil { Settings.Secure.ENABLED_INPUT_METHODS, builder.toString()); Settings.Secure.putString(resolver, Settings.Secure.DISABLED_SYSTEM_INPUT_METHODS, disabledSysImes.toString()); + // If the current input method is unset, InputMethodManagerService will find the applicable + // IME from the history and the system locale. Settings.Secure.putString(resolver, Settings.Secure.DEFAULT_INPUT_METHOD, currentInputMethodId != null ? currentInputMethodId : ""); } diff --git a/src/com/android/settings/vpn/VpnEditor.java b/src/com/android/settings/vpn/VpnEditor.java index 3ab0b909d06..1b3bdb59b49 100644 --- a/src/com/android/settings/vpn/VpnEditor.java +++ b/src/com/android/settings/vpn/VpnEditor.java @@ -32,8 +32,8 @@ import android.net.vpn.VpnProfile; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; +import android.preference.PreferenceActivity; import android.text.TextUtils; -import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -109,7 +109,11 @@ public class VpnEditor extends SettingsPreferenceFragment { public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_SAVE: - if (validateAndSetResult()) finishFragment(); + Intent resultIntent = validateAndGetResult(); + if (resultIntent != null) { + ((PreferenceActivity) getActivity()).finishPreferencePanel( + this, Activity.RESULT_OK, resultIntent); + } return true; case MENU_CANCEL: @@ -152,22 +156,24 @@ public class VpnEditor extends SettingsPreferenceFragment { * Checks the validity of the inputs and set the profile as result if valid. * @return true if the result is successfully set */ - private boolean validateAndSetResult() { + private Intent validateAndGetResult() { String errorMsg = mProfileEditor.validate(); if (errorMsg != null) { Util.showErrorMessage(getActivity(), errorMsg); - return false; + return null; } - if (profileChanged()) setResult(getProfile()); - return true; + if (profileChanged()) { + return getResult(getProfile()); + } + return null; } - private void setResult(VpnProfile p) { + private Intent getResult(VpnProfile p) { Intent intent = new Intent(getActivity(), VpnSettings.class); intent.putExtra(VpnSettings.KEY_VPN_PROFILE, (Parcelable) p); - setResult(Activity.RESULT_OK, intent); + return intent; } private VpnProfileEditor getEditor(VpnProfile p) { diff --git a/src/com/android/settings/vpn/VpnSettings.java b/src/com/android/settings/vpn/VpnSettings.java index e9a4c3dc07e..0b77930670c 100644 --- a/src/com/android/settings/vpn/VpnSettings.java +++ b/src/com/android/settings/vpn/VpnSettings.java @@ -22,7 +22,6 @@ import com.android.settings.SettingsPreferenceFragment; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; -import android.app.Fragment; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; @@ -39,19 +38,21 @@ import android.net.vpn.VpnState; import android.net.vpn.VpnType; import android.os.Bundle; import android.os.ConditionVariable; +import android.os.Handler; import android.os.IBinder; import android.preference.Preference; -import android.preference.Preference.OnPreferenceClickListener; +import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; import android.preference.PreferenceScreen; +import android.preference.Preference.OnPreferenceClickListener; import android.security.Credentials; import android.security.KeyStore; import android.text.TextUtils; import android.util.Log; import android.view.ContextMenu; -import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuItem; import android.view.View; +import android.view.ContextMenu.ContextMenuInfo; import android.widget.AdapterView.AdapterContextMenuInfo; import java.io.File; @@ -72,6 +73,9 @@ import java.util.Map; */ public class VpnSettings extends SettingsPreferenceFragment implements DialogInterface.OnClickListener { + + private static final boolean DEBUG = false; + // Key to the field exchanged for profile editing. static final String KEY_VPN_PROFILE = "vpn_profile"; @@ -87,7 +91,7 @@ public class VpnSettings extends SettingsPreferenceFragment private static final String PROFILE_OBJ_FILE = ".pobj"; private static final int REQUEST_ADD_OR_EDIT_PROFILE = 1; - private static final int REQUEST_SELECT_VPN_TYPE = 2; + static final int REQUEST_SELECT_VPN_TYPE = 2; private static final int CONTEXT_MENU_CONNECT_ID = ContextMenu.FIRST + 0; private static final int CONTEXT_MENU_DISCONNECT_ID = ContextMenu.FIRST + 1; @@ -134,6 +138,8 @@ public class VpnSettings extends SettingsPreferenceFragment private StatusChecker mStatusChecker = new StatusChecker(); + private Handler mHandler = new Handler(); + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -171,7 +177,8 @@ public class VpnSettings extends SettingsPreferenceFragment @Override public void onResume() { super.onResume(); - + if (DEBUG) + Log.d(TAG, "onResume"); if ((mUnlockAction != null) && isKeyStoreUnlocked()) { Runnable action = mUnlockAction; mUnlockAction = null; @@ -282,7 +289,7 @@ public class VpnSettings extends SettingsPreferenceFragment .setPositiveButton(R.string.vpn_yes_button, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int w) { - startVpnEditor(mActiveProfile); + startVpnEditor(mActiveProfile, false); } }) .create(); @@ -295,7 +302,7 @@ public class VpnSettings extends SettingsPreferenceFragment public void onClick(DialogInterface dialog, int w) { VpnProfile p = mActiveProfile; onIdle(); - startVpnEditor(p); + startVpnEditor(p, false); } }); } @@ -362,7 +369,7 @@ public class VpnSettings extends SettingsPreferenceFragment return true; case CONTEXT_MENU_EDIT_ID: - startVpnEditor(p); + startVpnEditor(p, false); return true; case CONTEXT_MENU_DELETE_ID: @@ -376,14 +383,21 @@ public class VpnSettings extends SettingsPreferenceFragment @Override public void onActivityResult(final int requestCode, final int resultCode, final Intent data) { + + if (DEBUG) Log.d(TAG, "onActivityResult , result = " + resultCode + ", data = " + data); if ((resultCode == Activity.RESULT_CANCELED) || (data == null)) { Log.d(TAG, "no result returned by editor"); return; } if (requestCode == REQUEST_SELECT_VPN_TYPE) { - String typeName = data.getStringExtra(KEY_VPN_TYPE); - startVpnEditor(createVpnProfile(typeName)); + final String typeName = data.getStringExtra(KEY_VPN_TYPE); + mHandler.post(new Runnable() { + + public void run() { + startVpnEditor(createVpnProfile(typeName), true); + } + }); } else if (requestCode == REQUEST_ADD_OR_EDIT_PROFILE) { VpnProfile p = data.getParcelableExtra(KEY_VPN_PROFILE); if (p == null) { @@ -400,7 +414,7 @@ public class VpnSettings extends SettingsPreferenceFragment p.getName()), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int w) { - startVpnEditor(profile); + startVpnEditor(profile, false); } }); return; @@ -431,7 +445,7 @@ public class VpnSettings extends SettingsPreferenceFragment Util.showErrorMessage(activity, e + ": " + e.getMessage(), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int w) { - startVpnEditor(profile); + startVpnEditor(profile, false); } }); } @@ -615,8 +629,9 @@ public class VpnSettings extends SettingsPreferenceFragment } private void startVpnTypeSelection() { - startFragment(this, VpnTypeSelection.class.getCanonicalName(), - REQUEST_SELECT_VPN_TYPE, null); + ((PreferenceActivity)getActivity()).startPreferencePanel( + VpnTypeSelection.class.getCanonicalName(), null, R.string.vpn_type_title, null, + this, REQUEST_SELECT_VPN_TYPE); } private boolean isKeyStoreUnlocked() { @@ -666,11 +681,14 @@ public class VpnSettings extends SettingsPreferenceFragment return false; } - private void startVpnEditor(final VpnProfile profile) { + private void startVpnEditor(final VpnProfile profile, boolean add) { Bundle args = new Bundle(); args.putParcelable(KEY_VPN_PROFILE, profile); - startFragment(this, VpnEditor.class.getCanonicalName(), - REQUEST_ADD_OR_EDIT_PROFILE, args); + // TODO: Show different titles for add and edit. + ((PreferenceActivity)getActivity()).startPreferencePanel( + VpnEditor.class.getCanonicalName(), args, + add ? R.string.vpn_details_title : R.string.vpn_details_title, null, + this, REQUEST_ADD_OR_EDIT_PROFILE); } private synchronized void connect(final VpnProfile p) { diff --git a/src/com/android/settings/vpn/VpnTypeSelection.java b/src/com/android/settings/vpn/VpnTypeSelection.java index 5990ac0ac35..45e33b99cc4 100644 --- a/src/com/android/settings/vpn/VpnTypeSelection.java +++ b/src/com/android/settings/vpn/VpnTypeSelection.java @@ -25,6 +25,7 @@ import android.net.vpn.VpnManager; import android.net.vpn.VpnType; import android.os.Bundle; import android.preference.Preference; +import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; import java.util.HashMap; @@ -46,8 +47,9 @@ public class VpnTypeSelection extends SettingsPreferenceFragment { @Override public boolean onPreferenceTreeClick(PreferenceScreen ps, Preference pref) { - setResult(mTypeMap.get(pref.getTitle().toString())); - finishFragment(); + ((PreferenceActivity)getActivity()) + .finishPreferencePanel(this, Activity.RESULT_OK, + getResultIntent(mTypeMap.get(pref.getTitle().toString()))); return true; } @@ -67,9 +69,9 @@ public class VpnTypeSelection extends SettingsPreferenceFragment { } } - private void setResult(VpnType type) { + private Intent getResultIntent(VpnType type) { Intent intent = new Intent(getActivity(), VpnSettings.class); intent.putExtra(VpnSettings.KEY_VPN_TYPE, type.toString()); - setResult(Activity.RESULT_OK, intent); + return intent; } } diff --git a/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java b/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java index c49f5ac0f09..4de7ef5afb5 100644 --- a/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java +++ b/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java @@ -67,20 +67,29 @@ public class WifiConfigUiForSetupWizardXL implements WifiConfigUiBase, OnFocusCh mEdit = edit; mInflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - mView = mInflater.inflate(R.layout.wifi_config_ui_for_setup_wizard, parent, false); + mView = mInflater.inflate(R.layout.wifi_config_ui_for_setup_wizard, parent, true); mController = new WifiConfigController(this, mView, mAccessPoint, edit); - // Set Focus to password View. - final View viewToBeFocused = mView.findViewById(R.id.password); - if (viewToBeFocused != null && viewToBeFocused.getVisibility() == View.VISIBLE && - viewToBeFocused instanceof EditText) { - // 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); + // Assumes R.id.password is inside security_fields. + // TODO: confirm it is ok to assume R.id.password is the only EditText to be focused, and + // R.id.security_fields is the only parent for possible EditTexts. Possibly we need to + // check parentand detect visibility manually. + if (mView.findViewById(R.id.security_fields).getVisibility() == View.VISIBLE) { + // Set Focus to password View. + final View viewToBeFocused = mView.findViewById(R.id.password); + 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 { + // 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); + } } } } diff --git a/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java b/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java index f59816eaff2..468e5c26108 100644 --- a/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java +++ b/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java @@ -163,6 +163,7 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis @Override public void onClick(View view) { + hideSoftwareKeyboard(); if (view == mAddNetworkButton) { onAddNetworkButtonPressed(); } else if (view == mRefreshButton) { @@ -184,7 +185,6 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis } else if (view == mDetailButton) { mWifiSettings.showDialogForSelectedPreference(); } - hideSoftwareKeyboard(); } private void hideSoftwareKeyboard() { @@ -334,7 +334,7 @@ public class WifiSettingsForSetupWizardXL extends Activity implements OnClickLis } else { view.findViewById(R.id.wifi_general_info).setVisibility(View.GONE); } - parent.addView(view); + // parent.addView(view); mStatusText.setText(R.string.wifi_setup_status_edit_network); mAddNetworkButton.setVisibility(View.GONE);