mirror of
https://github.com/Nezumi-2711/Foodify.git
synced 2026-09-22 13:38:41 +00:00
Manage address function + improve performance app
This commit is contained in:
+1
-1
@@ -71,7 +71,7 @@ dependencies {
|
|||||||
implementation 'com.squareup.picasso:picasso:2.71828'
|
implementation 'com.squareup.picasso:picasso:2.71828'
|
||||||
implementation 'com.github.ome450901:SimpleRatingBar:1.5.1'
|
implementation 'com.github.ome450901:SimpleRatingBar:1.5.1'
|
||||||
implementation 'com.cepheuen.elegant-number-button:lib:1.0.2'
|
implementation 'com.cepheuen.elegant-number-button:lib:1.0.2'
|
||||||
implementation 'com.github.slavce14:SJ-Dialog:1.5'
|
implementation 'com.github.slavce14:SJ-Dialog:1.6'
|
||||||
implementation 'com.saadahmedev.popup-dialog:popup-dialog:1.0.2'
|
implementation 'com.saadahmedev.popup-dialog:popup-dialog:1.0.2'
|
||||||
implementation 'com.github.gabriel-TheCode:AestheticDialogs:1.3.6'
|
implementation 'com.github.gabriel-TheCode:AestheticDialogs:1.3.6'
|
||||||
implementation 'io.github.pilgr:paperdb:2.7.2'
|
implementation 'io.github.pilgr:paperdb:2.7.2'
|
||||||
|
|||||||
@@ -71,4 +71,10 @@ public interface FoodApiToken {
|
|||||||
|
|
||||||
@POST("users/{userId}/addresses")
|
@POST("users/{userId}/addresses")
|
||||||
Call<CustomResponse> createAddressUser(@Path("userId") int userId, @Body Address address);
|
Call<CustomResponse> createAddressUser(@Path("userId") int userId, @Body Address address);
|
||||||
|
|
||||||
|
@PUT("users/{userId}/addresses/{addressId}")
|
||||||
|
Call<CustomResponse> editAddressUser(@Path("userId") int userId, @Path("addressId") int addressId, @Body Address address);
|
||||||
|
|
||||||
|
@DELETE("users/{userId}/addresses/{addressId}")
|
||||||
|
Call<CustomResponse> deleteAddressUser(@Path("userId") int userId, @Path("addressId") int addressId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
package com.capstone.foodify.Activity;
|
package com.capstone.foodify.Activity;
|
||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -14,25 +9,36 @@ import android.view.ViewGroup;
|
|||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
import android.widget.CheckBox;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.capstone.foodify.API.FoodApi;
|
import com.capstone.foodify.API.FoodApi;
|
||||||
import com.capstone.foodify.API.FoodApiToken;
|
import com.capstone.foodify.API.FoodApiToken;
|
||||||
|
import com.capstone.foodify.Adapter.AddressAdapter;
|
||||||
import com.capstone.foodify.Common;
|
import com.capstone.foodify.Common;
|
||||||
import com.capstone.foodify.Model.Address;
|
import com.capstone.foodify.Model.Address;
|
||||||
import com.capstone.foodify.Adapter.AddressAdapter;
|
|
||||||
import com.capstone.foodify.Model.DistrictWardResponse;
|
import com.capstone.foodify.Model.DistrictWardResponse;
|
||||||
import com.capstone.foodify.Model.Response.CustomResponse;
|
import com.capstone.foodify.Model.Response.CustomResponse;
|
||||||
|
import com.capstone.foodify.Model.User;
|
||||||
import com.capstone.foodify.R;
|
import com.capstone.foodify.R;
|
||||||
import com.google.android.material.textfield.TextInputLayout;
|
import com.google.android.material.textfield.TextInputLayout;
|
||||||
|
import com.sjapps.library.customdialog.BasicDialog;
|
||||||
import com.sjapps.library.customdialog.CustomViewDialog;
|
import com.sjapps.library.customdialog.CustomViewDialog;
|
||||||
import com.sjapps.library.customdialog.DialogButtonEvents;
|
import com.sjapps.library.customdialog.DialogButtonEvents;
|
||||||
|
import com.sjapps.library.customdialog.SJDialog;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
@@ -46,12 +52,13 @@ public class AddressManagerActivity extends AppCompatActivity {
|
|||||||
private AddressAdapter adapter;
|
private AddressAdapter adapter;
|
||||||
private Button add_address_button;
|
private Button add_address_button;
|
||||||
private TextInputLayout textInput_address;
|
private TextInputLayout textInput_address;
|
||||||
private ImageView back_image;
|
private ImageView back_image, edit_btn;
|
||||||
private TextView txt_Address, errorTextDistrictWard;
|
private TextView txt_Address, errorTextDistrictWard;
|
||||||
private List<Address> listAddress = new ArrayList<>();
|
private List<Address> listAddress = new ArrayList<>();
|
||||||
Spinner wardSpinner, districtSpinner;
|
Spinner wardSpinner, districtSpinner;
|
||||||
EditText edt_address;
|
EditText edt_address;
|
||||||
ConstraintLayout progressLayout, progressLayoutDialog;
|
ConstraintLayout progressLayout, progressLayoutDialog;
|
||||||
|
CheckBox default_address_checkbox;
|
||||||
private static final ArrayList<String> wardList = new ArrayList<>();
|
private static final ArrayList<String> wardList = new ArrayList<>();
|
||||||
private static final ArrayList<String> districtList = new ArrayList<>();
|
private static final ArrayList<String> districtList = new ArrayList<>();
|
||||||
String address, ward, district;
|
String address, ward, district;
|
||||||
@@ -67,6 +74,7 @@ public class AddressManagerActivity extends AppCompatActivity {
|
|||||||
back_image = findViewById(R.id.back_image);
|
back_image = findViewById(R.id.back_image);
|
||||||
txt_Address = findViewById(R.id.text_view_address);
|
txt_Address = findViewById(R.id.text_view_address);
|
||||||
progressLayout = findViewById(R.id.progress_layout);
|
progressLayout = findViewById(R.id.progress_layout);
|
||||||
|
edit_btn = findViewById(R.id.edit_button);
|
||||||
|
|
||||||
//Set layout recyclerview
|
//Set layout recyclerview
|
||||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
|
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
|
||||||
@@ -87,22 +95,40 @@ public class AddressManagerActivity extends AppCompatActivity {
|
|||||||
add_address_button.setOnClickListener(new View.OnClickListener() {
|
add_address_button.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
showAddAddressDialog(null, null, null);
|
showAddAndEditAddressDialog(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//Set event when user click on edit button
|
||||||
|
edit_btn.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
showAddAndEditAddressDialog(defaultAddress);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getAddressList(){
|
private void getAddressList(){
|
||||||
|
listAddress.clear();
|
||||||
|
|
||||||
listAddress.addAll(Common.CURRENT_USER.getAddresses());
|
listAddress.addAll(Common.CURRENT_USER.getAddresses());
|
||||||
|
|
||||||
|
//Remove default address in address list
|
||||||
|
for(Address tempAddress: Common.CURRENT_USER.getAddresses()){
|
||||||
|
if(Common.CURRENT_USER.getDefaultAddress() == tempAddress.getId()){
|
||||||
|
listAddress.remove(tempAddress);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
adapter.setData(listAddress);
|
adapter.setData(listAddress);
|
||||||
recycler_view_address.setAdapter(adapter);
|
recycler_view_address.setAdapter(adapter);
|
||||||
|
|
||||||
progressLayout.setVisibility(View.GONE);
|
progressLayout.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initData(){
|
private void initDefaultAddress(){
|
||||||
//Create a full address string
|
//Create a full address string
|
||||||
String fullAddress = defaultAddress.getAddress() + ", " + defaultAddress.getWard() + ", " + defaultAddress.getDistrict();
|
String fullAddress = defaultAddress.getAddress() + ", " + defaultAddress.getWard() + ", " + defaultAddress.getDistrict();
|
||||||
|
|
||||||
@@ -114,7 +140,7 @@ public class AddressManagerActivity extends AppCompatActivity {
|
|||||||
for(Address tempAddress: Common.CURRENT_USER.getAddresses()){
|
for(Address tempAddress: Common.CURRENT_USER.getAddresses()){
|
||||||
if(Common.CURRENT_USER.getDefaultAddress() == tempAddress.getId()){
|
if(Common.CURRENT_USER.getDefaultAddress() == tempAddress.getId()){
|
||||||
defaultAddress = tempAddress;
|
defaultAddress = tempAddress;
|
||||||
initData();
|
initDefaultAddress();
|
||||||
getAddressList();
|
getAddressList();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -122,12 +148,12 @@ public class AddressManagerActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
if(defaultAddress == null){
|
if(defaultAddress == null){
|
||||||
progressLayout.setVisibility(View.GONE);
|
progressLayout.setVisibility(View.GONE);
|
||||||
Toast.makeText(this, "Đã có lỗi từ hệ thống, vui lòng thử lại sau!", Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, "Không lấy được default address!", Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addAddress(String address, String ward, String district){
|
private void addAddress(String address, String ward, String district, boolean isChecked){
|
||||||
progressLayoutDialog.setVisibility(View.VISIBLE);
|
progressLayoutDialog.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
//Create object address
|
//Create object address
|
||||||
@@ -135,14 +161,15 @@ public class AddressManagerActivity extends AppCompatActivity {
|
|||||||
FoodApiToken.apiService.createAddressUser(Common.CURRENT_USER.getId(), newAddress).enqueue(new Callback<CustomResponse>() {
|
FoodApiToken.apiService.createAddressUser(Common.CURRENT_USER.getId(), newAddress).enqueue(new Callback<CustomResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Call<CustomResponse> call, Response<CustomResponse> response) {
|
public void onResponse(Call<CustomResponse> call, Response<CustomResponse> response) {
|
||||||
Toast.makeText(AddressManagerActivity.this, "Đã thêm địa chỉ thành công!", Toast.LENGTH_SHORT).show();
|
|
||||||
|
|
||||||
//Add address to list address at local storage
|
CustomResponse responseData = response.body();
|
||||||
listAddress.add(newAddress);
|
|
||||||
|
|
||||||
adapter.notifyDataSetChanged();
|
if(responseData.getTitle().equals("Create address")){
|
||||||
|
Toast.makeText(AddressManagerActivity.this, "Đã thêm địa chỉ thành công!", Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
progressLayoutDialog.setVisibility(View.GONE);
|
//Update data user
|
||||||
|
updateUser(isChecked);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -152,7 +179,141 @@ public class AddressManagerActivity extends AppCompatActivity {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showAddAddressDialog(String addressUser, String wardUser, String districtUser){
|
public void deleteAddress(int addressId){
|
||||||
|
|
||||||
|
FoodApiToken.apiService.deleteAddressUser(Common.CURRENT_USER.getId(), addressId).enqueue(new Callback<CustomResponse>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(Call<CustomResponse> call, Response<CustomResponse> response) {
|
||||||
|
Toast.makeText(AddressManagerActivity.this, "Đã xoá địa chỉ thành công!", Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
|
updateUser(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Call<CustomResponse> call, Throwable t) {
|
||||||
|
Toast.makeText(AddressManagerActivity.this, "Đã có lỗi từ hệ thống! Vui lòng thử lại sau!", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void changeDefaultAddress(int idAddress){
|
||||||
|
|
||||||
|
Common.CURRENT_USER.setDefaultAddress(idAddress);
|
||||||
|
|
||||||
|
FoodApiToken.apiService.updateUser(Common.CURRENT_USER.getId(), Common.CURRENT_USER).enqueue(new Callback<User>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(Call<User> call, Response<User> response) {
|
||||||
|
Toast.makeText(AddressManagerActivity.this, "Đã thay đổi địa chỉ mặc định thành công!", Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
|
//Update default address
|
||||||
|
getDefaultAddress();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Call<User> call, Throwable t) {
|
||||||
|
Toast.makeText(AddressManagerActivity.this, "Đã có lỗi khi thay đổi địa chỉ mặc định, vui lòng thử lại sau!", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateUser(boolean isChecked){
|
||||||
|
//Get user from database
|
||||||
|
FoodApiToken.apiService.getUserFromEmail(Common.CURRENT_USER.getEmail()).enqueue(new Callback<User>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(Call<User> call, Response<User> response) {
|
||||||
|
User userData = response.body();
|
||||||
|
if(userData != null){
|
||||||
|
Common.CURRENT_USER = userData;
|
||||||
|
getAddressList();
|
||||||
|
|
||||||
|
if(isChecked){
|
||||||
|
List<Address> tempListAddress = Common.CURRENT_USER.getAddresses();
|
||||||
|
Collections.sort(tempListAddress, Comparator.comparingLong(Address::getId));
|
||||||
|
|
||||||
|
Address newDefaultAddress = tempListAddress.get(tempListAddress.size() - 1);
|
||||||
|
|
||||||
|
changeDefaultAddress(newDefaultAddress.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Call<User> call, Throwable t) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showConfirmDeleteDialog(int addressId, String message){
|
||||||
|
BasicDialog basicDialog = new BasicDialog();
|
||||||
|
|
||||||
|
basicDialog.Builder(this)
|
||||||
|
.setTitle("Xác nhận xoá?")
|
||||||
|
.setMessage("Địa chỉ: \"" + message + "\"?")
|
||||||
|
.setMessageAlignment(SJDialog.TEXT_ALIGNMENT_CENTER)
|
||||||
|
.setLeftButtonText("Xoá")
|
||||||
|
.setRightButtonText("Không")
|
||||||
|
.setLeftButtonColor(getResources().getColor(R.color.primaryColor, null))
|
||||||
|
.setRightButtonColor(getResources().getColor(R.color.gray, null))
|
||||||
|
.setLeftButtonTextColor(getResources().getColor(R.color.white, null))
|
||||||
|
.setRightButtonTextColor(getResources().getColor(R.color.white, null))
|
||||||
|
.onButtonClick(new DialogButtonEvents() {
|
||||||
|
@Override
|
||||||
|
public void onLeftButtonClick() {
|
||||||
|
deleteAddress(addressId);
|
||||||
|
basicDialog.dismiss();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRightButtonClick() {
|
||||||
|
basicDialog.dismiss();
|
||||||
|
}
|
||||||
|
}).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void editAddress(int userId, Address address, int oldAddressId, boolean isChecked){
|
||||||
|
|
||||||
|
//Change id address to 0 to call api from back-end
|
||||||
|
address.setId(0);
|
||||||
|
|
||||||
|
FoodApiToken.apiService.editAddressUser(userId, oldAddressId, address).enqueue(new Callback<CustomResponse>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(Call<CustomResponse> call, Response<CustomResponse> response) {
|
||||||
|
|
||||||
|
if(response.code() == 200){
|
||||||
|
//Back-end create another address with another id
|
||||||
|
//Update user
|
||||||
|
updateUser(isChecked);
|
||||||
|
Toast.makeText(AddressManagerActivity.this, "Đã thay đổi địa chỉ thành công!", Toast.LENGTH_SHORT).show();
|
||||||
|
} else if(response.code() == 400){
|
||||||
|
//Address is exist in user
|
||||||
|
//Check if checkbox default address is has been checked
|
||||||
|
if(isChecked){
|
||||||
|
|
||||||
|
//Restore id old address
|
||||||
|
for(Address tempAddress: Common.CURRENT_USER.getAddresses()){
|
||||||
|
if(tempAddress.getId() == 0){
|
||||||
|
tempAddress.setId(oldAddressId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Change default address
|
||||||
|
changeDefaultAddress(oldAddressId);
|
||||||
|
} else {
|
||||||
|
//Show notification address has been exist in user
|
||||||
|
Toast.makeText(AddressManagerActivity.this, "Địa chỉ đã bị trùng trong tài khoản của bạn, vui lòng kiểm tra lại!", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Call<CustomResponse> call, Throwable t) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showAddAndEditAddressDialog(Address oldAddress){
|
||||||
View view = LayoutInflater.from(this).inflate(R.layout.add_address_dialog,null);
|
View view = LayoutInflater.from(this).inflate(R.layout.add_address_dialog,null);
|
||||||
|
|
||||||
//Init component
|
//Init component
|
||||||
@@ -162,35 +323,22 @@ public class AddressManagerActivity extends AppCompatActivity {
|
|||||||
edt_address = view.findViewById(R.id.edt_address);
|
edt_address = view.findViewById(R.id.edt_address);
|
||||||
errorTextDistrictWard = view.findViewById(R.id.errorTextDistrictWard);
|
errorTextDistrictWard = view.findViewById(R.id.errorTextDistrictWard);
|
||||||
progressLayoutDialog = view.findViewById(R.id.progress_layout);
|
progressLayoutDialog = view.findViewById(R.id.progress_layout);
|
||||||
|
default_address_checkbox = view.findViewById(R.id.checkbox_default_address);
|
||||||
|
|
||||||
|
|
||||||
//Set font
|
//Set font
|
||||||
textInput_address.setTypeface(Common.setFontOpenSans(getAssets()));
|
textInput_address.setTypeface(Common.setFontOpenSans(getAssets()));
|
||||||
|
|
||||||
if(addressUser == null && wardUser == null && districtUser == null){
|
|
||||||
//Load district and ward
|
|
||||||
if(districtList.size() == 0){
|
|
||||||
getListDistrict("---Quận");
|
|
||||||
} else {
|
|
||||||
setAdapter(districtList, "---Quận", districtSpinner);
|
|
||||||
}
|
|
||||||
getListWard(0, "---Phường");
|
|
||||||
} else {
|
|
||||||
//Set default value ward and district depend on information from user
|
|
||||||
|
|
||||||
edt_address.setText(addressUser);
|
|
||||||
|
|
||||||
if(districtList.size() == 0){
|
|
||||||
getListDistrict(districtUser);
|
|
||||||
} else {
|
|
||||||
setAdapter(districtList, districtUser, districtSpinner);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Set event when click on district spinner
|
//Set event when click on district spinner
|
||||||
districtSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
districtSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
|
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
|
||||||
getListWard(i, wardUser);
|
if(oldAddress != null){
|
||||||
|
getListWard(i, oldAddress.getWard());
|
||||||
|
} else {
|
||||||
|
getListWard(i, null);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -204,21 +352,48 @@ public class AddressManagerActivity extends AppCompatActivity {
|
|||||||
//Create dialog
|
//Create dialog
|
||||||
customViewDialog.Builder(this);
|
customViewDialog.Builder(this);
|
||||||
|
|
||||||
//Set title
|
|
||||||
if(addressUser == null && wardUser == null && districtUser == null){
|
if(oldAddress == null){
|
||||||
//If this is the create address form
|
//If this is the create address form
|
||||||
|
|
||||||
|
//Set title
|
||||||
customViewDialog.setTitle("Thêm địa chỉ");
|
customViewDialog.setTitle("Thêm địa chỉ");
|
||||||
|
//Set left button text
|
||||||
|
customViewDialog.setLeftButtonText("Thêm");
|
||||||
|
|
||||||
|
//Load district and ward
|
||||||
|
if(districtList.size() == 0){
|
||||||
|
getListDistrict("---Quận");
|
||||||
|
} else {
|
||||||
|
setAdapter(districtList, "---Quận", districtSpinner);
|
||||||
|
}
|
||||||
|
getListWard(0, "---Phường");
|
||||||
} else {
|
} else {
|
||||||
//If this is a edit form
|
//If this is a edit form
|
||||||
|
|
||||||
|
//Set title
|
||||||
customViewDialog.setTitle("Thay đổi địa chỉ");
|
customViewDialog.setTitle("Thay đổi địa chỉ");
|
||||||
|
//Set left button text
|
||||||
|
customViewDialog.setLeftButtonText("Sửa");
|
||||||
|
//If this is a default address, hide checkbox default address
|
||||||
|
if(oldAddress.getId() == Common.CURRENT_USER.getDefaultAddress())
|
||||||
|
default_address_checkbox.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
//Set default value ward and district depend on information from user
|
||||||
|
edt_address.setText(oldAddress.getAddress());
|
||||||
|
|
||||||
|
if(districtList.size() == 0){
|
||||||
|
getListDistrict(oldAddress.getDistrict());
|
||||||
|
} else {
|
||||||
|
setAdapter(districtList, oldAddress.getDistrict(), districtSpinner);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Create dialog width two buttons
|
//Create dialog width two buttons
|
||||||
customViewDialog.dialogWithTwoButtons();
|
customViewDialog.dialogWithTwoButtons();
|
||||||
//Add custom view
|
//Add custom view
|
||||||
customViewDialog.addCustomView(view);
|
customViewDialog.addCustomView(view);
|
||||||
//Set left button text
|
|
||||||
customViewDialog.setLeftButtonText("Thêm");
|
|
||||||
//Set right button text
|
//Set right button text
|
||||||
customViewDialog.setRightButtonText("Trở về");
|
customViewDialog.setRightButtonText("Trở về");
|
||||||
//Set color for left button
|
//Set color for left button
|
||||||
@@ -230,22 +405,32 @@ public class AddressManagerActivity extends AppCompatActivity {
|
|||||||
customViewDialog.onButtonClick(new DialogButtonEvents() {
|
customViewDialog.onButtonClick(new DialogButtonEvents() {
|
||||||
@Override
|
@Override
|
||||||
public void onLeftButtonClick() {
|
public void onLeftButtonClick() {
|
||||||
|
//Get data
|
||||||
|
address = edt_address.getText().toString();
|
||||||
|
ward = wardSpinner.getSelectedItem().toString();
|
||||||
|
district = districtSpinner.getSelectedItem().toString();
|
||||||
|
|
||||||
if(addressUser == null && wardUser == null && districtUser == null){
|
if(oldAddress == null){
|
||||||
//If this is the create address form
|
//If this is the create address form
|
||||||
|
|
||||||
//Get data
|
|
||||||
address = edt_address.getText().toString();
|
|
||||||
ward = wardSpinner.getSelectedItem().toString();
|
|
||||||
district = districtSpinner.getSelectedItem().toString();
|
|
||||||
|
|
||||||
if(validData(address, ward, district)){
|
if(validData(address, ward, district)){
|
||||||
addAddress(address, ward, district);
|
addAddress(address, ward, district, default_address_checkbox.isChecked());
|
||||||
customViewDialog.dismiss();
|
customViewDialog.dismiss();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//If this is a edit form
|
//If this is a edit form
|
||||||
//TODO Add edit address function
|
if(validData(oldAddress.getAddress(), oldAddress.getWard(), oldAddress.getDistrict())){
|
||||||
|
|
||||||
|
//Change information address
|
||||||
|
oldAddress.setAddress(address);
|
||||||
|
oldAddress.setWard(ward);
|
||||||
|
oldAddress.setDistrict(district);
|
||||||
|
|
||||||
|
//Call api to change address
|
||||||
|
editAddress(Common.CURRENT_USER.getId(), oldAddress, oldAddress.getId(), default_address_checkbox.isChecked());
|
||||||
|
}
|
||||||
|
|
||||||
|
customViewDialog.dismiss();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -272,9 +457,14 @@ public class AddressManagerActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
//Check district and ward
|
//Check district and ward
|
||||||
if(district.equals("---Quận") || ward.equals("---Phường")){
|
if(district.equals("---Quận") || ward.equals("---Phường")){
|
||||||
errorTextDistrictWard.setVisibility(View.VISIBLE);
|
|
||||||
|
|
||||||
dataHasValidate = false;
|
if(!district.equals("Huyện Hoàng Sa")){
|
||||||
|
errorTextDistrictWard.setVisibility(View.VISIBLE);
|
||||||
|
dataHasValidate = false;
|
||||||
|
} else{
|
||||||
|
errorTextDistrictWard.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
errorTextDistrictWard.setVisibility(View.GONE);
|
errorTextDistrictWard.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
package com.capstone.foodify.Activity;
|
package com.capstone.foodify.Activity;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.ProgressBar;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||||
@@ -9,16 +18,6 @@ import androidx.recyclerview.widget.ItemTouchHelper;
|
|||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import android.app.Dialog;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.graphics.Color;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.view.View;
|
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.ProgressBar;
|
|
||||||
import android.widget.TextView;
|
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import com.capstone.foodify.API.FoodApiToken;
|
import com.capstone.foodify.API.FoodApiToken;
|
||||||
import com.capstone.foodify.Adapter.FoodFavoriteAdapter;
|
import com.capstone.foodify.Adapter.FoodFavoriteAdapter;
|
||||||
import com.capstone.foodify.Adapter.RecyclerViewItemTouchHelperFavoriteFood;
|
import com.capstone.foodify.Adapter.RecyclerViewItemTouchHelperFavoriteFood;
|
||||||
@@ -28,9 +27,6 @@ import com.capstone.foodify.Model.Food;
|
|||||||
import com.capstone.foodify.Model.Response.Foods;
|
import com.capstone.foodify.Model.Response.Foods;
|
||||||
import com.capstone.foodify.R;
|
import com.capstone.foodify.R;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
import com.saadahmedsoft.popupdialog.PopupDialog;
|
|
||||||
import com.saadahmedsoft.popupdialog.Styles;
|
|
||||||
import com.saadahmedsoft.popupdialog.listener.OnDialogButtonClickListener;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|||||||
@@ -23,13 +23,13 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
|
|
||||||
import com.capstone.foodify.API.FoodApi;
|
import com.capstone.foodify.API.FoodApi;
|
||||||
import com.capstone.foodify.API.FoodApiToken;
|
import com.capstone.foodify.API.FoodApiToken;
|
||||||
|
import com.capstone.foodify.Adapter.ReviewAdapter;
|
||||||
import com.capstone.foodify.Common;
|
import com.capstone.foodify.Common;
|
||||||
import com.capstone.foodify.Model.Basket;
|
import com.capstone.foodify.Model.Basket;
|
||||||
import com.capstone.foodify.Model.Food;
|
import com.capstone.foodify.Model.Food;
|
||||||
import com.capstone.foodify.Model.Image;
|
import com.capstone.foodify.Model.Image;
|
||||||
import com.capstone.foodify.Model.Response.CustomResponse;
|
import com.capstone.foodify.Model.Response.CustomResponse;
|
||||||
import com.capstone.foodify.Model.Review;
|
import com.capstone.foodify.Model.Review;
|
||||||
import com.capstone.foodify.Adapter.ReviewAdapter;
|
|
||||||
import com.capstone.foodify.R;
|
import com.capstone.foodify.R;
|
||||||
import com.denzcoskun.imageslider.ImageSlider;
|
import com.denzcoskun.imageslider.ImageSlider;
|
||||||
import com.denzcoskun.imageslider.constants.ScaleTypes;
|
import com.denzcoskun.imageslider.constants.ScaleTypes;
|
||||||
@@ -37,8 +37,6 @@ import com.denzcoskun.imageslider.models.SlideModel;
|
|||||||
import com.mcdev.quantitizerlibrary.AnimationStyle;
|
import com.mcdev.quantitizerlibrary.AnimationStyle;
|
||||||
import com.mcdev.quantitizerlibrary.HorizontalQuantitizer;
|
import com.mcdev.quantitizerlibrary.HorizontalQuantitizer;
|
||||||
import com.mcdev.quantitizerlibrary.QuantitizerListener;
|
import com.mcdev.quantitizerlibrary.QuantitizerListener;
|
||||||
import com.saadahmedsoft.popupdialog.PopupDialog;
|
|
||||||
import com.saadahmedsoft.popupdialog.Styles;
|
|
||||||
import com.willy.ratingbar.RotationRatingBar;
|
import com.willy.ratingbar.RotationRatingBar;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|||||||
@@ -69,8 +69,6 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Call<User> call, Throwable t) {
|
public void onFailure(Call<User> call, Throwable t) {
|
||||||
System.out.println("ERROR: " + t);
|
|
||||||
Common.showErrorServerNotification(MainActivity.this);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||||
|
|
||||||
import com.capstone.foodify.API.FoodApi;
|
|
||||||
import com.capstone.foodify.API.FoodApiToken;
|
import com.capstone.foodify.API.FoodApiToken;
|
||||||
import com.capstone.foodify.Common;
|
import com.capstone.foodify.Common;
|
||||||
import com.capstone.foodify.Model.User;
|
import com.capstone.foodify.Model.User;
|
||||||
@@ -26,11 +25,6 @@ import com.google.firebase.auth.AuthResult;
|
|||||||
import com.google.firebase.auth.FirebaseAuth;
|
import com.google.firebase.auth.FirebaseAuth;
|
||||||
import com.google.firebase.auth.FirebaseUser;
|
import com.google.firebase.auth.FirebaseUser;
|
||||||
import com.google.firebase.auth.GetTokenResult;
|
import com.google.firebase.auth.GetTokenResult;
|
||||||
import com.saadahmedsoft.popupdialog.PopupDialog;
|
|
||||||
import com.saadahmedsoft.popupdialog.Styles;
|
|
||||||
|
|
||||||
import org.json.JSONException;
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|||||||
@@ -52,17 +52,35 @@ public class AddressAdapter extends RecyclerView.Adapter<AddressAdapter.AddressV
|
|||||||
if(address == null)
|
if(address == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//Create a full address string
|
|
||||||
String fullAddress = address.getAddress() + ", " + address.getWard() + ", " + address.getDistrict();
|
String fullAddress;
|
||||||
|
//If user choice "Huyện Hoàng Sa" District
|
||||||
|
if(address.getWard().equals("---Phường")){
|
||||||
|
//Create a full address string
|
||||||
|
fullAddress = address.getAddress() + ", " + address.getDistrict();
|
||||||
|
} else {
|
||||||
|
fullAddress = address.getAddress() + ", " + address.getWard() + ", " + address.getDistrict();
|
||||||
|
}
|
||||||
|
|
||||||
//Bind data to component
|
//Bind data to component
|
||||||
holder.text_view_address.setText(fullAddress);
|
holder.text_view_address.setText(fullAddress);
|
||||||
|
|
||||||
|
//Edit address
|
||||||
holder.edit_btn.setOnClickListener(new View.OnClickListener() {
|
holder.edit_btn.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if(context instanceof AddressManagerActivity){
|
if(context instanceof AddressManagerActivity){
|
||||||
((AddressManagerActivity)context).showAddAddressDialog(address.getAddress(), address.getWard(), address.getDistrict());
|
((AddressManagerActivity)context).showAddAndEditAddressDialog(address);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//Delete address
|
||||||
|
holder.delete_btn.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
if(context instanceof AddressManagerActivity){
|
||||||
|
((AddressManagerActivity)context).showConfirmDeleteDialog(address.getId(), fullAddress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
package com.capstone.foodify;
|
package com.capstone.foodify;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Dialog;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.res.AssetManager;
|
import android.content.res.AssetManager;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
@@ -14,14 +12,10 @@ import android.os.Build;
|
|||||||
import androidx.annotation.IntRange;
|
import androidx.annotation.IntRange;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import com.capstone.foodify.Activity.MainActivity;
|
import com.capstone.foodify.API.FoodApiToken;
|
||||||
|
import com.capstone.foodify.Fragment.HomeFragment;
|
||||||
import com.capstone.foodify.Model.Basket;
|
import com.capstone.foodify.Model.Basket;
|
||||||
import com.capstone.foodify.Model.Food;
|
|
||||||
import com.capstone.foodify.Model.User;
|
import com.capstone.foodify.Model.User;
|
||||||
import com.google.firebase.auth.FirebaseAuth;
|
|
||||||
import com.saadahmedsoft.popupdialog.PopupDialog;
|
|
||||||
import com.saadahmedsoft.popupdialog.Styles;
|
|
||||||
import com.saadahmedsoft.popupdialog.listener.OnDialogButtonClickListener;
|
|
||||||
import com.thecode.aestheticdialogs.AestheticDialog;
|
import com.thecode.aestheticdialogs.AestheticDialog;
|
||||||
import com.thecode.aestheticdialogs.DialogStyle;
|
import com.thecode.aestheticdialogs.DialogStyle;
|
||||||
import com.thecode.aestheticdialogs.DialogType;
|
import com.thecode.aestheticdialogs.DialogType;
|
||||||
@@ -32,7 +26,9 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import io.paperdb.Paper;
|
import retrofit2.Call;
|
||||||
|
import retrofit2.Callback;
|
||||||
|
import retrofit2.Response;
|
||||||
|
|
||||||
public class Common {
|
public class Common {
|
||||||
public static final String FORMAT_DATE="dd-MM-yyyy";
|
public static final String FORMAT_DATE="dd-MM-yyyy";
|
||||||
@@ -119,19 +115,17 @@ public class Common {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void showErrorServerNotification(Activity activity){
|
public static void showErrorServerNotification(Activity activity){
|
||||||
PopupDialog.getInstance(activity)
|
new AestheticDialog.Builder(activity, DialogStyle.RAINBOW, DialogType.ERROR)
|
||||||
.setStyle(Styles.FAILED)
|
.setTitle("LỖI!")
|
||||||
.setHeading("Lỗi")
|
.setMessage("Đã xuất hiện lỗi từ hệ thống! Vui lòng thử lại sau!")
|
||||||
.setDescription("Đã xuất hiện lỗi từ hệ thống. Vui lòng thử lại sau!")
|
|
||||||
.setCancelable(false)
|
.setCancelable(false)
|
||||||
.setDismissButtonText("Thoát")
|
.setOnClickListener(new OnDialogClickListener() {
|
||||||
.showDialog(new OnDialogButtonClickListener() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onDismissClicked(Dialog dialog) {
|
public void onClick(@NonNull AestheticDialog.Builder builder) {
|
||||||
activity.finishAffinity();
|
activity.finishAffinity();
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
}
|
}
|
||||||
});
|
}).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Basket getFoodExistInBasket(String foodId) {
|
public static Basket getFoodExistInBasket(String foodId) {
|
||||||
|
|||||||
@@ -12,21 +12,19 @@ import androidx.recyclerview.widget.LinearLayoutManager;
|
|||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.capstone.foodify.API.FoodApi;
|
import com.capstone.foodify.API.FoodApi;
|
||||||
|
import com.capstone.foodify.Adapter.MenuAdapter;
|
||||||
|
import com.capstone.foodify.Adapter.ShopAdapter;
|
||||||
import com.capstone.foodify.Common;
|
import com.capstone.foodify.Common;
|
||||||
import com.capstone.foodify.Model.Food;
|
import com.capstone.foodify.Model.Food;
|
||||||
import com.capstone.foodify.Model.Menu;
|
import com.capstone.foodify.Model.Menu;
|
||||||
import com.capstone.foodify.Adapter.MenuAdapter;
|
|
||||||
import com.capstone.foodify.Model.Response.Foods;
|
import com.capstone.foodify.Model.Response.Foods;
|
||||||
import com.capstone.foodify.Model.Response.Shops;
|
import com.capstone.foodify.Model.Response.Shops;
|
||||||
import com.capstone.foodify.Model.Shop;
|
import com.capstone.foodify.Model.Shop;
|
||||||
import com.capstone.foodify.Adapter.ShopAdapter;
|
|
||||||
import com.capstone.foodify.Model.Slider;
|
import com.capstone.foodify.Model.Slider;
|
||||||
import com.capstone.foodify.R;
|
import com.capstone.foodify.R;
|
||||||
import com.denzcoskun.imageslider.ImageSlider;
|
import com.denzcoskun.imageslider.ImageSlider;
|
||||||
import com.denzcoskun.imageslider.constants.ScaleTypes;
|
import com.denzcoskun.imageslider.constants.ScaleTypes;
|
||||||
import com.denzcoskun.imageslider.models.SlideModel;
|
import com.denzcoskun.imageslider.models.SlideModel;
|
||||||
import com.saadahmedsoft.popupdialog.PopupDialog;
|
|
||||||
import com.saadahmedsoft.popupdialog.Styles;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -122,9 +120,6 @@ public class HomeFragment extends Fragment {
|
|||||||
public void onFailure(Call<List<Slider>> call, Throwable t) {
|
public void onFailure(Call<List<Slider>> call, Throwable t) {
|
||||||
//Dismiss progress bar
|
//Dismiss progress bar
|
||||||
progressLayout.setVisibility(View.GONE);
|
progressLayout.setVisibility(View.GONE);
|
||||||
|
|
||||||
if(getActivity() != null)
|
|
||||||
Common.showNotificationError(getContext(), getActivity());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -157,6 +152,9 @@ public class HomeFragment extends Fragment {
|
|||||||
//Check internet connection
|
//Check internet connection
|
||||||
if(getActivity() != null)
|
if(getActivity() != null)
|
||||||
Common.showNotificationError(getContext(), getActivity());
|
Common.showNotificationError(getContext(), getActivity());
|
||||||
|
|
||||||
|
//Dismiss progress bar
|
||||||
|
progressLayout.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -179,8 +177,6 @@ public class HomeFragment extends Fragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Call<Foods> call, Throwable t) {
|
public void onFailure(Call<Foods> call, Throwable t) {
|
||||||
//Check internet connection
|
|
||||||
Common.showNotificationError(getContext(), getActivity());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -202,9 +198,6 @@ public class HomeFragment extends Fragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Call<Shops> call, Throwable t) {
|
public void onFailure(Call<Shops> call, Throwable t) {
|
||||||
//Check internet connection
|
|
||||||
if(getActivity() != null)
|
|
||||||
Common.showNotificationError(getContext(), getActivity());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,16 +2,13 @@ package com.capstone.foodify.Fragment;
|
|||||||
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
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.widget.Button;
|
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
import com.capstone.foodify.Activity.AccountAndProfileActivity;
|
import com.capstone.foodify.Activity.AccountAndProfileActivity;
|
||||||
@@ -19,8 +16,6 @@ import com.capstone.foodify.Activity.AddressManagerActivity;
|
|||||||
import com.capstone.foodify.Activity.FavoriteFoodActivity;
|
import com.capstone.foodify.Activity.FavoriteFoodActivity;
|
||||||
import com.capstone.foodify.Activity.MainActivity;
|
import com.capstone.foodify.Activity.MainActivity;
|
||||||
import com.capstone.foodify.Activity.OrderActivity;
|
import com.capstone.foodify.Activity.OrderActivity;
|
||||||
import com.capstone.foodify.Activity.SignInActivity;
|
|
||||||
import com.capstone.foodify.Activity.SignUpActivity;
|
|
||||||
import com.capstone.foodify.Common;
|
import com.capstone.foodify.Common;
|
||||||
import com.capstone.foodify.R;
|
import com.capstone.foodify.R;
|
||||||
import com.google.firebase.auth.FirebaseAuth;
|
import com.google.firebase.auth.FirebaseAuth;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.capstone.foodify.Model;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
public class Address implements Serializable {
|
public class Address implements Serializable{
|
||||||
private int id;
|
private int id;
|
||||||
private String address;
|
private String address;
|
||||||
private String ward;
|
private String ward;
|
||||||
@@ -14,6 +14,8 @@ public class Address implements Serializable {
|
|||||||
this.district = district;
|
this.district = district;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Address(){}
|
||||||
|
|
||||||
public int getId() {
|
public int getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.capstone.foodify.Model.Response;
|
|||||||
public class CustomResponse {
|
public class CustomResponse {
|
||||||
private String title;
|
private String title;
|
||||||
private boolean isTrue;
|
private boolean isTrue;
|
||||||
|
private String message;
|
||||||
|
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return title;
|
return title;
|
||||||
@@ -12,6 +13,14 @@ public class CustomResponse {
|
|||||||
this.title = title;
|
this.title = title;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getMessage() {
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMessage(String message) {
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isTrue() {
|
public boolean isTrue() {
|
||||||
return isTrue;
|
return isTrue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,22 +111,12 @@
|
|||||||
>
|
>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:src="@drawable/baseline_edit_24"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="0.5"
|
|
||||||
android:layout_gravity="center_vertical"
|
|
||||||
android:id="@+id/edit_button"
|
android:id="@+id/edit_button"
|
||||||
/>
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/delete_button"
|
|
||||||
android:src="@drawable/baseline_delete_24"
|
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
android:layout_weight="0.5"
|
android:layout_weight="0.5"
|
||||||
/>
|
android:src="@drawable/baseline_edit_24" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
@@ -38,8 +38,8 @@
|
|||||||
android:id="@+id/linearLayout_district_ward"
|
android:id="@+id/linearLayout_district_ward"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="60dp"
|
android:layout_height="60dp"
|
||||||
android:layout_marginRight="10dp"
|
android:layout_marginEnd="10dp"
|
||||||
android:layout_marginLeft="10dp"
|
android:layout_marginStart="10dp"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/textInput_address"
|
app:layout_constraintTop_toBottomOf="@+id/textInput_address"
|
||||||
@@ -84,6 +84,19 @@
|
|||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/checkbox_default_address"
|
||||||
|
android:text="Đặt làm địa chỉ mặc định"
|
||||||
|
android:fontFamily="@font/opensans"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginStart="10dp"
|
||||||
|
android:buttonTint="@color/primaryColor"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/errorTextDistrictWard"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
/>
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
|||||||
Reference in New Issue
Block a user