/*
* 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.CpuControl;
import net.sakuramilk.TweakGS2.R;
import net.sakuramilk.util.Misc;
import net.sakuramilk.TweakGS2.CpuControl.CpuGovernorSetting;
import net.sakuramilk.widget.SeekBarPreference;
import net.sakuramilk.widget.SeekBarPreference.OnSeekBarPreferenceDoneListener;
import android.content.Intent;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
public class CpuGovernorPreferenceActivity extends PreferenceActivity
implements OnSeekBarPreferenceDoneListener, OnPreferenceChangeListener {
private CpuGovernorSetting mSetting;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.cpu_control_governor_pref);
Intent intent = this.getIntent();
String govName = intent.getStringExtra("governor");
mSetting = new CpuGovernorSetting(this, govName);
PreferenceManager prefManager = getPreferenceManager();
PreferenceScreen rootPref = (PreferenceScreen)prefManager.findPreference("root_pref");
PreferenceCategory ctegoryPref = new PreferenceCategory(this);
ctegoryPref.setTitle(govName);
rootPref.addPreference(ctegoryPref);
CpuGovernorSetting.Parameter[] params = mSetting.getParameters();
for (CpuGovernorSetting.Parameter param : params) {
String value;
switch (param.type) {
case CpuGovernorSetting.Parameter.TYPE_SEEK_BAR:
{
SeekBarPreference seekBarPref = new SeekBarPreference(this, null);
seekBarPref.setKey(mSetting.makeKey(param.name));
seekBarPref.setTitle(param.name);
seekBarPref.setDialogTitle(param.name);
value = mSetting.getValue(param.name);
seekBarPref.setValue(param.max, param.min, Integer.valueOf(value));
seekBarPref.setSummary(Misc.getCurrentValueText(this, value) + param.unit);
seekBarPref.setUnit(param.unit);
seekBarPref.setOnPreferenceDoneListener(this);
rootPref.addPreference(seekBarPref);
break;
}
case CpuGovernorSetting.Parameter.TYPE_LIST:
{
ListPreference listPref = new ListPreference(this);
listPref.setKey(mSetting.makeKey(param.name));
listPref.setTitle(param.name);
listPref.setEntries(param.listEntries);
listPref.setEntryValues(param.listValues);
value = mSetting.getValue(param.name);
listPref.setValue(value);
listPref.setIntent(intent);
listPref.setSummary(Misc.getCurrentValueText(this,
Misc.getEntryFromEntryValue(param.listEntries, param.listValues, value) + (param.unit == null ? "" : param.unit)));
listPref.setOnPreferenceChangeListener(this);
rootPref.addPreference(listPref);
break;
}
}
}
}
@Override
public boolean onPreferenceDone(Preference preference, String newValue) {
SeekBarPreference seekBarPref = (SeekBarPreference)preference;
String paramName = seekBarPref.getTitle().toString();
mSetting.setValue(paramName, newValue);
seekBarPref.setSummary(Misc.getCurrentValueText(this, newValue) + seekBarPref.getUnit());
seekBarPref.updateValue(Integer.valueOf(newValue));
return true;
}
@Override
public boolean onPreferenceChange(Preference preference, Object objValue) {
ListPreference listPref = (ListPreference)preference;
String paramName = listPref.getTitle().toString();
mSetting.setValue(paramName, objValue.toString());
listPref.setValue(objValue.toString());
listPref.setSummary(Misc.getCurrentValueText(this,
Misc.getEntryFromEntryValue(listPref.getEntries(), listPref.getEntryValues(), objValue.toString())));
return false;
}
}