Browse Source

Register screen keyboard integration success

master
preyearegmi 6 years ago
parent
commit
6f5baf86bc
  1. 34
      app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/presenter/RegisterV2Presenter.java
  2. 4
      app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/presenter/RegisterV2PresenterInterface.java
  3. 209
      app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/view/RegisterV2Activity.java
  4. 57
      app/src/main/res/layout/activity_register_v2.xml

34
app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/presenter/RegisterV2Presenter.java

@ -22,13 +22,16 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres
private final RegisterV2Gateway gateway;
private final RegisterV2ContractInterface view;
private CompositeDisposable compositeDisposable;
private String userId;
private String password;
private String confirmPassword;
public RegisterV2Presenter(RegisterV2PresenterInterface.RegisterV2ContractInterface view) {
this.view = view;
compositeDisposable=new CompositeDisposable();
this.gateway = new RegisterV2Gateway(this);
password="";
confirmPassword="";
}
@ -38,33 +41,33 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres
boolean confirmPwdValidation=true;
if (!Utils.hasSpecialCharacters(pwdString)) {
if (!Utils.hasSpecialCharacters(password)) {
this.view.setPasswordError("Password should have at least one symbol");
pwdValidation= false;
}
if (!Utils.hasNumbers(pwdString)) {
if (!Utils.hasNumbers(password)) {
this.view.setPasswordError("Password should have at least one number");
pwdValidation= false;
}
if (pwdString.length()>1&&pwdString.length()<9) {
if (password.length()>1&&password.length()<9) {
this.view.setPasswordError("Password should have at least 9 characters");
pwdValidation= false;
}
if (!Utils.hasAtleastOnCapitalLetter(pwdString)) {
if (!Utils.hasAtleastOnCapitalLetter(password)) {
this.view.setPasswordError("Password should have at least one capital letter");
pwdValidation= false;
}
if(pwdString.trim().length()<1)
if(password.trim().length()<1)
{
this.view.setPasswordError("Password cannot be empty");
pwdValidation= false;
}
if (!pwdString.equals(pwdConfrimString)) {
if (!password.equals(confirmPassword)) {
this.view.setConfirmPasswordError("Passwords does not match");
confirmPwdValidation= false;
}
if(pwdConfrimString==null||pwdConfrimString.trim().length()<1)
if(confirmPassword==null||confirmPassword.trim().length()<1)
{
this.view.setConfirmPasswordError("Confirm password cannot be empty");
confirmPwdValidation= false;
@ -82,7 +85,6 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres
@Override
public void registerUser(String userId, String password, String dob) {
this.userId=userId;
String auth = "Basic " + Utils.toBase64("172017F9EC11222E8107142733:QRK2UM0Q:" + GmeApplication.getAppRelatedMetaData().getDeviceId());
String fcmID = null;
try {
@ -98,7 +100,7 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres
this.gateway.registerUser(
auth,
userId,
password,
this.password,
dob,
"172017F9EC11222E8107142733",
fcmID,
@ -145,6 +147,16 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres
return (emailIdValidation&&pwdValidation&&dobValidation);
}
@Override
public void updatePassword(String updatedPassword) {
this.password=updatedPassword;
}
@Override
public void updateConfirmPassword(String confirmPassword) {
this.confirmPassword=confirmPassword;
}
@Override
public void onViewDestroyed() {
super.onViewDestroyed();

4
app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/presenter/RegisterV2PresenterInterface.java

@ -16,6 +16,10 @@ public interface RegisterV2PresenterInterface extends BasePresenterInterface {
boolean validateAll(String emailId,String pwdString, String pwdConfirmString,String dobString);
void updatePassword(String updatedPassword);
void updateConfirmPassword(String confirmPassword);
interface RegisterV2ContractInterface extends BaseContractInterface {
void setConfirmPasswordError(String error);

209
app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/view/RegisterV2Activity.java

@ -5,12 +5,15 @@ import android.content.Intent;
import android.graphics.Rect;
import android.os.Bundle;
import android.support.v4.view.GestureDetectorCompat;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import com.gmeremit.online.gmeremittance_native.R;
@ -21,6 +24,11 @@ import com.gmeremit.online.gmeremittance_native.loginV2.view.LoginV2Activity;
import com.gmeremit.online.gmeremittance_native.registerV2.presenter.RegisterV2Presenter;
import com.gmeremit.online.gmeremittance_native.registerV2.presenter.RegisterV2PresenterInterface;
import com.gmeremit.online.gmeremittance_native.utils.Utils;
import com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.EncryptionManager;
import com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.SecurityKeyboardManager;
import com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.SecurityKeyboardView;
import com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.SecurityKeypadRequestParamBuilder;
import com.softsecurity.transkey.TransKeyActivity;
import com.tsongkha.spinnerdatepicker.SpinnerDatePickerDialogBuilder;
import java.text.SimpleDateFormat;
@ -36,11 +44,11 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
@BindView(R.id.email_mobile)
EditText emailMobileTextView;
@BindView(R.id.password)
EditText passwordTextView;
@BindView(R.id.securityKeyboardPassword)
SecurityKeyboardView securityKeyboardPasswordView;
@BindView(R.id.confirm_password)
EditText confirmPasswordTextView;
@BindView(R.id.securityKeyboardConfirmPassword)
SecurityKeyboardView securityKeyboardConfirmPasswordView;
@BindView(R.id.ed_dob)
EditText ed_dob;
@ -66,12 +74,30 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
@BindView(R.id.ed_dob_container)
FrameLayout ed_dob_container;
@BindView(R.id.keypadContainer)
FrameLayout keypadContainer;
@BindView(R.id.keypadBallon)
RelativeLayout ballonView;
@BindView(R.id.scrollView)
ScrollView scrollView;
@BindView(R.id.rootViewRegister)
View rootView;
RegisterV2PresenterInterface presenter;
private GestureDetectorCompat dobConatinerClickGestureDetector;
private RegisterDobClickGestureDetector dobContainerOnClickGestureDetector;
SecurityKeyboardManager securityKeyboardPasswordManager;
SecurityKeyboardManager securityKeyboardConfirmPasswordManager;
SecurityKeypadPasswordListener securityKeyboardPasswordListener;
SecurityKeypadConfirmPasswordListener securityKeyboardConfirmPasswordListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -86,6 +112,45 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
this.presenter = new RegisterV2Presenter(this);
dobContainerOnClickGestureDetector = new RegisterDobClickGestureDetector();
dobConatinerClickGestureDetector = new GestureDetectorCompat(this, dobContainerOnClickGestureDetector);
securityKeyboardPasswordListener=new SecurityKeypadPasswordListener();
securityKeyboardPasswordView.setKeyboardContainerView(keypadContainer);
securityKeyboardPasswordView.setKeyboardBallonView(ballonView);
try {
securityKeyboardPasswordManager = new SecurityKeyboardManager(this);
SecurityKeypadRequestParamBuilder request = new SecurityKeypadRequestParamBuilder(this);
request.setHintString("Password");
securityKeyboardPasswordManager.bindWithSecurityWidgetView(securityKeyboardPasswordView)
.setBallonView(ballonView)
.setKeyboardContainer(keypadContainer)
.setRequestParams(request)
.setActionListener(securityKeyboardPasswordListener)
.build();
} catch (Exception e) {
e.printStackTrace();
Log.d("GMESecurityKeyboard", e.getMessage());
}
securityKeyboardConfirmPasswordListener=new SecurityKeypadConfirmPasswordListener();
securityKeyboardConfirmPasswordView.setKeyboardContainerView(keypadContainer);
securityKeyboardConfirmPasswordView.setKeyboardBallonView(ballonView);
try {
securityKeyboardConfirmPasswordManager = new SecurityKeyboardManager(this);
SecurityKeypadRequestParamBuilder request = new SecurityKeypadRequestParamBuilder(this);
request.setHintString("Password");
securityKeyboardConfirmPasswordManager.bindWithSecurityWidgetView(securityKeyboardConfirmPasswordView)
.setBallonView(ballonView)
.setKeyboardContainer(keypadContainer)
.setRequestParams(request)
.setActionListener(securityKeyboardConfirmPasswordListener)
.build();
} catch (Exception e) {
e.printStackTrace();
Log.d("GMESecurityKeyboard", e.getMessage());
}
}
private void performDefaultAction(Bundle savedInstanceState) {
@ -98,6 +163,9 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
super.onStart();
tv_login.setOnClickListener(this);
btn_submit.setOnClickListener(this);
securityKeyboardPasswordView.setSecurityKeyboardFocusStateListener(securityKeyboardPasswordListener);
securityKeyboardConfirmPasswordView.setSecurityKeyboardFocusStateListener(securityKeyboardConfirmPasswordListener);
}
@SuppressLint("ClickableViewAccessibility")
@ -106,12 +174,15 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
super.onStop();
tv_login.setOnClickListener(null);
btn_submit.setOnClickListener(null);
securityKeyboardPasswordView.setSecurityKeyboardFocusStateListener(null);
securityKeyboardConfirmPasswordView.setSecurityKeyboardFocusStateListener(null);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return (dobConatinerClickGestureDetector.onTouchEvent(ev) || super.dispatchTouchEvent(ev));
return (securityKeyboardPasswordView.checkIfTouchIntersectKeypadLayout(ev)||securityKeyboardConfirmPasswordView.checkIfTouchIntersectKeypadLayout(ev)||dobConatinerClickGestureDetector.onTouchEvent(ev) || super.dispatchTouchEvent(ev));
}
@ -123,9 +194,9 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
break;
case R.id.btn_submit:
if (presenter.validateAll(emailMobileTextView.getText().toString(), passwordTextView.getText().toString(), confirmPasswordTextView.getText().toString(), ed_dob.getText().toString())) {
if (presenter.validateAll(emailMobileTextView.getText().toString(), null, null, ed_dob.getText().toString())) {
hideKeyBoard();
presenter.registerUser(emailMobileTextView.getText().toString(), passwordTextView.getText().toString(), ed_dob.getText().toString());
presenter.registerUser(emailMobileTextView.getText().toString(), null, ed_dob.getText().toString());
}
break;
}
@ -233,4 +304,128 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
}
class SecurityKeypadPasswordListener implements SecurityKeyboardManager.SecurityKeyboardActionListenerFacade,SecurityKeyboardView.SecurityKeyboardFocusStateListener {
@Override
public void done(Intent intent) {
presenter.updatePassword(getDecryptedDataFromIntent(intent));
}
@Override
public void cancel(Intent intent) {
presenter.updatePassword(getDecryptedDataFromIntent(intent));
}
private String getDecryptedDataFromIntent(Intent intent)
{
if (intent == null)
return "";
String cipherData = intent.getStringExtra(TransKeyActivity.mTK_PARAM_CIPHER_DATA);
byte[] secureKey = intent.getByteArrayExtra(TransKeyActivity.mTK_PARAM_SECURE_KEY);
int iRealDataLength = intent.getIntExtra(TransKeyActivity.mTK_PARAM_DATA_LENGTH, 0);
Log.d("EncryptedData",cipherData);
return EncryptionManager.decryptCipherText(cipherData,secureKey,iRealDataLength);
}
@Override
public void input(int i) {
}
@Override
public void minTextSizeCallback() {
}
@Override
public void maxTextSizeCallback() {
}
@Override
public void onSecurityViewRecievedFocus() {
if (securityKeyboardPasswordManager != null && !securityKeyboardPasswordManager.isKeyboardVisible()) {
hideKeyBoard();
securityKeyboardPasswordManager.showKeyboard();
scrollView.postDelayed(()->{
scrollView.smoothScrollTo(0, (int) (.75f*rootView.getBottom()));
},250);
}
}
@Override
public void onSecurityViewLostFocus() {
if (securityKeyboardPasswordManager != null && securityKeyboardPasswordManager.isKeyboardVisible())
securityKeyboardPasswordManager.hideKeyboard();
else
hideKeyBoard();
}
}
class SecurityKeypadConfirmPasswordListener implements SecurityKeyboardManager.SecurityKeyboardActionListenerFacade,SecurityKeyboardView.SecurityKeyboardFocusStateListener {
@Override
public void done(Intent intent) {
presenter.updateConfirmPassword(getDecryptedDataFromIntent(intent));
}
@Override
public void cancel(Intent intent) {
presenter.updateConfirmPassword(getDecryptedDataFromIntent(intent));
}
private String getDecryptedDataFromIntent(Intent intent)
{
if (intent == null)
return "";
String cipherData = intent.getStringExtra(TransKeyActivity.mTK_PARAM_CIPHER_DATA);
byte[] secureKey = intent.getByteArrayExtra(TransKeyActivity.mTK_PARAM_SECURE_KEY);
int iRealDataLength = intent.getIntExtra(TransKeyActivity.mTK_PARAM_DATA_LENGTH, 0);
Log.d("EncryptedData",cipherData);
return EncryptionManager.decryptCipherText(cipherData,secureKey,iRealDataLength);
}
@Override
public void input(int i) {
}
@Override
public void minTextSizeCallback() {
}
@Override
public void maxTextSizeCallback() {
}
@Override
public void onSecurityViewRecievedFocus() {
if (securityKeyboardConfirmPasswordManager != null && !securityKeyboardConfirmPasswordManager.isKeyboardVisible()) {
hideKeyBoard();
securityKeyboardConfirmPasswordManager.showKeyboard();
scrollView.postDelayed(()->{
scrollView.smoothScrollTo(0, (int) (.75f*rootView.getBottom()));
},250);
}
}
@Override
public void onSecurityViewLostFocus() {
if (securityKeyboardConfirmPasswordManager != null && securityKeyboardConfirmPasswordManager.isKeyboardVisible())
securityKeyboardConfirmPasswordManager.hideKeyboard();
else
hideKeyBoard();
}
}
}

57
app/src/main/res/layout/activity_register_v2.xml

@ -3,6 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/rootViewRegister"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#fff">
@ -14,11 +15,11 @@
android:paddingLeft="10dp"
android:paddingRight="10dp"
tools:context="com.gmeremit.online.gmeremittance_native.sign_in.view.LoginView">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:src="@drawable/login_footer_image"/>
<!--<ImageView-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_alignParentBottom="true"-->
<!--android:src="@drawable/login_footer_image"/>-->
<ScrollView
android:id="@+id/scrollView"
@ -95,22 +96,10 @@
android:text="@string/password_text"
android:textSize="14sp"
app:txtfontName="@string/regular" />
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeEditText
style="@style/editetxtsinglelineDone"
android:id="@+id/password"
<com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.SecurityKeyboardView
android:id="@+id/securityKeyboardPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:maxLines="1"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:textSize="16sp"
android:minHeight="40dp"
android:hint="@string/password_text"
android:imeOptions="actionDone"
android:background="@drawable/curve_rectangle_edit_text"
/>
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeErrorTextView
android:layout_marginStart="3dp"
@ -129,22 +118,10 @@
android:text="@string/confirm_password_text"
android:textSize="14sp"
app:txtfontName="@string/regular" />
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeEditText
style="@style/editetxtsinglelineDone"
android:id="@+id/confirm_password"
<com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.SecurityKeyboardView
android:id="@+id/securityKeyboardConfirmPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:maxLines="1"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:textSize="16sp"
android:minHeight="40dp"
android:hint="@string/confirm_password_text"
android:imeOptions="actionDone"
android:background="@drawable/curve_rectangle_edit_text"
/>
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeErrorTextView
android:layout_marginStart="3dp"
@ -254,5 +231,19 @@
</ScrollView>
</RelativeLayout>
<FrameLayout
android:id="@+id/keypadContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
</FrameLayout>
<RelativeLayout
android:id="@+id/keypadBallon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Loading…
Cancel
Save