package com.android.phone; import com.android.internal.telephony.PhoneFactory; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.preference.PreferenceManager; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; import android.telephony.TelephonyManager; public class CallSettingOptions extends PreferenceActivity implements Preference.OnPreferenceChangeListener { private static final String SIM1_KEY = "sim1_key"; private static final String SIM2_KEY = "sim2_key"; public static final String SUB_ID = "sub_id"; private static final String SET_IP_DAILING_ON = "set_ip_dailing_on"; private static final String IP_DAILING_LIST = "set_ip_dailing_preference"; private static final String GSM_BUTTON_VIBRATE_KEY = "gsm_button_call_vibrate_key"; PreferenceScreen mSim1Setting; PreferenceScreen mSim2Setting; private CheckBoxPreference mIpDailingOn; private PreferenceScreen mIpDailingPreference; private IpDailingUtils mIpDailingUtils; private CheckBoxPreference mGsmButtonCallVibrate; private SharedPreferences defaultSharedpref; private Editor defaultPredEditor; private static final String KEY_CALL_VIBRATE = "isCallVibrate"; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); mIpDailingUtils = new IpDailingUtils(this.getApplicationContext()); if (TelephonyManager.getPhoneCount() > 1) { addPreferencesFromResource(R.xml.callsetting_options); mSim1Setting = (PreferenceScreen) findPreference(SIM1_KEY); mSim2Setting = (PreferenceScreen) findPreference(SIM2_KEY); mSim1Setting.getIntent().putExtra(SUB_ID, 0); mSim2Setting.getIntent().putExtra(SUB_ID, 1); mIpDailingOn = (CheckBoxPreference) findPreference(SET_IP_DAILING_ON); mIpDailingOn.setOnPreferenceChangeListener(this); mIpDailingPreference = (PreferenceScreen) findPreference(IP_DAILING_LIST); mGsmButtonCallVibrate = (CheckBoxPreference) findPreference(GSM_BUTTON_VIBRATE_KEY); defaultSharedpref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); defaultPredEditor = defaultSharedpref.edit(); } else { Intent intent = getIntent(); intent.setClass(CallSettingOptions.this, CallFeaturesSetting.class); startActivity(intent); this.finish(); } } @Override protected void onResume() { super.onResume(); mSim1Setting.setEnabled(PhoneFactory.isCardReady(0)); mSim2Setting.setEnabled(PhoneFactory.isCardReady(1)); mIpDailingOn.setChecked(mIpDailingUtils.getIsIpDial()); mIpDailingPreference.setEnabled(mIpDailingOn.isChecked()); mGsmButtonCallVibrate.setChecked((defaultSharedpref == null ? true : defaultSharedpref.getBoolean(KEY_CALL_VIBRATE, true))); } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if ((preference == mSim1Setting || preference == mSim2Setting) && preference.getIntent() != null) { this.startActivity(preference.getIntent()); return true; } else if (preference == mGsmButtonCallVibrate) { defaultPredEditor.putBoolean(KEY_CALL_VIBRATE, mGsmButtonCallVibrate.isChecked()); defaultPredEditor.commit(); return true; } return super.onPreferenceTreeClick(preferenceScreen, preference); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (preference == mIpDailingOn) { mIpDailingPreference.setEnabled(!mIpDailingOn.isChecked()); mIpDailingUtils.setIsIpDialer(!mIpDailingOn.isChecked()); } return true; } }