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

Commit 233991a2 authored by Hung-ying Tyan's avatar Hung-ying Tyan
Browse files

Reduce the number of keystore connections to 1

at entering the security settings.
parent 38322393
Loading
Loading
Loading
Loading
+13 −11
Original line number Diff line number Diff line
@@ -233,10 +233,10 @@ public class SecuritySettings extends PreferenceActivity implements
        PreferenceCategory credStoreCat = new PreferenceCategory(this);
        credStoreCat.setTitle(R.string.cstor_settings_category);
        root.addPreference(credStoreCat);
        boolean i = mCstorHelper.isCstorInitialized();
        credStoreCat.addPreference(mCstorHelper.createAccessCheckBox(i));
        int s = mCstorHelper.getCstorState();
        credStoreCat.addPreference(mCstorHelper.createAccessCheckBox(s));
        credStoreCat.addPreference(mCstorHelper.createSetPasswordPreference());
        credStoreCat.addPreference(mCstorHelper.createResetPreference(i));
        credStoreCat.addPreference(mCstorHelper.createResetPreference(s));

        return root;
    }
@@ -486,6 +486,10 @@ public class SecuritySettings extends PreferenceActivity implements
            }
        }

        private int getCstorState() {
            return mKeystore.getState();
        }

        private boolean isCstorUnlocked() {
            return (mKeystore.getState() == Keystore.UNLOCKED);
        }
@@ -794,27 +798,25 @@ public class SecuritySettings extends PreferenceActivity implements
            mResetButton.setEnabled(enabled);
        }

        private Preference createAccessCheckBox(boolean isInitialized) {
        private Preference createAccessCheckBox(int state) {
            CheckBoxPreference pref = new CheckBoxPreference(
                    SecuritySettings.this);
            pref.setTitle(R.string.cstor_access_title);
            pref.setSummary(R.string.cstor_access_summary);
            if (isInitialized) pref.setChecked(isCstorUnlocked());
            pref.setEnabled(state != Keystore.UNINITIALIZED);
            pref.setChecked(state == Keystore.UNLOCKED);
            pref.setOnPreferenceChangeListener(
                    new Preference.OnPreferenceChangeListener() {
                        public boolean onPreferenceChange(
                                Preference pref, Object value) {
                            if (((Boolean) value)) {
                                showCstorDialog(isCstorInitialized()
                                        ? CSTOR_UNLOCK_DIALOG
                                        : CSTOR_INIT_DIALOG);
                                showCstorDialog(CSTOR_UNLOCK_DIALOG);
                            } else {
                                lockCstor();
                            }
                            return true;
                        }
                    });
            pref.setEnabled(isInitialized);
            mAccessCheckBox = pref;
            return pref;
        }
@@ -835,7 +837,7 @@ public class SecuritySettings extends PreferenceActivity implements
            return pref;
        }

        private Preference createResetPreference(boolean isInitialized) {
        private Preference createResetPreference(int state) {
            Preference pref = new Preference(SecuritySettings.this);
            pref.setTitle(R.string.cstor_reset_title);
            pref.setSummary(R.string.cstor_reset_summary);
@@ -846,7 +848,7 @@ public class SecuritySettings extends PreferenceActivity implements
                            return true;
                        }
                    });
            pref.setEnabled(isInitialized);
            pref.setEnabled(state != Keystore.UNINITIALIZED);
            mResetButton = pref;
            return pref;
        }