package dacer.utils;

import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;

import com.dacer.simplepomodoro.R;

/**
 * Author:dacer
 * Date  :Jul 17, 2013
 */
public class MyScreenLocker {
	private DevicePolicyManager policyManager;  
	private ComponentName componentName;  
	private Activity mActivity;
	
	public MyScreenLocker(Activity a) {
		// TODO Auto-generated constructor stub
		mActivity = a;
        policyManager = (DevicePolicyManager) a.getSystemService(Context.DEVICE_POLICY_SERVICE);  
        componentName = new ComponentName(a, AdminReceiver.class);  
//        mylock();  
	}
	
    public void myLockNow(){
    	boolean active = policyManager.isAdminActive(componentName);
    	if(!active){
    		activeManage();
    		policyManager.lockNow();
    	}
        if (active) {
        	//repeat 20 times for lock!
        	handler.post(runnable);
        }
    }
    public Boolean isActivited(){
    	boolean active = policyManager.isAdminActive(componentName);
    	return active;
    }
    public void activeManage() {
        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, mActivity.getString(R.string.screen_locker_warnning));
        mActivity.startActivityForResult(intent, 0);
    }
    
    public void unlock(){
    	PowerManager pm = (PowerManager)mActivity.getSystemService(Context.POWER_SERVICE);
    	WakeLock mWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.SCREEN_DIM_WAKE_LOCK, "SimpleTimer");
    	mWakelock.acquire();
    	mWakelock.release();
    }
    public void removeManage(){
    	policyManager.removeActiveAdmin(componentName);
    }
    
    private Handler handler = new Handler( );

    private Runnable runnable = new Runnable( ) {
    	int i = 0;
    	
    	@Override
		public void run ( ) {
    		if(i<12){
    			policyManager.lockNow();
        		handler.postDelayed(this,50); 
        		i++;
    		}
    	}
    };

   
}