summaryrefslogtreecommitdiff
path: root/src/com/android/phone/GsmUmtsAdditionalCallOptions.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/phone/GsmUmtsAdditionalCallOptions.java')
-rw-r--r--src/com/android/phone/GsmUmtsAdditionalCallOptions.java95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/com/android/phone/GsmUmtsAdditionalCallOptions.java b/src/com/android/phone/GsmUmtsAdditionalCallOptions.java
new file mode 100644
index 00000000..cd400f96
--- /dev/null
+++ b/src/com/android/phone/GsmUmtsAdditionalCallOptions.java
@@ -0,0 +1,95 @@
+package com.android.phone;
+
+import android.app.ActionBar;
+import android.content.Intent;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceScreen;
+import android.util.Log;
+import android.view.MenuItem;
+
+import java.util.ArrayList;
+
+public class GsmUmtsAdditionalCallOptions extends
+ TimeConsumingPreferenceActivity {
+ private static final String LOG_TAG = "GsmUmtsAdditionalCallOptions";
+ private final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
+
+ private static final String BUTTON_CLIR_KEY = "button_clir_key";
+ private static final String BUTTON_CW_KEY = "button_cw_key";
+
+ private CLIRListPreference mCLIRButton;
+ private CallWaitingCheckBoxPreference mCWButton;
+
+ private final ArrayList<Preference> mPreferences = new ArrayList<Preference>();
+ private int mInitIndex= 0;
+
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ addPreferencesFromResource(R.xml.gsm_umts_additional_options);
+
+ PreferenceScreen prefSet = getPreferenceScreen();
+ mCLIRButton = (CLIRListPreference) prefSet.findPreference(BUTTON_CLIR_KEY);
+ mCWButton = (CallWaitingCheckBoxPreference) prefSet.findPreference(BUTTON_CW_KEY);
+
+ mPreferences.add(mCLIRButton);
+ mPreferences.add(mCWButton);
+
+ if (icicle == null) {
+ if (DBG) Log.d(LOG_TAG, "start to init ");
+ mCLIRButton.init(this, false);
+ } else {
+ if (DBG) Log.d(LOG_TAG, "restore stored states");
+ mInitIndex = mPreferences.size();
+ mCLIRButton.init(this, true);
+ mCWButton.init(this, true);
+ int[] clirArray = icicle.getIntArray(mCLIRButton.getKey());
+ if (clirArray != null) {
+ if (DBG) Log.d(LOG_TAG, "onCreate: clirArray[0]="
+ + clirArray[0] + ", clirArray[1]=" + clirArray[1]);
+ mCLIRButton.handleGetCLIRResult(clirArray);
+ } else {
+ mCLIRButton.init(this, false);
+ }
+ }
+
+ ActionBar actionBar = getActionBar();
+ if (actionBar != null) {
+ // android.R.id.home will be triggered in onOptionsItemSelected()
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+
+ if (mCLIRButton.clirArray != null) {
+ outState.putIntArray(mCLIRButton.getKey(), mCLIRButton.clirArray);
+ }
+ }
+
+ @Override
+ public void onFinished(Preference preference, boolean reading) {
+ if (mInitIndex < mPreferences.size()-1 && !isFinishing()) {
+ mInitIndex++;
+ Preference pref = mPreferences.get(mInitIndex);
+ if (pref instanceof CallWaitingCheckBoxPreference) {
+ ((CallWaitingCheckBoxPreference) pref).init(this, false);
+ }
+ }
+ super.onFinished(preference, reading);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ final int itemId = item.getItemId();
+ if (itemId == android.R.id.home) { // See ActionBar#setDisplayHomeAsUpEnabled()
+ CallFeaturesSetting.goUpToTopLevelSetting(this);
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}