package com.ericliudeveloper.sharedbillhelper.ui.fragment;
import android.app.Fragment;
import android.app.LoaderManager;
import android.content.CursorLoader;
import android.content.Intent;
import android.content.Loader;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import com.ericliudeveloper.sharedbillhelper.MyApplication;
import com.ericliudeveloper.sharedbillhelper.R;
import com.ericliudeveloper.sharedbillhelper.provider.BillContract;
import com.ericliudeveloper.sharedbillhelper.ui.activity.ViewBillDetailsActivity;
import com.ericliudeveloper.sharedbillhelper.ui.presenter.BillListPresenter;
import com.ericliudeveloper.sharedbillhelper.ui.presenter.ListPresenter;
import com.ericliudeveloper.sharedbillhelper.util.CustomEvents;
import de.greenrobot.event.EventBus;
/**
* A simple {@link Fragment} subclass.
*/
public class BillListFragment extends RecyclerViewFragment implements LoaderManager.LoaderCallbacks<Cursor> {
private int mBillQueryToken = 1;
protected boolean isListSelectionMode = false;
@Override
protected ListPresenter getPresenter() {
return new BillListPresenter(isListSelectionMode);
}
public BillListFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// mPresenter = new BillListPresenter();
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getLoaderManager().initLoader(mBillQueryToken, null, this);
}
protected boolean isListEmpty() {
if (mAdapter.getItemCount() == 0) {
return true;
} else {
return false;
}
}
protected void displayEmptyView(boolean isEmpty) {
if (isEmpty) {
ImageView ivEmptyBillList = new ImageView(getActivity());
ivEmptyBillList.setImageDrawable(getActivity().getResources().getDrawable(R.drawable.ic_action_assignment));
mEmptyView.addView(ivEmptyBillList);
mEmptyView.setVisibility(View.VISIBLE);
} else {
mEmptyView.setVisibility(View.GONE);
mEmptyView.removeAllViews();
}
}
@Override
public void onResume() {
EventBus.getDefault().register(this);
super.onResume();
}
/**
* Handle user click on List items
*
* @param eventViewBill
*/
public void onEvent(CustomEvents.EventViewBill eventViewBill) {
Intent viewBillDetailsIntent = new Intent(getActivity(), ViewBillDetailsActivity.class);
getActivity().startActivity(viewBillDetailsIntent);
}
@Override
public void onPause() {
EventBus.getDefault().unregister(this);
super.onPause();
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
Loader<Cursor> loader = null;
Uri uri = BillContract.Bills.CONTENT_URI;
String[] projection = BillContract.Bills.PROJECTION;
loader = new CursorLoader(MyApplication.getApplication(), uri, projection, null, null, null);
return loader;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mAdapter.swapCursor(data);
if (isListEmpty()) {
displayEmptyView(true);
} else {
displayEmptyView(false);
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
mAdapter.swapCursor(null);
}
}