package com.electric.chargingpile.fragment;

import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.constraint.ConstraintLayout;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;

import com.electric.chargingpile.R;
import com.electric.chargingpile.util.LogUtils;
import com.mabeijianxi.smallvideorecord2.Log;

public class RoutePlanMapScreenDialogFragment extends DialogFragment implements View.OnClickListener {

    private Dialog mDialog;
    private OnRoutePlanMapScreenDialogFragmentListener dialogFragmentListener;
    private Boolean[] changedScreenList;
    private ConstraintLayout first_left;
    private ImageView first_left_icon;
    private ConstraintLayout first_center;
    private ImageView first_center_icon;
    private ConstraintLayout first_right;
    private ImageView first_right_icon;
    private ConstraintLayout second_left;
    private ImageView second_left_icon;

    public static RoutePlanMapScreenDialogFragment newInstance(Boolean[] screenList) {
        Bundle args = new Bundle();
        args.putSerializable("screenList", screenList);
        RoutePlanMapScreenDialogFragment fragment = new RoutePlanMapScreenDialogFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        mDialog = new Dialog(getActivity(), R.style.CommentDialog);
        mDialog.setCancelable(true);
        mDialog.setCanceledOnTouchOutside(true);

        mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        mDialog.setContentView(R.layout.fragment_dialog_route_plan_map_screen);

        Window window = mDialog.getWindow();
        WindowManager.LayoutParams layoutParams = window.getAttributes();
        // 布局属性位于整个窗口底部
        layoutParams.gravity = Gravity.BOTTOM;
        // 布局属性宽度填充整个窗口,默认是有margin的
        layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
        window.setAttributes(layoutParams);

        initDialog();
        initListener();

        return mDialog;
    }

    private void initDialog() {
        Boolean[] screenList = (Boolean[]) getArguments().getSerializable("screenList");
        int length = screenList.length;
        changedScreenList = new Boolean[length];
        for (int i = 0; i < length; i++) {
            changedScreenList[i] = screenList[i];
        }

        first_left = mDialog.findViewById(R.id.first_left);
        first_left_icon = mDialog.findViewById(R.id.first_left_icon);
        first_center = mDialog.findViewById(R.id.first_center);
        first_center_icon = mDialog.findViewById(R.id.first_center_icon);
        first_right = mDialog.findViewById(R.id.first_right);
        first_right_icon = mDialog.findViewById(R.id.first_right_icon);

        second_left = mDialog.findViewById(R.id.second_left);
        second_left_icon = mDialog.findViewById(R.id.second_left_icon);

        updateScreenIcon();

    }

    private void initListener() {
        mDialog.findViewById(R.id.screen_close).setOnClickListener(this);
        first_left.setOnClickListener(this);
        first_center.setOnClickListener(this);
        first_right.setOnClickListener(this);
        second_left.setOnClickListener(this);
    }

    private void updateScreenIcon() {
        if (changedScreenList[0]) {
            first_left_icon.setImageResource(R.drawable.shaixuan_icon_red_paper_selected);
        } else {
            first_left_icon.setImageResource(R.drawable.shaixuan_icon_red_paper_normal);
        }

        if (changedScreenList[1]) {
            first_center_icon.setImageResource(R.drawable.shaixuan_icon_free_park_selected);
        } else {
            first_center_icon.setImageResource(R.drawable.shaixuan_icon_free_park_normal);
        }

        if (changedScreenList[2]) {
            first_right_icon.setImageResource(R.drawable.shaixuan_icon_quick_charge_selected);
        } else {
            first_right_icon.setImageResource(R.drawable.shaixuan_icon_quick_charge_normal);
        }

        if (changedScreenList[3]) {
            second_left_icon.setImageResource(R.drawable.shaixuan_icon_gaosu_selected);
        } else {
            second_left_icon.setImageResource(R.drawable.shaixuan_icon_gaosu_normal);
        }

    }

    @Override
    public void onDismiss(DialogInterface dialog) {
        super.onDismiss(dialog);
        if (dialogFragmentListener != null) {
            dialogFragmentListener.onDismiss(changedScreenList);
        }

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.screen_close:
                dismiss();
                break;
            case R.id.first_left:
                changedScreenList[0] = !changedScreenList[0];
                updateScreenIcon();
                break;
            case R.id.first_center:
                changedScreenList[1] = !changedScreenList[1];
                updateScreenIcon();
                break;
            case R.id.first_right:
                changedScreenList[2] = !changedScreenList[2];
                updateScreenIcon();
                break;
            case R.id.second_left:
                changedScreenList[3] = !changedScreenList[3];
                updateScreenIcon();
                break;
        }
    }

    public interface OnRoutePlanMapScreenDialogFragmentListener {
        void onDismiss(Boolean[] changedScreenList);
    }

    public void setOnDismissDialogFragmentListener(OnRoutePlanMapScreenDialogFragmentListener listener) {
        this.dialogFragmentListener = listener;
    }
}