1 package com.android.phone; 2 3 import java.util.ArrayList; 4 5 import android.os.Bundle; 6 import android.preference.Preference; 7 import android.preference.PreferenceScreen; 8 import android.util.Log; 9 10 public class GsmUmtsAdditionalCallOptions extends 11 TimeConsumingPreferenceActivity { 12 private static final String LOG_TAG = "GsmUmtsAdditionalCallOptions"; 13 private final boolean DBG = (PhoneApp.DBG_LEVEL >= 2); 14 15 private static final String BUTTON_CLIR_KEY = "button_clir_key"; 16 private static final String BUTTON_CW_KEY = "button_cw_key"; 17 18 private CLIRListPreference mCLIRButton; 19 private CallWaitingCheckBoxPreference mCWButton; 20 21 private ArrayList<Preference> mPreferences = new ArrayList<Preference> (); 22 private int mInitIndex= 0; 23 24 @Override onCreate(Bundle icicle)25 protected void onCreate(Bundle icicle) { 26 super.onCreate(icicle); 27 28 addPreferencesFromResource(R.xml.gsm_umts_additional_options); 29 30 PreferenceScreen prefSet = getPreferenceScreen(); 31 mCLIRButton = (CLIRListPreference) prefSet.findPreference(BUTTON_CLIR_KEY); 32 mCWButton = (CallWaitingCheckBoxPreference) prefSet.findPreference(BUTTON_CW_KEY); 33 34 mPreferences.add(mCLIRButton); 35 mPreferences.add(mCWButton); 36 37 if (icicle == null) { 38 if (DBG) Log.d(LOG_TAG, "start to init "); 39 mCLIRButton.init(this, false); 40 } else { 41 if (DBG) Log.d(LOG_TAG, "restore stored states"); 42 mInitIndex = mPreferences.size(); 43 mCLIRButton.init(this, true); 44 mCWButton.init(this, true); 45 int[] clirArray = icicle.getIntArray(mCLIRButton.getKey()); 46 if (clirArray != null) { 47 if (DBG) Log.d(LOG_TAG, "onCreate: clirArray[0]=" 48 + clirArray[0] + ", clirArray[1]=" + clirArray[1]); 49 mCLIRButton.handleGetCLIRResult(clirArray); 50 } else { 51 mCLIRButton.init(this, false); 52 } 53 } 54 } 55 56 @Override onSaveInstanceState(Bundle outState)57 protected void onSaveInstanceState(Bundle outState) { 58 super.onSaveInstanceState(outState); 59 60 if (mCLIRButton.clirArray != null) { 61 outState.putIntArray(mCLIRButton.getKey(), mCLIRButton.clirArray); 62 } 63 } 64 65 @Override onFinished(Preference preference, boolean reading)66 public void onFinished(Preference preference, boolean reading) { 67 if (mInitIndex < mPreferences.size()-1 && !isFinishing()) { 68 mInitIndex++; 69 Preference pref = mPreferences.get(mInitIndex); 70 if (pref instanceof CallWaitingCheckBoxPreference) { 71 ((CallWaitingCheckBoxPreference) pref).init(this, false); 72 } 73 } 74 super.onFinished(preference, reading); 75 } 76 77 } 78