package com.sunlightlabs.android.congress.fragments;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.sunlightlabs.android.congress.R;
import com.sunlightlabs.android.congress.utils.Database;
import com.sunlightlabs.android.congress.utils.Utils;
import com.sunlightlabs.congress.models.Bill;
public class MenuBillsFragment extends ListFragment {
private Database database;
private Cursor cursor;
public static MenuBillsFragment newInstance() {
MenuBillsFragment frag = new MenuBillsFragment();
frag.setRetainInstance(true);
return frag;
}
public MenuBillsFragment() {}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupDatabase();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.menu_bills, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setupControls();
}
public void setupDatabase() {
database = new Database(getActivity());
database.open();
cursor = database.getBills();
}
@Override
public void onResume() {
super.onResume();
if (cursor != null) {
cursor.requery();
displayFavorites();
}
}
@Override
public void onDestroy() {
super.onDestroy();
database.close();
}
public void setupControls() {
displayFavorites();
}
public void displayFavorites() {
if (cursor != null && cursor.getCount() > 0) {
setListAdapter(new FavoriteBillsAdapter(getActivity(), cursor));
getView().findViewById(R.id.menu_bills_no_favorites).setVisibility(View.GONE);
getListView().setVisibility(View.VISIBLE);
} else {
getView().findViewById(R.id.menu_bills_no_favorites).setVisibility(View.VISIBLE);
getListView().setVisibility(View.GONE);
}
}
@Override
public void onListItemClick(ListView lv, View view, int position, long id) {
Bill bill = (Bill) view.getTag();
startActivity(Utils.billIntent(bill.id));
}
class FavoriteBillsAdapter extends CursorAdapter {
public FavoriteBillsAdapter(Context context, Cursor cursor) {
super(context, cursor);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
Bill bill = Database.loadBill(cursor);
((TextView) view.findViewById(R.id.code)).setText(Bill.formatCode(bill.id));
TextView titleView = (TextView) view.findViewById(R.id.title);
String title;
if (bill.short_title != null && !bill.short_title.equals("")) {
title = bill.short_title;
titleView.setTextSize(16);
} else if (bill.official_title != null && !bill.official_title.equals("")) {
title = bill.official_title;
titleView.setTextSize(14);
} else {
title = getResources().getString(R.string.bill_no_title);
titleView.setTextSize(16);
}
titleView.setText(Utils.truncate(title, 140));
view.setTag(bill);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = LayoutInflater.from(context).inflate(R.layout.favorite_bill, null);
bindView(view, context, cursor);
return view;
}
}
}