package com.bell.scansdcardfiles.adapter;

import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Handler;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bell.scansdcardfiles.R;
import com.bell.scansdcardfiles.activity.FileListActivity;
import com.bell.scansdcardfiles.bean.FileData;
import com.bell.scansdcardfiles.util.FileUtil;

import java.io.File;
import java.util.ArrayList;

/**
 * Created by bell on 17/10/11.
 */
public class FileAdapter extends BaseAdapter {
    private Context mContext;
    private Handler handler;
    private ArrayList<FileData> mListItems;

    public FileAdapter(Context mContext, ArrayList<FileData> mListItems, Handler handler) {
        this.mContext = mContext;
        this.handler = handler;
        this.mListItems = mListItems;
    }

    @Override
    public int getCount() {
        return mListItems.size();
    }


    @Override
    public Object getItem(int position) {
        return mListItems.get(position);
    }


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


    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        final ViewHolder holder;
        if (null == convertView) {
            holder = new ViewHolder();
            convertView = LayoutInflater.from(mContext).inflate(R.layout.item_file_list, null);
            holder._checkbox = (ImageView) convertView.findViewById(R.id.check_box);
            holder._img = (ImageView) convertView.findViewById(R.id.item_file_image);
            holder._nameText = (TextView) convertView.findViewById(R.id.item_file_name);
            holder._pathText = (TextView) convertView.findViewById(R.id.item_file_path);
            holder._timeText = (TextView) convertView.findViewById(R.id.item_file_time);
            holder._sizeText = (TextView) convertView.findViewById(R.id.item_file_size);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        try {

            final FileData data = mListItems.get(position);

            if (data.isFile()) {
                holder._img.setImageResource(R.drawable.ic_file);
            } else {
                holder._img.setImageResource(R.drawable.ic_folder);
            }
            holder._nameText.setText(data.getFileName());
            holder._pathText.setText(data.getFilePath());
            holder._timeText.setText(data.getFileTime());
            holder._sizeText.setText(data.getFileSize());

            // 选中模式
            if (data.isSelectModel()) {
                holder._checkbox.setVisibility(View.VISIBLE);
                if (data.isSelect()) {
                    holder._checkbox.setImageResource(R.drawable.ic_checkbox_1);
                } else {
                    holder._checkbox.setImageResource(R.drawable.ic_checkbox_0);
                }
            } else {
                holder._checkbox.setVisibility(View.GONE);
            }

            convertView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (data.isSelectModel()) {
                        data.setSelect(!data.isSelect());
                        data.setSelectModel(true);
                        notifyDataSetChanged();
                        handler.sendEmptyMessage(888);
                    } else {
                        if (data.isFile()) {
                            showTipsDialog(data);
                        } else {
                            Intent intent = new Intent(mContext, FileListActivity.class);
                            intent.putExtra("path", data.getFilePath());
                            mContext.startActivity(intent);
                        }
                    }
                }
            });

            convertView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    data.setSelectModel(true);
                    data.setSelect(true);
                    handler.sendEmptyMessage(999);
                    return false;
                }
            });

        } catch (Exception e) {
            e.printStackTrace();
        }
        return convertView;
    }

    class ViewHolder {
        ImageView _checkbox;
        ImageView _img;
        TextView _nameText;
        TextView _pathText;
        TextView _timeText;
        TextView _sizeText;
    }


    private void showTipsDialog(final FileData fileData) {

        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
        final AlertDialog dialog = builder.create();

        LinearLayout layout = (LinearLayout) LayoutInflater.from(mContext).inflate(R.layout.dialog_file, null);
        ImageView _img = (ImageView) layout.findViewById(R.id.dl_image_view);
        TextView _nameText = (TextView) layout.findViewById(R.id.dl_file_name);
        TextView _sizeText = (TextView) layout.findViewById(R.id.dl_file_size);
        TextView _timeText = (TextView) layout.findViewById(R.id.dl_file_time);
        TextView _pathText = (TextView) layout.findViewById(R.id.dl_file_path);

        if (fileData.isFile()) {
            _img.setImageResource(R.drawable.ic_file);
        } else {
            _img.setImageResource(R.drawable.ic_folder);
        }
        _nameText.setText(fileData.getFileName());
        _sizeText.setText("大小： " + fileData.getFileSize());
        _timeText.setText("时间： " + fileData.getFileTime());
        _pathText.setText("路径： " + fileData.getFilePath());

        //取消
        layout.findViewById(R.id.dl_cancel_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                dialog.cancel();
            }
        });

        //确定
        layout.findViewById(R.id.dl_ok_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                dialog.cancel();
                File f = null;
                if (fileData.isFile()) {
                    f = new File(fileData.getFilePath() + "/" + fileData.getFileName());
                    if (f.delete()) {
                        mListItems.remove(fileData);
                        notifyDataSetChanged();
                    }
                } else {
                    f = new File(fileData.getFilePath());
                    if (FileUtil.deleteDir(f)) {
                        mListItems.remove(fileData);
                        notifyDataSetChanged();
                    }
                }


            }
        });

        dialog.setCancelable(true);
        dialog.show();

        Window window = dialog.getWindow();
        window.setContentView(layout);
        window.setGravity(Gravity.CENTER);
        //背景透明
        //        window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
        window.getDecorView().setBackgroundColor(Color.WHITE);

    }


}
