Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.centaury.catalogkue.ui.cart;
- import android.arch.lifecycle.Observer;
- import android.arch.lifecycle.ViewModelProviders;
- import android.content.Context;
- import android.content.Intent;
- import android.os.Bundle;
- import android.support.annotation.NonNull;
- import android.support.annotation.Nullable;
- import android.support.v4.app.Fragment;
- import android.support.v4.app.FragmentActivity;
- import android.support.v7.app.AlertDialog;
- import android.support.v7.app.AppCompatActivity;
- import android.support.v7.widget.DefaultItemAnimator;
- import android.support.v7.widget.DividerItemDecoration;
- import android.support.v7.widget.LinearLayoutManager;
- import android.support.v7.widget.RecyclerView;
- import android.support.v7.widget.Toolbar;
- import android.view.LayoutInflater;
- import android.view.Menu;
- import android.view.MenuInflater;
- import android.view.MenuItem;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import com.centaury.catalogkue.R;
- import com.centaury.catalogkue.data.db.entity.CakeEntity;
- import com.centaury.catalogkue.ui.cart.adapter.CakeCartAdapter;
- import com.centaury.catalogkue.ui.detail.DetailCakeActivity;
- import com.centaury.catalogkue.utils.MyDividerItemDecoration;
- import java.util.List;
- import java.util.concurrent.ExecutionException;
- import butterknife.BindView;
- import butterknife.ButterKnife;
- import butterknife.Unbinder;
- public class CartFragment extends Fragment implements CakeCartAdapter.CakesAdapterListener {
- public static final String TAG = CartFragment.class.getSimpleName();
- @BindView(R.id.txt_toolbar)
- TextView mTxtToolbar;
- @BindView(R.id.toolbar)
- Toolbar mToolbar;
- @BindView(R.id.shadow)
- View mShadow;
- @BindView(R.id.recyc_keranjang)
- RecyclerView mRecycKeranjang;
- @BindView(R.id.ln_empty_state)
- LinearLayout mLnEmptyState;
- @BindView(R.id.harga_total)
- TextView mHargaTotal;
- @BindView(R.id.ln_jumlah)
- LinearLayout mLnJumlah;
- private View view;
- private Unbinder unbinder;
- private CartViewModel cartViewModel;
- private CakeCartAdapter cakeCartAdapter;
- public CartFragment() {
- // Required empty public constructor
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.fragment_cart, container, false);
- unbinder = ButterKnife.bind(this, view);
- ((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);
- setHasOptionsMenu(true);
- return view;
- }
- @Override
- public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- cartViewModel = ViewModelProviders.of((FragmentActivity) getContext()).get(CartViewModel.class);
- cakeCartAdapter = new CakeCartAdapter(getContext(), this);
- RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
- mRecycKeranjang.setLayoutManager(layoutManager);
- mRecycKeranjang.setItemAnimator(new DefaultItemAnimator());
- mRecycKeranjang.addItemDecoration(new MyDividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL, 16));
- mRecycKeranjang.setAdapter(cakeCartAdapter);
- }
- @Override
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- cartViewModel.getCakes().observe(this, new Observer<List<CakeEntity>>() {
- @Override
- public void onChanged(@Nullable List<CakeEntity> cakeEntities) {
- cakeCartAdapter.submitList(cakeEntities);
- toggleEmptyCakes(cakeEntities.size());
- }
- });
- }
- private void toggleEmptyCakes(int size) {
- if (size > 0) {
- mLnEmptyState.setVisibility(View.GONE);
- } else {
- mLnEmptyState.setVisibility(View.VISIBLE);
- }
- }
- private void deleteAllCakes() {
- cartViewModel.deleteAllCakes();
- }
- public void insertCake(CakeEntity cake) {
- cartViewModel.insertCake(cake);
- }
- private void showDeleteDialog() {
- LayoutInflater layoutInflaterAndroid = LayoutInflater.from(getContext());
- View view = layoutInflaterAndroid.inflate(R.layout.alert_dialog, null);
- AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
- builder.setView(view);
- TextView dialogTitle = view.findViewById(R.id.dialog_title);
- TextView dialogDesc = view.findViewById(R.id.dialog_desc);
- dialogTitle.setText(getString(R.string.title_hapus));
- dialogDesc.setText(getString(R.string.txt_hapus_dialog));
- builder.setCancelable(false)
- .setPositiveButton(getString(R.string.label_hapus), (dialog, which) -> {
- deleteAllCakes();
- dialog.dismiss();
- })
- .setNegativeButton(getString(R.string.label_cancel), (dialog, which) -> {
- dialog.dismiss();
- });
- final AlertDialog alertDialog = builder.create();
- alertDialog.show();
- }
- private void showDeleteByIdDialog(int cakeId) {
- final CakeEntity cake;
- try {
- cake = cartViewModel.getCake(cakeId);
- LayoutInflater layoutInflaterAndroid = LayoutInflater.from(getContext());
- View view = layoutInflaterAndroid.inflate(R.layout.alert_dialog, null);
- AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
- builder.setView(view);
- TextView dialogTitle = view.findViewById(R.id.dialog_title);
- TextView dialogDesc = view.findViewById(R.id.dialog_desc);
- dialogTitle.setText(getString(R.string.title_hapus));
- dialogDesc.setText(getString(R.string.txt_hapus_dialog));
- builder.setCancelable(false)
- .setPositiveButton(getString(R.string.label_hapus), (dialog, which) -> {
- cartViewModel.deleteCake(cake);
- dialog.dismiss();
- })
- .setNegativeButton(getString(R.string.label_cancel), (dialog, which) -> {
- dialog.dismiss();
- });
- final AlertDialog alertDialog = builder.create();
- alertDialog.show();
- } catch (ExecutionException e) {
- // TODO - handle error
- e.printStackTrace();
- } catch (InterruptedException e) {
- // TODO - handle error
- e.printStackTrace();
- }
- }
- @Override
- public void onAttach(Context context) {
- super.onAttach(context);
- }
- @Override
- public void onDetach() {
- super.onDetach();
- }
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- inflater.inflate(R.menu.menu_more, menu);
- super.onCreateOptionsMenu(menu, inflater);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.clear:
- showDeleteDialog();
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- unbinder.unbind();
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- unbinder.unbind();
- }
- @Override
- public void onClick(String cakeId, int position) {
- Intent intent = new Intent(getContext(), DetailCakeActivity.class);
- intent.putExtra(DetailCakeActivity.KEY_CAKE_ID, cakeId);
- startActivity(intent);
- getActivity().overridePendingTransition(R.anim.slide_in_from_right, R.anim.slide_out_to_left);
- }
- @Override
- public void onDeleteClick(int cakeId, int position) {
- showDeleteByIdDialog(cakeId);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement