package autoinstall.com.tamic.autoinstall;

import android.content.Context;
import android.graphics.PixelFormat;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import android.widget.Toast;
import android.view.ViewGroup;

import java.util.Timer;
import java.util.TimerTask;

/**
 * WindowManager.
 * Created By liuyongkui
 * @data 15-8-11.
 */
public class TamicWindowManager {
	
	private WindowManager wdm;
	private double time;
	private View mView;
	private WindowManager.LayoutParams params;
	private Timer timer;
	private static TamicWindowManager mWindowManager;
	  
	/**
	 * BdToastCustom constucts
	 * @param context   context
	 * @param text      text
	 * @param time      time
	 */
	private TamicWindowManager(Context context, String text, double time){
		wdm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
		timer = new Timer();

		// mView = LayoutInflater.from(context).inflate(R.layout.activity_loading, null);
		mView = new TamcWaitingView(context);
		Toast toast = new Toast(context);
		toast.setDuration(Toast.LENGTH_SHORT);
		toast.setMargin(0, 0);
		toast.setGravity(Gravity.CENTER, 0, 0);
		toast.setView(mView);
		toast.setText(text);

		params = new WindowManager.LayoutParams();
		params.height = WindowManager.LayoutParams.MATCH_PARENT;
		params.width = WindowManager.LayoutParams.MATCH_PARENT;
		params.format = PixelFormat.TRANSLUCENT;
		params.windowAnimations = toast.getView().getAnimation().INFINITE;
		params.type = WindowManager.LayoutParams.TYPE_TOAST;
		params.setTitle("Toast");
		params.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
				| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
				| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
		params.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER;
		params.y = -30;

		this.time = time;
	}

	/**
	 * BdWindowManager constucts.
	 * @param context    context
	 * @param text       text
	 */
	private TamicWindowManager(Context context, String text){
		wdm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

		mView = new TamcWaitingView(context);
		((TamcWaitingView)mView).getmText().setText(text);
		params = new WindowManager.LayoutParams();
		params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
		params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED;
		params.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
				| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
		params.width = ViewGroup.LayoutParams.MATCH_PARENT;
		params.height = ViewGroup.LayoutParams.MATCH_PARENT;
		params.gravity = Gravity.CENTER;
		params.y = -30;

	}
	  
	  /**
	   * makeText.
	 * @param context     context
	 * @param text        text
	 * @param time        time
	 * @return BdToastCustom
	 */
	public static TamicWindowManager makeText(Context context, String text, double time) {

		mWindowManager = new TamicWindowManager(context, text, time);
	    
		return mWindowManager;
	  }

	/**
	 * makeText.
	 * @param context   context
	 * @param text      text
	 * @return WatingWiew
	 */
	public static TamicWindowManager makeWatingWiew(Context context, String text) {

		mWindowManager = new TamicWindowManager(context, text);

		return mWindowManager;
	}
	  
	  /**
	 * show toast.
	 */
	public void show() {
	    wdm.addView(mView, params);
		if (time <= 0) {

			((TamcWaitingView)mView).startAnimation();

		}

		if (timer != null) {
			timer.schedule(new TimerTask() {
				@Override
				public void run() {
					wdm.removeView(mView);
				}
			}, (long)(time * 1000));
		}

	  }
	  
	  /**
	 * cancel tosat.
	 */
	  public void cancel() {
		  
		  if (mView != null) {
			  if (wdm != null) {
				  wdm.removeView(mView);
				  mView = null;
			  }
			  
			  if (timer != null) {
				  timer.cancel();
			  }
		  }
	  }

	/**
	 *  dismiss
	 */
	 public static void dismiss() {
		if(mWindowManager != null) {
			mWindowManager.cancel();
			mWindowManager = null;
		 }
	  }
	  
	  
}