/*
* Copyright (C) 2011-2012 sakuramilk <c.sakuramilk@gmail.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 net.sakuramilk.TweakGS2.Display;
import net.sakuramilk.TweakGS2.R;
import net.sakuramilk.util.Misc;
import net.sakuramilk.widget.SeekBarPreference;
import net.sakuramilk.widget.SeekBarPreference.OnSeekBarPreferenceDoneListener;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.view.Menu;
import android.view.MenuItem;
public class DisplayPreferenceActivity extends PreferenceActivity implements
Preference.OnPreferenceChangeListener, OnSeekBarPreferenceDoneListener {
private DisplaySetting mSetting;
private ListPreference mLcdType;
private SeekBarPreference mLcdGamma;
private CheckBoxPreference mMdnieEnabled;
private CheckBoxPreference mMdnieMode;
private SeekBarPreference mMdnieColorCb;
private SeekBarPreference mMdnieColorCr;
private boolean mIsEnableMdnieForceDisable = false;
private boolean mIsEnableMdnieMode = false;
private boolean mIsEnableMdnieMcmCb = false;
private boolean mIsEnableMdnieMcmCr = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.display_pref);
mSetting = new DisplaySetting(this);
mLcdType = (ListPreference)findPreference(DisplaySetting.KEY_LCD_TYPE);
mLcdGamma = (SeekBarPreference)findPreference(DisplaySetting.KEY_LCD_GAMMA);
mMdnieEnabled = (CheckBoxPreference)findPreference(DisplaySetting.KEY_MDNIE_ENABLED);
mMdnieMode = (CheckBoxPreference)findPreference(DisplaySetting.KEY_MDNIE_MODE);
mMdnieColorCb = (SeekBarPreference)findPreference(DisplaySetting.KEY_MDNIE_MCM_CB);
mMdnieColorCr = (SeekBarPreference)findPreference(DisplaySetting.KEY_MDNIE_MCM_CR);
if (mSetting.isEnableLcdType()) {
mLcdType.setEnabled(true);
mLcdType.setOnPreferenceChangeListener(this);
String value = mSetting.getLcdType();
mLcdType.setValue(value);
mLcdType.setSummary(Misc.getCurrentValueText(this, mSetting.getLcdTypeText(value)));
}
if (mSetting.isEnableLcdGamma()) {
mLcdGamma.setEnabled(true);
String value = mSetting.getLcdGamma();
mLcdGamma.setSummary(Misc.getCurrentValueText(this, value));
mLcdGamma.setValue(50, -50, Integer.parseInt(value));
mLcdGamma.setOnPreferenceDoneListener(this);
}
mIsEnableMdnieForceDisable = mSetting.isEnableMdnieForceDisable();
boolean isMdnieEnabled = false;
if (mIsEnableMdnieForceDisable) {
mMdnieEnabled.setEnabled(true);
mMdnieEnabled.setOnPreferenceChangeListener(this);
isMdnieEnabled = mSetting.getMdnieEnabled();
mMdnieEnabled.setChecked(isMdnieEnabled);
}
mIsEnableMdnieMode = mSetting.isEnableMdnieMode();
boolean isMdnieMcmEnable = false;
if (mIsEnableMdnieMode) {
mMdnieMode.setEnabled(isMdnieEnabled);
mMdnieMode.setOnPreferenceChangeListener(this);
String value = mSetting.getMdnieMode();
isMdnieMcmEnable = DisplaySetting.MDNIE_MCM_ENABLE.equals(value) ? true : false;
mMdnieMode.setChecked(isMdnieMcmEnable);
}
mIsEnableMdnieMcmCb = mSetting.isEnableMdnieMcmCb();
if (mIsEnableMdnieMcmCb) {
mMdnieColorCb.setEnabled(mMdnieEnabled.isEnabled() &
mMdnieMode.isEnabled() & isMdnieMcmEnable);
mMdnieColorCb.setOnPreferenceDoneListener(this);
String value = mSetting.getMdnieMcmCb();
mMdnieColorCb.setSummary(Misc.getCurrentValueText(this, value));
mMdnieColorCb.setValue(148, 108, Integer.parseInt(value));
}
mIsEnableMdnieMcmCr = mSetting.isEnableMdnieMcmCr();
if (mIsEnableMdnieMcmCr) {
mMdnieColorCr.setEnabled(mMdnieEnabled.isEnabled() &
mMdnieMode.isEnabled() & isMdnieMcmEnable);
mMdnieColorCr.setOnPreferenceDoneListener(this);
String value = mSetting.getMdnieMcmCr();
mMdnieColorCr.setSummary(Misc.getCurrentValueText(this, value));
mMdnieColorCr.setValue(148, 108, Integer.parseInt(value));
}
}
public boolean onPreferenceChange(Preference preference, Object objValue) {
if (mLcdType == preference) {
mSetting.setLcdType(objValue.toString());
mLcdType.setSummary(Misc.getCurrentValueText(this, mSetting.getLcdTypeText(objValue.toString())));
return true;
} else if (mMdnieEnabled == preference) {
mSetting.setMdnieEnabled(((Boolean)objValue));
boolean mode = mSetting.loadMdnieMode();
mMdnieMode.setEnabled((Boolean)objValue);
mMdnieColorCb.setEnabled((Boolean)objValue & mode);
mMdnieColorCr.setEnabled((Boolean)objValue & mode);
return true;
} else if (mMdnieMode == preference) {
mSetting.setMdnieMode(((Boolean)objValue) ?
DisplaySetting.MDNIE_MCM_ENABLE : DisplaySetting.MDNIE_MCM_DISABLE);
mMdnieColorCb.setEnabled((Boolean)objValue);
mMdnieColorCr.setEnabled((Boolean)objValue);
return true;
}
return false;
}
@Override
public boolean onPreferenceDone(Preference preference, String newValue) {
if (mLcdGamma == preference) {
mSetting.setLcdGamma(newValue);
mLcdGamma.setSummary(Misc.getCurrentValueText(this, newValue));
return true;
} else if (mMdnieColorCb == preference) {
mSetting.setMdnieMcmCb(newValue);
mMdnieColorCb.setSummary(Misc.getCurrentValueText(this, newValue));
return true;
} else if (mMdnieColorCr == preference) {
mSetting.setMdnieMcmCr(newValue);
mMdnieColorCr.setSummary(Misc.getCurrentValueText(this, newValue));
return true;
}
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean ret = super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.reset_menu, menu);
return ret;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_reset:
mSetting.reset();
Misc.confirmReboot(this, R.string.reboot_reflect_comfirm);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}