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

Commit 044ca3a0 authored by Wysie's avatar Wysie
Browse files

Added code to allow configurable delay on incorrect pattern input.

parent 16af939b
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -18,6 +18,22 @@
*/
-->
<resources>
    <string-array name="incorrect_delay_entries">
        <item>No delay</item>
        <item>0.5 seconds</item>
        <item>1 second</item>
        <item>1.5 seconds</item>
        <item>2 seconds</item>
    </string-array>

    <string-array name="incorrect_delay_values">
        <item>0</item>
        <item>500</item>
        <item>1000</item>
        <item>1500</item>
        <item>2000</item>
    </string-array>

    <string-array name="lockpattern_pin_check_timeout_entries">
        <item>0.5 seconds</item>
        <item>1 second</item>
+1 −0
Original line number Diff line number Diff line
@@ -1389,6 +1389,7 @@
    <string name="lockpattern_settings_show_sliders">Show sliders</string>
    <string name="lockpattern_settings_custom_msg">Custom message</string>
    <string name="lockpattern_settings_custom_msg_dialog">Enter a custom message</string>
    <string name="lockpattern_settings_incorrect_delay_title">Set incorrect pattern delay</string>
    <!-- Security & location settings screen, setting check box title. This setting controls whether tactile feedback will be produced when the user draws the pattern.-->
    <string name="lockpattern_settings_enable_tactile_feedback_title">Use tactile feedback</string>
    <!-- Security & location settings screen, setting option name when user has never set an unlock pattern -->
+28 −7
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
import android.util.Log;

/**
 * Gesture lock pattern settings.
@@ -65,6 +66,7 @@ public class SecuritySettings extends PreferenceActivity {

    private static final String KEY_LOCK_ENABLED = "lockenabled";
    private static final String KEY_VISIBLE_PATTERN = "visiblepattern";
    private static final String KEY_INCORRECT_DELAY = "incorrectdelay";
    private static final String KEY_TACTILE_FEEDBACK_ENABLED = "tactilefeedback";
    private static final String KEY_PIN_BASED_LOCKING_ENABLED = "pinbasedlocking";
    private static final String KEY_PIN_CHECK_TIMEOUT = "pinlockchecktimeout";
@@ -86,6 +88,7 @@ public class SecuritySettings extends PreferenceActivity {
    private CheckBoxPreference mShowCustomMsg;
    private EditTextPreference mCustomMsg;
    //private CheckBoxPreference mShowSliders;
    private ListPreference mIncorrectDelay;
    private CheckBoxPreference mTactileFeedback;
    private CheckBoxPreference mPinBasedLocking;
    private ListPreference mPinCheckTimeout;
@@ -214,6 +217,15 @@ public class SecuritySettings extends PreferenceActivity {
        inlinePrefCat.addPreference(mShowSliders);
        */
        
        // incorrect delay
        mIncorrectDelay = new ListPreference(this);
        mIncorrectDelay.setKey(KEY_INCORRECT_DELAY);
        mIncorrectDelay.setTitle(R.string.lockpattern_settings_incorrect_delay_title);
        mIncorrectDelay.setEntries(R.array.incorrect_delay_entries);
        mIncorrectDelay.setEntryValues(R.array.incorrect_delay_values);
        mIncorrectDelay.setOnPreferenceChangeListener(mIncorrectDelayChangeListener);
        inlinePrefCat.addPreference(mIncorrectDelay);

        // tactile feedback
        mTactileFeedback = new CheckBoxPreference(this);
        mTactileFeedback.setKey(KEY_TACTILE_FEEDBACK_ENABLED);
@@ -286,6 +298,7 @@ public class SecuritySettings extends PreferenceActivity {
        mVisibleDots.setEnabled(patternExists);
        mShowErrorPath.setEnabled(patternExists);
        //mShowSliders.setEnabled(!patternExists);
        mIncorrectDelay.setEnabled(patternExists);        
        mTactileFeedback.setEnabled(patternExists);
        mPinBasedLocking.setEnabled(!patternExists);
        mPinCheckTimeout.setEnabled(mLockPatternUtils.isPinLockingEnabled());
@@ -311,16 +324,24 @@ public class SecuritySettings extends PreferenceActivity {
        mCredentialStorage.resume();
    }
    
    private Preference.OnPreferenceChangeListener mIncorrectDelayChangeListener =
    	new Preference.OnPreferenceChangeListener() {
			public boolean onPreferenceChange(Preference preference, Object newValue) {
				if (preference == mIncorrectDelay) {
					int value = Integer.parseInt(newValue.toString());
					mLockPatternUtils.setIncorrectDelay(value);					
				}

				return true;
			}
		};

    private Preference.OnPreferenceChangeListener mOnPinCheckTimeoutChangeListener =
    	new Preference.OnPreferenceChangeListener() {
			public boolean onPreferenceChange(Preference preference, Object newValue) {
				if (preference == mPinCheckTimeout) {
					String value = mPinCheckTimeout.getValue();
					int index = mPinCheckTimeout.findIndexOfValue((String) newValue) + 1;					
					
					mLockPatternUtils.setPinCheckTimeout(PIN_CHECK_TIMEOUT_INTERVAL * index);					
					
					return true;
				}

				return true;