Commit c2255c83 authored by Muhammad Suryono's avatar Muhammad Suryono

Update

parents aa299fb7 372a38b6
...@@ -63,4 +63,12 @@ dependencies { ...@@ -63,4 +63,12 @@ dependencies {
implementation 'com.google.zxing:core:3.3.2' implementation 'com.google.zxing:core:3.3.2'
implementation 'com.github.florent37:expansionpanel:1.2.4' implementation 'com.github.florent37:expansionpanel:1.2.4'
implementation ('com.alimuzaffar.lib:pinentryedittext:1.3.10') {
// Exclude is only needed if you already have
// any of the following as a dependency in your project.
exclude group: 'com.android.support', module: 'support-v4'
exclude group: 'com.android.support', module: 'appcompat-v7'
exclude group: 'com.android.support', module: 'support-v13'
}
} }
\ No newline at end of file
...@@ -23,8 +23,9 @@ ...@@ -23,8 +23,9 @@
<activity android:name=".MethodePayment"/> <activity android:name=".MethodePayment"/>
<activity android:name=".ScannerNfc"/> <activity android:name=".ScannerNfc"/>
<activity android:name=".TransactionDetail"/> <activity android:name=".TransactionDetail"/>
<activity android:name=".ForgotPasswordActivity" <activity
android:windowSoftInputMode="adjustResize"></activity> android:name=".ForgotPasswordActivity"
android:windowSoftInputMode="adjustResize|stateHidden" />
<activity android:name=".RegisterActivity" /> <activity android:name=".RegisterActivity" />
<activity android:name=".TransactionActivity" /> <activity android:name=".TransactionActivity" />
<activity <activity
......
...@@ -173,7 +173,6 @@ public class CartActivity extends AppCompatActivity { ...@@ -173,7 +173,6 @@ public class CartActivity extends AppCompatActivity {
}else{ }else{
utils.dialog(CartActivity.this, utils.dialog(CartActivity.this,
true, true,
getLayoutInflater().inflate(R.layout.alert_dialog, null),
"Warning", "Warning",
"Item stock does not meet").show(); "Item stock does not meet").show();
} }
......
...@@ -5,29 +5,43 @@ import android.app.ProgressDialog; ...@@ -5,29 +5,43 @@ import android.app.ProgressDialog;
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.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.alimuzaffar.lib.pin.PinEntryEditText;
import com.google.android.material.bottomsheet.BottomSheetBehavior; import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.bottomsheet.BottomSheetDialog; import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.yono.messeripos.api.client.Client;
import com.yono.messeripos.api.service.UsersService;
import com.yono.messeripos.models.ForgotPasswordModels;
import com.yono.messeripos.models.MainViewModels;
import com.yono.messeripos.response.DataResponse;
import com.yono.messeripos.utils.Utils; import com.yono.messeripos.utils.Utils;
public class ForgotCode extends BottomSheetDialogFragment { public class ForgotCode extends BottomSheetDialogFragment {
private static final String TAG = "FORGOT CODE";
Utils utils; Utils utils;
BottomSheetBehavior sheetBehavior; BottomSheetBehavior sheetBehavior;
BottomSheetDialog sheetDialog; BottomSheetDialog sheetDialog;
RelativeLayout fpCode; RelativeLayout fpass;
View view; View view;
PinEntryEditText pinEntry;
ForgotPasswordModels forgotPasswordModels;
Context context; Context context;
public ForgotCode(Context c) { public ForgotCode(Context context, ForgotPasswordModels forgotPasswordModels) {
context = c; this.context = context;
this.forgotPasswordModels = forgotPasswordModels;
} }
@NonNull @NonNull
...@@ -39,7 +53,7 @@ public class ForgotCode extends BottomSheetDialogFragment { ...@@ -39,7 +53,7 @@ public class ForgotCode extends BottomSheetDialogFragment {
view = View.inflate(getContext(), R.layout.forgot_password_code, null); view = View.inflate(getContext(), R.layout.forgot_password_code, null);
// bindUI // bindUI
fpCode = view.findViewById(R.id.fpCode); fpass = view.findViewById(R.id.fpasswd);
// utils // utils
utils = new Utils(); utils = new Utils();
...@@ -53,7 +67,28 @@ public class ForgotCode extends BottomSheetDialogFragment { ...@@ -53,7 +67,28 @@ public class ForgotCode extends BottomSheetDialogFragment {
// set max height // set max height
sheetBehavior.setPeekHeight(setHeight); sheetBehavior.setPeekHeight(setHeight);
fpCode.setMinimumHeight(setHeight); fpass.setMinimumHeight(setHeight);
utils = new Utils();
// Log.d(TAG, "onCreateDialog: "+utils.convertGson(mainViewModels));
pinEntry = view.findViewById(R.id.txt_pin_entry);
if (pinEntry != null) {
pinEntry.setOnPinEnteredListener(new PinEntryEditText.OnPinEnteredListener() {
@Override
public void onPinEntered(CharSequence str) {
if (str.toString().equals(forgotPasswordModels.getMessage())) {
ForgotPassword forgotPassword = new ForgotPassword(context, forgotPasswordModels);
forgotPassword.setCancelable(false);
forgotPassword.show(getActivity().getSupportFragmentManager(), "Forgot Confirm");
} else {
Toast.makeText(context, "FAIL", Toast.LENGTH_SHORT).show();
pinEntry.setText(null);
}
}
});
}
return sheetDialog; return sheetDialog;
} }
......
package com.yono.messeripos;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.google.android.material.button.MaterialButton;
import com.google.android.material.textfield.TextInputEditText;
import com.yono.messeripos.api.service.UsersService;
import com.yono.messeripos.models.ForgotPasswordModels;
import com.yono.messeripos.models.UsersModels;
import com.yono.messeripos.response.DataResponse;
import com.yono.messeripos.utils.Utils;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class ForgotPassword extends BottomSheetDialogFragment {
BottomSheetDialog sheetDialog;
BottomSheetBehavior sheetBehavior;
View view;
RelativeLayout resetPassUI;
Utils utils = new Utils();
TextInputEditText newPass, etConfPass;
MaterialButton btnReset;
Context context;
UsersService usersService;
ForgotPasswordModels forgotPasswordModels;
public ForgotPassword(Context context, ForgotPasswordModels forgotPasswordModels) {
this.context = context;
this.forgotPasswordModels = forgotPasswordModels;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
sheetDialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);
// inflating layout
view = View.inflate(getContext(), R.layout.forgot_new_password, null);
// bindUI
resetPassUI = view.findViewById(R.id.resetPassword);
newPass = view.findViewById(R.id.etNewPassword);
etConfPass = view.findViewById(R.id.etPasswordConfirmation);
btnReset = view.findViewById(R.id.btnReset);
sheetDialog.setContentView(view);
sheetBehavior = BottomSheetBehavior.from((View) (view.getParent()));
// get Window size
int setHeight = utils.getWindowHeight() - (utils.getWindowHeight() * 5) / 100;
// set max height
sheetBehavior.setPeekHeight(setHeight);
resetPassUI.setMinimumHeight(setHeight);
btnReset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String newPas = newPass.getText().toString();
String conPass = etConfPass.getText().toString();
forgotPasswordModels.setPassword(newPass.getText().toString());
if (newPas.equals(conPass)) {
sheetDialog.dismiss();
usersService.resetPassword(forgotPasswordModels);
startActivity(new Intent(context, LoginActivity.class));
getActivity().finish();
}else {
utils.dialog(context, true, "password does't match", "Your password not match!").show();
}
}
});
return sheetDialog;
}
}
...@@ -3,25 +3,73 @@ package com.yono.messeripos; ...@@ -3,25 +3,73 @@ package com.yono.messeripos;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.View; import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import com.yono.messeripos.api.client.Client;
import com.yono.messeripos.api.service.UsersService;
import com.yono.messeripos.models.ForgotPasswordModels;
import com.yono.messeripos.models.MainViewModels;
import com.yono.messeripos.response.DataResponse;
import com.yono.messeripos.utils.Utils;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class ForgotPasswordActivity extends AppCompatActivity { public class ForgotPasswordActivity extends AppCompatActivity {
ImageButton btnReset; ImageButton btnReset;
ForgotCode forgotCode; ForgotCode forgotCode;
ForgotPasswordModels forgotPasswordModels;
Utils utils = new Utils();
Client client=new Client();
UsersService usersService;
EditText formForgot;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_forgot_password); setContentView(R.layout.activity_forgot_password);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
forgotPasswordModels = new ForgotPasswordModels();
// bind UI
btnReset = findViewById(R.id.btn_reset_password); btnReset = findViewById(R.id.btn_reset_password);
formForgot = findViewById(R.id.forgotEmail);
btnReset.setOnClickListener(new View.OnClickListener() { btnReset.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
forgotCode = new ForgotCode(ForgotPasswordActivity.this);
forgotCode.show(getSupportFragmentManager(), "forgot code"); forgotPasswordModels.setEmail(formForgot.getText().toString());
forgotPasswordModels.setMessage(utils.getRandomNumberString());
usersService = client.Client(UsersService.class);
usersService.postForgotPassword(forgotPasswordModels).enqueue(new Callback<DataResponse>() {
@Override
public void onResponse(Call<DataResponse> call, Response<DataResponse> response) {
forgotCode = new ForgotCode(ForgotPasswordActivity.this, forgotPasswordModels);
forgotCode.setCancelable(false);
forgotCode.show(getSupportFragmentManager(), "forgot code");
}
@Override
public void onFailure(Call<DataResponse> call, Throwable t) {
}
});
} }
}); });
} }
......
...@@ -144,19 +144,17 @@ public class LoginState extends BottomSheetDialogFragment { ...@@ -144,19 +144,17 @@ public class LoginState extends BottomSheetDialogFragment {
.observe((LifecycleOwner) context, usersModelsDataResponse -> { .observe((LifecycleOwner) context, usersModelsDataResponse -> {
if (usersModelsDataResponse != null) { if (usersModelsDataResponse != null) {
final View customLayout = getLayoutInflater()
.inflate(R.layout.alert_dialog, null);
switch (usersModelsDataResponse.getMessageData().toLowerCase()) { switch (usersModelsDataResponse.getMessageData().toLowerCase()) {
case "invalid username or password": case "invalid username or password":
setAllLayoutToTrue(); setAllLayoutToTrue();
errUserPass(customLayout); errUserPass();
break; break;
case "please activate your email first": case "please activate your email first":
setAllLayoutToTrue(); setAllLayoutToTrue();
activateEmail(customLayout); activateEmail();
default: default:
break; break;
...@@ -206,10 +204,10 @@ public class LoginState extends BottomSheetDialogFragment { ...@@ -206,10 +204,10 @@ public class LoginState extends BottomSheetDialogFragment {
closeBtn.setEnabled(false); closeBtn.setEnabled(false);
} }
private void activateEmail(View customLayout) { private void activateEmail() {
utils = new Utils(customLayout); utils = new Utils();
utils.dialog(context, false, customLayout, "Please Verify Email", utils.dialog(context, false, "Please Verify Email",
"Please verify your email before login", "Please verify your email before login",
"close", "verify") "close", "verify")
.show(); .show();
...@@ -230,10 +228,10 @@ public class LoginState extends BottomSheetDialogFragment { ...@@ -230,10 +228,10 @@ public class LoginState extends BottomSheetDialogFragment {
}); });
} }
private void errUserPass(View customLayout) { private void errUserPass() {
utils = new Utils(customLayout); utils = new Utils();
utils.dialog(context, false, customLayout, "Wrong Username or Password", utils.dialog(context, false, "Wrong Username or Password",
"The username or password is incorrect. Please try again!", "The username or password is incorrect. Please try again!",
"Try Again") "Try Again")
.show(); .show();
......
...@@ -180,10 +180,8 @@ public class RegisterState extends BottomSheetDialogFragment { ...@@ -180,10 +180,8 @@ public class RegisterState extends BottomSheetDialogFragment {
* */ * */
setAllLayoutToFalse(); setAllLayoutToFalse();
if (usersModelsDataResponse != null) { if (usersModelsDataResponse != null) {
final View customLayout = getLayoutInflater()
.inflate(R.layout.alert_dialog, null);
activateEmail(customLayout); activateEmail();
setAllLayoutToTrue(); setAllLayoutToTrue();
} }
} }
...@@ -201,9 +199,7 @@ public class RegisterState extends BottomSheetDialogFragment { ...@@ -201,9 +199,7 @@ public class RegisterState extends BottomSheetDialogFragment {
return sheetDialog2; return sheetDialog2;
} }
private void setAllLayoutToTrue() {
private void
setAllLayoutToTrue() {
pbReg.setVisibility(View.GONE); pbReg.setVisibility(View.GONE);
registerButton.setText(DEFAULT_REGISTER); registerButton.setText(DEFAULT_REGISTER);
sheetDialog2.setCancelable(true); sheetDialog2.setCancelable(true);
...@@ -226,10 +222,10 @@ public class RegisterState extends BottomSheetDialogFragment { ...@@ -226,10 +222,10 @@ public class RegisterState extends BottomSheetDialogFragment {
} }
private void activateEmail(View customLayout) { private void activateEmail() {
utils = new Utils(customLayout); utils = new Utils();
utils.dialog(context, false, customLayout, "Please Verifiy Email", utils.dialog(context, false, "Please Verifiy Email",
"Please verify your email before login", "Please verify your email before login",
"close", "verify") "close", "verify")
.show(); .show();
......
...@@ -18,4 +18,7 @@ public interface UsersService { ...@@ -18,4 +18,7 @@ public interface UsersService {
@POST(ApiHelper.VERSI_API_1+"forgot-password") @POST(ApiHelper.VERSI_API_1+"forgot-password")
Call<DataResponse> postForgotPassword(@Body ForgotPasswordModels forgotPasswordModels); Call<DataResponse> postForgotPassword(@Body ForgotPasswordModels forgotPasswordModels);
@POST(ApiHelper.VERSI_API_1+"reset-password")
Call<DataResponse> resetPassword(@Body ForgotPasswordModels forgotPasswordModels);
} }
...@@ -9,6 +9,9 @@ public class ForgotPasswordModels { ...@@ -9,6 +9,9 @@ public class ForgotPasswordModels {
@SerializedName("message") @SerializedName("message")
private String message; private String message;
@SerializedName("password")
private String password;
public ForgotPasswordModels() { public ForgotPasswordModels() {
} }
...@@ -32,4 +35,12 @@ public class ForgotPasswordModels { ...@@ -32,4 +35,12 @@ public class ForgotPasswordModels {
public void setMessage(String message) { public void setMessage(String message) {
this.message = message; this.message = message;
} }
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
} }
...@@ -8,6 +8,7 @@ import android.graphics.BitmapFactory; ...@@ -8,6 +8,7 @@ import android.graphics.BitmapFactory;
import android.os.Build; import android.os.Build;
import android.util.Base64; import android.util.Base64;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
...@@ -224,12 +225,13 @@ public class Utils { ...@@ -224,12 +225,13 @@ public class Utils {
* Alert Dialog * Alert Dialog
* @param context * @param context
* @param cancelable * @param cancelable
* @param view
* @return * @return
*/ */
public AlertDialog dialog(Context context, Boolean cancelable, View view) { public AlertDialog dialog(Context context, Boolean cancelable) {
CardView btCard = view.findViewById(R.id.cvAlertOnClick); final View view = View.inflate(context, R.layout.alert_dialog, null);
CardView btnCard = view.findViewById(R.id.cvAlertOnClick);
AlertDialog.Builder builder = new AlertDialog.Builder(context) AlertDialog.Builder builder = new AlertDialog.Builder(context)
.setCancelable(cancelable) .setCancelable(cancelable)
...@@ -242,10 +244,14 @@ public class Utils { ...@@ -242,10 +244,14 @@ public class Utils {
} }
public AlertDialog dialog(Context context, Boolean cancelable, View view, @Nullable String titles) { public AlertDialog dialog(Context context,
Boolean cancelable,
@Nullable String titles) {
final View view = View.inflate(context, R.layout.alert_dialog, null);
TextView title = view.findViewById(R.id.alertTitles); TextView title = view.findViewById(R.id.alertTitles);
CardView btCard = view.findViewById(R.id.cvAlertOnClick); CardView btnCard = view.findViewById(R.id.cvAlertOnClick);
// set title and message // set title and message
if (titles != null){ if (titles != null){
...@@ -263,7 +269,12 @@ public class Utils { ...@@ -263,7 +269,12 @@ public class Utils {
} }
public AlertDialog dialog(Context context, Boolean cancelable, View view, @Nullable String titles, @Nullable String messages) { public AlertDialog dialog(Context context,
Boolean cancelable,
@Nullable String titles,
@Nullable String messages) {
final View view = View.inflate(context, R.layout.alert_dialog, null);
TextView title = view.findViewById(R.id.alertTitles); TextView title = view.findViewById(R.id.alertTitles);
TextView message = view.findViewById(R.id.alertBody); TextView message = view.findViewById(R.id.alertBody);
...@@ -290,16 +301,18 @@ public class Utils { ...@@ -290,16 +301,18 @@ public class Utils {
public AlertDialog dialog(Context context, public AlertDialog dialog(Context context,
Boolean cancelable, Boolean cancelable,
View view,
@Nullable String titles, @Nullable String titles,
@Nullable String messages, @Nullable String messages,
@Nullable String dismiss) { @Nullable String dismiss) {
final View view = View.inflate(context, R.layout.alert_dialog, null);
TextView title = view.findViewById(R.id.alertTitles); TextView title = view.findViewById(R.id.alertTitles);
TextView message = view.findViewById(R.id.alertBody); TextView message = view.findViewById(R.id.alertBody);
TextView button2 = view.findViewById(R.id.tvTextBtn2); TextView button2 = view.findViewById(R.id.tvTextBtn2);
CardView btnCard2 = view.findViewById(R.id.cvAlertOnClick2); CardView btnCard2 = view.findViewById(R.id.cvAlertOnClick2);
// set title and message // set title and message
if (titles != null){ if (titles != null){
title.setText(titles); title.setText(titles);
...@@ -328,7 +341,6 @@ public class Utils { ...@@ -328,7 +341,6 @@ public class Utils {
public AlertDialog dialog(Context context, public AlertDialog dialog(Context context,
Boolean cancelable, Boolean cancelable,
View view,
@Nullable String titles, @Nullable String titles,
@Nullable String messages, @Nullable String messages,
@Nullable String dismiss, @Nullable String dismiss,
...@@ -339,6 +351,8 @@ public class Utils { ...@@ -339,6 +351,8 @@ public class Utils {
* Button2 untuk link * Button2 untuk link
*/ */
final View view = View.inflate(context, R.layout.alert_dialog, null);
TextView title = view.findViewById(R.id.alertTitles); TextView title = view.findViewById(R.id.alertTitles);
TextView message = view.findViewById(R.id.alertBody); TextView message = view.findViewById(R.id.alertBody);
TextView button = view.findViewById(R.id.tvTextBtn); TextView button = view.findViewById(R.id.tvTextBtn);
...@@ -385,9 +399,9 @@ public class Utils { ...@@ -385,9 +399,9 @@ public class Utils {
// It will generate 6 digit random Number. // It will generate 6 digit random Number.
// from 0 to 999999 // from 0 to 999999
Random rnd = new Random(); Random rnd = new Random();
int number = rnd.nextInt(999999); int number = rnd.nextInt(9999);
// this will convert any number sequence into 6 character. // this will convert any number sequence into 6 character.
return String.format("%06d", number); return String.format("%04d", number);
} }
} }
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_mail_outline_black_24dp" android:drawableStart="@drawable/ic_mail_outline_black_24dp"
android:layout_marginEnd="20dp" android:layout_marginEnd="20dp"
android:id="@+id/email" android:id="@+id/forgotEmail"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:textSize="14sp" android:textSize="14sp"
android:drawablePadding="10dp" android:drawablePadding="10dp"
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:paddingVertical="20dp"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
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:fitsSystemWindows="true">
<com.google.android.material.textfield.TextInputLayout <androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/tfCurrentPassword" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_height="match_parent"
android:layout_height="wrap_content" android:layout_width="match_parent">
android:layout_margin="10dp"
android:hint="Current Password"
android:textColor="#fff"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
tools:ignore="MissingConstraints">
<com.google.android.material.textfield.TextInputEditText <RelativeLayout
android:id="@+id/etCurrentPassword" android:id="@+id/resetPassword"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:inputType="textPassword" android:layout_height="match_parent"
android:imeOptions="actionNext" android:fitsSystemWindows="true">
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tfNewPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="New Password"
android:textColor="#fff"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputEditText
android:id="@+id/tfNewPassword" android:id="@+id/etNewPassword"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:inputType="textPassword"
android:layout_margin="10dp" android:imeOptions="actionNext"
android:hint="New Password" android:layout_height="wrap_content" />
android:textColor="#fff"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
app:layout_constraintTop_toBottomOf="@id/tfCurrentPassword">
<com.google.android.material.textfield.TextInputEditText </com.google.android.material.textfield.TextInputLayout>
android:id="@+id/etNewPassword"
android:layout_width="match_parent"
android:inputType="textPassword"
android:imeOptions="actionNext"
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/tfPasswordConfirmation" android:id="@+id/tfPasswordConfirmation"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="10dp" android:layout_margin="10dp"
android:hint="Password Confirmation" android:hint="Password Confirmation"
android:textColor="#fff" android:textColor="#fff"
app:layout_constraintTop_toBottomOf="@id/tfNewPassword" android:layout_below="@id/tfNewPassword">
tools:layout_editor_absoluteX="10dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etPasswordConfirmation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:imeOptions="actionNext" />
</com.google.android.material.textfield.TextInputLayout> <com.google.android.material.textfield.TextInputEditText
android:id="@+id/etPasswordConfirmation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:imeOptions="actionNext" />
<com.google.android.material.button.MaterialButton </com.google.android.material.textfield.TextInputLayout>
android:id="@+id/btnAdd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="@string/add"
android:padding="16dp"
app:layout_constraintTop_toBottomOf="@id/tfPasswordConfirmation"
tools:ignore="MissingConstraints" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnReset"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="@string/btn_reset_password"
android:padding="16dp"
android:layout_below="@id/tfPasswordConfirmation"/>
</androidx.constraintlayout.widget.ConstraintLayout> </RelativeLayout>
\ No newline at end of file </androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>
\ No newline at end of file
...@@ -8,105 +8,47 @@ ...@@ -8,105 +8,47 @@
android:layout_width="match_parent"> android:layout_width="match_parent">
<RelativeLayout <RelativeLayout
android:id="@+id/fpCode" android:id="@+id/fpasswd"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingHorizontal="70dp"
android:padding="16dp"> android:layout_marginTop="100dp"
android:layout_height="match_parent">
<androidx.cardview.widget.CardView
android:id="@+id/verifCode" <com.google.android.material.textview.MaterialTextView
android:layout_width="match_parent" android:id="@+id/insertCode"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_centerInParent="true"> android:layout_height="wrap_content"
android:text="Insert Code"
<androidx.constraintlayout.widget.ConstraintLayout android:textStyle="bold"
android:layout_width="match_parent" android:textSize="18sp"
android:layout_height="wrap_content"> android:layout_marginBottom="20dp"
android:layout_alignParentTop="true"
<EditText android:layout_centerHorizontal="true"/>
android:layout_width="wrap_content"
android:layout_height="wrap_content" <com.alimuzaffar.lib.pin.PinEntryEditText
android:id="@+id/edit_text_1" android:id="@+id/txt_pin_entry"
android:inputType="number" android:layout_width="match_parent"
android:maxLength="1" android:layout_height="wrap_content"
android:maxLines="1" android:cursorVisible="false"
android:gravity="center" android:digits="1234567890"
android:padding="20dp" android:inputType="number"
android:nextFocusRight="@id/edit_text_2" android:maxLength="4"
android:singleLine="true" android:textIsSelectable="false"
app:layout_constraintTop_toTopOf="parent" android:textSize="20sp"
app:layout_constraintEnd_toStartOf="@id/edit_text_2" android:layout_marginBottom="20dp"
app:layout_constraintBottom_toBottomOf="parent" app:pinAnimationType="fromBottom"
app:layout_constraintStart_toStartOf="parent" app:pinTextBottomPadding="20dp"
tools:ignore="Autofill,LabelFor"/> android:layoutDirection="ltr"
android:layout_below="@id/insertCode"
<EditText />
android:layout_width="wrap_content"
android:layout_height="wrap_content" <com.google.android.material.textview.MaterialTextView
android:id="@+id/edit_text_2" android:layout_width="wrap_content"
android:inputType="number" android:layout_height="wrap_content"
android:maxLength="1" android:text="enter the code that has been sent to the email"
android:maxLines="1" android:layout_below="@id/txt_pin_entry"
android:gravity="center" android:layout_centerHorizontal="true"/>
android:nextFocusRight="@id/edit_text_3"
android:padding="20dp" </RelativeLayout>
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@id/edit_text_3"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/edit_text_1"
tools:ignore="Autofill,LabelFor"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/edit_text_3"
android:inputType="number"
android:maxLength="1"
android:maxLines="1"
android:gravity="center"
android:padding="20dp"
android:nextFocusRight="@id/edit_text_4"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@id/edit_text_4"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/edit_text_2"
tools:ignore="Autofill,LabelFor"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/edit_text_4"
android:inputType="number"
android:maxLength="1"
android:maxLines="1"
android:gravity="center"
android:padding="20dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/edit_text_3"
tools:ignore="Autofill,LabelFor"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<!-- <androidx.cardview.widget.CardView-->
<!-- android:layout_alignParentBottom="true"-->
<!-- android:layout_below="@id/verifCode"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content">-->
<!-- -->
<!-- <GridLayout-->
<!-- android:columnCount="3"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content">-->
<!-- -->
<!-- <com.google.android.material.button.MaterialButton-->
<!-- android:text="1"/>-->
<!-- -->
<!-- </GridLayout>-->
<!-- </androidx.cardview.widget.CardView>-->
</RelativeLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout> </layout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment