package com.firstbuild.androidapp.paragon.myrecipes;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.TextView;
import com.firstbuild.androidapp.R;
import com.firstbuild.androidapp.paragon.ParagonMainActivity;
import com.firstbuild.androidapp.paragon.datamodel.RecipeInfo;
import com.firstbuild.androidapp.paragon.datamodel.RecipeManager;
import com.firstbuild.androidapp.paragon.datamodel.StageInfo;
import com.firstbuild.androidapp.viewutil.SwipeMenuListView;
/**
* A simple {@link Fragment} subclass.
*/
public class RecipeViewFragment extends Fragment {
private String TAG = RecipeViewFragment.class.getSimpleName();
private EditText editIngredients;
private EditText editDirections;
private SwipeMenuListView stageListView;
private RadioGroup groupDetail;
private StageListAdapter stageListAdapter;
private EditText editName;
private ParagonMainActivity attached = null;
private View layoutStages;
private ImageView imageTitle;
public RecipeViewFragment() {
// Required empty public constructor
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
attached = (ParagonMainActivity) getActivity();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
attached.setTitle("My Recipes");
attached.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_recipe_edit, container, false);
editName = (EditText) view.findViewById(R.id.edit_name);
editIngredients = (EditText) view.findViewById(R.id.edit_ingredients);
editDirections = (EditText) view.findViewById(R.id.edit_directions);
groupDetail = (RadioGroup) view.findViewById(R.id.group_recipe_detail);
layoutStages = view.findViewById(R.id.layout_stages);
imageTitle = (ImageView) view.findViewById(R.id.image_title);
view.findViewById(R.id.fab_add_stage).setVisibility(View.GONE);
editName.setKeyListener(null);
editName.setBackgroundColor(0xFFFFFFFF);
editName.setTextColor(getResources().getColor(R.color.colorParagonAccent));
editIngredients.setKeyListener(null);
editIngredients.setBackgroundColor(0xFFFFFFFF);
editIngredients.setTextColor(0xFF000000);
editDirections.setKeyListener(null);
editDirections.setBackgroundColor(0xFFFFFFFF);
editDirections.setTextColor(0xFF000000);
groupDetail.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.radio_ingredients:
editIngredients.setVisibility(View.VISIBLE);
editDirections.setVisibility(View.GONE);
layoutStages.setVisibility(View.GONE);
break;
case R.id.radio_directions:
editIngredients.setVisibility(View.GONE);
editDirections.setVisibility(View.VISIBLE);
layoutStages.setVisibility(View.GONE);
break;
case R.id.radio_settings:
editIngredients.setVisibility(View.GONE);
editDirections.setVisibility(View.GONE);
layoutStages.setVisibility(View.VISIBLE);
break;
}
}
});
groupDetail.check(R.id.radio_ingredients);
stageListAdapter = new StageListAdapter();
stageListView = (SwipeMenuListView) view.findViewById(R.id.list_stages);
stageListView.setAdapter(stageListAdapter);
stageListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
RecipeManager.getInstance().setCurrentStage(position);
attached.nextStep(ParagonMainActivity.ParagonSteps.STEP_VIEW_STAGE);
}
});
view.findViewById(R.id.btn_save).setVisibility(View.GONE);
view.findViewById(R.id.btn_cook).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RecipeManager.getInstance().sendCurrentStages();
RecipeManager.getInstance().setCurrentStage(0);
attached.nextStep(ParagonMainActivity.ParagonSteps.STEP_SOUSVIDE_GETREADY);
}
});
getCurrentRecipe();
return view;
}
private void getCurrentRecipe() {
RecipeInfo recipe = RecipeManager.getInstance().getCurrentRecipe();
editName.setText(recipe.getName());
editIngredients.setText(recipe.getIngredients());
editDirections.setText(recipe.getDirections());
attached.loadImageFromFile(recipe.getImageFileName());
}
public void setRecipeImage(Bitmap imageBitmap) {
imageTitle.setImageBitmap(imageBitmap);
}
public class StageListAdapter extends BaseAdapter {
@Override
public int getCount() {
return RecipeManager.getInstance().getCurrentRecipe().numStage();
}
@Override
public StageInfo getItem(int position) {
return RecipeManager.getInstance().getCurrentRecipe().getStage(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
StageInfo stage = getItem(position);
// if (convertView == null) {
if (stage.getType() == StageInfo.TYPE_ADD_ITEM) {
convertView = View.inflate(attached.getApplicationContext(), R.layout.adapter_stage_add, null);
}
else {
convertView = View.inflate(attached.getApplicationContext(), R.layout.adapter_stage_item, null);
}
new ViewHolder(convertView);
// }
ViewHolder holder = (ViewHolder) convertView.getTag();
if (stage.getType() == StageInfo.TYPE_ADD_ITEM) {
// do nothing
}
else {
holder.name.setText("Stage " + (position + 1));
}
return convertView;
}
class ViewHolder {
TextView name;
public ViewHolder(View view) {
name = (TextView) view.findViewById(R.id.text_name);
view.setTag(this);
}
}
}
}