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