CDMA Settings additions

This patch implement CDMA Settings features
1. Add code to get MEID, MIN, and PRL value if the phone is a CDMA Phone
2. Display MEID, MIN, and PRL on Settings screen if it is a CDMA phone
3. Do not display IMSI, IMEI, and IMEI SV for a CDMA phone
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 9bfeb13..750b083 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -241,4 +241,18 @@
         <item>GTC</item>
     </string-array>
 
+    <!-- Sound settings for emergency tone. -->
+    <string-array name="emergency_tone_entries">
+        <item>Off</item>
+        <item>Alert</item>
+        <item>Vibrate</item>
+    </string-array>
+
+    <!-- Do not translate. -->
+    <string-array name="emergency_tone_values">
+        <item>0</item>
+        <item>1</item>
+        <item>2</item>
+    </string-array>
+
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c99610d..b049a2a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -965,7 +965,7 @@
     <!-- About phone screen, title of the item to go into the Phone status screen -->
     <string name="device_status">Status</string>
     <!-- About phone screen, summary of the item to go into the phone status screen -->
-    <string name="device_status_summary">IMEI, phone number, signal, etc.</string>
+    <string name="device_status_summary">Phone number, signal, etc.</string>
     <!-- Main settings screen item's title to go into the SD card and storage settings screen-->
     <string name="storage_settings_title">SD card &amp; phone storage</string>
     <!-- Main settings screen item's summary for the SD card and storage settings -->
@@ -975,7 +975,13 @@
     <!-- Do not translate. About phone, status item title -->
     <string name="status_imei_sv">IMEI SV</string>
     <!-- About phone, status item title.  The phone number of the current device.-->
-    <string name="status_number">Phone number</string>
+    <string name="status_number">My phone number</string>
+    <!-- About phone, status item title.  The phone MIN number of the current device.-->
+    <string name="status_min_number">MIN</string>
+    <!-- About phone, status item title.  The phone PRL Version of the current device.-->
+    <string name="status_prl_version">PRL Version</string>
+    <!-- About phone, status item title.  The phone MEID number of the current device.-->
+    <string name="status_meid_number">MEID</string>
     <!-- About phone, status item title for the type of data phone network we're connected to, for example 3G or Edge or GPRS -->
     <string name="status_network_type">Mobile network type</string>
     <!-- About phone, status item title. The status of data access.  For example, the value may be "Connected" -->
@@ -1879,4 +1885,9 @@
     <string name="vpn_settings_category">VPN</string>
     <string name="vpn_settings_title">VPN</string>
     <string name="vpn_settings_summary">Set up &amp; manage VPN configurations, connections</string>
+
+    <!-- Sound settings screen, setting check box label -->
+    <string name="emergency_tone_title">Emergency tone</string>
+    <!-- Sound settings screen, setting option summary text -->
+    <string name="emergency_tone_summary">Set behavior when an emergency call is placed</string>
 </resources>
diff --git a/res/xml/device_info_status.xml b/res/xml/device_info_status.xml
index 2d4c772..dee606d 100644
--- a/res/xml/device_info_status.xml
+++ b/res/xml/device_info_status.xml
@@ -32,6 +32,24 @@
         android:title="@string/status_number"
         android:summary="@string/device_info_not_available"
         android:persistent="false" />
+    <!-- This menu item is only for CDMA phone -->
+    <Preference android:key="min_number"
+        style="?android:attr/preferenceInformationStyle"
+        android:title="@string/status_min_number"
+        android:summary="@string/device_info_not_available"
+        android:persistent="false" />
+    <!-- This menu item is only for CDMA phone -->
+    <Preference android:key="prl_version"
+        style="?android:attr/preferenceInformationStyle"
+        android:title="@string/status_prl_version"
+        android:summary="@string/device_info_not_available"
+        android:persistent="false" />
+    <!-- This menu item is only for CDMA phone -->
+    <Preference android:key="meid_number"
+        style="?android:attr/preferenceInformationStyle"
+        android:title="@string/status_meid_number"
+        android:summary="@string/device_info_not_available"
+        android:persistent="false" />
     <Preference android:key="operator_name" 
         style="?android:attr/preferenceInformationStyle" 
         android:title="@string/status_operator"
diff --git a/res/xml/sound_and_display_settings.xml b/res/xml/sound_and_display_settings.xml
index 458bc7a..223e52a 100644
--- a/res/xml/sound_and_display_settings.xml
+++ b/res/xml/sound_and_display_settings.xml
@@ -94,6 +94,13 @@
 
     </PreferenceCategory>
 
+    <ListPreference
+            android:key="emergency_tone"
+            android:title="@string/emergency_tone_title"
+            android:summary="@string/emergency_tone_summary"
+            android:entries="@array/emergency_tone_entries"
+            android:entryValues="@array/emergency_tone_values" />
+
     <PreferenceCategory
             android:title="@string/display_settings">
 
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index c17e2a0..ffeac34 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -41,6 +41,7 @@
 import android.widget.TextView;
 
 import com.android.internal.widget.LockPatternUtils;
+import android.telephony.TelephonyManager;
 
 import java.util.Observable;
 import java.util.Observer;
@@ -166,18 +167,24 @@
         mChoosePattern.setIntent(intent);
         inlinePrefCat.addPreference(mChoosePattern);
         
-        PreferenceScreen simLockPreferences = getPreferenceManager()
-                .createPreferenceScreen(this);
-        simLockPreferences.setTitle(R.string.sim_lock_settings_category);
-        // Intent to launch SIM lock settings
-        intent = new Intent();
-        intent.setClassName("com.android.settings", "com.android.settings.IccLockSettings");
-        simLockPreferences.setIntent(intent);
+        int activePhoneType = TelephonyManager.getDefault().getPhoneType();
+
+        // do not display SIM lock for CDMA phone
+        if (TelephonyManager.PHONE_TYPE_CDMA != activePhoneType)
+        {
+            PreferenceScreen simLockPreferences = getPreferenceManager()
+                    .createPreferenceScreen(this);
+            simLockPreferences.setTitle(R.string.sim_lock_settings_category);
+            // Intent to launch SIM lock settings
+            intent = new Intent();
+            intent.setClassName("com.android.settings", "com.android.settings.IccLockSettings");
+            simLockPreferences.setIntent(intent);
         
-        PreferenceCategory simLockCat = new PreferenceCategory(this);
-        simLockCat.setTitle(R.string.sim_lock_settings_title);
-        root.addPreference(simLockCat);
-        simLockCat.addPreference(simLockPreferences);
+            PreferenceCategory simLockCat = new PreferenceCategory(this);
+            simLockCat.setTitle(R.string.sim_lock_settings_title);
+            root.addPreference(simLockCat);
+            simLockCat.addPreference(simLockPreferences);
+        }
 
         // Passwords
         PreferenceCategory passwordsCat = new PreferenceCategory(this);
diff --git a/src/com/android/settings/SoundAndDisplaySettings.java b/src/com/android/settings/SoundAndDisplaySettings.java
index 4111450..3d3a5d0 100644
--- a/src/com/android/settings/SoundAndDisplaySettings.java
+++ b/src/com/android/settings/SoundAndDisplaySettings.java
@@ -37,6 +37,7 @@
 import android.provider.Settings;
 import android.util.Log;
 import android.view.IWindowManager;
+import android.telephony.TelephonyManager;
 
 public class SoundAndDisplaySettings extends PreferenceActivity implements
         Preference.OnPreferenceChangeListener {
@@ -44,6 +45,7 @@
 
     /** If there is no setting in the provider, use this. */
     private static final int FALLBACK_SCREEN_TIMEOUT_VALUE = 30000;
+    private static final int FALLBACK_EMERGENCY_TONE_VALUE = 0;
     
     private static final String KEY_SILENT = "silent";
     private static final String KEY_VIBRATE = "vibrate";
@@ -54,6 +56,7 @@
     private static final String KEY_ACCELEROMETER = "accelerometer";
     private static final String KEY_PLAY_MEDIA_NOTIFICATION_SOUNDS = "play_media_notification_sounds";
     private static final String KEY_COMPATIBILITY_MODE = "compatibility_mode";
+    private static final String KEY_EMERGENCY_TONE ="emergency_tone";
     
     private CheckBoxPreference mSilent;
 
@@ -91,6 +94,7 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         ContentResolver resolver = getContentResolver();
+        int activePhoneType = TelephonyManager.getDefault().getPhoneType();
         
         mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
         mWindowManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
@@ -99,6 +103,11 @@
         
         addPreferencesFromResource(R.xml.sound_and_display_settings);
         
+        if (TelephonyManager.PHONE_TYPE_CDMA != activePhoneType) {
+            // device is not CDMA, do not display CDMA emergency_tone
+            getPreferenceScreen().removePreference(findPreference(KEY_EMERGENCY_TONE));
+         }
+
         mSilent = (CheckBoxPreference) findPreference(KEY_SILENT);
         mPlayMediaNotificationSounds = (CheckBoxPreference) findPreference(KEY_PLAY_MEDIA_NOTIFICATION_SOUNDS);
 
@@ -125,6 +134,14 @@
         screenTimeoutPreference.setValue(String.valueOf(Settings.System.getInt(
                 resolver, SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE)));
         screenTimeoutPreference.setOnPreferenceChangeListener(this);
+
+        if (TelephonyManager.PHONE_TYPE_CDMA == activePhoneType) {
+            ListPreference emergencyTonePreference =
+                (ListPreference) findPreference(KEY_EMERGENCY_TONE);
+            emergencyTonePreference.setValue(String.valueOf(Settings.System.getInt(
+                resolver, Settings.System.EMERGENCY_TONE, FALLBACK_EMERGENCY_TONE_VALUE)));
+            emergencyTonePreference.setOnPreferenceChangeListener(this);
+        }
     }
     
     @Override
@@ -273,6 +290,14 @@
             } catch (NumberFormatException e) {
                 Log.e(TAG, "could not persist screen timeout setting", e);
             }
+        } else if (KEY_EMERGENCY_TONE.equals(preference.getKey())) {
+            int value = Integer.parseInt((String) objValue);
+            try {
+                Settings.System.putInt(getContentResolver(),
+                        Settings.System.EMERGENCY_TONE, value);
+            } catch (NumberFormatException e) {
+                Log.e(TAG, "could not persist emergency tone setting", e);
+            }
         }
         
         return true;
diff --git a/src/com/android/settings/deviceinfo/Status.java b/src/com/android/settings/deviceinfo/Status.java
index ece5346..a165754 100644
--- a/src/com/android/settings/deviceinfo/Status.java
+++ b/src/com/android/settings/deviceinfo/Status.java
@@ -182,11 +182,27 @@
         mUptime = findPreference("up_time");
         
         //NOTE "imei" is the "Device ID" since it represents the IMEI in GSM and the MEID in CDMA
-        setSummaryText("imei", mPhone.getDeviceId());
-        
-        setSummaryText("imei_sv",
-                ((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
+        if (mPhone.getPhoneName().equals("CDMA")) {
+            setSummaryText("meid_number", mPhone.getMeid());
+            setSummaryText("min_number", mPhone.getCdmaMin());
+            setSummaryText("prl_version", mPhone.getCdmaPrlVersion());
+
+            // device is not GSM/UMTS, do not display GSM/UMTS features
+            getPreferenceScreen().removePreference(findPreference("imei"));
+            getPreferenceScreen().removePreference(findPreference("imei_sv"));
+        } else {
+            setSummaryText("imei", mPhone.getDeviceId());
+
+            setSummaryText("imei_sv",
+                    ((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
                         .getDeviceSoftwareVersion());
+
+            // device is not CDMA, do not display CDMA features
+            getPreferenceScreen().removePreference(findPreference("prl_version"));
+            getPreferenceScreen().removePreference(findPreference("meid_number"));
+            getPreferenceScreen().removePreference(findPreference("min_number"));
+        }
+
         setSummaryText("number", mPhone.getLine1Number());
 
         mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler);