Browse Source

REgister screen view fixes

master
Preyea Regmi 4 years ago
parent
commit
4befd23d9c
  1. 42
      app/src/main/java/com/gmeremit/online/gmeremittance_native/common/view/MAutoCompleteTextView.java
  2. 24
      app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/presenter/RegisterV2Presenter.java
  3. 6
      app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/presenter/RegisterV2PresenterInterface.java
  4. 119
      app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/view/RegisterV2Activity.java
  5. 17
      app/src/main/res/layout/activity_register_v2.xml
  6. 11
      app/src/main/res/layout/item_list.xml
  7. 3
      app/src/main/res/values/attrs.xml
  8. 4
      app/src/main/res/values/styles.xml

42
app/src/main/java/com/gmeremit/online/gmeremittance_native/common/view/MAutoCompleteTextView.java

@ -0,0 +1,42 @@
package com.gmeremit.online.gmeremittance_native.common.view;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.widget.AutoCompleteTextView;
import androidx.appcompat.widget.AppCompatAutoCompleteTextView;
import com.gmeremit.online.gmeremittance_native.R;
import com.gmeremit.online.gmeremittance_native.customwidgets.FontCache;
public class MAutoCompleteTextView extends AppCompatAutoCompleteTextView {
public MAutoCompleteTextView(Context context) {
super(context);
init(context,null);
}
public MAutoCompleteTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context,null);
}
public MAutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context,null);
}
private void init(Context context, AttributeSet attrs) {
if (attrs != null) {
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.MAutoCompleteTextView);
String fontName = a.getString(R.styleable.MAutoCompleteTextView_autoTxtViewFontName);
setTypeface(FontCache.getTypeface(fontName, context));
a.recycle();
}
}
}

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

@ -1,5 +1,8 @@
package com.gmeremit.online.gmeremittance_native.registerV2.presenter; package com.gmeremit.online.gmeremittance_native.registerV2.presenter;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.gmeremit.online.gmeremittance_native.GmeApplication; import com.gmeremit.online.gmeremittance_native.GmeApplication;
import com.gmeremit.online.gmeremittance_native.R; import com.gmeremit.online.gmeremittance_native.R;
import com.gmeremit.online.gmeremittance_native.base.BaseViewModel; import com.gmeremit.online.gmeremittance_native.base.BaseViewModel;
@ -38,9 +41,7 @@ public class RegisterV2Presenter extends BaseViewModel implements RegisterV2Pres
private final RegisterValidator registerValidator; private final RegisterValidator registerValidator;
private List<NativeCountry> nativeCountryList;
private MutableLiveData<List<NativeCountry>> nativeCountryListLiveData;
private String registrationSuccessMessage = ""; private String registrationSuccessMessage = "";
@ -54,12 +55,6 @@ public class RegisterV2Presenter extends BaseViewModel implements RegisterV2Pres
registerViewLiveData = new RegisterViewLiveData(); registerViewLiveData = new RegisterViewLiveData();
registerValidator = new RegisterValidator(); registerValidator = new RegisterValidator();
getDefaultData();
}
private void getDefaultData() {
this.useCaseCompositeDisposable.add(
this.registerGateway.getNativeCountryList(view.getContext()).subscribe(nativeCountryList -> this.nativeCountryList = nativeCountryList));
} }
@ -133,8 +128,15 @@ public class RegisterV2Presenter extends BaseViewModel implements RegisterV2Pres
} }
public List<NativeCountry> getNativeCountryList() {
return nativeCountryList;
@Override
public LiveData<List<NativeCountry>> getNativeCountryListLiveData() {
if (nativeCountryListLiveData == null) {
nativeCountryListLiveData = new MutableLiveData<>();
this.useCaseCompositeDisposable.add(
this.registerGateway.getNativeCountryList(view.getContext()).subscribe(nativeCountryList -> this.nativeCountryListLiveData.setValue(nativeCountryList)));
}
return nativeCountryListLiveData;
} }

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

@ -2,8 +2,13 @@ package com.gmeremit.online.gmeremittance_native.registerV2.presenter;
import android.content.Context; import android.content.Context;
import androidx.lifecycle.LiveData;
import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface; import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface;
import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface; import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface;
import com.gmeremit.online.gmeremittance_native.kycV2.model.kyc.NativeCountry;
import java.util.List;
public interface RegisterV2PresenterInterface extends BasePresenterInterface { public interface RegisterV2PresenterInterface extends BasePresenterInterface {
@ -13,6 +18,7 @@ public interface RegisterV2PresenterInterface extends BasePresenterInterface {
RegisterViewLiveData getRegisterRelatedViewEvents(RegisterViewLiveData.RegisterViewBinding viewBindings); RegisterViewLiveData getRegisterRelatedViewEvents(RegisterViewLiveData.RegisterViewBinding viewBindings);
LiveData<List<NativeCountry>> getNativeCountryListLiveData();

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

@ -4,11 +4,13 @@ import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Button; import android.widget.Button;
import android.widget.ScrollView; import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatAutoCompleteTextView;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import com.gmeremit.online.gmeremittance_native.R; import com.gmeremit.online.gmeremittance_native.R;
@ -29,6 +31,8 @@ import com.google.android.material.textfield.TextInputEditText;
import com.google.android.material.textfield.TextInputLayout; import com.google.android.material.textfield.TextInputLayout;
import com.jakewharton.rxbinding3.widget.RxTextView; import com.jakewharton.rxbinding3.widget.RxTextView;
import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
@ -40,9 +44,6 @@ import static com.gmeremit.online.gmeremittance_native.kycV3.view.KYCV3Activity.
public class RegisterV2Activity extends BaseActivity implements RegisterV2PresenterInterface.RegisterV2ContractInterface { public class RegisterV2Activity extends BaseActivity implements RegisterV2PresenterInterface.RegisterV2ContractInterface {
@BindView(R.id.usernameId_edTxt) @BindView(R.id.usernameId_edTxt)
TextInputEditText usernameId; TextInputEditText usernameId;
@ -56,7 +57,7 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
TextInputLayout passwordTxtInputLayout; TextInputLayout passwordTxtInputLayout;
@BindView(R.id.nativeCountry_edTxt) @BindView(R.id.nativeCountry_edTxt)
TextInputEditText nativeCountryEdTxt;
AppCompatAutoCompleteTextView nativeCountryEdTxt;
@BindView(R.id.nativeCountry_TxtInputLayout) @BindView(R.id.nativeCountry_TxtInputLayout)
TextInputLayout nativeCountryTxtInputLayout; TextInputLayout nativeCountryTxtInputLayout;
@ -68,17 +69,14 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
TextInputLayout mobileTxtInputLayout; TextInputLayout mobileTxtInputLayout;
@BindView(R.id.btn_submit) @BindView(R.id.btn_submit)
Button btn_submit; Button btn_submit;
@BindView(R.id.tv_login) @BindView(R.id.tv_login)
TextView tv_login; TextView tv_login;
@BindView(R.id.scrollView) @BindView(R.id.scrollView)
ScrollView scrollView; ScrollView scrollView;
@ -90,6 +88,7 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
private Subject<NativeCountry> selectedNativeCountrySubject; private Subject<NativeCountry> selectedNativeCountrySubject;
private RegisterViewLiveData registerRelatedViewEvents; private RegisterViewLiveData registerRelatedViewEvents;
private List<NativeCountry> nativeCountryList;
@Override @Override
@ -105,75 +104,70 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
private void initialize() { private void initialize() {
selectedNativeCountrySubject= PublishSubject.create();
this.presenter = new ViewModelProvider(this,new RegisterViewModelFactory(this)).get(RegisterV2Presenter.class);
selectedNativeCountrySubject = PublishSubject.create();
this.presenter = new ViewModelProvider(this, new RegisterViewModelFactory(this)).get(RegisterV2Presenter.class);
registerRelatedViewEvents= this.presenter.getRegisterRelatedViewEvents(new RegisterViewLiveData.RegisterViewBinding(
registerRelatedViewEvents = this.presenter.getRegisterRelatedViewEvents(new RegisterViewLiveData.RegisterViewBinding(
RxTextView.textChanges(usernameId).skipInitialValue(), RxTextView.textChanges(usernameId).skipInitialValue(),
selectedNativeCountrySubject, selectedNativeCountrySubject,
RxTextView.textChanges(mobileEdTxt).skipInitialValue(), RxTextView.textChanges(mobileEdTxt).skipInitialValue(),
RxTextView.textChanges(passwordEdTxt).skipInitialValue() RxTextView.textChanges(passwordEdTxt).skipInitialValue()
)); ));
registerRelatedViewEvents.getUserIdInputLiveData().observe(this,this::updateUserId);
registerRelatedViewEvents.getPasswordInputLiveData().observe(this,this::updatePassword);
registerRelatedViewEvents.getNativeCountryInputLiveData().observe(this,this::updateNativeCountry);
registerRelatedViewEvents.getPhoneNumberInputLiveData().observe(this,this::updatePhoneNumber);
registerRelatedViewEvents.getUserIdInputLiveData().observe(this, this::updateUserId);
registerRelatedViewEvents.getPasswordInputLiveData().observe(this, this::updatePassword);
registerRelatedViewEvents.getNativeCountryInputLiveData().observe(this, this::updateNativeCountry);
registerRelatedViewEvents.getPhoneNumberInputLiveData().observe(this, this::updatePhoneNumber);
presenter.getNativeCountryListLiveData().observe(this, this::updateNativeCountryList);
}
private void updateNativeCountryList(List<NativeCountry> nativeCountries) {
// nativeCountryEdTxt.setAdapter(new ArrayAdapter<>(nativeCountryEdTxt.getContext(),R.layout.item_list,nativeCountries));
this.nativeCountryList = nativeCountries;
} }
private void updatePhoneNumber(FormInputStateDTO<String> data) { private void updatePhoneNumber(FormInputStateDTO<String> data) {
if(data.isValid())
{
if (data.isValid()) {
mobileTxtInputLayout.setError(null); mobileTxtInputLayout.setError(null);
if(data.hasData())
{
if (data.hasData()) {
mobileEdTxt.setText(data.getData()); mobileEdTxt.setText(data.getData());
} }
}
else
} else
mobileTxtInputLayout.setError(data.getErrorMessage()); mobileTxtInputLayout.setError(data.getErrorMessage());
} }
private void updateNativeCountry(FormInputStateDTO<NativeCountry> data) { private void updateNativeCountry(FormInputStateDTO<NativeCountry> data) {
if(data.isValid())
{
if (data.isValid()) {
nativeCountryTxtInputLayout.setError(null); nativeCountryTxtInputLayout.setError(null);
if(data.hasData())
{
if (data.hasData()) {
nativeCountryEdTxt.setText(data.getData().getText()); nativeCountryEdTxt.setText(data.getData().getText());
} }
}
else
} else
nativeCountryTxtInputLayout.setError(data.getErrorMessage()); nativeCountryTxtInputLayout.setError(data.getErrorMessage());
} }
private void updatePassword(FormInputStateDTO<String> data) { private void updatePassword(FormInputStateDTO<String> data) {
if(data.isValid())
{
if (data.isValid()) {
passwordTxtInputLayout.setError(null); passwordTxtInputLayout.setError(null);
if(data.hasData())
{
if (data.hasData()) {
passwordEdTxt.setText(data.getData()); passwordEdTxt.setText(data.getData());
} }
}
else
} else
passwordTxtInputLayout.setError(data.getErrorMessage()); passwordTxtInputLayout.setError(data.getErrorMessage());
} }
private void updateUserId(FormInputStateDTO<String> data) { private void updateUserId(FormInputStateDTO<String> data) {
if(data.isValid())
{
if (data.isValid()) {
usernameIdTxtInputLayout.setError(null); usernameIdTxtInputLayout.setError(null);
if(data.hasData())
{
if (data.hasData()) {
usernameId.setText(data.getData()); usernameId.setText(data.getData());
} }
}
else
} else
usernameIdTxtInputLayout.setError(data.getErrorMessage()); usernameIdTxtInputLayout.setError(data.getErrorMessage());
} }
@ -197,35 +191,30 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
} }
@OnClick(R.id.nativeCountry_edTxt)
public void promptNativeCountrySelection() {
hideKeyBoard();
if (nativeCountrylListDialog == null)
nativeCountrylListDialog = new GenericTextListingDialog<>();
nativeCountrylListDialog.setData(nativeCountryList);
nativeCountrylListDialog.setListener(selectedNativeCountry ->
{
selectedNativeCountrySubject.onNext(selectedNativeCountry);
nativeCountryEdTxt.setText(selectedNativeCountry.getText());
nativeCountrylListDialog.dismiss();
public void promptNativeCountrySelection() {
// hideKeyBoard();
// if (nativeCountrylListDialog == null)
// nativeCountrylListDialog = new GenericTextListingDialog<>();
//
// nativeCountrylListDialog.setData(this.presenter.getNativeCountryList());
// nativeCountrylListDialog.setListener(selectedNativeCountry ->
// {
// presenter.updateSelectedNativeCountry(selectedNativeCountry);
// nativeCountrylListDialog.dismiss();
//
// });
// nativeCountrylListDialog.setHintAndTitle(getString(R.string.search_country_text), getString(R.string.select_country_text), getString(R.string.no_country_found_text));
// nativeCountrylListDialog.disableSearch(false);
// if (!nativeCountrylListDialog.isAdded())
// nativeCountrylListDialog.show(getSupportFragmentManager(), "NATIVECOUNTRYDIALOG");
});
nativeCountrylListDialog.setHintAndTitle(getString(R.string.search_country_text), getString(R.string.select_country_text), getString(R.string.no_country_found_text));
nativeCountrylListDialog.disableSearch(false);
if (!nativeCountrylListDialog.isAdded())
nativeCountrylListDialog.show(getSupportFragmentManager(), "NATIVECOUNTRYDIALOG");
} }
@OnClick(R.id.btn_submit) @OnClick(R.id.btn_submit)
public void onRegisterBtnClicked()
{
public void onRegisterBtnClicked() {
presenter.registerUser(); presenter.registerUser();
} }
@ -284,7 +273,6 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
} }
@Override @Override
public void setUserIdFocus(boolean action) { public void setUserIdFocus(boolean action) {
if (action) if (action)
@ -301,17 +289,10 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
} }
@Override @Override
public void onBackPressed() { public void onBackPressed() {
super.onBackPressed();
super.onBackPressed();
} }
} }

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

@ -54,7 +54,6 @@
</com.gmeremit.online.gmeremittance_native.common.view.MTextInputLayout> </com.gmeremit.online.gmeremittance_native.common.view.MTextInputLayout>
<com.gmeremit.online.gmeremittance_native.common.view.MTextInputLayout <com.gmeremit.online.gmeremittance_native.common.view.MTextInputLayout
android:id="@+id/password_TxtInputLayout" android:id="@+id/password_TxtInputLayout"
app:errorEnabled="true" app:errorEnabled="true"
@ -74,19 +73,21 @@
<com.gmeremit.online.gmeremittance_native.common.view.MTextInputLayout <com.gmeremit.online.gmeremittance_native.common.view.MTextInputLayout
android:id="@+id/nativeCountry_TxtInputLayout" android:id="@+id/nativeCountry_TxtInputLayout"
app:errorEnabled="true" app:errorEnabled="true"
style="@style/MTextInputLayoutForm"
app:endIconMode="clear_text"
style="@style/MTextInputLayoutFormDropDown"
app:endIconMode="dropdown_menu"
android:hint="@string/native_country_text" android:hint="@string/native_country_text"
app:startIconDrawable="@drawable/vd_globe" app:startIconDrawable="@drawable/vd_globe"
> >
<com.gmeremit.online.gmeremittance_native.common.view.MTextInputEditText
android:gravity="start"
android:id="@+id/nativeCountry_edTxt"
<com.gmeremit.online.gmeremittance_native.common.view.MAutoCompleteTextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:gravity="start"
android:focusable="false"
android:cursorVisible="false"
android:id="@+id/nativeCountry_edTxt"/>
</com.gmeremit.online.gmeremittance_native.common.view.MTextInputLayout>
</com.gmeremit.online.gmeremittance_native.common.view.MTextInputLayout>
<com.gmeremit.online.gmeremittance_native.common.view.MTextInputLayout <com.gmeremit.online.gmeremittance_native.common.view.MTextInputLayout
android:id="@+id/mobile_TxtInputLayout" android:id="@+id/mobile_TxtInputLayout"

11
app/src/main/res/layout/item_list.xml

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<com.gmeremit.online.gmeremittance_native.common.view.MTextView
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:ellipsize="end"
android:maxLines="1"
android:textSize="@dimen/_12ssp"
android:gravity="start"
android:padding="@dimen/_4sdp"
android:layout_height="match_parent">
</com.gmeremit.online.gmeremittance_native.common.view.MTextView>

3
app/src/main/res/values/attrs.xml

@ -45,4 +45,7 @@
<declare-styleable name="MTextView"> <declare-styleable name="MTextView">
<attr name="txtViewFontName" format="string"/> <attr name="txtViewFontName" format="string"/>
</declare-styleable> </declare-styleable>
<declare-styleable name="MAutoCompleteTextView">
<attr name="autoTxtViewFontName" format="string"/>
</declare-styleable>
</resources> </resources>

4
app/src/main/res/values/styles.xml

@ -223,6 +223,10 @@
<item name="android:paddingEnd">@dimen/form_input_padding_end</item> <item name="android:paddingEnd">@dimen/form_input_padding_end</item>
</style> </style>
<style name="MTextInputLayoutFormDropDown" parent="MTextInputLayout">
</style>
</resources> </resources>
Loading…
Cancel
Save