Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c538b651 authored by Chung-yih Wang's avatar Chung-yih Wang
Browse files

Fix some UI flow issues when the keystore is locked in WiFi setting.

To make it more user friendly, we need to continue on what
users intend to do after unlocking the credential storage.
parent 03f46bf4
Loading
Loading
Loading
Loading
+27 −16
Original line number Diff line number Diff line
@@ -217,6 +217,14 @@ public class AccessPointDialog extends AlertDialog implements DialogInterface.On
        setTitle(getContext().getString(titleId));
    }

    public void enableEnterpriseFields() {
        setEnterpriseFieldsVisible(true);
        updateCertificateSelection();
        setGenericPasswordVisible(true);
        // Both WPA and WPA2 show the same caption, so either is ok
        updatePasswordCaption(AccessPointState.WPA);
    }

    /** Called after flags are set, the dialog's layout/etc should be set up here */
    private void onLayout() {
        final Context context = getContext();
@@ -318,6 +326,14 @@ public class AccessPointDialog extends AlertDialog implements DialogInterface.On
        if (mMode == MODE_CONFIGURE ||
                (mState.isEnterprise() && !mState.configured)) {
            setEnterpriseFields(view);
            updateCertificateSelection();
        }
    }

    private void updateCertificateSelection() {
        setSpinnerAdapter(mClientCertSpinner, getAllUserCertificateKeys());
        setSpinnerAdapter(mCaCertSpinner, getAllCaCertificateKeys());

        mPhase2Spinner.setSelection(getSelectionIndex(
                R.array.wifi_phase2_entries, mState.getPhase2()));
        mEapSpinner.setSelection(getSelectionIndex(
@@ -329,7 +345,6 @@ public class AccessPointDialog extends AlertDialog implements DialogInterface.On
                getAllCaCertificateKeys(), mState.getEnterpriseField(
                AccessPointState.CA_CERT)));
    }
    }

    private String[] getAllCaCertificateKeys() {
        return appendEmptyInSelection(mCertTool.getAllCaCertificateKeys());
@@ -788,13 +803,9 @@ public class AccessPointDialog extends AlertDialog implements DialogInterface.On
                if (Keystore.getInstance().getState() != Keystore.UNLOCKED) {
                    getContext().startActivity(new Intent(
                            SecuritySettings.ACTION_UNLOCK_CREDENTIAL_STORAGE));
                    mSecuritySpinner.setSelection(0);
                    return;
                }
                setEnterpriseFieldsVisible(true);
                setGenericPasswordVisible(true);
                // Both WPA and WPA2 show the same caption, so either is ok
                updatePasswordCaption(AccessPointState.WPA);
                enableEnterpriseFields();
                break;
            }
        }
+22 −1
Original line number Diff line number Diff line
@@ -87,6 +87,9 @@ public class WifiSettings extends PreferenceActivity implements WifiLayer.Callba
    
    private WeakHashMap<AccessPointState, AccessPointPreference> mAps;

    private AccessPointState mResumeState = null;
    private int mResumeMode;
    
    //============================
    // Wifi member variables
    //============================
@@ -152,6 +155,20 @@ public class WifiSettings extends PreferenceActivity implements WifiLayer.Callba
        super.onResume();
        mWifiLayer.onResume();
        mWifiEnabler.resume();
        // do what we should have after keystore is unlocked.
        if (mResumeState != null) {
            if (Keystore.getInstance().getState() == Keystore.UNLOCKED) {
                showAccessPointDialog(mResumeState, mResumeMode);
            }
            mResumeMode = -1;
            mResumeState = null;
        } else {
            if (mResumeMode == AccessPointDialog.MODE_CONFIGURE) {
                if (Keystore.getInstance().getState() == Keystore.UNLOCKED) {
                    ((AccessPointDialog) mDialog).enableEnterpriseFields();
                }
            }
        }
    }

    @Override
@@ -231,6 +248,7 @@ public class WifiSettings extends PreferenceActivity implements WifiLayer.Callba
    public void onDismiss(DialogInterface dialog) {
        if (dialog == mDialog) {
            mDialog = null;
            mResumeMode = -1;
        }
    }

@@ -350,6 +368,7 @@ public class WifiSettings extends PreferenceActivity implements WifiLayer.Callba
        dialog.setMode(AccessPointDialog.MODE_CONFIGURE);
        dialog.setTitle(R.string.wifi_add_other_network);
        dialog.setAutoSecurityAllowed(false);
        mResumeMode = AccessPointDialog.MODE_CONFIGURE;
        showDialog(dialog);
    }
    
@@ -358,6 +377,8 @@ public class WifiSettings extends PreferenceActivity implements WifiLayer.Callba
                Keystore.getInstance().getState() != Keystore.UNLOCKED) {
            startActivity(new Intent(
                    SecuritySettings.ACTION_UNLOCK_CREDENTIAL_STORAGE));
            mResumeState = state;
            mResumeMode = mode;
            return;
        }
        AccessPointDialog dialog = new AccessPointDialog(this, mWifiLayer);