diff --git a/pflockscreen/src/main/java/com/beautycoder/pflockscreen/fragments/PFLockScreenFragment.java b/pflockscreen/src/main/java/com/beautycoder/pflockscreen/fragments/PFLockScreenFragment.java index db35a3f..0907038 100644 --- a/pflockscreen/src/main/java/com/beautycoder/pflockscreen/fragments/PFLockScreenFragment.java +++ b/pflockscreen/src/main/java/com/beautycoder/pflockscreen/fragments/PFLockScreenFragment.java @@ -65,6 +65,7 @@ public class PFLockScreenFragment extends Fragment { private final PFPinCodeViewModel mPFPinCodeViewModel = new PFPinCodeViewModel(); private View.OnClickListener mOnLeftButtonClickListener = null; + private OnEncryptionInProgressListener mOnEncryptionInProgressListener = null; @Override public void onSaveInstanceState(@NonNull Bundle outState) { @@ -351,11 +352,17 @@ public void onCodeNotCompleted(String code) { private final View.OnClickListener mOnNextButtonClickListener = new View.OnClickListener() { @Override public void onClick(View v) { + if (mOnEncryptionInProgressListener != null) { + mOnEncryptionInProgressListener.onEncryptionInProgress(true); + } mPFPinCodeViewModel.encodePin(getContext(), mCode).observe( PFLockScreenFragment.this, new Observer>() { @Override public void onChanged(@Nullable PFResult result) { + if (mOnEncryptionInProgressListener != null) { + mOnEncryptionInProgressListener.onEncryptionInProgress(false); + } if (result == null) { return; } @@ -412,6 +419,10 @@ public void setOnLeftButtonClickListener(View.OnClickListener onLeftButtonClickL this.mOnLeftButtonClickListener = onLeftButtonClickListener; } + public void setOnEncryptionInProgressListener(OnEncryptionInProgressListener onEncryptionInProgressListener) { + this.mOnEncryptionInProgressListener = onEncryptionInProgressListener; + } + /*private void showFingerprintAlertDialog(Context context) { new AlertDialog.Builder(context).setTitle("Fingerprint").setMessage( "Would you like to use fingerprint for future login?") @@ -502,6 +513,20 @@ public interface OnPFLockScreenLoginListener { } + /** + * Callback interface to track when encryption is in progress. You can use this to show a + * progress bar or other loading indicators. + */ + public interface OnEncryptionInProgressListener { + + /** + * Callback method for when encryption has started, i.e. when user taps "Next" button + * @param inProgress true if encryption is in progress, false if it has finished + */ + void onEncryptionInProgress(boolean inProgress); + } + + }