Add TDSCDMA family

Bug: 22639018
Change-Id: I8dd93a26309cc13c2744efcd3bdc3ea9dd06e088
diff --git a/res/values-mcc460/config.xml b/res/values-mcc460/config.xml
new file mode 100644
index 0000000..ca78491
--- /dev/null
+++ b/res/values-mcc460/config.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+    <!-- Show enabled tdscdma option for device -->
+    <bool name="config_support_tdscdma" translatable="false">true</bool>
+</resources>
diff --git a/res/values/config.xml b/res/values/config.xml
old mode 100755
new mode 100644
index c0e808d..e0ea198
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -138,6 +138,8 @@
     <bool name="config_prefer_2g" translatable="false">true</bool>
     <!-- Show enabled lte option for lte device -->
     <bool name="config_enabled_lte" translatable="false">false</bool>
+    <!-- Show enabled tdscdma option for device -->
+    <bool name="config_support_tdscdma" translatable="false">false</bool>
     <!-- Show cdma auto network mode in (glabal) roaming -->
     <!-- DEPRECATED: Use CarrierConfigManager#KEY_SHOW_CDMA_CHOICES_BOOL -->
     <bool name="config_show_cdma" translatable="false">false</bool>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 360e9ef..0c71347 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -393,6 +393,8 @@
      <string name="preferred_network_mode_lte_gsm_umts_summary">Preferred network mode: LTE / GSM / UMTS</string>
      <!-- Mobile network settings, summary for preferred network mode LTE / CDMA [CHAR LIMIT=100] -->
      <string name="preferred_network_mode_lte_cdma_summary">Preferred network mode: LTE / CDMA</string>
+     <!-- Mobile network settings, summary for preferred network mode TDSCDMTA [CHAR LIMIT=100] -->
+     <string name="preferred_network_mode_tdscdma_summary">Preferred network mode: TDSCDMA</string>
 
     <string-array name="preferred_network_mode_choices">
         <item>LTE / WCDMA</item>
@@ -594,6 +596,7 @@
     <string name="network_2G" translatable="false">2G</string>
     <string name="network_1x" translatable="false">1x</string>
     <string name="network_global">Global</string>
+    <string name="network_tdscdma">TDSCDMA Only</string>
 
     <string-array name="enabled_networks_except_gsm_choices" translatable="false">
         <item>@string/network_lte</item>
@@ -671,6 +674,19 @@
         <item>"10"</item>
     </string-array>
 
+    <string-array name="enabled_networks_tdscdma_choices" translatable="false">
+        <item>@string/network_lte</item>
+        <item>@string/network_3G</item>
+        <item>@string/network_2G</item>
+        <item>@string/network_tdscdma</item>
+    </string-array>
+    <string-array name="enabled_networks_tdscdma_values" translatable="false">
+        <item>"22"</item>
+        <item>"18"</item>
+        <item>"1"</item>
+        <item>"13"</item>
+    </string-array>
+
     <!-- CDMA System select strings -->
     <!-- Mobile network settings screen, setting option name -->
     <string name="cdma_system_select_title">System select</string>
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index a457c47..1c65089 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -609,7 +609,12 @@
                     mGsmUmtsOptions = null;
                 }
             } else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
-                if (!carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL)
+                if (getResources().getBoolean(R.bool.config_support_tdscdma)) {
+                    mButtonEnabledNetworks.setEntries(
+                            R.array.enabled_networks_tdscdma_choices);
+                    mButtonEnabledNetworks.setEntryValues(
+                            R.array.enabled_networks_tdscdma_values);
+                } else if (!carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL)
                         && !getResources().getBoolean(R.bool.config_enabled_lte)) {
                     mButtonEnabledNetworks.setEntries(
                             R.array.enabled_networks_except_gsm_lte_choices);
@@ -797,6 +802,16 @@
                     case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
                     case Phone.NT_MODE_LTE_ONLY:
                     case Phone.NT_MODE_LTE_WCDMA:
+                    case Phone.NT_MODE_TDSCDMA_ONLY:
+                    case Phone.NT_MODE_TDSCDMA_WCDMA:
+                    case Phone.NT_MODE_LTE_TDSCDMA:
+                    case Phone.NT_MODE_TDSCDMA_GSM:
+                    case Phone.NT_MODE_LTE_TDSCDMA_GSM:
+                    case Phone.NT_MODE_TDSCDMA_GSM_WCDMA:
+                    case Phone.NT_MODE_LTE_TDSCDMA_WCDMA:
+                    case Phone.NT_MODE_LTE_TDSCDMA_GSM_WCDMA:
+                    case Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                    case Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
                         // This is one of the modes we recognize
                         modemNetworkMode = buttonNetworkMode;
                         break;
@@ -832,6 +847,16 @@
                     case Phone.NT_MODE_CDMA:
                     case Phone.NT_MODE_CDMA_NO_EVDO:
                     case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
+                    case Phone.NT_MODE_TDSCDMA_ONLY:
+                    case Phone.NT_MODE_TDSCDMA_WCDMA:
+                    case Phone.NT_MODE_LTE_TDSCDMA:
+                    case Phone.NT_MODE_TDSCDMA_GSM:
+                    case Phone.NT_MODE_LTE_TDSCDMA_GSM:
+                    case Phone.NT_MODE_TDSCDMA_GSM_WCDMA:
+                    case Phone.NT_MODE_LTE_TDSCDMA_WCDMA:
+                    case Phone.NT_MODE_LTE_TDSCDMA_GSM_WCDMA:
+                    case Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                    case Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
                         // This is one of the modes we recognize
                         modemNetworkMode = buttonNetworkMode;
                         break;
@@ -943,6 +968,8 @@
 
     private void UpdatePreferredNetworkModeSummary(int NetworkMode) {
         switch(NetworkMode) {
+            case Phone.NT_MODE_TDSCDMA_GSM_WCDMA:
+            case Phone.NT_MODE_TDSCDMA_GSM:
             case Phone.NT_MODE_WCDMA_PREF:
                 mButtonPreferredNetworkMode.setSummary(
                         R.string.preferred_network_mode_wcdma_perf_summary);
@@ -951,6 +978,7 @@
                 mButtonPreferredNetworkMode.setSummary(
                         R.string.preferred_network_mode_gsm_only_summary);
                 break;
+            case Phone.NT_MODE_TDSCDMA_WCDMA:
             case Phone.NT_MODE_WCDMA_ONLY:
                 mButtonPreferredNetworkMode.setSummary(
                         R.string.preferred_network_mode_wcdma_only_summary);
@@ -980,10 +1008,13 @@
                 mButtonPreferredNetworkMode.setSummary(
                         R.string.preferred_network_mode_evdo_only_summary);
                 break;
+            case Phone.NT_MODE_LTE_TDSCDMA:
             case Phone.NT_MODE_LTE_ONLY:
                 mButtonPreferredNetworkMode.setSummary(
                         R.string.preferred_network_mode_lte_summary);
                 break;
+            case Phone.NT_MODE_LTE_TDSCDMA_GSM:
+            case Phone.NT_MODE_LTE_TDSCDMA_GSM_WCDMA:
             case Phone.NT_MODE_LTE_GSM_WCDMA:
                 mButtonPreferredNetworkMode.setSummary(
                         R.string.preferred_network_mode_lte_gsm_wcdma_summary);
@@ -992,6 +1023,11 @@
                 mButtonPreferredNetworkMode.setSummary(
                         R.string.preferred_network_mode_lte_cdma_evdo_summary);
                 break;
+            case Phone.NT_MODE_TDSCDMA_ONLY:
+                mButtonPreferredNetworkMode.setSummary(
+                        R.string.preferred_network_mode_tdscdma_summary);
+                break;
+            case Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
             case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
                 if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA ||
                         mIsGlobalCdma ||
@@ -1003,10 +1039,12 @@
                             R.string.preferred_network_mode_lte_summary);
                 }
                 break;
+            case Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
             case Phone.NT_MODE_GLOBAL:
                 mButtonPreferredNetworkMode.setSummary(
                         R.string.preferred_network_mode_cdma_evdo_gsm_wcdma_summary);
                 break;
+            case Phone.NT_MODE_LTE_TDSCDMA_WCDMA:
             case Phone.NT_MODE_LTE_WCDMA:
                 mButtonPreferredNetworkMode.setSummary(
                         R.string.preferred_network_mode_lte_wcdma_summary);
@@ -1019,6 +1057,13 @@
 
     private void UpdateEnabledNetworksValueAndSummary(int NetworkMode) {
         switch (NetworkMode) {
+            case Phone.NT_MODE_TDSCDMA_WCDMA:
+            case Phone.NT_MODE_TDSCDMA_GSM_WCDMA:
+            case Phone.NT_MODE_TDSCDMA_GSM:
+                mButtonEnabledNetworks.setValue(
+                        Integer.toString(Phone.NT_MODE_TDSCDMA_GSM_WCDMA));
+                mButtonEnabledNetworks.setSummary(R.string.network_3G);
+                break;
             case Phone.NT_MODE_WCDMA_ONLY:
             case Phone.NT_MODE_GSM_UMTS:
             case Phone.NT_MODE_WCDMA_PREF:
@@ -1076,6 +1121,11 @@
                     mButtonEnabledNetworks.setSummary(R.string.network_lte);
                 }
                 break;
+            case Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                mButtonEnabledNetworks.setValue(
+                        Integer.toString(Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
+                mButtonEnabledNetworks.setSummary(R.string.network_3G);
+                break;
             case Phone.NT_MODE_CDMA:
             case Phone.NT_MODE_EVDO_NO_CDMA:
             case Phone.NT_MODE_GLOBAL:
@@ -1088,6 +1138,37 @@
                         Integer.toString(Phone.NT_MODE_CDMA_NO_EVDO));
                 mButtonEnabledNetworks.setSummary(R.string.network_1x);
                 break;
+            case Phone.NT_MODE_TDSCDMA_ONLY:
+                mButtonEnabledNetworks.setValue(
+                        Integer.toString(Phone.NT_MODE_TDSCDMA_ONLY));
+                mButtonEnabledNetworks.setSummary(R.string.network_tdscdma);
+                break;
+            case Phone.NT_MODE_LTE_TDSCDMA_GSM:
+            case Phone.NT_MODE_LTE_TDSCDMA_GSM_WCDMA:
+            case Phone.NT_MODE_LTE_TDSCDMA:
+            case Phone.NT_MODE_LTE_TDSCDMA_WCDMA:
+            case Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                if (getResources().getBoolean(R.bool.config_support_tdscdma)) {
+                    mButtonEnabledNetworks.setValue(
+                            Integer.toString(Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
+                    mButtonEnabledNetworks.setSummary(R.string.network_lte);
+                } else {
+                    if (isWorldMode()) {
+                        controlCdmaOptions(true);
+                        controlGsmOptions(false);
+                    }
+                    mButtonEnabledNetworks.setValue(
+                            Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
+                    if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA ||
+                            mIsGlobalCdma ||
+                            isWorldMode()) {
+                        mButtonEnabledNetworks.setSummary(R.string.network_global);
+                    } else {
+                        mButtonEnabledNetworks.setSummary((mShow4GForLTE == true)
+                                ? R.string.network_4G : R.string.network_lte);
+                    }
+                }
+                break;
             case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
                 if (isWorldMode()) {
                     controlCdmaOptions(true);