package kz.arta.synergy.workflow.mobile.android.files.adapters;

import android.app.Activity;
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 kz.arta.synergy.workflow.mobile.android.R;
import kz.arta.synergy.workflow.mobile.android.common.models.Person;
import kz.arta.synergy.workflow.mobile.android.common.utils.Fonts;
import kz.arta.synergy.workflow.mobile.android.common.utils.ImageLoader;
import kz.arta.synergy.workflow.mobile.android.common.utils.Utils;
import kz.arta.synergy.workflow.mobile.android.files.models.Node;

/**
 * Created by neox on 08.04.14.
 * Адаптер для списка файлов
 */
public class AdapterFiles extends BaseAdapter {

    /**
     * Текущее активити
     */
    private Activity activity;

    /**
     * Пользователь
     */
    private Person person;

    /**
     * Список файлов
     */
    private List<Node> files;

    /**
     * LayoutInflater
     */
    private LayoutInflater inflater;

    /**
     * Класс для асинхронной загрузки изображений
     */
    private ImageLoader imageLoader;

    /**
     * Конктруктор
     *
     * @param activity текущее активити
     * @param files    список файлов
     * @param person   пользователь
     */
    public AdapterFiles(Activity activity, List<Node> files, Person person) {
        this.files = files;
        this.person = person;
        this.activity = activity;
        inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader = new ImageLoader(activity, person);
    }

    public int getCount() {
        return files.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    /**
     * Метод возвращает view элемента списка
     *
     * @param position    позиция текущего элемента
     * @param convertView текущее view
     * @param parent      родитель
     * @return view элемента списка
     */
    public View getView(int position, View convertView, ViewGroup parent) {

        View view = convertView;
        if (convertView == null) {
            view = inflater.inflate(R.layout.item_file, null);
        }

        TextView nameFile = (TextView) view.findViewById(R.id.file_name);
        nameFile.setTypeface(Fonts.getMedium(activity));
        nameFile.setText(files.get(position).getName());

        TextView userName = (TextView) view.findViewById(R.id.user_name);
        userName.setTypeface(Fonts.getRoman(activity));
        userName.setText(Utils.parseAuthor(files.get(position).getUserName()));

        TextView created = (TextView) view.findViewById(R.id.created);
        created.setTypeface(Fonts.getRoman(activity));
        created.setText(files.get(position).getModified());

        ImageView image = (ImageView) view.findViewById(R.id.file_icon);
        if (files.get(position).is_folder()) {
            imageLoader.displayImage(image, R.drawable.folder_icon);
        } else {
            imageLoader.displayImage(Utils.parseUrlToIcon(person.getHost() + files.get(position).getIcon()), image);
        }

        return view;
    }
}