From f127f82bfd7948f6de9267bdbec4479e217564de Mon Sep 17 00:00:00 2001 From: preyearegmi Date: Tue, 29 Jan 2019 18:31:37 +0900 Subject: [PATCH] Register screen done --- .../registerV2/view/RegisterV2Activity.java | 148 +++++++------ app/src/main/res/layout/activity_login_v2.xml | 1 - .../main/res/layout/activity_register_v2.xml | 199 +++++++++++------- 3 files changed, 211 insertions(+), 137 deletions(-) diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/view/RegisterV2Activity.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/view/RegisterV2Activity.java index fb8edd66..bf3ab859 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/view/RegisterV2Activity.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/view/RegisterV2Activity.java @@ -1,16 +1,21 @@ package com.gmeremit.online.gmeremittance_native.registerV2.view; -import android.app.DatePickerDialog; +import android.annotation.SuppressLint; import android.content.Intent; +import android.graphics.Rect; import android.os.Bundle; -import android.support.design.widget.TextInputLayout; +import android.support.v4.view.GestureDetectorCompat; +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.TextView; import com.gmeremit.online.gmeremittance_native.R; import com.gmeremit.online.gmeremittance_native.base.BaseActivity; +import com.gmeremit.online.gmeremittance_native.customwidgets.GmeErrorTextView; import com.gmeremit.online.gmeremittance_native.homeV2.view.HomeActivityV2; import com.gmeremit.online.gmeremittance_native.loginV2.view.LoginV2Activity; import com.gmeremit.online.gmeremittance_native.registerV2.presenter.RegisterV2Presenter; @@ -25,7 +30,7 @@ import java.util.Locale; import butterknife.BindView; import butterknife.ButterKnife; -public class RegisterV2Activity extends BaseActivity implements RegisterV2PresenterInterface.RegisterV2ContractInterface, View.OnClickListener { +public class RegisterV2Activity extends BaseActivity implements RegisterV2PresenterInterface.RegisterV2ContractInterface, View.OnClickListener, View.OnTouchListener { @BindView(R.id.email_mobile) @@ -43,24 +48,29 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen @BindView(R.id.btn_submit) Button btn_submit; - @BindView(R.id.useridWrapper) - TextInputLayout useridWrapper; + @BindView(R.id.emailErrorTxt) + GmeErrorTextView emailErrorTxt; - @BindView(R.id.passwordWrapper) - TextInputLayout passwordWrapper; + @BindView(R.id.passwordErrorTxt) + GmeErrorTextView passwordErrorTxt; - @BindView(R.id.confirmpassWrapper) - TextInputLayout confirmpassWrapper; + @BindView(R.id.confirmPwdErrorTxt) + GmeErrorTextView confirmPwdErrorTxt; - @BindView(R.id.dobWrapper) - TextInputLayout dobWrapper; + @BindView(R.id.dateErrorTxt) + GmeErrorTextView dateErrorTxt; @BindView(R.id.tv_login) TextView tv_login; + @BindView(R.id.ed_dob_container) + FrameLayout ed_dob_container; + RegisterV2PresenterInterface presenter; - private DatePickerDialog datePickerDialog; - private Calendar newCalendar; + + + private GestureDetectorCompat dobConatinerClickGestureDetector; + private RegisterDobClickGestureDetector dobContainerOnClickGestureDetector; @Override protected void onCreate(Bundle savedInstanceState) { @@ -73,65 +83,55 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen private void initialize() { - this.presenter=new RegisterV2Presenter(this); - newCalendar = Calendar.getInstance(); + this.presenter = new RegisterV2Presenter(this); + dobContainerOnClickGestureDetector = new RegisterDobClickGestureDetector(); + dobConatinerClickGestureDetector = new GestureDetectorCompat(this, dobContainerOnClickGestureDetector); } private void performDefaultAction(Bundle savedInstanceState) { } + @SuppressLint("ClickableViewAccessibility") @Override protected void onStart() { super.onStart(); tv_login.setOnClickListener(this); btn_submit.setOnClickListener(this); - ed_dob.setOnClickListener(this); } + @SuppressLint("ClickableViewAccessibility") @Override protected void onStop() { super.onStop(); tv_login.setOnClickListener(null); btn_submit.setOnClickListener(null); - ed_dob.setOnClickListener(null); } + + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + return (dobConatinerClickGestureDetector.onTouchEvent(ev) || super.dispatchTouchEvent(ev)); + } + + @Override public void onClick(View v) { - switch(v.getId()) - { + switch (v.getId()) { case R.id.tv_login: redirectToLogin(); break; - case R.id.ed_dob: - promptDatePicker(); - 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(), passwordTextView.getText().toString(), confirmPasswordTextView.getText().toString(), ed_dob.getText().toString())) { hideKeyBoard(); presenter.registerUser(emailMobileTextView.getText().toString(), passwordTextView.getText().toString(), ed_dob.getText().toString()); } - break; + break; } } - public void promptDatePicker() { -// datePickerDialog = new DatePickerDialog(this, (DatePickerDialog.OnDateSetListener) (view, year, monthOfYear, dayOfMonth) -> { -// Calendar newDate = Calendar.getInstance(); -// newDate.set(year, monthOfYear, dayOfMonth); -// ed_dob.setText(new SimpleDateFormat(Utils.getDefaultDateFormat(), Locale.US).format(newDate.getTime())); -// presenter.validateDob(ed_dob.getText().toString()); -// -// }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); -// -// datePickerDialog.getDatePicker().setMaxDate(new Date().getTime() - 10000); -// datePickerDialog.getDatePicker().updateDate(1990, 1, 1); -// -// hideKeyBoard(); -// datePickerDialog.show(); + public void promptDatePicker() { hideKeyBoard(); SpinnerDatePickerDialogBuilder builder = new SpinnerDatePickerDialogBuilder(); @@ -155,46 +155,30 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen } + @Override public void setConfirmPasswordError(String error) { - if(error==null) - confirmpassWrapper.setErrorEnabled(false); - else - confirmpassWrapper.setErrorEnabled(true); - confirmpassWrapper.setError(error); - + confirmPwdErrorTxt.setErrorText(error); } @Override public void setPasswordError(String error) { - if(error==null) - passwordWrapper.setErrorEnabled(false); - else - passwordWrapper.setErrorEnabled(true); - passwordWrapper.setError(error); + passwordErrorTxt.setErrorText(error); } @Override public void setDobError(String error) { - if(error==null) - dobWrapper.setErrorEnabled(false); - else - dobWrapper.setErrorEnabled(true); - dobWrapper.setError(error); + dateErrorTxt.setErrorText(error); } @Override public void setUserIdError(String error) { - if(error==null) - useridWrapper.setErrorEnabled(false); - else - useridWrapper.setErrorEnabled(true); - useridWrapper.setError(error); + emailErrorTxt.setErrorText(error); } @Override public void redirectToLogin() { - Intent redirectIntent=new Intent(this,LoginV2Activity.class); + Intent redirectIntent = new Intent(this, LoginV2Activity.class); redirectIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(redirectIntent); finish(); @@ -202,11 +186,51 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen @Override public void redirectToDashboard() { - Intent redirectIntent=new Intent(this,HomeActivityV2.class); + Intent redirectIntent = new Intent(this, HomeActivityV2.class); redirectIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(redirectIntent); finish(); } + @Override + public boolean onTouch(View v, MotionEvent event) { + if (v.getId() == R.id.ed_dob_container) { + promptDatePicker(); + return true; + } + return false; + } + + + class RegisterDobClickGestureDetector extends GestureDetector.SimpleOnGestureListener { + @Override + public boolean onSingleTapUp(MotionEvent e) { + if (e.getAction() == MotionEvent.ACTION_UP) { + boolean isDobContainerClicked = checkIfDateContainerIsClicked(e.getX(), e.getY()); + if (isDobContainerClicked) + promptDatePicker(); + return isDobContainerClicked; + } + return super.onSingleTapUp(e); + } + + private boolean checkIfDateContainerIsClicked(float x, float y) { + int posX = (int) x; + int posY = (int) y; + + int[] dobConatinerLeftAndTopCoordinates = new int[2]; + + + ed_dob_container.getLocationOnScreen(dobConatinerLeftAndTopCoordinates); + + Rect dobContainerBoundRect = new Rect(dobConatinerLeftAndTopCoordinates[0], dobConatinerLeftAndTopCoordinates[1], + dobConatinerLeftAndTopCoordinates[0] + ed_dob_container.getMeasuredWidth(), + dobConatinerLeftAndTopCoordinates[1] + ed_dob_container.getMeasuredHeight()); + + return dobContainerBoundRect.contains(posX, posY); + } + + + } } diff --git a/app/src/main/res/layout/activity_login_v2.xml b/app/src/main/res/layout/activity_login_v2.xml index 1d8baeb6..aafe4d64 100644 --- a/app/src/main/res/layout/activity_login_v2.xml +++ b/app/src/main/res/layout/activity_login_v2.xml @@ -135,7 +135,6 @@ android:layout_gravity="center_horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_below="@id/passwordWrapper" android:layout_marginBottom="10dp" android:gravity="center" > diff --git a/app/src/main/res/layout/activity_register_v2.xml b/app/src/main/res/layout/activity_register_v2.xml index c2053fe1..a7732c0a 100644 --- a/app/src/main/res/layout/activity_register_v2.xml +++ b/app/src/main/res/layout/activity_register_v2.xml @@ -28,12 +28,13 @@ + - + - + android:imeOptions="actionDone" + android:background="@drawable/curve_rectangle_edit_text" + /> + - - + - + android:imeOptions="actionDone" + android:background="@drawable/curve_rectangle_edit_text" + /> + - + + + - + android:imeOptions="actionDone" + android:background="@drawable/curve_rectangle_edit_text" + /> + + /> + - + - - - + android:imeOptions="actionDone" + /> - - - +