package com.android.settings;
/*
************************************************************************************
* Android Settings
* (c) Copyright 2006-2010, huanglong Allwinner
* All Rights Reserved
*
* File : ContrastPreference.java
* By : huanglong
* Version : v1.0
* Date : 2011-9-5 14:27:00
* Description: Add the Contrast settings to Display.
* Update : date author version notes
*
************************************************************************************
*/
import android.content.Context;
import android.os.IPowerManager;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.preference.SeekBarDialogPreference;
import android.preference.SeekBarPreference;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.util.AttributeSet;
import android.util.Log;
import android.view.DisplayManagerAw;
import android.view.View;
import android.widget.SeekBar;
public class ContrastPreference extends SeekBarDialogPreference implements
SeekBar.OnSeekBarChangeListener{
private SeekBar mSeekBar;
private int mOldContrastValue;
private DisplayManagerAw mDisplayManagerAw;
private int MAXIMUM_VALUE = 80;
private int MINIMUM_VALUE = 20;
public ContrastPreference(Context context, AttributeSet attrs) {
super(context, attrs);
mDisplayManagerAw = (DisplayManagerAw) context.getSystemService(Context.DISPLAY_SERVICE_AW);
setDialogLayoutResource(R.layout.preference_dialog_contrast);
setDialogIcon(R.drawable.ic_settings_contrast);
}
@Override
protected void onBindDialogView(View view){
super.onBindDialogView(view);
mSeekBar = getSeekBar(view);
mSeekBar.setMax(MAXIMUM_VALUE-MINIMUM_VALUE);
try{
mOldContrastValue = getSysInt();
}catch(SettingNotFoundException snfe){
mOldContrastValue = MAXIMUM_VALUE;
}
Log.d("staturation","" + mOldContrastValue);
mSeekBar.setProgress(mOldContrastValue - MINIMUM_VALUE);
mSeekBar.setOnSeekBarChangeListener(this);
}
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromTouch){
setContrast(progress + MINIMUM_VALUE);
}
@Override
protected void onDialogClosed(boolean positiveResult){
super.onDialogClosed(positiveResult);
if(positiveResult){
putSysInt(mSeekBar.getProgress() + MINIMUM_VALUE);
}else{
setContrast(mOldContrastValue);
}
}
private int getSysInt() throws SettingNotFoundException
{
return Settings.System.getInt(getContext().getContentResolver(),
Settings.System.COLOR_CONTRAST,MINIMUM_VALUE);
}
private boolean putSysInt(int value)
{
return Settings.System.putInt(getContext().getContentResolver(),
Settings.System.COLOR_CONTRAST,value);
}
private void setContrast(int Contrasrt) {
mDisplayManagerAw.setDisplayContrast(0,Contrasrt);
}
/*implements method in SeekBar.OnSeekBarChangeListener*/
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// NA
}
/*implements method in SeekBar.OnSeekBarChangeListener*/
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// NA
}
}