package com.kale.floatbar;

import android.content.Intent;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
import android.widget.SeekBar;

import com.kale.floatbar.preference.MyListPreference;
import com.kale.floatbar.preference.MySeekBarPreference;
import com.kale.floatbar.preference.MySeekBarPreference.OnSeekBarPrefsChangeListener;
import com.kale.floatbar.service.FloatService;
import com.kale.floatbar.util.Prefs;

public class FloatDisplaySettingActivity extends PreferenceActivity implements
		OnPreferenceChangeListener, OnSeekBarPrefsChangeListener {

	private CheckBoxPreference rightCBox;
	private MyListPreference colorList;
	private MySeekBarPreference alphaSb, widthSb, heightSb, distanceSb;
	private Prefs prefs;

	@SuppressWarnings("deprecation")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.prefs_list_content);
		addPreferencesFromResource(R.xml.float_display_preference);

		prefs = new Prefs(this);

		colorList = (MyListPreference) findPreference("color");
		colorList.setOnPreferenceChangeListener(this);

		alphaSb = (MySeekBarPreference) findPreference("alpha");// 找到preference
		alphaSb.setDefaultProgressValue(prefs.getAlpha());// 设置起始时的进度
		alphaSb.setMax(255);// 设置最大的数值,不超过10000。如果超过了请在seekbarPreference源码中进行修改max值
		alphaSb.setOnSeekBarPrefsChangeListener(this);// 设置监听器

		rightCBox = (CheckBoxPreference) findPreference("rightMode");
		rightCBox.setOnPreferenceChangeListener(this);

		widthSb = (MySeekBarPreference) findPreference("width");
		widthSb.setMax(80);
		widthSb.setDefaultProgressValue(prefs.getWidth());
		widthSb.setOnSeekBarPrefsChangeListener(this);

		heightSb = (MySeekBarPreference) findPreference("height");
		heightSb.setMax(1000);
		heightSb.setDefaultProgressValue(prefs.getHeight());
		heightSb.setOnSeekBarPrefsChangeListener(this);

		distanceSb = (MySeekBarPreference) findPreference("distance");
		distanceSb.setMax(1000);
		distanceSb.setDefaultProgressValue(prefs.getDistance());
		distanceSb.setOnSeekBarPrefsChangeListener(this);
	}

	@Override
	public boolean onPreferenceChange(Preference preference, Object newValue) {
		Intent intent = new Intent(FloatDisplaySettingActivity.this, FloatService.class);
		startService(intent);
		return true;
	}

	@Override
	public void onStopTrackingTouch(String key, SeekBar seekBar) {
	}

	@Override
	public void onStartTrackingTouch(String key, SeekBar seekBar) {
	}

	@Override
	public void onProgressChanged(String key, SeekBar seekBar, int progress, boolean fromUser) {
		startService(new Intent(FloatDisplaySettingActivity.this, FloatService.class));
	}

}