package com.firstbuild.androidapp.paragon.myrecipes;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.app.Fragment;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.BounceInterpolator;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.afollestad.materialdialogs.MaterialDialog;
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.viewutil.SwipeMenu;
import com.firstbuild.androidapp.viewutil.SwipeMenuCreator;
import com.firstbuild.androidapp.viewutil.SwipeMenuItem;
import com.firstbuild.androidapp.viewutil.SwipeMenuListView;
/**
* A simple {@link Fragment} subclass.
*/
public class MyRecipesFragment extends Fragment {
private String TAG = MyRecipesFragment.class.getSimpleName();
private ParagonMainActivity attached = null;
// private ArrayList<RecipeInfo> listRecipeDataInfo = new ArrayList<>();
private SwipeMenuListView recipeListView;
private RecipeListAdapter recipeListAdapter;
public MyRecipesFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
attached.setTitle("My Recipes");
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_my_recipes, container, false);
recipeListView = (SwipeMenuListView) view.findViewById(R.id.list_recipes);
recipeListAdapter = new RecipeListAdapter();
recipeListView.setAdapter(recipeListAdapter);
// step 1. create a MenuCreator
SwipeMenuCreator creator = new SwipeMenuCreator() {
@Override
public void create(SwipeMenu menu) {
SwipeMenuItem item;
// create "edit" item
item = new SwipeMenuItem(attached.getApplicationContext());
item.setBackground(R.color.colorParagonDivider);
item.setWidth(dp2px(90));
item.setTitle("Edit");
item.setTitleSize(18);
item.setTitleColor(Color.WHITE);
menu.addMenuItem(item);
// create "delete" item
item = new SwipeMenuItem(attached.getApplicationContext());
item.setBackground(R.color.colorParagonHighlight);
item.setWidth(dp2px(90));
item.setTitle("Delete");
item.setTitleSize(18);
item.setTitleColor(Color.WHITE);
menu.addMenuItem(item);
}
};
// set creator
recipeListView.setMenuCreator(creator);
// step 2. listener item click event
recipeListView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
switch (index) {
case 0:
// edit
Log.d(TAG, "onMenuItemClick 0");
RecipeManager.getInstance().setCurrentRecipe(position);
attached.nextStep(ParagonMainActivity.ParagonSteps.STEP_EDIT_RECIPES);
break;
case 1:
// delete
Log.d(TAG, "onMenuItemClick 1");
RecipeManager.getInstance().remove(position);
recipeListAdapter.notifyDataSetChanged();
break;
}
return false;
}
});
// other setting
recipeListView.setCloseInterpolator(new BounceInterpolator());
// test item long click
recipeListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
RecipeManager.getInstance().setCurrentRecipe(position);
attached.nextStep(ParagonMainActivity.ParagonSteps.STEP_VIEW_RECIPE);
}
});
view.findViewById(R.id.btn_add_recipe).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new MaterialDialog.Builder(attached)
.title(R.string.my_recipes_add_recipe)
.items(R.array.kind_of_recipe)
.itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
Log.d(TAG, "selected " + which + ", " + text);
switch (which) {
case 0:
//case for multi-stage.
RecipeManager.getInstance().createRecipeMultiStage();
attached.nextStep(ParagonMainActivity.ParagonSteps.STEP_ADD_RECIPE_MUTISTAGE);
break;
case 1:
// case for sous vide.
RecipeManager.getInstance().createRecipeSousVide();
attached.nextStep(ParagonMainActivity.ParagonSteps.STEP_ADD_RECIPE_SOUSVIDE);
break;
}
}
})
.show();
}
});
readRecipes();
return view;
}
@Override
public void onResume() {
super.onResume();
recipeListAdapter.notifyDataSetChanged();
recipeListView.invalidateViews();
}
/**
* Read recipes from file.
*/
private void readRecipes() {
//
// int size = RecipeManager.getInstance().getSize();
//
// for(int i = 0; i < size; i++){
// listRecipeDataInfo.add(RecipeManager.getInstance().get(i));
// }
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
attached = (ParagonMainActivity) getActivity();
}
private int dp2px(int dp) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,
getResources().getDisplayMetrics());
}
public class RecipeListAdapter extends BaseAdapter {
@Override
public int getCount() {
return RecipeManager.getInstance().getSize();
}
@Override
public RecipeInfo getItem(int position) {
return RecipeManager.getInstance().get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = View.inflate(attached.getApplicationContext(), R.layout.adapter_recipe_item, null);
new ViewHolder(convertView);
}
ViewHolder holder = (ViewHolder) convertView.getTag();
RecipeInfo item = getItem(position);
holder.name.setText(item.getName());
return convertView;
}
class ViewHolder {
TextView name;
public ViewHolder(View view) {
name = (TextView) view.findViewById(R.id.text_name);
view.setTag(this);
}
}
}
}