/*
* Copyright (C) 2010 beworx.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.bwx.bequick.preferences;
import static com.bwx.bequick.Constants.PREFS_COMMON;
import static com.bwx.bequick.Constants.PREF_LIGHT_SENSOR;
import java.util.List;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.Preference.OnPreferenceClickListener;
import android.provider.Settings;
import android.widget.Toast;
import com.bwx.bequick.R;
import com.bwx.bequick.SettingsApplication;
import com.bwx.bequick.fwk.Setting;
import com.bwx.bequick.handlers.BrightnessSettingHandler;
public class BrightnessPrefs extends PreferenceActivity implements OnPreferenceClickListener, OnClickListener {
//private static final String TAG = "QuickSettingsPreferences";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceManager manager = getPreferenceManager();
manager.setSharedPreferencesName(PREFS_COMMON); // configure preferences
addPreferencesFromResource(R.layout.prefs_brightness);
CheckBoxPreference checkbox = (CheckBoxPreference) findPreference(PREF_LIGHT_SENSOR);
checkbox.setOnPreferenceClickListener(this);
}
private SettingsApplication getApp() {
return (SettingsApplication) getApplication();
}
public void onClick(DialogInterface dialog, int which) {
if (which == -1) {
// enable auto brightness
CheckBoxPreference checkbox = (CheckBoxPreference) findPreference(PREF_LIGHT_SENSOR);
checkbox.setChecked(true);
enableAutobrightness();
}
}
private void enableAutobrightness() {
Setting setting = getApp().getSetting(Setting.BRIGHTNESS);
setting.enabled = true;
setting.removeRenderer();
}
public boolean onPreferenceClick(Preference preference) {
CheckBoxPreference checkbox = (CheckBoxPreference) preference;
if (checkbox.isChecked()) {
if (hasLightSensor(this)) {
enableAutobrightness();
} else {
// ask user if they really want to use it w/o a light sensor
checkbox.setChecked(false);
AlertDialog dialog = new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_dialog_menu_generic)
.setTitle(R.string.txt_brightness)
.setMessage(R.string.msg_enable_autobrightness)
.setPositiveButton(R.string.btn_yes, this)
.setNegativeButton(R.string.btn_no, this)
.create();
dialog.show();
}
} else {
// was unchecked
Setting setting = getApp().getSetting(Setting.BRIGHTNESS);
setting.enabled = setting.checked = false;
setting.descr = null;
setting.removeRenderer();
int mode = Settings.System.getInt(getContentResolver(), BrightnessSettingHandler.MODE_KEY, BrightnessSettingHandler.MODE_UNSUPPORTED);
if (BrightnessSettingHandler.MODE_AUTO == mode) {
Settings.System.putInt(getContentResolver(), BrightnessSettingHandler.MODE_KEY, BrightnessSettingHandler.MODE_MANUAL);
Toast.makeText(this, R.string.txt_autobrightness_disabled, Toast.LENGTH_SHORT).show();
}
}
return true;
}
public static boolean hasLightSensor(Context context) {
boolean supported = false;
SensorManager sensorService = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
if (sensorService != null) {
List<Sensor> lightSensors = sensorService.getSensorList(Sensor.TYPE_LIGHT);
supported = lightSensors != null && lightSensors.size() > 0;
}
return supported;
}
}