Add MSIM support for Call Forwarding.

+ Set subcription info dynamically on intents to open
GsmUmtsCallForwardOptions and GsmUmtsAdditionalCallOptions.

+ Allow phone to be set on initialization for the preferences
used in those settings.

Bug: 18114923
Bug: 18233808
Bug: 18233614
Change-Id: I79a708872ea57ff9ba7a52a61835204caf156733
diff --git a/src/com/android/phone/GsmUmtsAdditionalCallOptions.java b/src/com/android/phone/GsmUmtsAdditionalCallOptions.java
index cd400f9..0540547 100644
--- a/src/com/android/phone/GsmUmtsAdditionalCallOptions.java
+++ b/src/com/android/phone/GsmUmtsAdditionalCallOptions.java
@@ -8,10 +8,11 @@
 import android.util.Log;
 import android.view.MenuItem;
 
+import com.android.internal.telephony.Phone;
+
 import java.util.ArrayList;
 
-public class GsmUmtsAdditionalCallOptions extends
-        TimeConsumingPreferenceActivity {
+public class GsmUmtsAdditionalCallOptions extends TimeConsumingPreferenceActivity {
     private static final String LOG_TAG = "GsmUmtsAdditionalCallOptions";
     private final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
 
@@ -22,7 +23,8 @@
     private CallWaitingCheckBoxPreference mCWButton;
 
     private final ArrayList<Preference> mPreferences = new ArrayList<Preference>();
-    private int mInitIndex= 0;
+    private int mInitIndex = 0;
+    private Phone mPhone;
 
     @Override
     protected void onCreate(Bundle icicle) {
@@ -30,6 +32,11 @@
 
         addPreferencesFromResource(R.xml.gsm_umts_additional_options);
 
+        SubscriptionInfoHelper subscriptionInfoHelper = new SubscriptionInfoHelper(getIntent());
+        subscriptionInfoHelper.setActionBarTitle(
+                getActionBar(), getResources(), R.string.additional_gsm_call_settings_with_label);
+        mPhone = subscriptionInfoHelper.getPhone();
+
         PreferenceScreen prefSet = getPreferenceScreen();
         mCLIRButton = (CLIRListPreference) prefSet.findPreference(BUTTON_CLIR_KEY);
         mCWButton = (CallWaitingCheckBoxPreference) prefSet.findPreference(BUTTON_CW_KEY);
@@ -39,19 +46,19 @@
 
         if (icicle == null) {
             if (DBG) Log.d(LOG_TAG, "start to init ");
-            mCLIRButton.init(this, false);
+            mCLIRButton.init(this, false, mPhone);
         } else {
             if (DBG) Log.d(LOG_TAG, "restore stored states");
             mInitIndex = mPreferences.size();
-            mCLIRButton.init(this, true);
-            mCWButton.init(this, true);
+            mCLIRButton.init(this, true, mPhone);
+            mCWButton.init(this, true, mPhone);
             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);
+                mCLIRButton.init(this, false, mPhone);
             }
         }
 
@@ -77,7 +84,7 @@
             mInitIndex++;
             Preference pref = mPreferences.get(mInitIndex);
             if (pref instanceof CallWaitingCheckBoxPreference) {
-                ((CallWaitingCheckBoxPreference) pref).init(this, false);
+                ((CallWaitingCheckBoxPreference) pref).init(this, false, mPhone);
             }
         }
         super.onFinished(preference, reading);