package com.daviancorp.android.ui.detail;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.support.v4.widget.CursorAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import com.daviancorp.android.data.classes.Weapon;
import com.daviancorp.android.data.database.WeaponCursor;
import com.daviancorp.android.loader.WeaponTreeListCursorLoader;
import com.daviancorp.android.mh3udatabase.R;
import com.daviancorp.android.mh3udatabase.R.color;
public class WeaponTreeFragment extends ListFragment implements
LoaderCallbacks<Cursor> {
private static final String ARG_WEAPON_ID = "WEAPON_ID";
private long mWeaponId;
public static WeaponTreeFragment newInstance(long weaponId) {
Bundle args = new Bundle();
args.putLong(ARG_WEAPON_ID, weaponId);
WeaponTreeFragment f = new WeaponTreeFragment();
f.setArguments(args);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initialize the loader to load the list of runs
getLoaderManager().initLoader(R.id.weapon_tree_fragment, getArguments(), this);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
// You only ever load the runs, so assume this is the case
mWeaponId = args.getLong(ARG_WEAPON_ID, -1);
return new WeaponTreeListCursorLoader(getActivity(), mWeaponId);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
// Create an adapter to point at this cursor
WeaponTreeListCursorAdapter adapter = new WeaponTreeListCursorAdapter(
getActivity(), (WeaponCursor) cursor, mWeaponId);
setListAdapter(adapter);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
// Stop using the cursor (via the adapter)
setListAdapter(null);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// The id argument will be the Weapon ID; CursorAdapter gives us this
// for free
Intent i = new Intent(getActivity(), WeaponDetailActivity.class);
i.putExtra(WeaponDetailActivity.EXTRA_WEAPON_ID, (long) v.getTag());
startActivity(i);
}
private static class WeaponTreeListCursorAdapter extends CursorAdapter {
private WeaponCursor mWeaponCursor;
private long weaponId;
public WeaponTreeListCursorAdapter(Context context, WeaponCursor cursor, long id) {
super(context, cursor, 0);
mWeaponCursor = cursor;
weaponId = id;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
// Use a layout inflater to get a row view
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return inflater.inflate(R.layout.fragment_weapon_tree,
parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
// Get the weapon for the current row
Weapon weapon = mWeaponCursor.getWeapon();
// Set up the text view
LinearLayout weaponLayout = (LinearLayout) view.findViewById(R.id.listitem);
weaponLayout.setTag(weapon.getId());
TextView weaponView = (TextView) view.findViewById(R.id.name);
String cellWeaponText = weapon.getName();
weaponView.setText(cellWeaponText);
if ((weapon.getId() <= weaponId) && (weapon.getWFinal() == 0)) {
ImageView arrowView = (ImageView) view.findViewById(R.id.arrow);
arrowView.setImageResource(R.drawable.arrow_down_float);
}
if (weapon.getId() == weaponId) {
weaponView.setTextColor(Color.RED);
}
}
}
}