Update version Firebase, fix layout!

This commit is contained in:
phanhuuloi27
2022-07-09 12:46:40 +07:00
parent 0e29d9b423
commit a3407bd675
12 changed files with 281 additions and 202 deletions
+1 -1
View File
@@ -3,10 +3,10 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.waterbase.foodify">
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
android:allowBackup="true"
@@ -1,13 +1,18 @@
package com.waterbase.foodify;
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentSender;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.location.Location;
import android.net.Uri;
import android.os.Bundle;
import android.os.Looper;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
@@ -20,24 +25,39 @@ import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.ApiException;
import com.google.android.gms.common.api.ResolvableApiException;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationCallback;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationResult;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.location.LocationSettingsRequest;
import com.google.android.gms.location.LocationSettingsResponse;
import com.google.android.gms.location.LocationSettingsStatusCodes;
import com.google.android.gms.location.Priority;
import com.google.android.gms.location.SettingsClient;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.material.snackbar.Snackbar;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionDeniedResponse;
import com.karumi.dexter.listener.PermissionGrantedResponse;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.single.PermissionListener;
import com.rengwuxian.materialedittext.MaterialEditText;
import com.waterbase.foodify.Common.Common;
import com.waterbase.foodify.Database.Database;
@@ -58,18 +78,14 @@ import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.regex.Pattern;
import info.hoang8f.widget.FButton;
import io.github.inflationx.calligraphy3.CalligraphyConfig;
import io.github.inflationx.calligraphy3.CalligraphyInterceptor;
import io.github.inflationx.viewpump.ViewPump;
import io.github.inflationx.viewpump.ViewPumpContextWrapper;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class Cart extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener,
LocationListener, RecyclerItemTouchHelperListener {
public class Cart extends AppCompatActivity implements RecyclerItemTouchHelperListener {
String address = null;
@@ -79,7 +95,7 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
FirebaseDatabase database;
DatabaseReference requests;
public TextView txtTotalPrice;
public TextView txtTotalPrice, txtEmptyCart;
FButton btnPlace;
List<Order> cart = new ArrayList<>();
@@ -90,16 +106,19 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
RelativeLayout rootLayout;
//Location
private static final int REQUEST_CHECK_SETTINGS = 100;
private static final long UPDATE_INTERVAL_IN_MILLISECONDS = 10000;
private static final long FASTEST_UPDATE_IN_MILLISECONDS = 1000;
private static final String TAG = Cart.class.getSimpleName();
private FusedLocationProviderClient mFusedLocationClient;
private SettingsClient mSettingsClient;
private LocationRequest mLocationRequest;
private GoogleApiClient mGoogleApiClient;
private Location mLastLocation;
private LocationSettingsRequest mLocationSettingsRequest;
private LocationCallback mLocationCallBack;
private Location mCurrentLocation;
private boolean mRequestingLocationUpdates = false;
private static int UPDATE_INTERVAL = 5000;
private static int FATEST_INTERVAL = 3000;
private static int DISPLACEMENT = 10;
private static final int LOCATION_REQUEST_CODE = 9999;
private static final int PLAY_SERVICES_REQUEST = 9997;
//Declare Google Map API Retrofit
IGoogleService mGoogleMapService;
@@ -110,21 +129,6 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
setContentView(R.layout.activity_cart);
//Runtime permission
if (checkLocatePermission()) {
ActivityCompat.requestPermissions(this, new String[]
{
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
}, LOCATION_REQUEST_CODE
);
} else {
if (checkPlayServices()) {
buildGoogleApiClient();
createLocationRequest();
}
}
//Init
mService = Common.getFCMService();
mGoogleMapService = Common.getGoogleMapAPI();
@@ -139,6 +143,9 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
rootLayout = findViewById(R.id.rootLayout);
txtEmptyCart = findViewById(R.id.textEmptyCart);
visibilityTextEmpty();
//Swipe to delete
ItemTouchHelper.SimpleCallback itemTouchHelperCallback = new RecyclerItemTouchHelper(0, ItemTouchHelper.LEFT, this);
@@ -150,8 +157,9 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
btnPlace.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (cart.size() > 0)
if (cart.size() > 0){
showAlertDialog();
}
else
Toast.makeText(Cart.this, "Giỏ hàng của bạn đang trống!!!", Toast.LENGTH_SHORT).show();
}
@@ -159,6 +167,48 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
loadListFood();
//Location
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
mSettingsClient = LocationServices.getSettingsClient(this);
mLocationCallBack = new LocationCallback() {
@Override
public void onLocationResult(@NonNull LocationResult locationResult) {
super.onLocationResult(locationResult);
mCurrentLocation = locationResult.getLastLocation();
}
};
mLocationRequest = LocationRequest.create()
.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS)
.setFastestInterval(FASTEST_UPDATE_IN_MILLISECONDS)
.setPriority(Priority.PRIORITY_HIGH_ACCURACY);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(mLocationRequest);
mLocationSettingsRequest = builder.build();
Dexter.withContext(this)
.withPermission(Manifest.permission.ACCESS_FINE_LOCATION)
.withListener(new PermissionListener() {
@Override
public void onPermissionGranted(PermissionGrantedResponse permissionGrantedResponse) {
mRequestingLocationUpdates = true;
startLocationUpdates();
}
@Override
public void onPermissionDenied(PermissionDeniedResponse response) {
if(response.isPermanentlyDenied()){
openSettings();
}
}
@Override
public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {
token.continuePermissionRequest();
}
}).check();
setTitle("Giỏ hàng");
// calling the action bar
ActionBar actionBar = getSupportActionBar();
@@ -167,53 +217,6 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case LOCATION_REQUEST_CODE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (checkPlayServices()) {
buildGoogleApiClient();
createLocationRequest();
}
}
}
}
}
private void createLocationRequest() {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(UPDATE_INTERVAL);
mLocationRequest.setFastestInterval(FATEST_INTERVAL);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setSmallestDisplacement(DISPLACEMENT);
}
private synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API).build();
mGoogleApiClient.connect();
}
private boolean checkPlayServices() {
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (resultCode != ConnectionResult.SUCCESS) {
if (GooglePlayServicesUtil.isUserRecoverableError(resultCode))
GooglePlayServicesUtil.getErrorDialog(resultCode, this, PLAY_SERVICES_REQUEST).show();
else {
Toast.makeText(this, "Thiết bị này chưa được hỗ trợ!", Toast.LENGTH_SHORT).show();
finish();
}
return false;
}
return true;
}
private void showAlertDialog() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(Cart.this);
alertDialog.setTitle("Còn 1 bước nữa!");
@@ -234,8 +237,8 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
rdiHomeAddress.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
if(!TextUtils.isEmpty(Common.currentUser.getHomeAddress()) || Common.currentUser.getHomeAddress() != null) {
if (isChecked) {
if (!TextUtils.isEmpty(Common.currentUser.getHomeAddress()) || Common.currentUser.getHomeAddress() != null) {
edtAddress.setText(Common.currentUser.getHomeAddress());
} else
Toast.makeText(Cart.this, "Vui lòng điền địa chỉ mặc định của bạn!", Toast.LENGTH_SHORT).show();
@@ -247,8 +250,8 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
rdiAddress.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked)
edtAddress.setText("");
if (isChecked)
edtAddress.setText("");
}
});
@@ -258,8 +261,8 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
mGoogleMapService.getAddressName(String.format("https://maps.googleapis.com/maps/api/geocode/json?latlng=%f,%f&key=AIzaSyCqmoLlawoQzmwjZI2_Yo_V33An_nNZADs",
mLastLocation.getLatitude(),
mLastLocation.getLongitude()))
mCurrentLocation.getLatitude(),
mCurrentLocation.getLongitude()))
.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
@@ -331,7 +334,6 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
}
private void loadListFood() {
cart = new Database(this).getCarts(Common.currentUser.getPhone());
adapter = new CartAdapter(cart, this);
@@ -341,7 +343,8 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
//Calculate total price
float total = 0;
for (Order order : cart)
total += (Float.parseFloat(order.getPrice())) * (Float.parseFloat(order.getQuantity())) * (100 - Long.parseLong(order.getDiscount()))/100;;
total += (Float.parseFloat(order.getPrice())) * (Float.parseFloat(order.getQuantity())) * (100 - Long.parseLong(order.getDiscount())) / 100;
;
Locale locale = new Locale("vi", "VN");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
@@ -377,58 +380,12 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
loadListFood();
}
@Override
public void onConnected(@Nullable Bundle bundle) {
displayLocation();
startLocationUpdates();
}
private void startLocationUpdates() {
if (checkLocatePermission()) {
return;
}
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
private void displayLocation() {
if (checkLocatePermission())
return;
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if (mLastLocation != null) {
Log.d("LOCATION", "Your location: " + mLastLocation.getLatitude() + ", " + mLastLocation.getLongitude());
} else {
Log.d("LOCATION", "Could not get your location!");
}
}
@Override
public void onConnectionSuspended(int i) {
mGoogleApiClient.connect();
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
private boolean checkLocatePermission() {
return ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED;
}
@Override
public void onLocationChanged(Location location) {
mLastLocation = location;
displayLocation();
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction, int position) {
if(viewHolder instanceof CartViewHolder)
{
String name = ((CartAdapter)recyclerView.getAdapter()).getItem(viewHolder.getAdapterPosition()).getProductName();
if (viewHolder instanceof CartViewHolder) {
String name = ((CartAdapter) recyclerView.getAdapter()).getItem(viewHolder.getAdapterPosition()).getProductName();
Order deleteItem = ((CartAdapter)recyclerView.getAdapter()).getItem(viewHolder.getAdapterPosition());
Order deleteItem = ((CartAdapter) recyclerView.getAdapter()).getItem(viewHolder.getAdapterPosition());
int deleteIndex = viewHolder.getAdapterPosition();
adapter.removeItem(deleteIndex);
@@ -444,23 +401,103 @@ public class Cart extends AppCompatActivity implements GoogleApiClient.Connectio
adapter.restoreItem(deleteItem, deleteIndex);
new Database(getBaseContext()).addToCart(deleteItem);
updateTotalPrice();
visibilityTextEmpty();
}
});
visibilityTextEmpty();
snackbar.setActionTextColor(Color.YELLOW);
snackbar.show();
}
}
public void updateTotalPrice()
{
public void updateTotalPrice() {
//Calculate total price
float total = 0;
List<Order> orders = new Database(getBaseContext()).getCarts(Common.currentUser.getPhone());
for (Order item : orders)
total += (Float.parseFloat(item.getPrice())) * (Float.parseFloat(item.getQuantity())) * (100 - Long.parseLong(item.getDiscount()))/100;
total += (Float.parseFloat(item.getPrice())) * (Float.parseFloat(item.getQuantity())) * (100 - Long.parseLong(item.getDiscount())) / 100;
Locale locale = new Locale("vi", "VN");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
txtTotalPrice.setText(fmt.format(total));
}
//Location
private void openSettings(){
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", BuildConfig.APPLICATION_ID, null);
intent.setData(uri);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
private void startLocationUpdates(){
mSettingsClient.checkLocationSettings(mLocationSettingsRequest).addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() {
@SuppressLint("MissingPermission")
@Override
public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallBack, Looper.myLooper());
}
}).addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
int statusCode = ((ApiException) e).getStatusCode();
switch (statusCode){
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
Log.i(TAG, "Location settings are not satisfied. Attempting to upgrade location settings");
try {
ResolvableApiException rae = (ResolvableApiException) e;
rae.startResolutionForResult(Cart.this, REQUEST_CHECK_SETTINGS);
}catch (IntentSender.SendIntentException sie){
Log.i(TAG, "PendingIntent unable to execute request");
}
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
String errorMessage = "Location settings are inadequate, and cannot be fixed here. Fix in Settings";
Log.e(TAG, errorMessage);
Toast.makeText(Cart.this, errorMessage, Toast.LENGTH_SHORT).show();
}
}
});
}
private void stopLocationUpdates(){
mFusedLocationClient.removeLocationUpdates(mLocationCallBack).addOnCompleteListener(this, task -> Log.d(TAG, "Location updates stopped!"));
}
private boolean checkPermission(){
int permissionState = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
return permissionState == PackageManager.PERMISSION_GRANTED;
}
@Override
protected void onResume() {
super.onResume();
if(mRequestingLocationUpdates && checkPermission()){
startLocationUpdates();
}
visibilityTextEmpty();
}
@Override
protected void onPause() {
super.onPause();
if(mRequestingLocationUpdates){
stopLocationUpdates();
}
}
private void visibilityTextEmpty(){
if(cart.size() > 0){
txtEmptyCart.setVisibility(View.GONE);
} else {
txtEmptyCart.setVisibility(View.VISIBLE);
}
}
}
@@ -6,6 +6,7 @@ import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
@@ -23,6 +24,8 @@ import com.waterbase.foodify.Model.Favorites;
import com.waterbase.foodify.ViewHolder.FavoritesAdapter;
import com.waterbase.foodify.ViewHolder.FavoritesViewHolder;
import org.w3c.dom.Text;
import io.github.inflationx.calligraphy3.CalligraphyConfig;
import io.github.inflationx.calligraphy3.CalligraphyInterceptor;
import io.github.inflationx.viewpump.ViewPump;
@@ -30,6 +33,7 @@ import io.github.inflationx.viewpump.ViewPumpContextWrapper;
public class FavoritesActivity extends AppCompatActivity implements RecyclerItemTouchHelperListener {
TextView txtEmptyList;
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
@@ -47,10 +51,13 @@ public class FavoritesActivity extends AppCompatActivity implements RecyclerItem
rootLayout = findViewById(R.id.rootLayout);
txtEmptyList = findViewById(R.id.txtEmptyList);
setVisibilityText();
recyclerView = findViewById(R.id.recycler_fav);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
//Swipe to delete
ItemTouchHelper.SimpleCallback itemTouchHelperCallback = new RecyclerItemTouchHelper(0, ItemTouchHelper.LEFT, this);
new ItemTouchHelper(itemTouchHelperCallback).attachToRecyclerView(recyclerView);
@@ -88,9 +95,10 @@ public class FavoritesActivity extends AppCompatActivity implements RecyclerItem
public void onClick(View v) {
adapter.restoreItem(deleteItem, deleteIndex);
new Database(getBaseContext()).addToFavorites(deleteItem);
setVisibilityText();
}
});
snackbar.setActionTextColor(Color.YELLOW);
snackbar.show();
}
@@ -105,4 +113,12 @@ public class FavoritesActivity extends AppCompatActivity implements RecyclerItem
}
return super.onOptionsItemSelected(item);
}
private void setVisibilityText() {
if(new Database(this).getAllFavorites(Common.currentUser.getPhone()).size() > 0) {
txtEmptyList.setVisibility(View.GONE);
} else {
txtEmptyList.setVisibility(View.VISIBLE);
}
}
}
@@ -4,6 +4,7 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.RatingBar;
@@ -49,7 +50,6 @@ public class FoodDetail extends AppCompatActivity implements RatingDialogListene
TextView food_name, food_price, food_description;
ImageView food_image;
CollapsingToolbarLayout collapsingToolbarLayout;
FloatingActionButton btnRating;
CounterFab btnCart;
ElegantNumberButton numberButton;
RatingBar ratingBar;
@@ -88,16 +88,19 @@ public class FoodDetail extends AppCompatActivity implements RatingDialogListene
//Init view
numberButton = (ElegantNumberButton) findViewById(R.id.number_button);
btnCart = findViewById(R.id.btnCart);
btnRating = (FloatingActionButton) findViewById(R.id.btnRating);
ratingBar = (RatingBar) findViewById(R.id.ratingBar);
btnRating.setOnClickListener(new View.OnClickListener() {
ratingBar.setOnTouchListener(new View.OnTouchListener() {
@Override
public void onClick(View v) {
showRatingDialog();
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
showRatingDialog();
}
return true;
}
});
btnCart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -1,19 +1,19 @@
package com.waterbase.foodify.Service;
import androidx.annotation.NonNull;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.waterbase.foodify.Common.Common;
import com.waterbase.foodify.Model.Token;
public class MyFirebaseIdService extends FirebaseInstanceIdService {
public class MyFirebaseIdService extends FirebaseMessagingService {
@Override
public void onTokenRefresh() {
super.onTokenRefresh();
String tokenRefreshed = FirebaseInstanceId.getInstance().getToken();
updateTokenToFirebase(tokenRefreshed);
public void onNewToken(@NonNull String token) {
super.onNewToken(token);
updateTokenToFirebase(token);
}
private void updateTokenToFirebase(String tokenRefreshed) {
@@ -1,9 +1,7 @@
package com.waterbase.foodify;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
@@ -13,6 +11,7 @@ import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
@@ -22,16 +21,12 @@ import com.rey.material.widget.CheckBox;
import com.waterbase.foodify.Common.Common;
import com.waterbase.foodify.Model.User;
import io.github.inflationx.calligraphy3.CalligraphyConfig;
import io.github.inflationx.calligraphy3.CalligraphyInterceptor;
import io.github.inflationx.viewpump.ViewPump;
import io.github.inflationx.viewpump.ViewPumpContextWrapper;
import io.paperdb.Paper;
public class SignIn extends AppCompatActivity {
EditText edtPhone, edtPassword;
Button btnSignIn;
Button btnSignIn, btnGoogle;
TextView txtAppName, edtForgotPassword;
CheckBox ckbRemember;
@@ -45,7 +40,6 @@ public class SignIn extends AppCompatActivity {
btnSignIn = (Button) findViewById(R.id.btnSignIn);
ckbRemember = (CheckBox)findViewById(R.id.ckbRemember);
edtForgotPassword = findViewById(R.id.forgotPassword);
//Init Paper
Paper.init(this);
@@ -115,6 +109,9 @@ public class SignIn extends AppCompatActivity {
}
});
//Google SignIn Button
GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build();
//Set on click Forgot Password
edtForgotPassword.setOnClickListener(new View.OnClickListener() {
@Override
@@ -25,6 +25,18 @@
</LinearLayout>
<TextView
android:id="@+id/textEmptyCart"
android:text="Giỏ hàng của bạn đang trống!"
android:textSize="18sp"
android:layout_centerInParent="true"
android:fontFamily="@font/italic"
android:textColor="#8AECECEC"
android:layout_width="wrap_content"
android:visibility="gone"
android:layout_height="wrap_content"
/>
<androidx.cardview.widget.CardView
android:id="@+id/cardView"
@@ -14,4 +14,17 @@
android:layout_height="match_parent"
/>
<TextView
android:id="@+id/txtEmptyList"
android:text="Danh sách yêu thích của bạn đang trống!"
android:textAlignment="center"
android:textSize="20sp"
android:layout_centerInParent="true"
android:fontFamily="@font/italic"
android:textColor="#E1676767"
android:layout_width="wrap_content"
android:visibility="gone"
android:layout_height="wrap_content"
/>
</RelativeLayout>
@@ -51,20 +51,6 @@
/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/btnRating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/white"
app:elevation="6dp"
android:src="@drawable/ic_baseline_star_24"
app:layout_anchor="@id/app_bar_layout"
app:layout_anchorGravity="bottom|right|start"
app:pressedTranslationZ="12dp"
app:useCompatPadding="true"
/>
<androidx.core.widget.NestedScrollView
android:id="@+id/nestedScrollView"
android:layout_width="match_parent"
@@ -109,6 +95,7 @@
android:id="@+id/food_price"
android:layout_marginLeft="12dp"
android:text="1,000"
android:layout_marginTop="10dp"
android:fontFamily="@font/regular"
android:textColor="@color/black"
android:textSize="18sp"
@@ -116,21 +103,20 @@
android:layout_width="0dp"
android:layout_height="wrap_content" />
<com.cepheuen.elegantnumberbutton.view.ElegantNumberButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/number_button"
android:layout_marginRight="12dp"
android:layout_marginBottom="18dp"
app:textSize="8sp"
app:backGroundColor="@color/purple_500"
app:initialNumber="1"
app:finalNumber="20"
/>
</LinearLayout>
<com.cepheuen.elegantnumberbutton.view.ElegantNumberButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/number_button"
android:layout_marginTop="8dp"
android:layout_marginLeft="8dp"
android:layout_marginBottom="18dp"
app:textSize="8sp"
app:backGroundColor="@color/purple_500"
app:initialNumber="1"
app:finalNumber="20"
/>
</LinearLayout>
@@ -153,7 +139,9 @@
android:layout_height="wrap_content"
android:isIndicator="true"
android:max="5"
android:rating="0" />
android:rating="0"
android:layout_gravity="center"
/>
<TextView
android:id="@+id/food_description"
@@ -6,6 +6,7 @@
android:layout_height="wrap_content"
app:cardElevation="10dp"
app:cardCornerRadius="0dp"
android:layout_margin="8dp"
android:layout_marginBottom="8dp"
>
@@ -59,6 +60,8 @@
android:weightSum="10"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:gravity="center_vertical"
android:layout_height="0dp"
android:layout_weight="1"
@@ -77,6 +80,8 @@
</LinearLayout>
<RelativeLayout
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
@@ -25,18 +25,19 @@
android:text="User Phone"
android:fontFamily="@font/bold"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_weight="9"
android:layout_height="wrap_content"
/>
<RatingBar
android:id="@+id/ratingBar"
style="?android:attr/ratingBarStyleSmall"
android:layout_marginLeft="140dp"
android:layout_gravity="center_vertical"
android:rating="3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
/>
</LinearLayout>