package kr.co.icontrols.iotplatform.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

import kr.co.icontrols.iotplatform.DataClass.DeviceInfo;
import kr.co.icontrols.iotplatform.IotPlatformApplication;
import kr.co.icontrols.iotplatform.R;

public class DeviceSelectAdapter extends BaseAdapter {
    // Adapter에 추가된 데이터를 저장하기 위한 ArrayList
    private List<DeviceInfo> listViewItemList;

    // ListViewAdapter의 생성자
    public DeviceSelectAdapter(List<DeviceInfo> listItem) {
        listViewItemList = listItem;
    }

    // Adapter에 사용되는 데이터의 개수를 리턴. : 필수 구현
    @Override
    public int getCount() {
        return listViewItemList==null?0:listViewItemList.size() ;
    }

    // position에 위치한 데이터를 화면에 출력하는데 사용될 View를 리턴. : 필수 구현
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        final int pos = position;
        final Context context = parent.getContext();

        // "listview_item" Layout을 inflate하여 convertView 참조 획득.
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.listview_device_select_list_item, parent, false);
        }

        // 화면에 표시될 View(Layout이 inflate된)으로부터 위젯에 대한 참조 획득
        TextView txtDeviceName = convertView.findViewById(R.id.txtDeviceName);
        TextView txtGroupName = convertView.findViewById(R.id.txtGroupName);
        ImageView imgIcon = convertView.findViewById(R.id.imgIcon);
        ImageView imgChk = convertView.findViewById(R.id.imgChk);

        // Data Set(listViewItemList)에서 position에 위치한 데이터 입력
        txtDeviceName.setText(listViewItemList.get(position).friendlyName.isEmpty()?listViewItemList.get(position).sharedFriendlyName.isEmpty()?IotPlatformApplication.getInstance().getString(R.string.no_name):listViewItemList.get(position).sharedFriendlyName:listViewItemList.get(position).friendlyName);
        txtGroupName.setText(listViewItemList.get(position).dgroupName);
        imgChk.setSelected(listViewItemList.get(position).isSelected());

        return convertView;
    }

    // 지정한 위치(position)에 있는 데이터와 관계된 아이템(row)의 ID를 리턴. : 필수 구현
    @Override
    public long getItemId(int position) {
        return position ;
    }

    // 지정한 위치(position)에 있는 데이터 리턴 : 필수 구현
    @Override
    public Object getItem(int position) {
        return listViewItemList.get(position) ;
    }

    public void setSelected(int position) {
        listViewItemList.get(position).isSelected = (listViewItemList.get(position).isSelected()?0:1);
    }

    public boolean isSelected() {
        boolean resault = false;

        for(DeviceInfo d : listViewItemList) {
            if(d.isSelected()) {
                resault = true;
            }
        }
        return resault;
    }

    public void removeAll() {
        listViewItemList.clear();
    }
}