preyearegmi
6 years ago
14 changed files with 543 additions and 10 deletions
-
BIN.idea/caches/build_file_checksums.ser
-
7app/src/main/AndroidManifest.xml
-
33app/src/main/java/com/gmeremit/online/gmeremittance_native/changepasswordV2/gateway/ChangePasswordV2Gateway.java
-
52app/src/main/java/com/gmeremit/online/gmeremittance_native/changepasswordV2/model/ChangePasswordActivityV2APIResponse.java
-
19app/src/main/java/com/gmeremit/online/gmeremittance_native/changepasswordV2/model/ChangeSuccessModel.java
-
17app/src/main/java/com/gmeremit/online/gmeremittance_native/changepasswordV2/presenter/ChangePasswordV2InteractorInterface.java
-
137app/src/main/java/com/gmeremit/online/gmeremittance_native/changepasswordV2/presenter/ChangePasswordV2Presenter.java
-
25app/src/main/java/com/gmeremit/online/gmeremittance_native/changepasswordV2/presenter/ChangePasswordV2PresenterInterface.java
-
135app/src/main/java/com/gmeremit/online/gmeremittance_native/changepasswordV2/view/ChangePasswordV2Activity.java
-
11app/src/main/java/com/gmeremit/online/gmeremittance_native/settings/view/SettingsView.java
-
3app/src/main/java/com/gmeremit/online/gmeremittance_native/user_profile/view/ProfileActivity.java
-
1app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java
-
5app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java
-
106app/src/main/res/layout/activity_change_password_v2.xml
@ -0,0 +1,33 @@ |
|||||
|
package com.gmeremit.online.gmeremittance_native.changepasswordV2.gateway; |
||||
|
|
||||
|
import com.gmeremit.online.gmeremittance_native.base.BaseGateway; |
||||
|
import com.gmeremit.online.gmeremittance_native.base.PrivilegedGateway; |
||||
|
import com.gmeremit.online.gmeremittance_native.changepasswordV2.model.ChangePasswordActivityV2APIResponse; |
||||
|
import com.gmeremit.online.gmeremittance_native.changepasswordV2.presenter.ChangePasswordV2InteractorInterface; |
||||
|
import com.gmeremit.online.gmeremittance_native.changepasswordV2.presenter.ChangePasswordV2PresenterInterface; |
||||
|
import com.gmeremit.online.gmeremittance_native.utils.https.HttpClientV2; |
||||
|
import com.gmeremit.online.gmeremittance_native.walletstatement.model.WalletStatementV2APIResponse; |
||||
|
import com.google.gson.JsonObject; |
||||
|
|
||||
|
import io.reactivex.Observable; |
||||
|
|
||||
|
public class ChangePasswordV2Gateway extends PrivilegedGateway implements ChangePasswordV2InteractorInterface.ChangePasswordV2GatewayInterface { |
||||
|
|
||||
|
private final ChangePasswordV2InteractorInterface interactor; |
||||
|
|
||||
|
public ChangePasswordV2Gateway(ChangePasswordV2InteractorInterface interactorInterface) { |
||||
|
this.interactor=interactorInterface; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
public Observable<ChangePasswordActivityV2APIResponse> performChangePassRequest(String auth, String userId, String oldPass, String newPass) { |
||||
|
JsonObject jsonObject=new JsonObject(); |
||||
|
|
||||
|
jsonObject.addProperty("UserId",userId); |
||||
|
jsonObject.addProperty("OldPassword",oldPass); |
||||
|
jsonObject.addProperty("NewPassword",newPass); |
||||
|
return HttpClientV2.getInstance().performChangePasswordV2(auth,jsonObject); |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,52 @@ |
|||||
|
package com.gmeremit.online.gmeremittance_native.changepasswordV2.model; |
||||
|
|
||||
|
import com.google.gson.annotations.Expose; |
||||
|
import com.google.gson.annotations.SerializedName; |
||||
|
|
||||
|
public class ChangePasswordActivityV2APIResponse { |
||||
|
|
||||
|
@SerializedName("ErrorCode") |
||||
|
@Expose |
||||
|
private String errorCode; |
||||
|
@SerializedName("Msg") |
||||
|
@Expose |
||||
|
private String msg; |
||||
|
@SerializedName("Id") |
||||
|
@Expose |
||||
|
private String id; |
||||
|
@SerializedName("Data") |
||||
|
@Expose |
||||
|
private ChangeSuccessModel data; |
||||
|
|
||||
|
public String getErrorCode() { |
||||
|
return errorCode; |
||||
|
} |
||||
|
|
||||
|
public void setErrorCode(String errorCode) { |
||||
|
this.errorCode = errorCode; |
||||
|
} |
||||
|
|
||||
|
public String getMsg() { |
||||
|
return msg; |
||||
|
} |
||||
|
|
||||
|
public void setMsg(String msg) { |
||||
|
this.msg = msg; |
||||
|
} |
||||
|
|
||||
|
public String getId() { |
||||
|
return id; |
||||
|
} |
||||
|
|
||||
|
public void setId(String id) { |
||||
|
this.id = id; |
||||
|
} |
||||
|
|
||||
|
public ChangeSuccessModel getData() { |
||||
|
return data; |
||||
|
} |
||||
|
|
||||
|
public void setData(ChangeSuccessModel data) { |
||||
|
this.data = data; |
||||
|
} |
||||
|
} |
@ -0,0 +1,19 @@ |
|||||
|
package com.gmeremit.online.gmeremittance_native.changepasswordV2.model; |
||||
|
|
||||
|
import com.google.gson.annotations.Expose; |
||||
|
import com.google.gson.annotations.SerializedName; |
||||
|
|
||||
|
public class ChangeSuccessModel { |
||||
|
|
||||
|
@Expose |
||||
|
@SerializedName("Message") |
||||
|
private String message; |
||||
|
|
||||
|
public String getMessage() { |
||||
|
return message; |
||||
|
} |
||||
|
|
||||
|
public void setMessage(String message) { |
||||
|
this.message = message; |
||||
|
} |
||||
|
} |
@ -0,0 +1,17 @@ |
|||||
|
package com.gmeremit.online.gmeremittance_native.changepasswordV2.presenter; |
||||
|
|
||||
|
import com.gmeremit.online.gmeremittance_native.base.BaseInteractorInterface; |
||||
|
import com.gmeremit.online.gmeremittance_native.base.PrivilegedGatewayInterface; |
||||
|
import com.gmeremit.online.gmeremittance_native.changepasswordV2.model.ChangePasswordActivityV2APIResponse; |
||||
|
import com.gmeremit.online.gmeremittance_native.walletstatement.model.WalletStatementV2APIResponse; |
||||
|
|
||||
|
import io.reactivex.Observable; |
||||
|
|
||||
|
public interface ChangePasswordV2InteractorInterface extends BaseInteractorInterface { |
||||
|
|
||||
|
|
||||
|
interface ChangePasswordV2GatewayInterface extends PrivilegedGatewayInterface |
||||
|
{ |
||||
|
Observable<ChangePasswordActivityV2APIResponse> performChangePassRequest(String auth, String userId, String oldPass, String newPass); |
||||
|
} |
||||
|
} |
@ -0,0 +1,137 @@ |
|||||
|
package com.gmeremit.online.gmeremittance_native.changepasswordV2.presenter; |
||||
|
|
||||
|
import com.gmeremit.online.gmeremittance_native.base.BasePresenter; |
||||
|
import com.gmeremit.online.gmeremittance_native.changepasswordV2.gateway.ChangePasswordV2Gateway; |
||||
|
import com.gmeremit.online.gmeremittance_native.changepasswordV2.model.ChangePasswordActivityV2APIResponse; |
||||
|
import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog; |
||||
|
import com.gmeremit.online.gmeremittance_native.utils.Constants; |
||||
|
import com.gmeremit.online.gmeremittance_native.utils.Utils; |
||||
|
import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse; |
||||
|
|
||||
|
import io.reactivex.android.schedulers.AndroidSchedulers; |
||||
|
import io.reactivex.schedulers.Schedulers; |
||||
|
|
||||
|
public class ChangePasswordV2Presenter extends BasePresenter implements ChangePasswordV2InteractorInterface,ChangePasswordV2PresenterInterface { |
||||
|
|
||||
|
private final ChangePasswordV2PresenterInterface.ChangePasswordV2ContractInterface view; |
||||
|
private final ChangePasswordV2Gateway gateway; |
||||
|
|
||||
|
public ChangePasswordV2Presenter(ChangePasswordV2PresenterInterface.ChangePasswordV2ContractInterface view) { |
||||
|
this.view=view; |
||||
|
this.gateway=new ChangePasswordV2Gateway(this); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public boolean validateData(String currentPass, String newPwd, String pwdConfrimString) { |
||||
|
boolean currentPwdValidation=true; |
||||
|
boolean confirmPwdValidation=true; |
||||
|
boolean newPwdValidation=true; |
||||
|
|
||||
|
|
||||
|
// if (!Utils.hasSpecialCharacters(currentPass)) { |
||||
|
// this.view.setCurrentPasswordError("Password must include at least one special character"); |
||||
|
// currentPwdValidation= false; |
||||
|
// } |
||||
|
// if (!Utils.hasNumbers(currentPass)) { |
||||
|
// this.view.setCurrentPasswordError("Password must include at least one number"); |
||||
|
// currentPwdValidation= false; |
||||
|
// } |
||||
|
// if (currentPass.length()>1&¤tPass.length()<9) { |
||||
|
// this.view.setCurrentPasswordError("Password should be greater than 8 character"); |
||||
|
// currentPwdValidation= false; |
||||
|
// } |
||||
|
if(currentPass.trim().length()<1) |
||||
|
{ |
||||
|
this.view.setCurrentPasswordError("Password cannot be empty"); |
||||
|
currentPwdValidation= false; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
if (!Utils.hasSpecialCharacters(newPwd)) { |
||||
|
this.view.setNewPasswordError("Password must include at least one special character"); |
||||
|
newPwdValidation= false; |
||||
|
} |
||||
|
if (!Utils.hasNumbers(newPwd)) { |
||||
|
this.view.setNewPasswordError("Password must include at least one number"); |
||||
|
newPwdValidation= false; |
||||
|
} |
||||
|
if (newPwd.length()>1&&newPwd.length()<9) { |
||||
|
this.view.setNewPasswordError("Password should be greater than 8 character"); |
||||
|
newPwdValidation= false; |
||||
|
} |
||||
|
if(newPwd.trim().length()<1) |
||||
|
{ |
||||
|
this.view.setNewPasswordError("Password cannot be empty"); |
||||
|
newPwdValidation= false; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
if (!newPwd.equalsIgnoreCase(pwdConfrimString)) { |
||||
|
this.view.setConfirmPasswordError("Confirm Password does not match with new password"); |
||||
|
confirmPwdValidation= false; |
||||
|
} |
||||
|
if(pwdConfrimString==null||pwdConfrimString.trim().length()<1) |
||||
|
{ |
||||
|
this.view.setConfirmPasswordError("Confirm password cannot be empty"); |
||||
|
confirmPwdValidation= false; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
if(currentPwdValidation) { |
||||
|
view.setCurrentPasswordError(null); |
||||
|
} |
||||
|
if(confirmPwdValidation) |
||||
|
{ |
||||
|
view.setConfirmPasswordError(null); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
if(newPwdValidation) |
||||
|
{ |
||||
|
view.setNewPasswordError(null); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
return currentPwdValidation&&confirmPwdValidation&&newPwdValidation; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void changePassword(String currentPass, String newPass) { |
||||
|
|
||||
|
this.gateway.performChangePassRequest(this.gateway.getAuth(),this.gateway.getUserID(),currentPass,newPass) |
||||
|
.doOnSubscribe(d->view.showProgressBar(true,"Changing password...")) |
||||
|
.doFinally(()->view.showProgressBar(false,"")) |
||||
|
.subscribeOn(Schedulers.io()) |
||||
|
.observeOn(AndroidSchedulers.mainThread()) |
||||
|
.subscribe(new ChangePasswordObserver()); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
public class ChangePasswordObserver extends GenericApiObserverResponse<ChangePasswordActivityV2APIResponse> |
||||
|
{ |
||||
|
|
||||
|
@Override |
||||
|
protected void onSuccess(ChangePasswordActivityV2APIResponse changePasswordActivityV2APIResponse) { |
||||
|
if(changePasswordActivityV2APIResponse.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) |
||||
|
{ |
||||
|
view.showPopUpMessage(changePasswordActivityV2APIResponse.getMsg(), CustomAlertDialog.AlertType.SUCCESS,alertType -> view.exitView()); |
||||
|
} |
||||
|
else |
||||
|
view.showPopUpMessage(changePasswordActivityV2APIResponse.getMsg(), CustomAlertDialog.AlertType.FAILED,null); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void onFailed(String message) { |
||||
|
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED,null); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
protected void onConnectionNotEstablished(String message) { |
||||
|
view.showPopUpMessage(message, CustomAlertDialog.AlertType.NO_INTERNET,null); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,25 @@ |
|||||
|
package com.gmeremit.online.gmeremittance_native.changepasswordV2.presenter; |
||||
|
|
||||
|
import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface; |
||||
|
import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface; |
||||
|
import com.gmeremit.online.gmeremittance_native.walletstatement.model.WalletStatementV2ItemModel; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
|
||||
|
public interface ChangePasswordV2PresenterInterface extends BasePresenterInterface { |
||||
|
|
||||
|
|
||||
|
boolean validateData(String currentPass, String newPass, String repeatPassword); |
||||
|
|
||||
|
void changePassword(String currentPass,String newPass); |
||||
|
interface ChangePasswordV2ContractInterface extends BaseContractInterface |
||||
|
{ |
||||
|
|
||||
|
void setNewPasswordError(String errorString); |
||||
|
|
||||
|
void setConfirmPasswordError(String passwords_does_not_match); |
||||
|
|
||||
|
void setCurrentPasswordError(String s); |
||||
|
} |
||||
|
} |
@ -0,0 +1,135 @@ |
|||||
|
package com.gmeremit.online.gmeremittance_native.changepasswordV2.view; |
||||
|
|
||||
|
import android.support.design.widget.TextInputLayout; |
||||
|
import android.support.v7.app.AppCompatActivity; |
||||
|
import android.os.Bundle; |
||||
|
import android.view.View; |
||||
|
import android.widget.Button; |
||||
|
import android.widget.EditText; |
||||
|
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.changepasswordV2.presenter.ChangePasswordV2Presenter; |
||||
|
import com.gmeremit.online.gmeremittance_native.changepasswordV2.presenter.ChangePasswordV2PresenterInterface; |
||||
|
|
||||
|
import butterknife.BindView; |
||||
|
import butterknife.ButterKnife; |
||||
|
|
||||
|
public class ChangePasswordV2Activity extends BaseActivity implements ChangePasswordV2PresenterInterface.ChangePasswordV2ContractInterface, View.OnClickListener { |
||||
|
|
||||
|
|
||||
|
@BindView(R.id.toolbar_title) |
||||
|
TextView toolbarTitle; |
||||
|
|
||||
|
@BindView(R.id.iv_cancel) |
||||
|
View iv_cancel; |
||||
|
@BindView(R.id.iv_back) |
||||
|
View iv_back; |
||||
|
@BindView(R.id.btn_submit) |
||||
|
Button btn_submit; |
||||
|
|
||||
|
@BindView(R.id.current_password) |
||||
|
EditText currentPasswordEditText; |
||||
|
|
||||
|
@BindView(R.id.newpassword) |
||||
|
EditText newpassword; |
||||
|
|
||||
|
@BindView(R.id.confirm_password) |
||||
|
EditText confirm_password; |
||||
|
|
||||
|
@BindView(R.id.newpasswordWrapper) |
||||
|
TextInputLayout newpasswordWrapper; |
||||
|
@BindView(R.id.currentpassWrapper) |
||||
|
TextInputLayout currentpassWrapper; |
||||
|
@BindView(R.id.confirmpassWrapper) |
||||
|
TextInputLayout confirmpassWrapper; |
||||
|
|
||||
|
|
||||
|
private ChangePasswordV2Presenter presenter; |
||||
|
|
||||
|
@Override |
||||
|
protected void onCreate(Bundle savedInstanceState) { |
||||
|
super.onCreate(savedInstanceState); |
||||
|
setContentView(R.layout.activity_change_password_v2); |
||||
|
ButterKnife.bind(this); |
||||
|
initialize(); |
||||
|
performDefaultAction(savedInstanceState); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
private void initialize() { |
||||
|
this.presenter=new ChangePasswordV2Presenter(this); |
||||
|
} |
||||
|
|
||||
|
private void performDefaultAction(Bundle savedInstanceState) { |
||||
|
if(savedInstanceState==null) |
||||
|
{ |
||||
|
toolbarTitle.setText("Profile"); |
||||
|
iv_cancel.setVisibility(View.INVISIBLE); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
protected void onStart() { |
||||
|
super.onStart(); |
||||
|
iv_back.setOnClickListener(this); |
||||
|
btn_submit.setOnClickListener(this); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
protected void onStop() { |
||||
|
super.onStop(); |
||||
|
iv_back.setOnClickListener(null); |
||||
|
btn_submit.setOnClickListener(null); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void onClick(View v) { |
||||
|
|
||||
|
switch(v.getId()) |
||||
|
{ |
||||
|
case R.id.iv_back: |
||||
|
onBackPressed(); |
||||
|
break; |
||||
|
|
||||
|
case R.id.btn_submit: |
||||
|
if(this.presenter.validateData(currentPasswordEditText.getText().toString(),newpassword.getText().toString(),confirm_password.getText().toString())) |
||||
|
{ |
||||
|
hideKeyBoard(); |
||||
|
this.presenter.changePassword(currentPasswordEditText.getText().toString(),newpassword.getText().toString()); |
||||
|
} |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void setNewPasswordError(String error) { |
||||
|
if(error==null) |
||||
|
newpasswordWrapper.setErrorEnabled(false); |
||||
|
else |
||||
|
newpasswordWrapper.setErrorEnabled(true); |
||||
|
newpasswordWrapper.setError(error); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void setConfirmPasswordError(String error) { |
||||
|
if(error==null) |
||||
|
confirmpassWrapper.setErrorEnabled(false); |
||||
|
else |
||||
|
confirmpassWrapper.setErrorEnabled(true); |
||||
|
confirmpassWrapper.setError(error); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void setCurrentPasswordError(String error) { |
||||
|
if(error==null) |
||||
|
currentpassWrapper.setErrorEnabled(false); |
||||
|
else |
||||
|
currentpassWrapper.setErrorEnabled(true); |
||||
|
currentpassWrapper.setError(error); |
||||
|
} |
||||
|
} |
@ -0,0 +1,106 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
|
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||
|
xmlns:tools="http://schemas.android.com/tools" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="match_parent" |
||||
|
android:orientation="vertical" |
||||
|
android:background="@color/background_gray" |
||||
|
|
||||
|
tools:context="com.gmeremit.online.gmeremittance_native.user_profile.view.EditProfileDetailActivity"> |
||||
|
<include layout="@layout/layout_sendmoney_toolbar"/> |
||||
|
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:gravity="center" |
||||
|
android:text="Change Password" |
||||
|
android:textSize="18sp" |
||||
|
android:textColor="@color/darkgray" |
||||
|
android:padding="10dp" |
||||
|
android:layout_gravity="center"/> |
||||
|
<LinearLayout |
||||
|
android:layout_margin="15dp" |
||||
|
android:padding="15dp" |
||||
|
android:background="@drawable/ic_rounded_white" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:orientation="vertical"> |
||||
|
|
||||
|
|
||||
|
<android.support.design.widget.TextInputLayout |
||||
|
android:layout_marginTop="20dp" |
||||
|
android:background="#fff" |
||||
|
android:paddingTop="1dp" |
||||
|
android:paddingBottom="1dp" |
||||
|
|
||||
|
android:id="@+id/currentpassWrapper" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:hint="Current Password" |
||||
|
android:textColorHint="@color/darkgray"> |
||||
|
<EditText |
||||
|
android:id="@+id/current_password" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="wrap_content" |
||||
|
style="@style/editetxtsinglelineDone" |
||||
|
android:imeOptions="actionDone" |
||||
|
android:inputType="textPassword"/> |
||||
|
|
||||
|
</android.support.design.widget.TextInputLayout> |
||||
|
<android.support.design.widget.TextInputLayout |
||||
|
android:layout_marginTop="20dp" |
||||
|
android:background="#fff" |
||||
|
android:id="@+id/newpasswordWrapper" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:hint="New Password" |
||||
|
app:hintEnabled="true" |
||||
|
android:paddingTop="1dp" |
||||
|
android:paddingBottom="1dp" |
||||
|
android:textColorHint="@color/darkgray"> |
||||
|
<EditText |
||||
|
android:id="@+id/newpassword" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:inputType="textPassword" |
||||
|
android:imeOptions="actionDone" |
||||
|
style="@style/editetxtsingleline" |
||||
|
/> |
||||
|
|
||||
|
|
||||
|
</android.support.design.widget.TextInputLayout> |
||||
|
|
||||
|
<android.support.design.widget.TextInputLayout |
||||
|
android:layout_marginTop="20dp" |
||||
|
android:background="#fff" |
||||
|
android:paddingBottom="1dp" |
||||
|
android:id="@+id/confirmpassWrapper" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="wrap_content" |
||||
|
android:hint="Confirm New Password" |
||||
|
android:textColorHint="@color/darkgray"> |
||||
|
<EditText |
||||
|
android:id="@+id/confirm_password" |
||||
|
android:imeOptions="actionDone" |
||||
|
android:layout_width="match_parent" |
||||
|
android:layout_height="wrap_content" |
||||
|
style="@style/editetxtsinglelineDone" |
||||
|
android:inputType="textPassword"/> |
||||
|
|
||||
|
</android.support.design.widget.TextInputLayout> |
||||
|
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeButton |
||||
|
android:id="@+id/btn_submit" |
||||
|
android:layout_width="200dp" |
||||
|
android:layout_height="@dimen/button_height" |
||||
|
android:text="Change" |
||||
|
android:background="@drawable/ic_rounded_background_coloured" |
||||
|
android:textColor="@color/white" |
||||
|
android:textSize="18sp" |
||||
|
android:textAllCaps="false" |
||||
|
android:layout_gravity="center" |
||||
|
android:layout_marginBottom="30dp" |
||||
|
android:layout_marginTop="20dp"/> |
||||
|
|
||||
|
</LinearLayout> |
||||
|
|
||||
|
</LinearLayout> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue