Merge "Add a button to enable/disable Mobile Terminated SMS over IMS" into ics-factoryrom
diff --git a/res/layout/radio_info.xml b/res/layout/radio_info.xml
index 0592b3f..02e321a 100644
--- a/res/layout/radio_info.xml
+++ b/res/layout/radio_info.xml
@@ -204,6 +204,14 @@
                 android:layout_height="wrap_content"
                 />
 
+        <!-- SMS over IMS -->
+        <Button android:id="@+id/sms_over_ims"
+                android:textSize="14sp"
+                android:layout_marginTop="8dip"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                />
+
         <!-- SMSC -->
         <RelativeLayout android:layout_width="match_parent"
                         android:layout_height="wrap_content">
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2dc9246..f8dbfb7 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -40,8 +40,12 @@
     <!-- Phone Info screen. Button label to turn off the radio . Only shown in diagnostic screen, so precise translation is not needed. -->
     <string name="turn_off_radio">Turn off radio</string>
 
-    <!-- Phone info -->
-    <!-- Phone IMS registration required on. Only shown in diagnostic screen, so precise translation is not needed. -->
+    <!-- Phone SMS over IMS on. Only shown in diagnostic screen, so precise translation is not needed. -->
+    <string name="sms_over_ims_on">Turn on SMS over IMS</string>
+    <!-- Phone SMS over IMS off. Only shown in diagnostic screen, so precise translation is not needed. -->
+    <string name="sms_over_ims_off">Turn off SMS over IMS</string>
+
+    <!-- Phone SMS over IMS IMS registration required on. Only shown in diagnostic screen, so precise translation is not needed. -->
     <string name="ims_reg_required_on">Turn on IMS registration required</string>
     <!-- Phone IMS registration required off. Only shown in diagnostic screen, so precise translation is not needed. -->
     <string name="ims_reg_required_off">Turn off IMS registration required</string>
diff --git a/src/com/android/settings/RadioInfo.java b/src/com/android/settings/RadioInfo.java
index ba10deb..1ba4804 100644
--- a/src/com/android/settings/RadioInfo.java
+++ b/src/com/android/settings/RadioInfo.java
@@ -124,6 +124,7 @@
     private EditText smsc;
     private Button radioPowerButton;
     private Button imsRegRequiredButton;
+    private Button smsOverImsButton;
     private Button dnsCheckToggleButton;
     private Button pingTestButton;
     private Button updateSmscButton;
@@ -286,6 +287,9 @@
         imsRegRequiredButton = (Button) findViewById(R.id.ims_reg_required);
         imsRegRequiredButton.setOnClickListener(mImsRegRequiredHandler);
 
+        smsOverImsButton = (Button) findViewById(R.id.sms_over_ims);
+        smsOverImsButton.setOnClickListener(mSmsOverImsHandler);
+
         pingTestButton = (Button) findViewById(R.id.ping_test);
         pingTestButton.setOnClickListener(mPingButtonHandler);
         updateSmscButton = (Button) findViewById(R.id.update_smsc);
@@ -332,6 +336,7 @@
         updateDataStats2();
         updatePowerState();
         updateImsRegRequiredState();
+        updateSmsOverImsState();
         updateProperties();
         updateDnsCheckState();
 
@@ -420,6 +425,18 @@
         imsRegRequiredButton.setText(buttonText);
     }
 
+    private boolean isSmsOverImsEnabled() {
+        return SystemProperties.getBoolean(PROPERTY_SMS_OVER_IMS, false);
+    }
+
+    private void updateSmsOverImsState() {
+        Log.d(TAG, "updateSmsOverImsState isSmsOverImsEnabled()=" + isSmsOverImsEnabled());
+        String buttonText = isSmsOverImsEnabled() ?
+                            getString(R.string.sms_over_ims_off) :
+                            getString(R.string.sms_over_ims_on);
+        smsOverImsButton.setText(buttonText);
+    }
+
 
     private void updateDnsCheckState() {
         dnsCheckState.setText(phone.isDnsCheckDisabled() ?
@@ -907,6 +924,18 @@
         }
     };
 
+    static final String PROPERTY_SMS_OVER_IMS = "persist.radio.imsallowmtsms";
+    OnClickListener mSmsOverImsHandler = new OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            Log.d(TAG, String.format("toggle %s: currently %s",
+                    PROPERTY_SMS_OVER_IMS, (isSmsOverImsEnabled() ? "on":"off")));
+            boolean newValue = !isSmsOverImsEnabled();
+            SystemProperties.set(PROPERTY_SMS_OVER_IMS, newValue ? "1":"0");
+            updateSmsOverImsState();
+        }
+    };
+
     OnClickListener mDnsCheckButtonHandler = new OnClickListener() {
         public void onClick(View v) {
             phone.disableDnsCheck(!phone.isDnsCheckDisabled());