package treehou.se.habit.ui.util;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.mikepenz.iconics.IconicsDrawable;
import com.mikepenz.iconics.typeface.IIcon;
import java.util.ArrayList;
import java.util.List;
import treehou.se.habit.R;
import treehou.se.habit.util.Util;
public class IconPickerFragment extends Fragment {
public static final String ARG_CATEGORY = "ARG_CATEGORY";
public static final String RESULT_ICON = "RESULT_ICON";
private RecyclerView lstIcons;
private IconAdapter adapter;
public static IconPickerFragment newInstance() {
IconPickerFragment fragment = new IconPickerFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
public IconPickerFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_icon_picker, null);
lstIcons = (RecyclerView) rootView.findViewById(R.id.lst_categories);
lstIcons.setItemAnimator(new DefaultItemAnimator());
lstIcons.setLayoutManager(new GridLayoutManager(getActivity(), 4));
if(getArguments() != null){
List<IIcon> icons = Util.CAT_ICONS.get(getArguments().getSerializable(ARG_CATEGORY));
adapter = new IconAdapter(getActivity(), icons);
}
lstIcons.setAdapter(adapter);
return rootView;
}
private class IconAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private List<IIcon> icons = new ArrayList<>();
class IconHolder extends RecyclerView.ViewHolder {
public ImageView imgIcon;
public IconHolder(View itemView) {
super(itemView);
imgIcon = (ImageView) itemView.findViewById(R.id.img_menu);
}
}
public IconAdapter(Context context, List<IIcon> icons) {
this.context = context;
this.icons = icons;
}
public void add(IIcon icon){
icons.add(icon);
notifyDataSetChanged();
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
View itemView = inflater.inflate(R.layout.item_icon, null);
return new IconHolder(itemView);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
final IIcon item = icons.get(position);
IconHolder catHolder = (IconHolder) holder;
IconicsDrawable drawable = new IconicsDrawable(getActivity(), item).color(Color.BLACK).sizeDp(50);
catHolder.imgIcon.setImageDrawable(drawable);
catHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra(RESULT_ICON, item.getName());
getActivity().setResult(Activity.RESULT_OK, intent);
getActivity().finish();
}
});
}
@Override
public int getItemCount() {
return icons.size();
}
}
public static IconPickerFragment newInstance(Util.IconCategory category) {
Bundle args = new Bundle();
args.putSerializable(ARG_CATEGORY, category);
IconPickerFragment fragment = new IconPickerFragment();
fragment.setArguments(args);
return fragment;
}
}