Improve UI

This commit is contained in:
Nezumi
2023-04-23 14:53:55 +07:00
parent 5da3129594
commit 5def98dede
28 changed files with 365 additions and 219 deletions
@@ -48,7 +48,7 @@ public interface FoodApi {
@GET("products/search/enable")
Call<Foods> searchFoodByName(@Query("productName") String name, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("sortBy") String sortBy, @Query("sortDir") String sortDir);
@GET("products")
@GET("products/random")
Call<Foods> listFood(@Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("sortBy") String sortBy, @Query("sortDir") String sortDir);
@GET("categories/randoms?pageNo=0&pageSize=7")
@@ -58,7 +58,7 @@ public class AddressManagerActivity extends AppCompatActivity {
private Button add_address_button;
private TextInputLayout textInput_address;
private ImageView back_image, edit_btn;
private TextView txt_Address, errorTextDistrictWard;
private TextView txt_Address, errorTextDistrict, errorTextWard;
private List<Address> listAddress = new ArrayList<>();
private Spinner wardSpinner, districtSpinner;
private EditText edt_address;
@@ -490,7 +490,8 @@ public class AddressManagerActivity extends AppCompatActivity {
wardSpinner = view.findViewById(R.id.ward);
districtSpinner = view.findViewById(R.id.district);
edt_address = view.findViewById(R.id.edt_address);
errorTextDistrictWard = view.findViewById(R.id.errorTextDistrictWard);
errorTextDistrict = view.findViewById(R.id.errorTextDistrict);
errorTextWard = view.findViewById(R.id.errorTextWard);
progressLayoutDialog = view.findViewById(R.id.progress_layout);
default_address_checkbox = view.findViewById(R.id.checkbox_default_address);
}
@@ -507,18 +508,22 @@ public class AddressManagerActivity extends AppCompatActivity {
textInput_address.setErrorEnabled(false);
}
//Check district and ward
if(district.equals("---Quận") || ward.equals("---Phường")){
if(!district.equals("Huyện Hoàng Sa")){
errorTextDistrictWard.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else{
errorTextDistrictWard.setVisibility(View.GONE);
}
//Check ward
if(ward.equals("---Phường")){
errorTextWard.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else {
errorTextDistrictWard.setVisibility(View.GONE);
errorTextWard.setVisibility(View.GONE);
}
//Check district
if(district.equals("---Quận")){
errorTextDistrict.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else {
errorTextDistrict.setVisibility(View.GONE);
}
return dataHasValidate;
@@ -589,7 +594,7 @@ public class AddressManagerActivity extends AppCompatActivity {
}
private void setAdapter(ArrayList<String> data, String defaultItem, Spinner dataSpinner){
MySpinnerAdapter adapterWard = new MySpinnerAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, data);
MySpinnerAdapter adapterWard = new MySpinnerAdapter(getApplicationContext(), R.layout.spinner_text_view, data);
dataSpinner.setAdapter(adapterWard); // this will set list of values to spinner
dataSpinner.setSelection(data.indexOf(defaultItem));//set selected value in spinner
}
@@ -49,11 +49,13 @@ import com.denzcoskun.imageslider.constants.ScaleTypes;
import com.denzcoskun.imageslider.models.SlideModel;
import com.google.android.material.chip.Chip;
import com.google.android.material.chip.ChipGroup;
import com.makeramen.roundedimageview.RoundedImageView;
import com.mcdev.quantitizerlibrary.AnimationStyle;
import com.mcdev.quantitizerlibrary.HorizontalQuantitizer;
import com.mcdev.quantitizerlibrary.QuantitizerListener;
import com.sjapps.library.customdialog.BasicDialog;
import com.sjapps.library.customdialog.DialogButtonEvents;
import com.squareup.picasso.Picasso;
import com.thecode.aestheticdialogs.DialogStyle;
import com.thecode.aestheticdialogs.DialogType;
import com.willy.ratingbar.RotationRatingBar;
@@ -83,6 +85,7 @@ public class FoodDetailActivity extends AppCompatActivity {
private Food food;
private TextView foodName_txt, shopName_txt, discount_txt, price_txt, countRating_txt, description_content_txt, endOfListText,
userNameComment, contentComment, count_sold_txt;
private RoundedImageView profile_avatar;
private ConstraintLayout content_view;
private Button add_to_basket_button;
private float totalPrice, price;
@@ -147,6 +150,7 @@ public class FoodDetailActivity extends AppCompatActivity {
list_category = findViewById(R.id.list_category);
count_sold_txt = findViewById(R.id.count_sold);
swipeRefreshLayout = findViewById(R.id.swipe_refresh);
profile_avatar = findViewById(R.id.profile_avatar);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -537,6 +541,13 @@ public class FoodDetailActivity extends AppCompatActivity {
description_content_txt.setText(food.getDescription());
ratingBar.setRating(food.getAverageRating());
//Set image for user
if(Common.CURRENT_USER.getImageUrl().isEmpty()){
profile_avatar.setImageResource(R.drawable.profile_avatar);
} else {
Picasso.get().load(Common.CURRENT_USER.getImageUrl()).into(profile_avatar);
}
if(food.getReviewCount() == null || Integer.parseInt(food.getReviewCount()) == 0){
countRating_txt.setText("Chưa có bình luận nào!");
} else {
@@ -44,8 +44,8 @@ import com.capstone.foodify.Fragment.HomeFragment;
import com.capstone.foodify.Model.Response.CustomResponse;
import com.capstone.foodify.Model.User;
import com.capstone.foodify.R;
import com.capstone.foodify.RefreshTokenService;
import com.capstone.foodify.ViewPagerAdapter;
import com.capstone.foodify.Service.RefreshTokenService;
import com.capstone.foodify.Fragment.ViewPagerAdapter;
import com.google.android.gms.common.api.ApiException;
import com.google.android.gms.common.api.ResolvableApiException;
import com.google.android.gms.location.FusedLocationProviderClient;
@@ -230,6 +230,17 @@ public class MainActivity extends AppCompatActivity {
getLocation();
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(!slider || !shop || !recentFood || !recommendFood){
Common.showErrorServerNotification(MainActivity.this, "Đã có lỗi từ hệ thống, vui lòng thử lại sau!");
}
}
}, 10000);
}
private void startRefreshTokenService() {
@@ -86,7 +86,7 @@ public class OrderCheckOutActivity extends AppCompatActivity {
private ImageView back_image;
private OrderDetailAdapter adapter;
private RecyclerView recyclerView;
private TextView txt_userName, txt_phone, edt_address_detect, errorTextDistrictWard, txt_total, txt_distance, txt_ship_cost;
private TextView txt_userName, txt_phone, edt_address_detect, errorTextDistrict, errorTextWard, txt_total, txt_distance, txt_ship_cost;
private TextInputLayout textInput_address;
private EditText edt_address;
private Spinner spn_list_address, spn_district, spn_ward;
@@ -117,7 +117,8 @@ public class OrderCheckOutActivity extends AppCompatActivity {
manual_input_address = findViewById(R.id.manual_input_address);
edt_address = findViewById(R.id.edt_address);
address_option = findViewById(R.id.address_option);
errorTextDistrictWard = findViewById(R.id.errorTextDistrictWard);
errorTextDistrict = findViewById(R.id.errorTextDistrict);
errorTextWard = findViewById(R.id.errorTextWard);
textInput_address = findViewById(R.id.textInput_address);
txt_total = findViewById(R.id.txt_total);
take_food_from_shop = findViewById(R.id.take_food_from_shop);
@@ -607,18 +608,22 @@ public class OrderCheckOutActivity extends AppCompatActivity {
textInput_address.setErrorEnabled(false);
}
//Check district and ward
if(spn_district.getSelectedItem().toString().equals("---Quận") || spn_ward.getSelectedItem().toString().equals("---Phường")){
if(!spn_district.getSelectedItem().toString().equals("Huyện Hoàng Sa")){
errorTextDistrictWard.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else{
errorTextDistrictWard.setVisibility(View.GONE);
}
//Check ward
if(spn_ward.getSelectedItem().toString().equals("---Phường")){
errorTextWard.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else {
errorTextDistrictWard.setVisibility(View.GONE);
errorTextWard.setVisibility(View.GONE);
}
//Check district
if(spn_district.getSelectedItem().toString().equals("---Quận")){
errorTextDistrict.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else {
errorTextDistrict.setVisibility(View.GONE);
}
return dataHasValidate;
@@ -832,7 +837,7 @@ public class OrderCheckOutActivity extends AppCompatActivity {
}
private void setAdapter(ArrayList<String> data, String defaultItem, Spinner dataSpinner){
OrderCheckOutActivity.MySpinnerAdapter adapterWard = new OrderCheckOutActivity.MySpinnerAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, data);
OrderCheckOutActivity.MySpinnerAdapter adapterWard = new OrderCheckOutActivity.MySpinnerAdapter(getApplicationContext(), R.layout.spinner_text_view, data);
dataSpinner.setAdapter(adapterWard); // this will set list of values to spinner
dataSpinner.setSelection(data.indexOf(defaultItem));//set selected value in spinner
}
@@ -66,7 +66,7 @@ public class SignUpActivity extends AppCompatActivity {
textInput_address, textInput_confirmPassword, textInput_fullName, textInput_birthDay;
final Calendar myCalendar= Calendar.getInstance();
private EditText edt_birthday, edt_phone, edt_passWord, edt_confirmPassword, edt_fullName, edt_address, edt_email, edt_id_card;
private TextView signIn_textView, errorText, errorTextDistrictWard;
private TextView signIn_textView, errorText, errorTextDistrict, errorTextWard;
private Spinner wardSpinner, districtSpinner;
private ImageView back_image;
private MaterialButton signUpButton;
@@ -102,7 +102,8 @@ public class SignUpActivity extends AppCompatActivity {
signIn_textView = (TextView) findViewById(R.id.signIn_textView);
errorText = findViewById(R.id.errorText);
errorTextDistrictWard = findViewById(R.id.errorTextDistrictWard);
errorTextDistrict = findViewById(R.id.errorTextDistrict);
errorTextWard = findViewById(R.id.errorTextWard);
back_image = (ImageView) findViewById(R.id.back_image);
@@ -383,15 +384,23 @@ public class SignUpActivity extends AppCompatActivity {
textInput_address.setErrorEnabled(false);
}
//Check district and ward
if(district.equals("---Quận") || ward.equals("---Phường")){
errorTextDistrictWard.setVisibility(View.VISIBLE);
//Check ward
if(ward.equals("---Phường")){
errorTextWard.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else {
errorTextDistrictWard.setVisibility(View.GONE);
errorTextWard.setVisibility(View.GONE);
}
//Check district
if(district.equals("---Quận")){
errorTextDistrict.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else {
errorTextDistrict.setVisibility(View.GONE);
}
//Check password
@@ -560,7 +569,7 @@ public class SignUpActivity extends AppCompatActivity {
}
private void setAdapter(ArrayList<String> data, String defaultItem, Spinner dataSpinner){
MySpinnerAdapter adapterWard = new MySpinnerAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, data);
MySpinnerAdapter adapterWard = new MySpinnerAdapter(getApplicationContext(), R.layout.spinner_text_view, data);
dataSpinner.setAdapter(adapterWard); // this will set list of values to spinner
dataSpinner.setSelection(data.indexOf(defaultItem));//set selected value in spinner
}
@@ -13,7 +13,6 @@ import android.os.CountDownTimer;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
@@ -35,7 +34,7 @@ import com.capstone.foodify.API.FoodApi;
import com.capstone.foodify.Common;
import com.capstone.foodify.Model.User;
import com.capstone.foodify.R;
import com.capstone.foodify.SmsBroadcastReceiver;
import com.capstone.foodify.Service.SmsBroadcastReceiver;
import com.google.android.gms.auth.api.phone.SmsRetriever;
import com.google.android.gms.auth.api.phone.SmsRetrieverClient;
import com.google.android.gms.tasks.OnCompleteListener;
@@ -9,8 +9,11 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Common;
import com.capstone.foodify.Model.Comment;
import com.capstone.foodify.R;
import com.makeramen.roundedimageview.RoundedImageView;
import com.squareup.picasso.Picasso;
import com.willy.ratingbar.ScaleRatingBar;
import java.util.List;
@@ -43,6 +46,13 @@ public class CommentAdapter extends RecyclerView.Adapter<CommentAdapter.CommentV
holder.name.setText(comment.getUser().getFullName());
holder.ratingScore.setRating(comment.getRating());
holder.content.setText(comment.getContent());
//Bind image avatar user
if(comment.getUser().getImageUrl() == null){
holder.profile_avatar.setImageResource(R.drawable.profile_avatar);
} else {
Picasso.get().load(Common.CURRENT_USER.getImageUrl()).into(holder.profile_avatar);
}
}
@Override
@@ -54,8 +64,9 @@ public class CommentAdapter extends RecyclerView.Adapter<CommentAdapter.CommentV
public class CommentViewHolder extends RecyclerView.ViewHolder{
private TextView name, content;
private ScaleRatingBar ratingScore;
private final TextView name, content;
private final ScaleRatingBar ratingScore;
private final RoundedImageView profile_avatar;
public CommentViewHolder(@NonNull View itemView) {
super(itemView);
@@ -63,6 +74,8 @@ public class CommentAdapter extends RecyclerView.Adapter<CommentAdapter.CommentV
name = itemView.findViewById(R.id.user_name_text_view);
ratingScore = itemView.findViewById(R.id.rating_bar);
content = itemView.findViewById(R.id.comment_user);
profile_avatar = itemView.findViewById(R.id.profile_avatar);
}
}
}
@@ -3,6 +3,7 @@ package com.capstone.foodify.Adapter;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -148,7 +149,9 @@ public class FoodFavoriteAdapter extends RecyclerView.Adapter<FoodFavoriteAdapt
FoodApiToken.apiService.removeFoodFromFavorite(Common.CURRENT_USER.getId(), Integer.parseInt(food.getId())).enqueue(new Callback<Food>() {
@Override
public void onResponse(Call<Food> call, Response<Food> response) {
Toast.makeText(context, "Đã xoá " + food.getName() + " khỏi danh sách yêu thích!", Toast.LENGTH_SHORT).show();
if(response.code() != 200){
Log.e("Food favorite", "Error remove favorite food. Error code: " + response.code());
}
}
@Override
@@ -1,4 +1,4 @@
package com.capstone.foodify;
package com.capstone.foodify.Fragment;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
@@ -1,4 +1,4 @@
package com.capstone.foodify;
package com.capstone.foodify.Service;
import android.app.NotificationChannel;
import android.app.NotificationManager;
@@ -17,7 +17,9 @@ import androidx.core.app.NotificationCompat;
import com.capstone.foodify.API.FoodApiToken;
import com.capstone.foodify.Activity.MainActivity;
import com.capstone.foodify.Common;
import com.capstone.foodify.Model.Response.CustomResponse;
import com.capstone.foodify.R;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
@@ -1,4 +1,4 @@
package com.capstone.foodify;
package com.capstone.foodify.Service;
import android.app.job.JobParameters;
import android.app.job.JobService;
@@ -6,6 +6,7 @@ import android.util.Log;
import androidx.annotation.NonNull;
import com.capstone.foodify.Common;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.GetTokenResult;
@@ -1,4 +1,4 @@
package com.capstone.foodify;
package com.capstone.foodify.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -31,5 +31,5 @@ public class Helpers {
@NotNull
public static String getMac(@NotNull String key, @NotNull String data) throws NoSuchAlgorithmException, InvalidKeyException {
return Objects.requireNonNull(HMacUtil.HMacHexStringEncode(HMacUtil.HMACSHA256, key, data));
}
}
}