package com.youngmanster.collectionlibrary.base.dialog;

import android.content.Context;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;

import com.youngmanster.collectionlibrary.utils.DisplayUtils;

/**
 * Created by yangyan
 * on 2018/5/13.
 */

@Deprecated
public abstract class BaseDialog {

	private DismissListener dismissListener;
	private AlertDialog alertDialog;
	protected AlertDialog.Builder builder;
	protected int screenWidthPixels;
	protected float space;
	protected float height;
	protected Context context;
	protected View mainView;

	public BaseDialog(Context context) {
		this.context=context;
	}

	public BaseDialog(Context context,DismissListener dismissListener) {
		this.context=context;
		this.dismissListener=dismissListener;
	}


	public void setContentView(int layoutRes){
		if(layoutRes!=0){
			this.mainView= LayoutInflater.from(context).inflate(layoutRes,null);
		}else{
			this.mainView=null;
		}

		create();
	}

	public void setContentView(View mainView){
		if(mainView!=null) {
			this.mainView = mainView;
		}
		create();
	}

	private void create() {
		screenWidthPixels = DisplayUtils.getScreenWidthPixels(context);
		space = DisplayUtils.dip2pxByFloat(context, 20);
		builder = new AlertDialog.Builder(context);
		if(mainView!=null){
			builder.setView(mainView);
		}
		onViewCreated();
		alertDialog = builder.create();

		alertDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
			@Override
			public void onDismiss(DialogInterface dialog) {
				if(dismissListener!=null){
					dismissListener.onDismissListener();
				}
			}
		});
	}

	public void show() {
		alertDialog.show();
		WindowManager.LayoutParams params = alertDialog.getWindow().getAttributes();
		params.width = (int) (screenWidthPixels-space*2);
		params.gravity = Gravity.CENTER;
		if(height>0){
			params.height= (int) height;
		}
		alertDialog.getWindow().setAttributes(params);
	}

	public boolean isShowing() {
		return alertDialog != null && alertDialog.isShowing();
	}

	public void dismiss() {
		if (alertDialog != null) {
			alertDialog.dismiss();
		}
	}

	/**
	 * 点击返回键和外部不可取消
	 * */
	public void setCancelable(boolean b) {
		if (alertDialog != null) {
			alertDialog.setCancelable(b);
		} else if (builder != null) {
			builder.setCancelable(b);
		}
	}

	/**
	 * 点击返回键可以取消
	 */
	public void setOnBackPressDialogCancel(boolean isCancel) {
		if (alertDialog != null) {
			alertDialog.setCanceledOnTouchOutside(isCancel);
		}
	}

	public void setDialogInterval(int interval){
		space = DisplayUtils.dip2px(context, interval);
	}

	public void setDialogHeight(int height){
		this.height = DisplayUtils.dip2px(context, height);
	}

	protected abstract void onViewCreated();


	public interface DismissListener{
		void onDismissListener();
	}

}