From b4eb8e062d569421fc244718f6e97499a13bccf2 Mon Sep 17 00:00:00 2001
From: phanhuuloi27 <73208452+Nezumi2711@users.noreply.github.com>
Date: Mon, 11 Jul 2022 22:17:31 +0700
Subject: [PATCH] Improve app, layout
---
Foodify/app/build.gradle | 2 +-
Foodify/app/src/main/AndroidManifest.xml | 5 +-
.../com/waterbase/foodify/OrderDetail.java | 2 +-
.../com/waterbase/foodify/OrderStatus.java | 59 ++++++++--
.../waterbase/foodify/OrderStatusDetail.java | 65 +++++++++++
.../foodify/ViewHolder/MyViewHolder.java | 25 +++++
.../ViewHolder/OrderDetailAdapter.java | 19 ----
.../ViewHolder/OrderStatusDetailAdapter.java | 64 +++++++++++
.../foodify/ViewHolder/OrderViewHolder.java | 3 +-
.../drawable/ic_baseline_assignment_24.xml | 5 +
.../layout/activity_order_status_detail.xml | 106 ++++++++++++++++++
.../app/src/main/res/layout/order_layout.xml | 33 +++++-
12 files changed, 347 insertions(+), 41 deletions(-)
create mode 100644 Foodify/app/src/main/java/com/waterbase/foodify/OrderStatusDetail.java
create mode 100644 Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/MyViewHolder.java
create mode 100644 Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/OrderStatusDetailAdapter.java
create mode 100644 Foodify/app/src/main/res/drawable/ic_baseline_assignment_24.xml
create mode 100644 Foodify/app/src/main/res/layout/activity_order_status_detail.xml
diff --git a/Foodify/app/build.gradle b/Foodify/app/build.gradle
index 3e7c351..258d299 100644
--- a/Foodify/app/build.gradle
+++ b/Foodify/app/build.gradle
@@ -10,7 +10,7 @@ android {
minSdk 23
targetSdk 30
versionCode 1
- versionName "71.0"
+ versionName "73.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/Foodify/app/src/main/AndroidManifest.xml b/Foodify/app/src/main/AndroidManifest.xml
index 95e1d3f..4b1b3dd 100644
--- a/Foodify/app/src/main/AndroidManifest.xml
+++ b/Foodify/app/src/main/AndroidManifest.xml
@@ -6,7 +6,7 @@
-
+
+
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/OrderDetail.java b/Foodify/app/src/main/java/com/waterbase/foodify/OrderDetail.java
index f92f7c2..085c28d 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/OrderDetail.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/OrderDetail.java
@@ -92,7 +92,7 @@ public class OrderDetail extends AppCompatActivity {
btnPay = findViewById(R.id.btnPay);
btnZaloPay = findViewById(R.id.btnZaloPay);
- lstFoods = (RecyclerView) findViewById(R.id.lstFoods);
+ lstFoods = findViewById(R.id.lstFoods);
lstFoods.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
lstFoods.setLayoutManager(layoutManager);
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/OrderStatus.java b/Foodify/app/src/main/java/com/waterbase/foodify/OrderStatus.java
index 61ffaef..a2f5c3d 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/OrderStatus.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/OrderStatus.java
@@ -1,15 +1,18 @@
package com.waterbase.foodify;
-import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -24,11 +27,6 @@ import com.waterbase.foodify.Common.Common;
import com.waterbase.foodify.Model.Request;
import com.waterbase.foodify.ViewHolder.OrderViewHolder;
-import io.github.inflationx.calligraphy3.CalligraphyConfig;
-import io.github.inflationx.calligraphy3.CalligraphyInterceptor;
-import io.github.inflationx.viewpump.ViewPump;
-import io.github.inflationx.viewpump.ViewPumpContextWrapper;
-
public class OrderStatus extends AppCompatActivity {
public RecyclerView recyclerView;
@@ -86,6 +84,18 @@ public class OrderStatus extends AppCompatActivity {
orderViewHolder.txtOrderAddress.setText("Địa chỉ: " + model.getAddress());
orderViewHolder.txtOrderDate.setText("Ngày đặt: " + Common.getDate(Long.parseLong(adapter.getRef(i).getKey())));
orderViewHolder.txtOrderPayment.setText("Tình trạng thanh toán: " + Common.convertCodePaymentToStatus(model.getPaymentStatus()));
+
+ orderViewHolder.btn_detail.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ //Pass object to another activity!
+ Intent intent = new Intent(OrderStatus.this, OrderStatusDetail.class);
+ intent.putExtra("requests", model);
+ startActivity(intent);
+ }
+ });
+
+
orderViewHolder.btn_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -110,15 +120,34 @@ public class OrderStatus extends AppCompatActivity {
}
private void deleteOrder(String key) {
- requests.child(key)
- .removeValue().addOnSuccessListener(new OnSuccessListener() {
+ AlertDialog alertDialog = new AlertDialog.Builder(OrderStatus.this).setTitle("Xác nhận").setMessage("Bạn có muốn xoá đơn #" + key).setPositiveButton("Đồng ý",null)
+ .setNegativeButton("Thoát", null)
+ .create();
+
+ alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
+ @Override
+ public void onShow(DialogInterface dialog) {
+ Button agree = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
+ agree.setOnClickListener(new View.OnClickListener() {
@Override
- public void onSuccess(Void unused) {
- Toast.makeText(OrderStatus.this, new StringBuilder("Đơn hàng ").append(key).append(" đã xoá!").toString(), Toast.LENGTH_SHORT).show();
+ public void onClick(View v) {
+ requests.child(key)
+ .removeValue().addOnSuccessListener(new OnSuccessListener() {
+ @Override
+ public void onSuccess(Void unused) {
+ Toast.makeText(OrderStatus.this, new StringBuilder("Đơn hàng ").append(key).append(" đã xoá!").toString(), Toast.LENGTH_SHORT).show();
+ }
+ }).addOnFailureListener((e) -> {
+ Toast.makeText(OrderStatus.this, e.getMessage(), Toast.LENGTH_SHORT).show();
+ });
+ alertDialog.dismiss();
}
- }).addOnFailureListener((e) -> {
- Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
});
+ }
+ });
+
+ alertDialog.show();
+
}
@Override
@@ -136,4 +165,10 @@ public class OrderStatus extends AppCompatActivity {
}
return super.onOptionsItemSelected(item);
}
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ adapter.startListening();
+ }
}
\ No newline at end of file
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/OrderStatusDetail.java b/Foodify/app/src/main/java/com/waterbase/foodify/OrderStatusDetail.java
new file mode 100644
index 0000000..fa03922
--- /dev/null
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/OrderStatusDetail.java
@@ -0,0 +1,65 @@
+package com.waterbase.foodify;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.widget.TextView;
+
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.FirebaseDatabase;
+import com.waterbase.foodify.Model.Request;
+import com.waterbase.foodify.ViewHolder.OrderDetailAdapter;
+import com.waterbase.foodify.ViewHolder.OrderStatusDetailAdapter;
+
+public class OrderStatusDetail extends AppCompatActivity {
+
+ TextView order_address, order_total, order_comment;
+ Request request;
+ RecyclerView lstFoods;
+ RecyclerView.LayoutManager layoutManager;
+
+ FirebaseDatabase database;
+ DatabaseReference requests;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_order_status_detail);
+
+ String comment = "";
+
+ setTitle("Thông tin chi tiết đơn hàng");
+
+ order_address = findViewById(R.id.order_address);
+ order_total = findViewById(R.id.order_total);
+ order_comment = findViewById(R.id.order_comment);
+
+ lstFoods = findViewById(R.id.lstFoods);
+ lstFoods.setHasFixedSize(true);
+ layoutManager = new LinearLayoutManager(this);
+ lstFoods.setLayoutManager(layoutManager);
+
+ //Firebase
+ database = FirebaseDatabase.getInstance();
+ requests = database.getReference("Requests");
+
+ if (getIntent() != null)
+ request = (Request) getIntent().getSerializableExtra("requests");
+
+ //Set value
+ order_total.setText("Tổng cộng: " + request.getTotal());
+ order_address.setText("Địa chỉ giao: " + request.getAddress());
+ if (TextUtils.isEmpty(request.getComment()))
+ comment = "Không có";
+ else
+ comment = request.getComment();
+ order_comment.setText("Ghi chú: " + comment);
+
+ OrderStatusDetailAdapter adapter = new OrderStatusDetailAdapter(request.getFoods(), this);
+ adapter.notifyDataSetChanged();
+ lstFoods.setAdapter(adapter);
+ }
+}
\ No newline at end of file
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/MyViewHolder.java b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/MyViewHolder.java
new file mode 100644
index 0000000..cc5e526
--- /dev/null
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/MyViewHolder.java
@@ -0,0 +1,25 @@
+package com.waterbase.foodify.ViewHolder;
+
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.waterbase.foodify.R;
+
+public class MyViewHolder extends RecyclerView.ViewHolder {
+
+ public TextView name, quantity, price, discount;
+ public ImageView cart_image;
+
+ public MyViewHolder(@NonNull View itemView) {
+ super(itemView);
+ name = (TextView) itemView.findViewById(R.id.product_name);
+ quantity = (TextView) itemView.findViewById(R.id.product_quantity);
+ price = (TextView) itemView.findViewById(R.id.product_price);
+ discount = (TextView) itemView.findViewById(R.id.product_discount);
+ cart_image = (ImageView) itemView.findViewById(R.id.cart_image);
+ }
+}
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/OrderDetailAdapter.java b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/OrderDetailAdapter.java
index 96e7caa..3d7a754 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/OrderDetailAdapter.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/OrderDetailAdapter.java
@@ -3,15 +3,11 @@ package com.waterbase.foodify.ViewHolder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
-
import com.squareup.picasso.Picasso;
-import com.waterbase.foodify.Cart;
import com.waterbase.foodify.Model.Order;
import com.waterbase.foodify.OrderDetail;
import com.waterbase.foodify.R;
@@ -20,21 +16,6 @@ import java.text.NumberFormat;
import java.util.List;
import java.util.Locale;
-class MyViewHolder extends RecyclerView.ViewHolder {
-
- public TextView name, quantity, price, discount;
- public ImageView cart_image;
-
- public MyViewHolder(@NonNull View itemView) {
- super(itemView);
- name = (TextView) itemView.findViewById(R.id.product_name);
- quantity = (TextView) itemView.findViewById(R.id.product_quantity);
- price = (TextView) itemView.findViewById(R.id.product_price);
- discount = (TextView) itemView.findViewById(R.id.product_discount);
- cart_image = (ImageView) itemView.findViewById(R.id.cart_image);
- }
-}
-
public class OrderDetailAdapter extends RecyclerView.Adapter{
List myOrders;
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/OrderStatusDetailAdapter.java b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/OrderStatusDetailAdapter.java
new file mode 100644
index 0000000..7d6c4f1
--- /dev/null
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/OrderStatusDetailAdapter.java
@@ -0,0 +1,64 @@
+package com.waterbase.foodify.ViewHolder;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.squareup.picasso.Picasso;
+import com.waterbase.foodify.Model.Order;
+import com.waterbase.foodify.OrderStatusDetail;
+import com.waterbase.foodify.R;
+
+import java.text.NumberFormat;
+import java.util.List;
+import java.util.Locale;
+
+public class OrderStatusDetailAdapter extends RecyclerView.Adapter{
+
+ List myOrders;
+ private OrderStatusDetail orderStatusDetail;
+
+ public OrderStatusDetailAdapter(List myOrders, OrderStatusDetail orderStatusDetail) {
+ this.myOrders = myOrders;
+ this.orderStatusDetail = orderStatusDetail;
+ }
+
+ @NonNull
+ @Override
+ public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View itemView = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.order_detail_layout, parent, false);
+ return new MyViewHolder(itemView);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
+ double totalPrice;
+ Order order = myOrders.get(position);
+
+ Picasso.with(orderStatusDetail.getBaseContext())
+ .load(myOrders.get(position).getImage())
+ .resize(70,70)
+ .centerCrop()
+ .into(holder.cart_image);
+
+ totalPrice = Double.parseDouble(order.getQuantity()) * Double.parseDouble(order.getPrice());
+ Locale locale = new Locale("vi", "VN");
+ NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
+
+
+ holder.name.setText(String.format("Món ăn: %s", order.getProductName()));
+ holder.quantity.setText(String.format("Số lượng: %s", order.getQuantity()));
+ holder.price.setText("Giá: " + fmt.format(totalPrice));
+ holder.discount.setText(String.format("Giảm giá: %s", order.getDiscount()));
+
+ }
+
+ @Override
+ public int getItemCount() {
+ return myOrders.size();
+ }
+}
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/OrderViewHolder.java b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/OrderViewHolder.java
index edc8eb7..c51245b 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/OrderViewHolder.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/OrderViewHolder.java
@@ -14,7 +14,7 @@ public class OrderViewHolder extends RecyclerView.ViewHolder {
public TextView txtOrderId, txtOrderStatus, txtOrderAddress, txtOrderDate, txtOrderPayment;
- public ImageView btn_delete;
+ public ImageView btn_delete, btn_detail;
public OrderViewHolder(@NonNull View itemView) {
super(itemView);
@@ -25,5 +25,6 @@ public class OrderViewHolder extends RecyclerView.ViewHolder {
txtOrderDate = itemView.findViewById(R.id.order_date);
txtOrderPayment = itemView.findViewById(R.id.order_payment);
btn_delete = itemView.findViewById(R.id.btn_delete);
+ btn_detail = itemView.findViewById(R.id.btn_detail);
}
}
diff --git a/Foodify/app/src/main/res/drawable/ic_baseline_assignment_24.xml b/Foodify/app/src/main/res/drawable/ic_baseline_assignment_24.xml
new file mode 100644
index 0000000..57096c1
--- /dev/null
+++ b/Foodify/app/src/main/res/drawable/ic_baseline_assignment_24.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/Foodify/app/src/main/res/layout/activity_order_status_detail.xml b/Foodify/app/src/main/res/layout/activity_order_status_detail.xml
new file mode 100644
index 0000000..a8d37d8
--- /dev/null
+++ b/Foodify/app/src/main/res/layout/activity_order_status_detail.xml
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Foodify/app/src/main/res/layout/order_layout.xml b/Foodify/app/src/main/res/layout/order_layout.xml
index 5884f15..9a1abfc 100644
--- a/Foodify/app/src/main/res/layout/order_layout.xml
+++ b/Foodify/app/src/main/res/layout/order_layout.xml
@@ -77,14 +77,35 @@
android:layout_height="wrap_content" />
-
+ android:layout_gravity="center"
+ >
+
+
+
+
+
+
+
+
\ No newline at end of file