diff --git a/app/build.gradle b/app/build.gradle index 446d422..1d529f8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -60,4 +60,5 @@ dependencies { implementation 'com.squareup.picasso:picasso:2.71828' implementation 'com.github.ome450901:SimpleRatingBar:1.5.1' implementation 'com.cepheuen.elegant-number-button:lib:1.0.2' + implementation 'com.github.slavce14:SJ-Dialog:1.5' } \ No newline at end of file diff --git a/app/src/main/assets/font/opensans.ttf b/app/src/main/assets/font/opensans.ttf new file mode 100644 index 0000000..ba6db9b Binary files /dev/null and b/app/src/main/assets/font/opensans.ttf differ diff --git a/app/src/main/java/com/capstone/foodify/Activity/AddressManagerActivity.java b/app/src/main/java/com/capstone/foodify/Activity/AddressManagerActivity.java index c4ca51a..53d9f73 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/AddressManagerActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/AddressManagerActivity.java @@ -4,23 +4,47 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import android.content.Context; +import android.graphics.Typeface; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; import android.widget.Button; +import android.widget.ImageView; +import android.widget.Spinner; +import android.widget.TextView; +import android.widget.Toast; +import com.capstone.foodify.API.FoodApi; import com.capstone.foodify.Model.Address.Address; import com.capstone.foodify.Model.Address.AddressAdapter; +import com.capstone.foodify.Model.DistrictWard.DistrictWardResponse; import com.capstone.foodify.R; +import com.google.android.material.textfield.TextInputLayout; +import com.sjapps.library.customdialog.CustomViewDialog; import java.util.ArrayList; import java.util.List; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + public class AddressManagerActivity extends AppCompatActivity { private RecyclerView recycler_view_address; private AddressAdapter adapter; private Button add_address_button; + private ImageView back_image; private List
listAddress = new ArrayList<>(); + Spinner wardSpinner, districtSpinner; + + private static final ArrayList wardList = new ArrayList<>(); + private static final ArrayList districtList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { @@ -30,6 +54,7 @@ public class AddressManagerActivity extends AppCompatActivity { //Init Component recycler_view_address = findViewById(R.id.recycler_view_address); add_address_button = findViewById(R.id.add_address_button); + back_image = findViewById(R.id.back_image); //Set layout recyclerview LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); @@ -39,6 +64,21 @@ public class AddressManagerActivity extends AppCompatActivity { getAddressList(); + //Set event image view on click + back_image.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + onBackPressed(); + } + }); + + add_address_button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + showAddAddressDialog(); + } + }); + } private void getAddressList(){ @@ -50,4 +90,159 @@ public class AddressManagerActivity extends AppCompatActivity { adapter.setData(listAddress); recycler_view_address.setAdapter(adapter); } + + private void showAddAddressDialog(){ + View view = LayoutInflater.from(this).inflate(R.layout.add_address_dialog,null); + Typeface bebas= Typeface.createFromAsset(getAssets(), "font/opensans.ttf"); + + //Init component + TextInputLayout textInputLayout = view.findViewById(R.id.textInput_address); + wardSpinner = view.findViewById(R.id.ward); + districtSpinner = view.findViewById(R.id.district); + + //Set font + textInputLayout.setTypeface(bebas); + + //Load district and ward + if(districtList.size() == 0){ + getListDistrict(); + } else { + setAdapter(districtList, "---Quận", districtSpinner); + } + getListWard(0); + + //Set event when click on district spinner + districtSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView adapterView, View view, int i, long l) { + getListWard(i); + } + + @Override + public void onNothingSelected(AdapterView adapterView) { + + } + }); + + CustomViewDialog customViewDialog = new CustomViewDialog(); + + //Create dialog + customViewDialog.Builder(this); + //Set title + customViewDialog.setTitle("Thêm địa chỉ"); + //Create dialog width two buttons + customViewDialog.dialogWithTwoButtons(); + //Add custom view + customViewDialog.addCustomView(view); + //Set left button text + customViewDialog.setLeftButtonText("Trở về"); + //Set right button text + customViewDialog.setRightButtonText("Thêm"); + //Set color for left button + customViewDialog.setLeftButtonColor(getResources().getColor(R.color.gray, null)); + //Set color for right button + customViewDialog.setRightButtonColor(getResources().getColor(R.color.primaryColor, null)); + + + customViewDialog.show(); + } + + private void getListDistrict() { + + districtList.add("---Quận"); + + FoodApi.apiService.districtResponse().enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + List districtResponse = response.body(); + if(districtResponse != null){ + for(DistrictWardResponse tempDistrict: districtResponse){ + districtList.add(tempDistrict.getName()); + } + } + + setAdapter(districtList, "---Quận", districtSpinner); + } + + @Override + public void onFailure(Call> call, Throwable t) { + Toast.makeText(AddressManagerActivity.this, "Đã xảy ra lỗi hệ thống. Vui lòng thử lại sau!", Toast.LENGTH_SHORT).show(); + } + }); + } + + private void getListWard(int districtCode) { + + if(wardList.size() > 1) + wardList.clear(); + + if(wardList.size() == 0) + wardList.add("---Phường"); + + wardSpinner.setEnabled(false); + + if(districtCode != 0){ + FoodApi.apiService.wardResponse(districtCode).enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + List wardData = response.body(); + + if(wardData != null){ + for(DistrictWardResponse tempWard: wardData){ + wardList.add(tempWard.getName()); + } + } + + if(wardList.size() <= 1){ + wardSpinner.setEnabled(false); + } else { + wardSpinner.setEnabled(true); + } + setAdapter(wardList, "---Phường", wardSpinner); + } + + @Override + public void onFailure(Call> call, Throwable t) { + Toast.makeText(AddressManagerActivity.this, "Đã xảy ra lỗi hệ thống. Vui lòng thử lại sau!", Toast.LENGTH_SHORT).show(); + } + }); + } else { + setAdapter(wardList, "---Phường", wardSpinner); + } + } + + private void setAdapter(ArrayList data, String defaultItem, Spinner dataSpinner){ + MySpinnerAdapter adapterWard = new MySpinnerAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, data); + dataSpinner.setAdapter(adapterWard); // this will set list of values to spinner + dataSpinner.setSelection(data.indexOf(defaultItem));//set selected value in spinner + } + + private static class MySpinnerAdapter extends ArrayAdapter { + // Initialise custom font, for example: + Typeface font = Typeface.createFromAsset(getContext().getAssets(), + "font/bebas.ttf"); + + // (In reality I used a manager which caches the Typeface objects) + // Typeface font = FontManager.getInstance().getFont(getContext(), BLAMBOT); + + private MySpinnerAdapter(Context context, int resource, List items) { + super(context, resource, items); + } + + // Affects default (closed) state of the spinner + @Override + public View getView(int position, View convertView, ViewGroup parent) { + TextView view = (TextView) super.getView(position, convertView, parent); + view.setTypeface(font); + return view; + } + + // Affects opened state of the spinner + @Override + public View getDropDownView(int position, View convertView, ViewGroup parent) { + TextView view = (TextView) super.getDropDownView(position, convertView, parent); + view.setTypeface(font); + return view; + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/capstone/foodify/Fragment/BasketFragment.java b/app/src/main/java/com/capstone/foodify/Fragment/BasketFragment.java index 06bb509..aad533e 100644 --- a/app/src/main/java/com/capstone/foodify/Fragment/BasketFragment.java +++ b/app/src/main/java/com/capstone/foodify/Fragment/BasketFragment.java @@ -63,8 +63,6 @@ public class BasketFragment extends Fragment implements ItemTouchHelperListener hideRecyclerViewAndShowNotificationEmpty(); } - Toast.makeText(getContext(), "List Basket: " + Common.LIST_BASKET_FOOD.size(), Toast.LENGTH_SHORT).show(); - //Set layout recyclerview LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); recyclerView_basket_food.setLayoutManager(linearLayoutManager); diff --git a/app/src/main/res/layout/activity_address_manager.xml b/app/src/main/res/layout/activity_address_manager.xml index d486de9..b5ab5ef 100644 --- a/app/src/main/res/layout/activity_address_manager.xml +++ b/app/src/main/res/layout/activity_address_manager.xml @@ -10,6 +10,17 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> + + diff --git a/app/src/main/res/layout/activity_food_detail.xml b/app/src/main/res/layout/activity_food_detail.xml index 972f21b..7580046 100644 --- a/app/src/main/res/layout/activity_food_detail.xml +++ b/app/src/main/res/layout/activity_food_detail.xml @@ -12,7 +12,6 @@ android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" > - + + - - + + + + + + + + + + + + + + + + + \ No newline at end of file