package com.ericliudeveloper.sharedbillhelper.ui.fragment;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
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.TextView;
import com.ericliudeveloper.sharedbillhelper.R;
import com.ericliudeveloper.sharedbillhelper.model.Bill;
import com.ericliudeveloper.sharedbillhelper.model.BillDAO;
import com.ericliudeveloper.sharedbillhelper.ui.activity.CalculationParameterActivity;
import com.ericliudeveloper.sharedbillhelper.ui.activity.EditBillActivity;
import com.ericliudeveloper.sharedbillhelper.ui.dialog.DeleteDialog;
import com.ericliudeveloper.sharedbillhelper.util.CustomEvents;
import com.ericliudeveloper.sharedbillhelper.util.Router;
import butterknife.ButterKnife;
import butterknife.InjectView;
import de.greenrobot.event.EventBus;
/**
* A simple {@link Fragment} subclass.
*/
public class ViewBillDetailsFragment extends BaseFragment {
Bill mBill;
@InjectView(R.id.tvType)
TextView tvType;
@InjectView(R.id.tvAmount)
TextView tvAmount;
@InjectView(R.id.tvStartDate)
TextView tvStartDate;
@InjectView(R.id.tvEndDate)
TextView tvEndDate;
@InjectView(R.id.tvDueDay)
TextView tvDueDay;
@InjectView(R.id.tvIsPaid)
TextView tvIsPaid;
public ViewBillDetailsFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View root = inflater.inflate(R.layout.fragment_view_bill_details, container, false);
ButterKnife.inject(this, root);
return root;
}
@Override
public void onResume() {
EventBus.getDefault().registerSticky(this);
super.onResume();
}
public void onEvent(CustomEvents.EventViewBill eventViewBill) {
mBill = eventViewBill.bill;
refreshDisplay(mBill);
}
public void onEvent(CustomEvents.EventActionDelete eventDeleteBill) {
if (mBill == null) {
return;
}
int yesDeleted = 1;
mBill.setDeleted(yesDeleted);
BillDAO.saveBill(mBill, null);
if (getActivity() != null) {
getActivity().finish();
}
}
public void onEvent(CustomEvents.EventFABClicked eventFABClicked) {
EventBus.getDefault().postSticky(new CustomEvents.EventSetCalculationParameters(mBill));
Router.startActivity(getActivity(), CalculationParameterActivity.class, null);
}
@Override
public void onPause() {
super.onPause();
EventBus.getDefault().unregister(this);
}
private void refreshDisplay(Bill bill) {
String type = bill.getType();
String amount = String.valueOf(bill.getAmount());
String start = bill.getStartDate();
String end = bill.getEndDate();
String due = bill.getDueDate();
String yes = getActivity().getResources().getString(R.string.yes);
String no = getActivity().getResources().getString(R.string.no);
String isPaid = (bill.getPaid() > 0) ? yes : no;
tvType.setText(type);
tvAmount.setText(amount);
tvStartDate.setText(start);
tvEndDate.setText(end);
tvDueDay.setText(due);
tvIsPaid.setText(isPaid);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_view_details, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_edit:
EventBus.getDefault().postSticky(new CustomEvents.EventEditBill(mBill));
Intent gotoEditIntent = new Intent(getActivity(), EditBillActivity.class);
getActivity().startActivity(gotoEditIntent);
if (getActivity() != null) {
getActivity().finish();
}
break;
case R.id.action_delete:
showDeleteBillDialog();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
private void showDeleteBillDialog() {
Bundle args = new Bundle();
args.putString(DeleteDialog.TITLE,
getResources().getString(R.string.confirm_delete));
args.putString(DeleteDialog.MESSAGE,
getResources().getString(R.string.delete_bill));
DeleteDialog deleteDialog = DeleteDialog.newInstance(args);
deleteDialog.show(getFragmentManager(), "delete");
}
}