// Created by plusminus on 19:38:55 - 07.08.2008
package org.androad.ui.settings;
import org.androad.R;
import org.androad.preferences.Preferences;
import org.androad.ui.AndNavBaseActivity;
import org.androad.ui.common.OnClickOnFocusChangedListenerAdapter;
import android.content.ContentResolver;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.SeekBar;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.SeekBar.OnSeekBarChangeListener;
public class SettingsColorscheme extends AndNavBaseActivity{
// ===========================================================
// Constants
// ===========================================================
private static final int BRIGHTNESS_DEFAULT = 200;
// ===========================================================
// Fields
// ===========================================================
private RadioButton mRadDayScheme;
private RadioButton mRadDefaultScheme;
private RadioButton mRadNightScheme;
private SeekBar mSeekOverallBrightness;
private ContentResolver mContentResolver;
// ===========================================================
// Constructors
// ===========================================================
@Override
public void onCreate(final Bundle icicle) {
super.onCreate(icicle);
Preferences.applySharedSettings(this);
this.setContentView(R.layout.settings_colorscheme);
this.mContentResolver = this.getContentResolver();
this.mSeekOverallBrightness = (SeekBar) this.findViewById(R.id.seek_settings_colorscheme_overallbrightness);
this.mRadDayScheme = (RadioButton) this.findViewById(R.id.rad_settings_colorscheme_daymode);
this.mRadDefaultScheme = (RadioButton) this.findViewById(R.id.rad_settings_colorscheme_default);
this.mRadNightScheme = (RadioButton) this.findViewById(R.id.rad_settings_colorscheme_nightmode);
this.applyTopButtonListeners();
this.applyButtonListeners();
this.loadSavedFlagsToViews();
}
private void applyTopButtonListeners() {
new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_colorscheme_close)){
@Override
public void onBoth(final View arg0, final boolean focused) {
if(SettingsColorscheme.super.mMenuVoiceEnabled && focused) {
MediaPlayer.create(SettingsColorscheme.this, R.raw.close).start();
}
}
@Override
public void onClicked(final View me) {
SettingsColorscheme.this.finish();
}
};
}
private void applyButtonListeners() {
{
this.mSeekOverallBrightness.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
@Override
public void onProgressChanged(final SeekBar seekBar, final int progress, final boolean fromTouch) {
setBrightness(progress);
}
@Override
public void onStartTrackingTouch(final SeekBar seekBar) { }
@Override
public void onStopTrackingTouch(final SeekBar seekBar) { }
});
}
{ // Workaround for false treating of RadioButtons when they are not direct children of RadioGroup
this.mRadDayScheme.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(final CompoundButton b, final boolean isChecked) {
if(isChecked){
setDayScheme();
}
}
});
this.findViewById(R.id.iv_settings_colorscheme_daymode).setOnClickListener(new OnClickListener(){
@Override
public void onClick(final View v) {
setDayScheme();
SettingsColorscheme.this.mRadDayScheme.setChecked(true);
}
});
this.mRadDefaultScheme.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(final CompoundButton b, final boolean isChecked) {
if(isChecked){
setDefaultScheme();
}
}
});
this.findViewById(R.id.iv_settings_colorscheme_default).setOnClickListener(new OnClickListener(){
@Override
public void onClick(final View v) {
setDefaultScheme();
SettingsColorscheme.this.mRadDefaultScheme.setChecked(true);
}
});
this.mRadNightScheme.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(final CompoundButton b, final boolean isChecked) {
if(isChecked){
setNightScheme();
}
}
});
this.findViewById(R.id.iv_settings_colorscheme_nightmode).setOnClickListener(new OnClickListener(){
@Override
public void onClick(final View v) {
setNightScheme();
SettingsColorscheme.this.mRadNightScheme.setChecked(true);
}
});
}
}
// ===========================================================
// Getter & Setter
// ===========================================================
private void setDayScheme() {
Preferences.saveSharedThemeID(SettingsColorscheme.this, PREF_THEME_DAY_RESID);
SettingsColorscheme.this.mRadNightScheme.setChecked(false);
SettingsColorscheme.this.mRadDefaultScheme.setChecked(false);
}
private void setNightScheme() {
Preferences.saveSharedThemeID(SettingsColorscheme.this, PREF_THEME_NIGHT_RESID);
SettingsColorscheme.this.mRadDefaultScheme.setChecked(false);
SettingsColorscheme.this.mRadDayScheme.setChecked(false);
}
private void setDefaultScheme() {
Preferences.saveSharedThemeID(SettingsColorscheme.this, PREF_THEME_DEFAULT_RESID);
SettingsColorscheme.this.mRadDayScheme.setChecked(false);
SettingsColorscheme.this.mRadNightScheme.setChecked(false);
}
private void setBrightness(final int pBrightness) {
android.provider.Settings.System.putInt(this.mContentResolver, android.provider.Settings.System.SCREEN_BRIGHTNESS, pBrightness);
}
private int getBrightness(){
return android.provider.Settings.System.getInt(this.mContentResolver, android.provider.Settings.System.SCREEN_BRIGHTNESS, BRIGHTNESS_DEFAULT);
}
// ===========================================================
// Methods from SuperClass/Interfaces
// ===========================================================
// ===========================================================
// Methods
// ===========================================================
private void loadSavedFlagsToViews() {
final int themeID = Preferences.getSharedThemeID(SettingsColorscheme.this);
this.mSeekOverallBrightness.setProgress(getBrightness());
switch(themeID){
case PREF_THEME_NIGHT_RESID:
this.mRadNightScheme.setChecked(true);
break;
case PREF_THEME_DAY_RESID:
this.mRadDayScheme.setChecked(true);
break;
case PREF_THEME_DEFAULT_RESID:
default:
this.mRadDefaultScheme.setChecked(true);
break;
}
}
// ===========================================================
// Inner and Anonymous Classes
// ===========================================================
}