package com.daviancorp.android.ui.detail;
import java.io.IOException;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
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.ItemToSkillTree;
import com.daviancorp.android.data.database.ItemToSkillTreeCursor;
import com.daviancorp.android.loader.ItemToSkillTreeListCursorLoader;
import com.daviancorp.android.mh3udatabase.R;
public class SkillTreeArmorFragment extends ListFragment implements
LoaderCallbacks<Cursor> {
private static final String ARG_SKILL = "SKILLTREE_SKILL";
private static final String ARG_TYPE = "SKILLTREE_TYPE";
private String skill_type;
public static SkillTreeArmorFragment newInstance(long skill, String type) {
Bundle args = new Bundle();
args.putLong(ARG_SKILL, skill);
args.putString(ARG_TYPE, type);
SkillTreeArmorFragment f = new SkillTreeArmorFragment();
f.setArguments(args);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int loaderId = 0;
String mType = getArguments().getString(ARG_TYPE);
if (mType.equals("Head")) {
loaderId = R.id.skill_tree_armor_fragment_head;
}
else if (mType.equals("Body")) {
loaderId = R.id.skill_tree_armor_fragment_body;
}
else if (mType.equals("Arms")) {
loaderId = R.id.skill_tree_armor_fragment_arms;
}
else if (mType.equals("Waist")) {
loaderId = R.id.skill_tree_armor_fragment_waist;
}
else if (mType.equals("Legs")) {
loaderId = R.id.skill_tree_armor_fragment_legs;
}
// Initialize the loader to load the list of runs
getLoaderManager().initLoader(loaderId, getArguments(), this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_skill_armor_list, null);
return v;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// The id argument will be the Item ID; CursorAdapter gives us this
// for free
Intent i = new Intent(getActivity(), ArmorDetailActivity.class);
i.putExtra(ArmorDetailActivity.EXTRA_ARMOR_ID, (long) v.getTag());
startActivity(i);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
// You only ever load the runs, so assume this is the case
long mSkill = -1;
skill_type = null;
if (args != null) {
mSkill = args.getLong(ARG_SKILL);
skill_type = args.getString(ARG_TYPE);
}
return new ItemToSkillTreeListCursorLoader(getActivity(),
ItemToSkillTreeListCursorLoader.FROM_SKILL_TREE, mSkill, skill_type);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
// Create an adapter to point at this cursor
ItemToSkillTreeListCursorAdapter adapter = new ItemToSkillTreeListCursorAdapter(
getActivity(), (ItemToSkillTreeCursor) cursor, skill_type);
setListAdapter(adapter);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
// Stop using the cursor (via the adapter)
setListAdapter(null);
}
private static class ItemToSkillTreeListCursorAdapter extends CursorAdapter {
private ItemToSkillTreeCursor mItemToSkillTreeCursor;
private String mType;
public ItemToSkillTreeListCursorAdapter(Context context, ItemToSkillTreeCursor cursor, String type) {
super(context, cursor, 0);
mItemToSkillTreeCursor = cursor;
mType = type;
}
@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_skill_armor_listitem,
parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
// Get the skill for the current row
ItemToSkillTree skill = mItemToSkillTreeCursor.getItemToSkillTree();
// Set up the text view
LinearLayout root = (LinearLayout) view.findViewById(R.id.listitem);
ImageView skillItemImageView = (ImageView) view.findViewById(R.id.item_image);
TextView skillItemTextView = (TextView) view.findViewById(R.id.item);
TextView skillAmtTextView = (TextView) view.findViewById(R.id.amt);
String nameText = skill.getItem().getName();
String amtText = "" + skill.getPoints();
skillItemTextView.setText(nameText);
skillAmtTextView.setText(amtText);
Drawable i = null;
String part = "";
if (mType.equals("Head")) {
part = "head";
} else if (mType.equals("Body")) {
part = "body";
} else if (mType.equals("Arms")) {
part = "arms";
} else if (mType.equals("Waist")) {
part = "waist";
} else if (mType.equals("Legs")) {
part = "legs";
}
String cellImage = "icons_armor/icons_" + part + "/" + part +
skill.getItem().getRarity() + ".png";
try {
i = Drawable.createFromStream(
context.getAssets().open(cellImage), null);
} catch (IOException e) {
e.printStackTrace();
}
skillItemImageView.setImageDrawable(i);
root.setTag(skill.getItem().getId());
}
}
}