package com.daviancorp.android.ui.detail;
import java.io.IOException;
import java.io.InputStream;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.daviancorp.android.data.classes.Armor;
import com.daviancorp.android.data.database.S;
import com.daviancorp.android.loader.ArmorLoader;
import com.daviancorp.android.mh3udatabase.R;
public class ArmorDetailFragment extends Fragment {
private static final String ARG_ARMOR_ID = "ARMOR_ID";
private Armor mArmor;
private TextView mArmorLabelTextView;
private ImageView mArmorIconImageView;
private TextView partTextView;
private TextView defenseTextView;
private TextView slotTextView;
private TextView rareTextView;
private TextView buyTextView;
private TextView fireResTextView;
private TextView waterResTextView;
private TextView iceResTextView;
private TextView thunderResTextView;
private TextView dragonResTextView;
public static ArmorDetailFragment newInstance(long armorId) {
Bundle args = new Bundle();
args.putLong(ARG_ARMOR_ID, armorId);
ArmorDetailFragment f = new ArmorDetailFragment();
f.setArguments(args);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
setHasOptionsMenu(true);
// Check for a Item ID as an argument, and find the item
Bundle args = getArguments();
if (args != null) {
long armorId = args.getLong(ARG_ARMOR_ID, -1);
if (armorId != -1) {
LoaderManager lm = getLoaderManager();
lm.initLoader(R.id.armor_detail_fragment, args,
new ArmorLoaderCallbacks());
}
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_armor_detail,
container, false);
mArmorLabelTextView = (TextView) view
.findViewById(R.id.detail_armor_label);
mArmorIconImageView = (ImageView) view
.findViewById(R.id.detail_armor_image);
partTextView = (TextView) view.findViewById(R.id.part);
defenseTextView = (TextView) view.findViewById(R.id.defense);
slotTextView = (TextView) view.findViewById(R.id.slot);
rareTextView = (TextView) view.findViewById(R.id.rare);
buyTextView = (TextView) view.findViewById(R.id.buy);
fireResTextView = (TextView) view.findViewById(R.id.fire_res);
waterResTextView = (TextView) view.findViewById(R.id.water_res);
iceResTextView = (TextView) view.findViewById(R.id.ice_res);
thunderResTextView = (TextView) view.findViewById(R.id.thunder_res);
dragonResTextView = (TextView) view.findViewById(R.id.dragon_res);
return view;
}
private void updateUI() throws IOException {
String cellText = mArmor.getName();
String cellImage = "";
String cellPart = "" + mArmor.getSlot();
String cellDefense = "" + mArmor.getDefense() + " (min) - " + mArmor.getMaxDefense() + " (max)";
String cellSlot = "" + mArmor.getNumSlots();
String cellRare = "" + mArmor.getRarity();
String cellBuy = "" + mArmor.getBuy() + "z";
String cellFire = "" + mArmor.getFireRes();
String cellWater = "" + mArmor.getWaterRes();
String cellIce = "" + mArmor.getIceRes();
String cellThunder = "" + mArmor.getThunderRes();
String cellDragon = "" + mArmor.getDragonRes();
if (cellBuy.equals("0z")) {
cellBuy = "-";
}
mArmorLabelTextView.setText(cellText);
partTextView.setText(cellPart);
defenseTextView.setText(cellDefense);
slotTextView.setText(cellSlot);
rareTextView.setText(cellRare);
buyTextView.setText(cellBuy);
fireResTextView.setText(cellFire);
waterResTextView.setText(cellWater);
iceResTextView.setText(cellIce);
thunderResTextView.setText(cellThunder);
dragonResTextView.setText(cellDragon);
long createdId = mArmor.getId();
if ((createdId >= S.SECTION_HEAD) && (createdId < S.SECTION_BODY)) {
cellImage = "icons_armor/icons_head/head" + cellRare + ".png";
}
else if ((createdId >= S.SECTION_BODY) && (createdId < S.SECTION_ARMS)) {
cellImage = "icons_armor/icons_body/body" + cellRare + ".png";
}
else if ((createdId >= S.SECTION_ARMS) && (createdId < S.SECTION_WAIST)) {
cellImage = "icons_armor/icons_arms/arms" + cellRare + ".png";
}
else if ((createdId >= S.SECTION_WAIST) && (createdId < S.SECTION_LEGS)) {
cellImage = "icons_armor/icons_waist/waist" + cellRare + ".png";
}
else if ((createdId >= S.SECTION_LEGS) && (createdId < S.SECTION_WEAPON)) {
cellImage = "icons_armor/icons_legs/legs" + cellRare + ".png";
}
// Read a Bitmap from Assets
AssetManager manager = getActivity().getAssets();
InputStream open = null;
try {
open = manager.open(cellImage);
Bitmap bitmap = BitmapFactory.decodeStream(open);
// Assign the bitmap to an ImageView in this layout
mArmorIconImageView.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (open != null) {
open.close();
}
}
}
private class ArmorLoaderCallbacks implements
LoaderCallbacks<Armor> {
@Override
public Loader<Armor> onCreateLoader(int id, Bundle args) {
return new ArmorLoader(getActivity(),
args.getLong(ARG_ARMOR_ID));
}
@Override
public void onLoadFinished(Loader<Armor> loader, Armor run) {
mArmor = run;
try {
updateUI();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onLoaderReset(Loader<Armor> loader) {
// Do nothing
}
}
}