package me.larikraun.homesecurityui;

import android.content.Context;
import android.graphics.Typeface;
import android.support.v7.widget.SwitchCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * Created by omolara on 10/25/16.
 */
public class CustomAdapter extends BaseExpandableListAdapter {
	private Context mContext;
	private ArrayList<KeyHolderModel> mKeyHolderModels;
	private HashMap<KeyHolderModel, ArrayList<String>> mListDataChild;
	
	public CustomAdapter (Context context, ArrayList<KeyHolderModel> keyHolders,
						  HashMap<KeyHolderModel, ArrayList<String>> listChildData) {
		this.mContext = context;
		this.mKeyHolderModels = keyHolders;
		this.mListDataChild = listChildData;
	}
	
	@Override
	public int getGroupCount () {
		return mKeyHolderModels.size ();
	}
	
	@Override
	public int getChildrenCount (int groupPosition) {
		return this.mListDataChild.get (this.mKeyHolderModels.get (groupPosition))
				.size ();
	}
	
	@Override
	public Object getGroup (int groupPosition) {
		return this.mKeyHolderModels.get (groupPosition);
	}
	
	@Override
	public Object getChild (int groupPosition, int childPosition) {
		return this.mListDataChild.get (this.mKeyHolderModels.get (groupPosition))
				.get (childPosition);
	}
	
	@Override
	public long getGroupId (int groupPosition) {
		return groupPosition;
	}
	
	@Override
	public long getChildId (int groupPosition, int childPosition) {
		return childPosition;
	}
	
	@Override
	public boolean hasStableIds () {
		return false;
	}
	
	@Override
	public View getGroupView (int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {

		LayoutInflater inflater = LayoutInflater.from (mContext);
		final ViewHolder holder;
		if (convertView == null) {
			convertView = inflater.inflate (R.layout.keyholder_list, parent, false);
			holder = new ViewHolder (convertView);
			convertView.setTag (holder);
		} else {
			holder = (ViewHolder) convertView.getTag ();
		}
		KeyHolderModel keyholder = mKeyHolderModels.get (groupPosition);
		holder.name.setText (keyholder.getName ());
		holder.day.setText (keyholder.getDay ());
		holder.time.setText (keyholder.getTime ());
		holder.status.setChecked (keyholder.getStatus ().equals ("1"));
		return convertView;
	}
	
	@Override
	public View getChildView (int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
		final String childText = (String) getChild (groupPosition, childPosition);
		
		if (convertView == null) {
			LayoutInflater inflater = LayoutInflater.from (mContext);
			convertView = inflater.inflate (R.layout.ex_list_item, null);
		}
		
		TextView txtListChild = (TextView) convertView
				.findViewById (R.id.child);
		
		txtListChild.setText (childText);
		return convertView;
	}
	
	@Override
	public boolean isChildSelectable (int groupPosition, int childPosition) {
		return false;
	}
	
	private class ViewHolder {
		TextView name;
		TextView day;
		TextView time;
		SwitchCompat status;
		
		public ViewHolder (View v) {
			name = (TextView) v.findViewById (R.id.name);
			day = (TextView) v.findViewById (R.id.days);
			time = (TextView) v.findViewById (R.id.time);
			status = (SwitchCompat) v.findViewById (R.id.status);
			Typeface f = Typeface.createFromAsset (mContext.getAssets (), "fonts/gotham_book.ttf");
			name.setTypeface (f);
			day.setTypeface (f);
			time.setTypeface (f);
		}
	}
}