package com.gizwits.opensource.devicecontrol.ui.activity;

import java.lang.reflect.Field;
import java.util.concurrent.ConcurrentHashMap;

import com.gizwits.gizwifisdk.api.GizWifiDevice;
import com.gizwits.gizwifisdk.enumration.GizWifiErrorCode;
import com.gizwits.opensource.smartlight.R;

import android.content.res.Resources;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.NumberPicker;
import android.widget.NumberPicker.OnValueChangeListener;
import android.widget.TextView;

public class GosEditDeviceDelayActivity extends GosDeviceControlModuleBaseActivity implements OnClickListener {

	private NumberPicker mPick;

	private TextView tvSave;

	private TextView tvBack;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_comd_schedule_edit_device_delay);
		initView();
		initEvent();
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.tv_save:
			saveAction();
			break;

		case R.id.tv_back:
			finish();
			break;
		default:
			break;
		}
	}

	private void initEvent() {
		tvSave.setOnClickListener(this);
		tvSave.setClickable(false);
		tvBack.setOnClickListener(this);
//		mPick.setMaxValue(59);
		mPick.setMaxValue(60);
		mPick.setMinValue(1);
		mPick.setOnLongPressUpdateInterval(100);
		mPick.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
		setNumberPickerDividerColor(mPick);

		if (countDownMinute == 0) {
			mPick.setValue(1);
			tvSave.setClickable(true);
			tvSave.setTextColor(getResources().getColor(R.color.text_blue));
		} else {
			mPick.setValue(countDownMinute);
		}

		mPick.setOnValueChangedListener(new OnValueChangeListener() {

			@Override
			public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
				tvSave.setClickable(true);
				tvSave.setTextColor(getResources().getColor(R.color.text_blue));
			}
		});
	}

	private void initView() {
		tvSave = (TextView) findViewById(R.id.tv_save);
		tvBack = (TextView) findViewById(R.id.tv_back);
		mPick = (NumberPicker) findViewById(R.id.minute_picker);
	}

	private void setNumberPickerDividerColor(NumberPicker numberPicker) {

		Field[] pickerFields = NumberPicker.class.getDeclaredFields();
		for (Field pf : pickerFields) {

			if (pf.getName().equals("mSelectionDivider")) {
				pf.setAccessible(true);
				try {
					// 设置分割线的颜色值
					pf.set(numberPicker, new ColorDrawable(this.getResources().getColor(R.color.transparent)));
				} catch (IllegalArgumentException e) {
					e.printStackTrace();
				} catch (Resources.NotFoundException e) {
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					e.printStackTrace();
				}
				break;
			}
		}
	}

	private void saveAction() {
		int sn = 5;
		ConcurrentHashMap<String, Object> command = new ConcurrentHashMap<String, Object>();
		command.put(KEY5_COUNTDOWN_MINUTE, mPick.getValue());
		command.put(KEY8_COUNTDOWN_ONOFF, true);
		device.write(command, sn);
		countDownMinute = mPick.getValue();
		isOpenDelaying = true;
		finish();
	}

	@Override
	protected void didReceiveData(GizWifiErrorCode result, GizWifiDevice device,
			ConcurrentHashMap<String, Object> dataMap, int sn) {
		super.didReceiveData(result, device, dataMap, sn);
		if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
			deviceDataMap = dataMap;
			getDataFromDateMap();
		}
	}

}