package com.venmo.android.pin; import android.content.Context; public class PinFragmentConfiguration { public static final int UNLIMITED_TRIES = -1; private boolean mShouldVibrateOnKey = true; private int mKeyVibrationDuration = 10; private Validator mValidator; private int mMaxTries = UNLIMITED_TRIES; private TryDepletionListener mTryDepletionListener; private PinSaver mPinSaver; public PinFragmentConfiguration(Context c) { mValidator = new DefaultValidator(c); mPinSaver = new DefaultSaver(c); } public PinFragmentConfiguration(Validator validator, PinSaver saver) { mValidator = validator; mPinSaver = saver; } @SuppressWarnings("unused") public PinFragmentConfiguration validator(Validator validator) { mValidator = validator; return this; } public PinFragmentConfiguration pinSaver(PinSaver saver) { mPinSaver = saver; return this; } public Validator getValidator() { return mValidator; } public PinSaver getPinSaver() {return mPinSaver;} /** * @param max number of allowed errors per session. For no maximum, use {@link * com.venmo.android.pin.PinFragmentConfiguration#UNLIMITED_TRIES} * @param depletionListener listener to take action when tries have been used up */ @SuppressWarnings("unused") public PinFragmentConfiguration maxTries(int max, TryDepletionListener depletionListener) { if (!(max > 0) && max != UNLIMITED_TRIES) { throw new IllegalArgumentException( "Max Tries should either be greater than 0 or PinFragmentConfiguration.UNLIMITED_TRIES"); } mMaxTries = max; mTryDepletionListener = depletionListener; return this; } public TryDepletionListener tryDepletionListener() { return mTryDepletionListener; } public int maxTries() { return mMaxTries; } @SuppressWarnings("unused") public PinFragmentConfiguration vibrateOnKey(boolean vibrate) { mShouldVibrateOnKey = vibrate; return this; } public boolean shouldVibrateOnKey() { return mShouldVibrateOnKey; } /** * @param duration duration of the vibration on key press. Throws {@code IllegalStateException} * if vibration state has been set to false. see {@link #vibrateOnKey(boolean)} */ public PinFragmentConfiguration vibrationDuration(int duration) { mShouldVibrateOnKey = true; mKeyVibrationDuration = duration; return this; } public int vibrateDuration() { return mKeyVibrationDuration; } }