From d895d7e4da1e0da8345979de72d738ba59cb73ea Mon Sep 17 00:00:00 2001
From: Nezumi <123229563+Nez27@users.noreply.github.com>
Date: Thu, 2 Mar 2023 11:19:30 +0700
Subject: [PATCH] Add profile account and change password screen
---
app/src/main/AndroidManifest.xml | 10 +-
.../Activity/AccountAndProfileActivity.java | 111 ++++++++
.../Activity/ChangePasswordActivity.java | 51 ++++
.../foodify/Activity/SignUpActivity.java | 5 +-
.../foodify/Fragment/ProfileFragment.java | 14 +-
.../layout/activity_account_and_profile.xml | 242 ++++++++++++++++++
.../res/layout/activity_change_password.xml | 123 +++++++++
app/src/main/res/layout/activity_sign_up.xml | 23 +-
app/src/main/res/layout/fragment_profile.xml | 114 ++++++++-
app/src/main/res/values/strings.xml | 5 +
10 files changed, 681 insertions(+), 17 deletions(-)
create mode 100644 app/src/main/java/com/capstone/foodify/Activity/AccountAndProfileActivity.java
create mode 100644 app/src/main/java/com/capstone/foodify/Activity/ChangePasswordActivity.java
create mode 100644 app/src/main/res/layout/activity_account_and_profile.xml
create mode 100644 app/src/main/res/layout/activity_change_password.xml
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 65c3294..c0876b8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -14,6 +14,12 @@
android:supportsRtl="true"
android:theme="@style/Theme.Foodify"
tools:targetApi="31">
+
+
@@ -38,8 +44,8 @@
android:noHistory="true" />
+ android:exported="true"
+ android:theme="@style/Theme.Foodify.SplashScreen">
diff --git a/app/src/main/java/com/capstone/foodify/Activity/AccountAndProfileActivity.java b/app/src/main/java/com/capstone/foodify/Activity/AccountAndProfileActivity.java
new file mode 100644
index 0000000..4b53946
--- /dev/null
+++ b/app/src/main/java/com/capstone/foodify/Activity/AccountAndProfileActivity.java
@@ -0,0 +1,111 @@
+package com.capstone.foodify.Activity;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.app.DatePickerDialog;
+import android.content.Intent;
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.DatePicker;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+
+import com.capstone.foodify.R;
+import com.google.android.material.textfield.TextInputLayout;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Locale;
+
+public class AccountAndProfileActivity extends AppCompatActivity {
+
+ TextInputLayout textInput_email, textInput_phone, textInput_firstName, textInput_lastName, textInput_birthDay, textInput_username;
+
+ EditText edt_birthday;
+ final Calendar myCalendar= Calendar.getInstance();
+ LinearLayout change_password;
+
+ ImageView back_image;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_account_and_profile);
+
+ initComponent();
+ setFontUI();
+ chooseDateOfBirth();
+
+ change_password.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ startActivity(new Intent(AccountAndProfileActivity.this, ChangePasswordActivity.class));
+ }
+ });
+
+ back_image.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ onBackPressed();
+ }
+ });
+
+
+ }
+
+ private void initComponent() {
+ textInput_email= (TextInputLayout) findViewById(R.id.textInput_email);
+ textInput_phone = (TextInputLayout) findViewById(R.id.textInput_phone);
+ textInput_firstName = (TextInputLayout) findViewById(R.id.textInput_firstName);
+ textInput_lastName = (TextInputLayout) findViewById(R.id.textInput_lastName);
+ textInput_birthDay = (TextInputLayout) findViewById(R.id.textInput_birthDay);
+ textInput_username = (TextInputLayout) findViewById(R.id.textInput_username);
+ change_password = (LinearLayout) findViewById(R.id.change_password);
+
+ back_image = (ImageView) findViewById(R.id.back_image);
+
+ edt_birthday = (EditText) findViewById(R.id.edt_birthDay);
+ }
+
+ private void setFontUI() {
+ Typeface bebas= Typeface.createFromAsset(getAssets(), "font/bebas.ttf");
+
+ //Set Type face
+ textInput_email.setTypeface(bebas);
+ textInput_phone.setTypeface(bebas);
+ textInput_firstName.setTypeface(bebas);
+ textInput_lastName.setTypeface(bebas);
+ textInput_birthDay.setTypeface(bebas);
+ textInput_username.setTypeface(bebas);
+
+ edt_birthday.setTypeface(bebas);
+ }
+
+ private void chooseDateOfBirth() {
+ //Calendar date of birth
+
+ DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
+ @Override
+ public void onDateSet(DatePicker view, int year, int month, int day) {
+ myCalendar.set(Calendar.YEAR, year);
+ myCalendar.set(Calendar.MONTH,month);
+ myCalendar.set(Calendar.DAY_OF_MONTH,day);
+ updateLabel();
+ }
+ };
+ edt_birthday.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new DatePickerDialog(AccountAndProfileActivity.this,date,myCalendar.get(Calendar.YEAR),myCalendar.get(Calendar.MONTH),myCalendar.get(Calendar.DAY_OF_MONTH)).show();
+ }
+ });
+ }
+
+ private void updateLabel(){
+ String myFormat="dd/MM/yyyy";
+ SimpleDateFormat dateFormat=new SimpleDateFormat(myFormat, Locale.US);
+ edt_birthday.setText(dateFormat.format(myCalendar.getTime()));
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/capstone/foodify/Activity/ChangePasswordActivity.java b/app/src/main/java/com/capstone/foodify/Activity/ChangePasswordActivity.java
new file mode 100644
index 0000000..031b9d6
--- /dev/null
+++ b/app/src/main/java/com/capstone/foodify/Activity/ChangePasswordActivity.java
@@ -0,0 +1,51 @@
+package com.capstone.foodify.Activity;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ImageView;
+
+import com.capstone.foodify.R;
+import com.google.android.material.textfield.TextInputLayout;
+
+public class ChangePasswordActivity extends AppCompatActivity {
+
+ TextInputLayout textInput_old_password, textInput_password, textInput_password_confirm;
+
+ ImageView back_image;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_change_password);
+
+ initComponent();
+ setFontUI();
+
+ //Handle event when back image on click
+ back_image.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ onBackPressed();
+ }
+ });
+ }
+
+ private void initComponent() {
+ textInput_old_password = findViewById(R.id.textInput_old_password);
+ textInput_password = findViewById(R.id.textInput_password);
+ textInput_password_confirm = findViewById(R.id.textInput_password_confirm);
+
+ back_image = findViewById(R.id.back_image);
+ }
+
+ private void setFontUI() {
+ Typeface bebas= Typeface.createFromAsset(getAssets(), "font/bebas.ttf");
+
+ textInput_password.setTypeface(bebas);
+ textInput_old_password.setTypeface(bebas);
+ textInput_password_confirm.setTypeface(bebas);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java b/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java
index c4bb27e..ad3a36c 100644
--- a/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java
+++ b/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java
@@ -36,7 +36,8 @@ import retrofit2.Response;
public class SignUpActivity extends AppCompatActivity {
TextInputLayout textInput_email, textInput_password, textInput_phone,
- textInput_address, textInput_repeatPassword, textInput_firstName, textInput_lastName, textInput_birthDay;
+ textInput_address, textInput_repeatPassword, textInput_firstName, textInput_lastName, textInput_birthDay,
+ textInput_username;
final Calendar myCalendar= Calendar.getInstance();
EditText edt_birthday;
TextView signIn_textView;
@@ -101,6 +102,7 @@ public class SignUpActivity extends AppCompatActivity {
textInput_firstName = (TextInputLayout) findViewById(R.id.textInput_firstName);
textInput_lastName = (TextInputLayout) findViewById(R.id.textInput_lastName);
textInput_birthDay = (TextInputLayout) findViewById(R.id.textInput_birthDay);
+ textInput_username = (TextInputLayout) findViewById(R.id.textInput_username);
edt_birthday = (EditText) findViewById(R.id.edt_birthDay);
@@ -251,6 +253,7 @@ public class SignUpActivity extends AppCompatActivity {
textInput_firstName.setTypeface(bebas);
textInput_lastName.setTypeface(bebas);
textInput_birthDay.setTypeface(bebas);
+ textInput_username.setTypeface(bebas);
edt_birthday.setTypeface(bebas);
}
diff --git a/app/src/main/java/com/capstone/foodify/Fragment/ProfileFragment.java b/app/src/main/java/com/capstone/foodify/Fragment/ProfileFragment.java
index 56623da..e107638 100644
--- a/app/src/main/java/com/capstone/foodify/Fragment/ProfileFragment.java
+++ b/app/src/main/java/com/capstone/foodify/Fragment/ProfileFragment.java
@@ -6,9 +6,11 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.LinearLayout;
import androidx.fragment.app.Fragment;
+import com.capstone.foodify.Activity.AccountAndProfileActivity;
import com.capstone.foodify.Activity.SignUpActivity;
import com.capstone.foodify.R;
@@ -16,17 +18,25 @@ public class ProfileFragment extends Fragment {
Button btnSignUp;
+ LinearLayout account_and_profile;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_profile, container, false);
btnSignUp = (Button) rootView.findViewById(R.id.sign_up_button);
+ account_and_profile = (LinearLayout) rootView.findViewById(R.id.account_and_profile);
btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- Intent i =new Intent(getActivity(), SignUpActivity.class);
- startActivity(i);
+ startActivity(new Intent(getActivity(), SignUpActivity.class));
+ }
+ });
+
+ account_and_profile.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ startActivity(new Intent(getActivity(), AccountAndProfileActivity.class));
}
});
return rootView;
diff --git a/app/src/main/res/layout/activity_account_and_profile.xml b/app/src/main/res/layout/activity_account_and_profile.xml
new file mode 100644
index 0000000..481cd27
--- /dev/null
+++ b/app/src/main/res/layout/activity_account_and_profile.xml
@@ -0,0 +1,242 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_change_password.xml b/app/src/main/res/layout/activity_change_password.xml
new file mode 100644
index 0000000..a5de80b
--- /dev/null
+++ b/app/src/main/res/layout/activity_change_password.xml
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sign_up.xml b/app/src/main/res/layout/activity_sign_up.xml
index 78856cc..0f69a18 100644
--- a/app/src/main/res/layout/activity_sign_up.xml
+++ b/app/src/main/res/layout/activity_sign_up.xml
@@ -75,6 +75,27 @@
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/textInput_username">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5d2baca..0f6be95 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -41,4 +41,9 @@
Favourite Icon
Non odit iusto delectus maxime sit placeat voluptatum dolorem. Dolores quos rerum iusto.
Beatae totam ab veritatis aliquid tenetur qui ut. Quia ut dolorum enim et. .
+ Tên người dùng
+ Cập nhật
+ Mật khẩu cũ
+ Đổi mật khẩu
+ Thông tin tài khoản
\ No newline at end of file