package com.ericliudeveloper.sharedbillhelper.ui.fragment; import android.app.Activity; import android.app.Fragment; 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.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import com.ericliudeveloper.sharedbillhelper.R; import com.ericliudeveloper.sharedbillhelper.ui.dialog.MessageDialog; import com.ericliudeveloper.sharedbillhelper.ui.presenter.EditBillPresenter; /** * A simple {@link Fragment} subclass. */ public class EditBillFragment extends BaseFragment implements View.OnClickListener, EditBillPresenter.EditBillFace { EditBillPresenter mPresenter = new EditBillPresenter(this); private Spinner spType; private EditText etAmount; private CheckBox cbPaid; private TextView tvStartDate; private TextView tvEndDate; private TextView tvDueDate; private Button btStartDate; private Button btEndDate; private Button btDueDate; private String[] mSpinnerItemArray; public EditBillFragment() { // Required empty public constructor } @Override public void onAttach(Activity activity) { super.onAttach(activity); // any Activity instance must be passed into Presenter in onAttach method mPresenter.setActivity(activity); mSpinnerItemArray = activity.getResources().getStringArray( R.array.bill_type_spinner_items); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View root = inflater.inflate(R.layout.fragment_edit_bill, container, false); setupViews(root); mPresenter.refreshDisplayFromBillInstance(); return root; } @Override public void onStart() { super.onStart(); mPresenter.registerStickyEventBusListener(); } @Override public void onStop() { super.onStop(); mPresenter.unregisterEventBusListener(); } private void setupViews(View rootView) { spType = (Spinner) rootView.findViewById(R.id.spType); etAmount = (EditText) rootView.findViewById(R.id.etAmount); cbPaid = (CheckBox) rootView.findViewById(R.id.cbPaid); btStartDate = (Button) rootView.findViewById(R.id.btStartDate); btEndDate = (Button) rootView.findViewById(R.id.btEndDate); btDueDate = (Button) rootView.findViewById(R.id.btDueDate); btStartDate.setOnClickListener(this); btEndDate.setOnClickListener(this); btDueDate.setOnClickListener(this); ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>( getActivity(), android.R.layout.simple_spinner_item, mSpinnerItemArray); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spType.setAdapter(adapter); } @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.btStartDate: mPresenter.onStartDateButtonClicked(); break; case R.id.btEndDate: mPresenter.enEndDateButtonClicked(); break; case R.id.btDueDate: mPresenter.onDueDateButtonClicked(); break; default: break; } } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_edit, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.action_done: mPresenter.startActionDone(); return true; case R.id.action_cancel: mPresenter.startActionCancel(); return true; default: break; } return super.onOptionsItemSelected(item); } @Override public void showBillType(String type) { int position = 0; for (int i = 0; i < mSpinnerItemArray.length; i++) { if (type.equals(mSpinnerItemArray[i])) { position = i; } } spType.setSelection(position); } @Override public void showAmount(String amount) { etAmount.setText(amount); } @Override public void showPickedStartDate(String pickedDate) { btStartDate.setText(pickedDate); } @Override public void showPickedEndDate(String pickedDate) { btEndDate.setText(pickedDate); } @Override public void showPickedDueDate(String pickedDate) { btDueDate.setText(pickedDate); } @Override public void showIsPaid(boolean isPaid) { cbPaid.setChecked(isPaid); } @Override public String getBillTypeInput() { return spType.getSelectedItem().toString(); } @Override public String getAmountInput() { return etAmount.getText().toString(); } @Override public boolean getIsPaidInput() { return cbPaid.isChecked(); } @Override public void showErrorDialog() { Bundle args = new Bundle(); String title = getActivity().getResources() .getString(R.string.fields_empty); args.putString(MessageDialog.TITLE, title); String must_fill_fields_bill = getActivity().getResources() .getString(R.string.must_fill_fields_bill); args.putString(MessageDialog.MESSAGE, must_fill_fields_bill); MessageDialog messageDialog = MessageDialog .newInstance(args); messageDialog.show(getActivity().getFragmentManager(), "message"); } }