package com.firstbuild.androidapp.paragon;
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.firstbuild.androidapp.R;
import com.firstbuild.androidapp.paragon.datamodel.BuiltInRecipeInfo;
import com.firstbuild.androidapp.paragon.datamodel.BuiltInRecipeSettingsInfo;
import com.firstbuild.androidapp.paragon.helper.SelectModeAdapter;
import java.util.ArrayList;
import jp.wasabeef.recyclerview.animators.SlideInUpAnimator;
/**
* A simple {@link Fragment} subclass.
*/
public class SelectModeFragment extends Fragment implements SelectModeAdapter.ClickListener {
private String TAG = SelectModeFragment.class.getSimpleName();
private RecyclerView listMode;
private SelectModeAdapter selectModeAdapter;
private SelectModeSteps selectModeSteps;
private View layoutButtons;
private ParagonMainActivity attached;
private BuiltInRecipeInfo builtInRecipes = null;
public SelectModeFragment() {
// 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) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_select_mode, container, false);
//TODO: block recipeManaber until multi-stage enabled.
// view.findViewById(R.id.btn_my_recipes).setVisibility(View.GONE);
// view.findViewById(R.id.btn_my_recipes).setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// Log.d(TAG, "onclick my recipes");
// RecipeManager.getInstance().ReadFromFile();
// attached.nextStep(ParagonMainActivity.ParagonSteps.STEP_MY_RECIPES);
//
// }
// });
view.findViewById(R.id.btn_quick_start).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onclick Quick Start");
attached.nextStep(ParagonMainActivity.ParagonSteps.STEP_QUICK_START);
}
});
layoutButtons = view.findViewById(R.id.layout_buttons);
listMode = (RecyclerView) view.findViewById(R.id.list_mode);
selectModeAdapter = new SelectModeAdapter(getActivity());
selectModeAdapter.setClickListener(this);
SlideInUpAnimator animator = new SlideInUpAnimator();
animator.setRemoveDuration(100);
animator.setAddDuration(200);
listMode.setItemAnimator(animator);
listMode.setAdapter(selectModeAdapter);
listMode.setLayoutManager(new LinearLayoutManager(getActivity()));
builtInRecipes = attached.builtInRecipes;
selectModeSteps = SelectModeSteps.STEP_COOKING_METHOD;
removeAllList();
fillList();
((ParagonMainActivity) getActivity()).setTitle("Paragon");
return view;
}
private void removeAllList() {
int size = selectModeAdapter.getItemCount();
for (int i = 0; i < size; i++) {
selectModeAdapter.removeItem(0);
}
}
private void fillList() {
ArrayList<BuiltInRecipeInfo> recipeFoods = builtInRecipes.child;
for (BuiltInRecipeInfo recipeInfo : recipeFoods) {
selectModeAdapter.addItem(recipeInfo.name);
}
}
@Override
public void itemClicked(View view, int position) {
Log.d(TAG, "itemclicked " + position);
int size = builtInRecipes.child.size();
if (position < 0 || position >= size) {
return;
}
builtInRecipes = builtInRecipes.child.get(position);
if(builtInRecipes.type == BuiltInRecipeInfo.TYPE_FOOD){
removeAllList();
fillList();
}
else{
attached.selectedBuiltInRecipe = (BuiltInRecipeSettingsInfo)builtInRecipes;
SetTitle("Settings");
attached.nextStep(ParagonMainActivity.ParagonSteps.STEP_SOUSVIDE_SETTINGS);
}
}
/**
* Set title text on header.
*
* @param text string to be title.
*/
private void SetTitle(String text) {
((ParagonMainActivity) getActivity()).setTitle(text);
}
public void onBackPressed() {
if(builtInRecipes.parent != null){
builtInRecipes = builtInRecipes.parent;
removeAllList();
fillList();
}
else{
attached.finishParagonMain();
}
}
private enum SelectModeSteps {
STEP_COOKING_METHOD,
STEP_MATERIAL,
STEP_HOW_TO_COOK,
}
}