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.ViewMemberDetailsActivity;
import com.ericliudeveloper.sharedbillhelper.ui.presenter.ListPresenter;
import com.ericliudeveloper.sharedbillhelper.ui.presenter.MemberListPresenter;
import com.ericliudeveloper.sharedbillhelper.util.CustomEvents;
import de.greenrobot.event.EventBus;
/**
* A simple {@link Fragment} subclass.
*/
public class MemberListFragment extends RecyclerViewFragment implements LoaderManager.LoaderCallbacks<Cursor> {
protected boolean isListSelectionMode = false;
private int mMemberQueryToken = 2;
public MemberListFragment() {
// Required empty public constructor
}
@Override
protected ListPresenter getPresenter() {
return new MemberListPresenter(isListSelectionMode);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getLoaderManager().initLoader(mMemberQueryToken, 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_face_unlock));
mEmptyView.addView(ivEmptyBillList);
mEmptyView.setVisibility(View.VISIBLE);
} else {
mEmptyView.setVisibility(View.GONE);
mEmptyView.removeAllViews();
}
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
Loader<Cursor> loader = null;
Uri uri = BillContract.Members.CONTENT_URI;
String[] projection = BillContract.Members.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);
}
@Override
public void onResume() {
EventBus.getDefault().register(this);
super.onResume();
}
/**
* Handle user click on List items
*
* @param eventViewMember
*/
public void onEvent(CustomEvents.EventViewMember eventViewMember) {
Intent viewMemberDetailsIntent = new Intent(getActivity(), ViewMemberDetailsActivity.class);
getActivity().startActivity(viewMemberDetailsIntent);
}
@Override
public void onPause() {
EventBus.getDefault().unregister(this);
super.onPause();
}
}