17d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpackage com.android.phone; 27d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 37d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.app.ActionBar; 47d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.Intent; 57d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.Bundle; 67d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.preference.Preference; 77d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.preference.PreferenceScreen; 87d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.util.Log; 97d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.view.MenuItem; 107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 112b36ba2d3b68fce3e44078c1bdedf9af00b7fc5bAndrew Leeimport com.android.internal.telephony.Phone; 122b36ba2d3b68fce3e44078c1bdedf9af00b7fc5bAndrew Lee 137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport java.util.ArrayList; 147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 152b36ba2d3b68fce3e44078c1bdedf9af00b7fc5bAndrew Leepublic class GsmUmtsAdditionalCallOptions extends TimeConsumingPreferenceActivity { 167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final String LOG_TAG = "GsmUmtsAdditionalCallOptions"; 177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2); 187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final String BUTTON_CLIR_KEY = "button_clir_key"; 207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final String BUTTON_CW_KEY = "button_cw_key"; 217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private CLIRListPreference mCLIRButton; 237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private CallWaitingCheckBoxPreference mCWButton; 247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private final ArrayList<Preference> mPreferences = new ArrayList<Preference>(); 262b36ba2d3b68fce3e44078c1bdedf9af00b7fc5bAndrew Lee private int mInitIndex = 0; 272b36ba2d3b68fce3e44078c1bdedf9af00b7fc5bAndrew Lee private Phone mPhone; 285efb112905b222d1a5b2e1052a94b7a7dfbe66d2Andrew Lee private SubscriptionInfoHelper mSubscriptionInfoHelper; 297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onCreate(Bundle icicle) { 327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super.onCreate(icicle); 337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon addPreferencesFromResource(R.xml.gsm_umts_additional_options); 357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 36dd4f6df7bf726284b0747405307de54e0c0acabbAndrew Lee mSubscriptionInfoHelper = new SubscriptionInfoHelper(this, getIntent()); 375efb112905b222d1a5b2e1052a94b7a7dfbe66d2Andrew Lee mSubscriptionInfoHelper.setActionBarTitle( 382b36ba2d3b68fce3e44078c1bdedf9af00b7fc5bAndrew Lee getActionBar(), getResources(), R.string.additional_gsm_call_settings_with_label); 395efb112905b222d1a5b2e1052a94b7a7dfbe66d2Andrew Lee mPhone = mSubscriptionInfoHelper.getPhone(); 402b36ba2d3b68fce3e44078c1bdedf9af00b7fc5bAndrew Lee 417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon PreferenceScreen prefSet = getPreferenceScreen(); 427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mCLIRButton = (CLIRListPreference) prefSet.findPreference(BUTTON_CLIR_KEY); 437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mCWButton = (CallWaitingCheckBoxPreference) prefSet.findPreference(BUTTON_CW_KEY); 447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mPreferences.add(mCLIRButton); 467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mPreferences.add(mCWButton); 477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (icicle == null) { 497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) Log.d(LOG_TAG, "start to init "); 502b36ba2d3b68fce3e44078c1bdedf9af00b7fc5bAndrew Lee mCLIRButton.init(this, false, mPhone); 517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else { 527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) Log.d(LOG_TAG, "restore stored states"); 537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mInitIndex = mPreferences.size(); 542b36ba2d3b68fce3e44078c1bdedf9af00b7fc5bAndrew Lee mCLIRButton.init(this, true, mPhone); 552b36ba2d3b68fce3e44078c1bdedf9af00b7fc5bAndrew Lee mCWButton.init(this, true, mPhone); 567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon int[] clirArray = icicle.getIntArray(mCLIRButton.getKey()); 577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (clirArray != null) { 587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (DBG) Log.d(LOG_TAG, "onCreate: clirArray[0]=" 597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon + clirArray[0] + ", clirArray[1]=" + clirArray[1]); 607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mCLIRButton.handleGetCLIRResult(clirArray); 617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else { 622b36ba2d3b68fce3e44078c1bdedf9af00b7fc5bAndrew Lee mCLIRButton.init(this, false, mPhone); 637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon ActionBar actionBar = getActionBar(); 677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (actionBar != null) { 687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // android.R.id.home will be triggered in onOptionsItemSelected() 697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon actionBar.setDisplayHomeAsUpEnabled(true); 707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onSaveInstanceState(Bundle outState) { 757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super.onSaveInstanceState(outState); 767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (mCLIRButton.clirArray != null) { 787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon outState.putIntArray(mCLIRButton.getKey(), mCLIRButton.clirArray); 797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void onFinished(Preference preference, boolean reading) { 847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (mInitIndex < mPreferences.size()-1 && !isFinishing()) { 857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mInitIndex++; 867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Preference pref = mPreferences.get(mInitIndex); 877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (pref instanceof CallWaitingCheckBoxPreference) { 882b36ba2d3b68fce3e44078c1bdedf9af00b7fc5bAndrew Lee ((CallWaitingCheckBoxPreference) pref).init(this, false, mPhone); 897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super.onFinished(preference, reading); 927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public boolean onOptionsItemSelected(MenuItem item) { 967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon final int itemId = item.getItemId(); 977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (itemId == android.R.id.home) { // See ActionBar#setDisplayHomeAsUpEnabled() 985efb112905b222d1a5b2e1052a94b7a7dfbe66d2Andrew Lee CallFeaturesSetting.goUpToTopLevelSetting(this, mSubscriptionInfoHelper); 997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return true; 1007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return super.onOptionsItemSelected(item); 1027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon} 104