17d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/* 27d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Copyright (C) 2006 The Android Open Source Project 37d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 47d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Licensed under the Apache License, Version 2.0 (the "License"); 57d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * you may not use this file except in compliance with the License. 67d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * You may obtain a copy of the License at 77d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 87d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * http://www.apache.org/licenses/LICENSE-2.0 97d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Unless required by applicable law or agreed to in writing, software 117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * distributed under the License is distributed on an "AS IS" BASIS, 127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * See the License for the specific language governing permissions and 147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * limitations under the License. 157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpackage com.android.phone; 187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 195f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWestimport com.android.ims.ImsManager; 207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport com.android.internal.telephony.Phone; 217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport com.android.internal.telephony.PhoneConstants; 223c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWestimport com.android.internal.telephony.PhoneFactory; 237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport com.android.internal.telephony.TelephonyIntents; 247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport com.android.internal.telephony.TelephonyProperties; 257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 263c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWestimport java.util.ArrayList; 27e31492a6d1a9c6eada391f49d89bec7046961ffeWink Savilleimport java.util.Iterator; 283c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWestimport java.util.List; 293c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.app.ActionBar; 317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.app.AlertDialog; 3248f6fea3612c04f6e2980705409756595f57805bPauloftheWestimport android.content.BroadcastReceiver; 337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.Context; 347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.DialogInterface; 357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.Intent; 3648f6fea3612c04f6e2980705409756595f57805bPauloftheWestimport android.content.IntentFilter; 372127037244d2d035fd3f5f250067c2225647f996Sungmin Choiimport android.content.pm.PackageManager.NameNotFoundException; 387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.net.Uri; 397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.AsyncResult; 407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.Bundle; 417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.Handler; 427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.Message; 43c31f1f32963534763aaf82ae2544f3a94f13edcaJonathan Basseriimport android.os.PersistableBundle; 447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.os.SystemProperties; 455f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWestimport android.os.UserHandle; 46a4ca38a6127b9ce87240bffbddf0f095fbec233fJulia Reynoldsimport android.os.UserManager; 477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.preference.ListPreference; 487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.preference.Preference; 497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.preference.PreferenceActivity; 507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.preference.PreferenceScreen; 515f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWestimport android.preference.SwitchPreference; 527060fbfbc3528f7f78cb8811820bb9d02cf771baJonathan Basseriimport android.telephony.CarrierConfigManager; 5324c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohenimport android.telephony.PhoneStateListener; 543c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWestimport android.telephony.SubscriptionInfo; 5589e89d47f249a1e910d6d726dbfcbedfc193cb83Derek Tanimport android.telephony.SubscriptionManager; 567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.telephony.TelephonyManager; 577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.text.TextUtils; 587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.util.Log; 597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.view.MenuItem; 603c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWestimport android.view.View; 613c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWestimport android.widget.TabHost.OnTabChangeListener; 623c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWestimport android.widget.TabHost.TabContentFactory; 633c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWestimport android.widget.TabHost.TabSpec; 64c31f1f32963534763aaf82ae2544f3a94f13edcaJonathan Basseriimport android.widget.TabHost; 657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/** 677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * "Mobile network settings" screen. This preference screen lets you 687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * enable/disable mobile data, and control data roaming and other 697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * network-specific mobile data features. It's used on non-voice-capable 707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * tablets as well as regular phone devices. 717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Note that this PreferenceActivity is part of the phone app, even though 737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * you reach it from the "Wireless & Networks" section of the main 747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Settings app. It's not part of the "Call settings" hierarchy that's 757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * available from the Phone app (see CallFeaturesSetting for that.) 767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpublic class MobileNetworkSettings extends PreferenceActivity 787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon implements DialogInterface.OnClickListener, 797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon DialogInterface.OnDismissListener, Preference.OnPreferenceChangeListener{ 807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // debug data 827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final String LOG_TAG = "NetworkSettings"; 832127037244d2d035fd3f5f250067c2225647f996Sungmin Choi private static final boolean DBG = true; 847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public static final int REQUEST_CODE_EXIT_ECM = 17; 857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 86e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville // Number of active Subscriptions to show tabs 87e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville private static final int TAB_THRESHOLD = 2; 88e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //String keys for preference lookup 907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final String BUTTON_PREFERED_NETWORK_MODE = "preferred_network_mode_key"; 917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final String BUTTON_ROAMING_KEY = "button_roaming_key"; 927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final String BUTTON_CDMA_LTE_DATA_SERVICE_KEY = "cdma_lte_data_service_key"; 932127037244d2d035fd3f5f250067c2225647f996Sungmin Choi private static final String BUTTON_ENABLED_NETWORKS_KEY = "enabled_networks_key"; 945f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest private static final String BUTTON_4G_LTE_KEY = "enhanced_4g_lte"; 955f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest private static final String BUTTON_CELL_BROADCAST_SETTINGS = "cell_broadcast_settings"; 96dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a private static final String BUTTON_APN_EXPAND_KEY = "button_apn_key"; 97dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a private static final String BUTTON_OPERATOR_SELECTION_EXPAND_KEY = "button_carrier_sel_key"; 98dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a private static final String BUTTON_CARRIER_SETTINGS_KEY = "carrier_settings_key"; 99dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a private static final String BUTTON_CDMA_SYSTEM_SELECT_KEY = "cdma_system_select_key"; 1007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon static final int preferredNetworkMode = Phone.PREFERRED_NT_MODE; 1027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //Information about logical "up" Activity 1047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final String UP_ACTIVITY_PACKAGE = "com.android.settings"; 1057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final String UP_ACTIVITY_CLASS = 1067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon "com.android.settings.Settings$WirelessSettingsActivity"; 1077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1083ab207e3711ebd717f9cfe7412018c51ae1c8131Wink Saville private SubscriptionManager mSubscriptionManager; 1093ab207e3711ebd717f9cfe7412018c51ae1c8131Wink Saville 1107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //UI objects 1117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private ListPreference mButtonPreferredNetworkMode; 1122127037244d2d035fd3f5f250067c2225647f996Sungmin Choi private ListPreference mButtonEnabledNetworks; 1135f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest private SwitchPreference mButtonDataRoam; 1145f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest private SwitchPreference mButton4glte; 1157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private Preference mLteDataServicePref; 1167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static final String iface = "rmnet0"; //TODO: this will go away 118e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville private List<SubscriptionInfo> mActiveSubInfos; 1197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 120a4ca38a6127b9ce87240bffbddf0f095fbec233fJulia Reynolds private UserManager mUm; 1217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private Phone mPhone; 1227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private MyHandler mHandler; 1237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private boolean mOkClicked; 1247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1259443cdcbda67d657773398a262022a04f3e27841Wink Saville // We assume the the value returned by mTabHost.getCurrentTab() == slotId 1263c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest private TabHost mTabHost; 1273c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 1287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //GsmUmts options and Cdma options 1297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon GsmUmtsOptions mGsmUmtsOptions; 1307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon CdmaOptions mCdmaOptions; 1317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private Preference mClickedPreference; 1332127037244d2d035fd3f5f250067c2225647f996Sungmin Choi private boolean mShow4GForLTE; 1346bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi private boolean mIsGlobalCdma; 135a4ca38a6127b9ce87240bffbddf0f095fbec233fJulia Reynolds private boolean mUnavailable; 1367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 13724c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() { 13824c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen /* 139a51d4ef5f89b915ce58d55b327bcd1c52ab4b435Etan Cohen * Enable/disable the 'Enhanced 4G LTE Mode' when in/out of a call 140a51d4ef5f89b915ce58d55b327bcd1c52ab4b435Etan Cohen * and depending on TTY mode and TTY support over VoLTE. 14124c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen * @see android.telephony.PhoneStateListener#onCallStateChanged(int, 14224c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen * java.lang.String) 14324c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen */ 14424c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen @Override 14524c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen public void onCallStateChanged(int state, String incomingNumber) { 14624c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen if (DBG) log("PhoneStateListener.onCallStateChanged: state=" + state); 147579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak boolean enabled = (state == TelephonyManager.CALL_STATE_IDLE) && 148579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak ImsManager.isNonTtyOrTtyOnVolteEnabled(getApplicationContext()); 14924c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen Preference pref = getPreferenceScreen().findPreference(BUTTON_4G_LTE_KEY); 150579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak if (pref != null) pref.setEnabled(enabled && hasActiveSubscriptions()); 15124c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen } 15224c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen }; 15324c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen 15448f6fea3612c04f6e2980705409756595f57805bPauloftheWest private final BroadcastReceiver mPhoneChangeReceiver = new PhoneChangeReceiver(); 15548f6fea3612c04f6e2980705409756595f57805bPauloftheWest 15648f6fea3612c04f6e2980705409756595f57805bPauloftheWest private class PhoneChangeReceiver extends BroadcastReceiver { 15748f6fea3612c04f6e2980705409756595f57805bPauloftheWest @Override 15848f6fea3612c04f6e2980705409756595f57805bPauloftheWest public void onReceive(Context context, Intent intent) { 159e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("onReceive:"); 16048f6fea3612c04f6e2980705409756595f57805bPauloftheWest // When the radio changes (ex: CDMA->GSM), refresh all options. 16148f6fea3612c04f6e2980705409756595f57805bPauloftheWest mGsmUmtsOptions = null; 16248f6fea3612c04f6e2980705409756595f57805bPauloftheWest mCdmaOptions = null; 16348f6fea3612c04f6e2980705409756595f57805bPauloftheWest updateBody(); 16448f6fea3612c04f6e2980705409756595f57805bPauloftheWest } 16548f6fea3612c04f6e2980705409756595f57805bPauloftheWest } 16648f6fea3612c04f6e2980705409756595f57805bPauloftheWest 1677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //This is a method implemented for DialogInterface.OnClickListener. 1687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // Used to dismiss the dialogs when they come up. 1697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void onClick(DialogInterface dialog, int which) { 1707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (which == DialogInterface.BUTTON_POSITIVE) { 1717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mPhone.setDataRoamingEnabled(true); 1727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mOkClicked = true; 1737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else { 1747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // Reset the toggle 1757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonDataRoam.setChecked(false); 1767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1795f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest @Override 1807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void onDismiss(DialogInterface dialog) { 1817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // Assuming that onClick gets called first 182adc650731e52b96afe7ea695f8ca8d40db9c2752PauloftheWest mButtonDataRoam.setChecked(mOkClicked); 1837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 1847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 1857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** 1867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Invoked on each preference click in this hierarchy, overrides 1877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * PreferenceActivity's implementation. Used to make sure we track the 1887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * preference click events. 1897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 1907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 1917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { 1927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** TODO: Refactor and get rid of the if's using subclasses */ 1933c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest final int phoneSubId = mPhone.getSubId(); 1945f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest if (preference.getKey().equals(BUTTON_4G_LTE_KEY)) { 1955f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest return true; 1965f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest } else if (mGsmUmtsOptions != null && 1977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mGsmUmtsOptions.preferenceTreeClick(preference) == true) { 1987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return true; 1997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else if (mCdmaOptions != null && 2007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mCdmaOptions.preferenceTreeClick(preference) == true) { 2017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (Boolean.parseBoolean( 2027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) { 2037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 2047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mClickedPreference = preference; 2057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 2067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // In ECM mode launch ECM app dialog 2077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon startActivityForResult( 2087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null), 2097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon REQUEST_CODE_EXIT_ECM); 2107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return true; 2127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else if (preference == mButtonPreferredNetworkMode) { 2137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //displays the value taken from the Settings.System 2147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon int settingsNetworkMode = android.provider.Settings.Global.getInt(mPhone.getContext(). 2153c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest getContentResolver(), 2163c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId, 2177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon preferredNetworkMode); 2187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setValue(Integer.toString(settingsNetworkMode)); 2197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return true; 2207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else if (preference == mLteDataServicePref) { 2217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon String tmpl = android.provider.Settings.Global.getString(getContentResolver(), 2227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon android.provider.Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL); 2237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (!TextUtils.isEmpty(tmpl)) { 2247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon TelephonyManager tm = (TelephonyManager) getSystemService( 2257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Context.TELEPHONY_SERVICE); 2267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon String imsi = tm.getSubscriberId(); 2277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (imsi == null) { 2287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon imsi = ""; 2297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon final String url = TextUtils.isEmpty(tmpl) ? null 2317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon : TextUtils.expandTemplate(tmpl, imsi).toString(); 2327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 2337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon startActivity(intent); 2347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else { 2357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon android.util.Log.e(LOG_TAG, "Missing SETUP_PREPAID_DATA_SERVICE_URL"); 2367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return true; 2382127037244d2d035fd3f5f250067c2225647f996Sungmin Choi } else if (preference == mButtonEnabledNetworks) { 2392127037244d2d035fd3f5f250067c2225647f996Sungmin Choi int settingsNetworkMode = android.provider.Settings.Global.getInt(mPhone.getContext(). 240579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak getContentResolver(), 2413c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId, 2422127037244d2d035fd3f5f250067c2225647f996Sungmin Choi preferredNetworkMode); 2432127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks.setValue(Integer.toString(settingsNetworkMode)); 2442127037244d2d035fd3f5f250067c2225647f996Sungmin Choi return true; 245adc650731e52b96afe7ea695f8ca8d40db9c2752PauloftheWest } else if (preference == mButtonDataRoam) { 246adc650731e52b96afe7ea695f8ca8d40db9c2752PauloftheWest // Do not disable the preference screen if the user clicks Data roaming. 247adc650731e52b96afe7ea695f8ca8d40db9c2752PauloftheWest return true; 2487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else { 2497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // if the button is anything but the simple toggle preference, 2507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // we'll need to disable all preferences to reject all click 2517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // events until the sub-activity's UI comes up. 2527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon preferenceScreen.setEnabled(false); 2537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // Let the intents be launched by the Preference manager 2547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return false; 2557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 2577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 258e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville private final SubscriptionManager.OnSubscriptionsChangedListener mOnSubscriptionsChangeListener 259e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville = new SubscriptionManager.OnSubscriptionsChangedListener() { 260e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville @Override 261e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville public void onSubscriptionsChanged() { 262e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("onSubscriptionsChanged:"); 263e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville initializeSubscriptions(); 264e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 265e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville }; 266e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 267e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville private void initializeSubscriptions() { 268e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville int currentTab = 0; 269e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("initializeSubscriptions:+"); 270e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 271e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville // Before updating the the active subscription list check 272e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville // if tab updating is needed as the list is changing. 273e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville List<SubscriptionInfo> sil = mSubscriptionManager.getActiveSubscriptionInfoList(); 274e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville TabState state = isUpdateTabsNeeded(sil); 275e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 276e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville // Update to the active subscription list 277e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mActiveSubInfos.clear(); 278e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (sil != null) { 279e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mActiveSubInfos.addAll(sil); 280c0215edcd2e9964ac8faf13d6b3d89228fb4ad05Sanket Padawe // If there is only 1 sim then currenTab should represent slot no. of the sim. 281c0215edcd2e9964ac8faf13d6b3d89228fb4ad05Sanket Padawe if (sil.size() == 1) { 282c0215edcd2e9964ac8faf13d6b3d89228fb4ad05Sanket Padawe currentTab = sil.get(0).getSimSlotIndex(); 283c0215edcd2e9964ac8faf13d6b3d89228fb4ad05Sanket Padawe } 284e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 285e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 286e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville switch (state) { 287e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville case UPDATE: { 288e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("initializeSubscriptions: UPDATE"); 289e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville currentTab = mTabHost != null ? mTabHost.getCurrentTab() : 0; 290e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 291ab07b92dac9063bf05e98384e2834f0b06fb8382Sanket Padawe setContentView(com.android.internal.R.layout.common_tab_settings); 292e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 293e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mTabHost = (TabHost) findViewById(android.R.id.tabhost); 294e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mTabHost.setup(); 295e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 296e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville // Update the tabName. Since the mActiveSubInfos are in slot order 297e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville // we can iterate though the tabs and subscription info in one loop. But 298e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville // we need to handle the case where a slot may be empty. 299e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 300e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville Iterator<SubscriptionInfo> siIterator = mActiveSubInfos.listIterator(); 301e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville SubscriptionInfo si = siIterator.hasNext() ? siIterator.next() : null; 302e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville for (int simSlotIndex = 0; simSlotIndex < mActiveSubInfos.size(); simSlotIndex++) { 303e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville String tabName; 304e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (si != null && si.getSimSlotIndex() == simSlotIndex) { 305e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville // Slot is not empty and we match 306e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville tabName = String.valueOf(si.getDisplayName()); 307e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville si = siIterator.hasNext() ? siIterator.next() : null; 308e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } else { 309e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville // Slot is empty, set name to unknown 310e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville tabName = getResources().getString(R.string.unknown); 311e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 312e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) { 313e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville log("initializeSubscriptions: tab=" + simSlotIndex + " name=" + tabName); 314e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 315e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 316e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mTabHost.addTab(buildTabSpec(String.valueOf(simSlotIndex), tabName)); 317e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 318e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 319e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mTabHost.setOnTabChangedListener(mTabListener); 320e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mTabHost.setCurrentTab(currentTab); 321e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville break; 322e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 323e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville case NO_TABS: { 324e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("initializeSubscriptions: NO_TABS"); 325e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 326e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (mTabHost != null) { 327e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mTabHost.clearAllTabs(); 328e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mTabHost = null; 329e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 330ab07b92dac9063bf05e98384e2834f0b06fb8382Sanket Padawe setContentView(com.android.internal.R.layout.common_tab_settings); 331e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville break; 332e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 333e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville case DO_NOTHING: { 334e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("initializeSubscriptions: DO_NOTHING"); 335c0215edcd2e9964ac8faf13d6b3d89228fb4ad05Sanket Padawe if (mTabHost != null) { 336c0215edcd2e9964ac8faf13d6b3d89228fb4ad05Sanket Padawe currentTab = mTabHost.getCurrentTab(); 337c0215edcd2e9964ac8faf13d6b3d89228fb4ad05Sanket Padawe } 338e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville break; 339e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 340e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 341e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville updatePhone(currentTab); 342e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville updateBody(); 343e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("initializeSubscriptions:-"); 344e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 345e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 346e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville private enum TabState { 347e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville NO_TABS, UPDATE, DO_NOTHING 348e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 349e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville private TabState isUpdateTabsNeeded(List<SubscriptionInfo> newSil) { 350e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville TabState state = TabState.DO_NOTHING; 351e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (newSil == null) { 352e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (mActiveSubInfos.size() >= TAB_THRESHOLD) { 353e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("isUpdateTabsNeeded: NO_TABS, size unknown and was tabbed"); 354e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville state = TabState.NO_TABS; 355e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 356e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } else if (newSil.size() < TAB_THRESHOLD && mActiveSubInfos.size() >= TAB_THRESHOLD) { 357e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("isUpdateTabsNeeded: NO_TABS, size went to small"); 358e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville state = TabState.NO_TABS; 359e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } else if (newSil.size() >= TAB_THRESHOLD && mActiveSubInfos.size() < TAB_THRESHOLD) { 360e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("isUpdateTabsNeeded: UPDATE, size changed"); 361e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville state = TabState.UPDATE; 362e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } else if (newSil.size() >= TAB_THRESHOLD) { 363e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville Iterator<SubscriptionInfo> siIterator = mActiveSubInfos.iterator(); 364e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville for(SubscriptionInfo newSi : newSil) { 365e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville SubscriptionInfo curSi = siIterator.next(); 366e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (!newSi.getDisplayName().equals(curSi.getDisplayName())) { 367e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("isUpdateTabsNeeded: UPDATE, new name=" + newSi.getDisplayName()); 368e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville state = TabState.UPDATE; 369e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville break; 370e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 371e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 372e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 373e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) { 374e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville log("isUpdateTabsNeeded:- " + state 375e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville + " newSil.size()=" + ((newSil != null) ? newSil.size() : 0) 376e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville + " mActiveSubInfos.size()=" + mActiveSubInfos.size()); 377e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 378e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville return state; 379e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 380e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 3813c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest private OnTabChangeListener mTabListener = new OnTabChangeListener() { 3823c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest @Override 3833c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest public void onTabChanged(String tabId) { 384e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("onTabChanged:"); 3853c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest // The User has changed tab; update the body. 386e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville updatePhone(Integer.parseInt(tabId)); 3873c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest updateBody(); 3883c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest } 3893c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest }; 3903c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 391e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville private void updatePhone(int slotId) { 392c45557dbc4b7dc1012fd893b7fe75d37402bff83Stuart Scott final SubscriptionInfo sir = mSubscriptionManager 393c45557dbc4b7dc1012fd893b7fe75d37402bff83Stuart Scott .getActiveSubscriptionInfoForSimSlotIndex(slotId); 394e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (sir != null) { 395e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mPhone = PhoneFactory.getPhone( 396e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville SubscriptionManager.getPhoneId(sir.getSubscriptionId())); 397e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 398e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (mPhone == null) { 399e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville // Do the best we can 400e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mPhone = PhoneGlobals.getPhone(); 401e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 402e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("updatePhone:- slotId=" + slotId + " sir=" + sir); 403e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 404e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 4053c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest private TabContentFactory mEmptyTabContent = new TabContentFactory() { 4063c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest @Override 4073c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest public View createTabContent(String tag) { 4083c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest return new View(mTabHost.getContext()); 4093c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest } 4103c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest }; 4113c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 4123c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest private TabSpec buildTabSpec(String tag, String title) { 4133c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest return mTabHost.newTabSpec(tag).setIndicator(title).setContent( 4143c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest mEmptyTabContent); 4153c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest } 4163c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 4177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 4187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onCreate(Bundle icicle) { 419e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("onCreate:+"); 4205f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest setTheme(R.style.Theme_Material_Settings); 4217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super.onCreate(icicle); 4223c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 4233ab207e3711ebd717f9cfe7412018c51ae1c8131Wink Saville mHandler = new MyHandler(); 4243ab207e3711ebd717f9cfe7412018c51ae1c8131Wink Saville mUm = (UserManager) getSystemService(Context.USER_SERVICE); 4253ab207e3711ebd717f9cfe7412018c51ae1c8131Wink Saville mSubscriptionManager = SubscriptionManager.from(this); 4263c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 427a4ca38a6127b9ce87240bffbddf0f095fbec233fJulia Reynolds if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) { 428a4ca38a6127b9ce87240bffbddf0f095fbec233fJulia Reynolds mUnavailable = true; 429a4ca38a6127b9ce87240bffbddf0f095fbec233fJulia Reynolds setContentView(R.layout.telephony_disallowed_preference_screen); 430a4ca38a6127b9ce87240bffbddf0f095fbec233fJulia Reynolds return; 431a4ca38a6127b9ce87240bffbddf0f095fbec233fJulia Reynolds } 432a4ca38a6127b9ce87240bffbddf0f095fbec233fJulia Reynolds 433a4ca38a6127b9ce87240bffbddf0f095fbec233fJulia Reynolds addPreferencesFromResource(R.xml.network_setting); 4347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 4355f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest mButton4glte = (SwitchPreference)findPreference(BUTTON_4G_LTE_KEY); 4365f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest mButton4glte.setOnPreferenceChangeListener(this); 4375f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest 4382127037244d2d035fd3f5f250067c2225647f996Sungmin Choi try { 4392127037244d2d035fd3f5f250067c2225647f996Sungmin Choi Context con = createPackageContext("com.android.systemui", 0); 4402127037244d2d035fd3f5f250067c2225647f996Sungmin Choi int id = con.getResources().getIdentifier("config_show4GForLTE", 4412127037244d2d035fd3f5f250067c2225647f996Sungmin Choi "bool", "com.android.systemui"); 4422127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mShow4GForLTE = con.getResources().getBoolean(id); 4432127037244d2d035fd3f5f250067c2225647f996Sungmin Choi } catch (NameNotFoundException e) { 4442127037244d2d035fd3f5f250067c2225647f996Sungmin Choi loge("NameNotFoundException for show4GFotLTE"); 4452127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mShow4GForLTE = false; 4462127037244d2d035fd3f5f250067c2225647f996Sungmin Choi } 4472127037244d2d035fd3f5f250067c2225647f996Sungmin Choi 4487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //get UI object references 4497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon PreferenceScreen prefSet = getPreferenceScreen(); 4507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 4515f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest mButtonDataRoam = (SwitchPreference) prefSet.findPreference(BUTTON_ROAMING_KEY); 4527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode = (ListPreference) prefSet.findPreference( 4537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon BUTTON_PREFERED_NETWORK_MODE); 4542127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks = (ListPreference) prefSet.findPreference( 4552127037244d2d035fd3f5f250067c2225647f996Sungmin Choi BUTTON_ENABLED_NETWORKS_KEY); 4565f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest mButtonDataRoam.setOnPreferenceChangeListener(this); 4572127037244d2d035fd3f5f250067c2225647f996Sungmin Choi 4587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mLteDataServicePref = prefSet.findPreference(BUTTON_CDMA_LTE_DATA_SERVICE_KEY); 4597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 460e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville // Initialize mActiveSubInfo 461e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville int max = mSubscriptionManager.getActiveSubscriptionInfoCountMax(); 462e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mActiveSubInfos = new ArrayList<SubscriptionInfo>(max); 4633c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 464e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville initializeSubscriptions(); 46548f6fea3612c04f6e2980705409756595f57805bPauloftheWest 46648f6fea3612c04f6e2980705409756595f57805bPauloftheWest IntentFilter intentFilter = new IntentFilter( 46748f6fea3612c04f6e2980705409756595f57805bPauloftheWest TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED); 46848f6fea3612c04f6e2980705409756595f57805bPauloftheWest registerReceiver(mPhoneChangeReceiver, intentFilter); 469e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("onCreate:-"); 4703c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest } 4713c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 4723c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest @Override 47323ec4d6757e5e5b115278a44a7943b878e5ff683Amit Mahajan protected void onDestroy() { 47423ec4d6757e5e5b115278a44a7943b878e5ff683Amit Mahajan super.onDestroy(); 47523ec4d6757e5e5b115278a44a7943b878e5ff683Amit Mahajan unregisterReceiver(mPhoneChangeReceiver); 47623ec4d6757e5e5b115278a44a7943b878e5ff683Amit Mahajan } 47723ec4d6757e5e5b115278a44a7943b878e5ff683Amit Mahajan 47823ec4d6757e5e5b115278a44a7943b878e5ff683Amit Mahajan @Override 4793c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest protected void onResume() { 4803c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest super.onResume(); 481e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("onResume:+"); 4823c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 4833c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest if (mUnavailable) { 484e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("onResume:- ignore mUnavailable == false"); 4853c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest return; 4863c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest } 4873c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 4883c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest // upon resumption from the sub-activity, make sure we re-enable the 4893c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest // preferences. 4903c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest getPreferenceScreen().setEnabled(true); 4913c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 4923c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest // Set UI state in onResume because a user could go home, launch some 4933c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest // app to change this setting's backend, and re-launch this settings app 4943c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest // and the UI state would be inconsistent with actual state 4953c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest mButtonDataRoam.setChecked(mPhone.getDataRoamingEnabled()); 4963c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 497410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa if (getPreferenceScreen().findPreference(BUTTON_PREFERED_NETWORK_MODE) != null 498410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa || getPreferenceScreen().findPreference(BUTTON_ENABLED_NETWORKS_KEY) != null) { 499410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa updatePreferredNetworkUIFromDb(); 5003c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest } 50124c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen 50231a0c71081d871b3162413c050188921498fff50Etan Cohen if (ImsManager.isVolteEnabledByPlatform(this) 50331a0c71081d871b3162413c050188921498fff50Etan Cohen && ImsManager.isVolteProvisionedOnDevice(this)) { 50424c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 50524c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); 50624c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen } 507a51d4ef5f89b915ce58d55b327bcd1c52ab4b435Etan Cohen 50892ecec7fb3c0a9a4881c91b830ca917f2c2d73beEtan Cohen // NOTE: Buttons will be enabled/disabled in mPhoneStateListener 50992ecec7fb3c0a9a4881c91b830ca917f2c2d73beEtan Cohen boolean enh4glteMode = ImsManager.isEnhanced4gLteModeSettingEnabledByUser(this) 51092ecec7fb3c0a9a4881c91b830ca917f2c2d73beEtan Cohen && ImsManager.isNonTtyOrTtyOnVolteEnabled(this); 51192ecec7fb3c0a9a4881c91b830ca917f2c2d73beEtan Cohen mButton4glte.setChecked(enh4glteMode); 512e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 513f67832f67f330e645ea6109feb108bf7dd854155Wink Saville mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener); 514e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 515e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("onResume:-"); 516e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 5173c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest } 5183c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 519579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak private boolean hasActiveSubscriptions() { 520579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak return mActiveSubInfos.size() > 0; 521579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak } 522579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak 5233c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest private void updateBody() { 5243c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest final Context context = getApplicationContext(); 5253c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest PreferenceScreen prefSet = getPreferenceScreen(); 5267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon boolean isLteOnCdma = mPhone.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE; 5273c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest final int phoneSubId = mPhone.getSubId(); 5283c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 529ddb5d20f8bf79a464f4ec28e16941ab977c35331Wink Saville if (DBG) { 530ddb5d20f8bf79a464f4ec28e16941ab977c35331Wink Saville log("updateBody: isLteOnCdma=" + isLteOnCdma + " phoneSubId=" + phoneSubId); 531ddb5d20f8bf79a464f4ec28e16941ab977c35331Wink Saville } 532ddb5d20f8bf79a464f4ec28e16941ab977c35331Wink Saville 5333c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest if (prefSet != null) { 5343c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest prefSet.removeAll(); 5353c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest prefSet.addPreference(mButtonDataRoam); 5363c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest prefSet.addPreference(mButtonPreferredNetworkMode); 5373c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest prefSet.addPreference(mButtonEnabledNetworks); 538e3c2f8ff055bda4932d10b96c82a494ae67e6424PauloftheWest prefSet.addPreference(mButton4glte); 5393c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest } 5403c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 5413c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest int settingsNetworkMode = android.provider.Settings.Global.getInt( 5423c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest mPhone.getContext().getContentResolver(), 5433c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId, 5443c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest preferredNetworkMode); 5453c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 546c31f1f32963534763aaf82ae2544f3a94f13edcaJonathan Basseri PersistableBundle carrierConfig = 547c31f1f32963534763aaf82ae2544f3a94f13edcaJonathan Basseri PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId()); 5487060fbfbc3528f7f78cb8811820bb9d02cf771baJonathan Basseri mIsGlobalCdma = isLteOnCdma 5499504c6b5c5c7072f72d8a9e6df59dbda8a6ccbe4Jonathan Basseri && carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_CDMA_CHOICES_BOOL); 550a9ba9d4f7062762343c65fede42d0e60cfacf404Junda Liu if (carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL)) { 55189e89d47f249a1e910d6d726dbfcbedfc193cb83Derek Tan prefSet.removePreference(mButtonPreferredNetworkMode); 55289e89d47f249a1e910d6d726dbfcbedfc193cb83Derek Tan prefSet.removePreference(mButtonEnabledNetworks); 55389e89d47f249a1e910d6d726dbfcbedfc193cb83Derek Tan prefSet.removePreference(mLteDataServicePref); 5549504c6b5c5c7072f72d8a9e6df59dbda8a6ccbe4Jonathan Basseri } else if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL) == true) { 5552127037244d2d035fd3f5f250067c2225647f996Sungmin Choi prefSet.removePreference(mButtonEnabledNetworks); 5567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // set the listener for the mButtonPreferredNetworkMode list preference so we can issue 5577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // change Preferred Network Mode. 5587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setOnPreferenceChangeListener(this); 5597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 5607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mCdmaOptions = new CdmaOptions(this, prefSet, mPhone); 561375e27d8a9dff087ed6e2e6be3738e708cd423f6PauloftheWest mGsmUmtsOptions = new GsmUmtsOptions(this, prefSet, phoneSubId); 5627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else { 5634e9f0aa23c3304cb2bb964ef41fe0866ee15b57cSungmin Choi prefSet.removePreference(mButtonPreferredNetworkMode); 5648ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan final int phoneType = mPhone.getPhoneType(); 5657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) { 5668ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan int lteForced = android.provider.Settings.Global.getInt( 5678ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan mPhone.getContext().getContentResolver(), 5688ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan android.provider.Settings.Global.LTE_SERVICE_FORCED + mPhone.getSubId(), 5698ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan 0); 5708ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan 5712127037244d2d035fd3f5f250067c2225647f996Sungmin Choi if (isLteOnCdma) { 5728ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan if (lteForced == 0) { 5738ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan mButtonEnabledNetworks.setEntries( 5748ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan R.array.enabled_networks_cdma_choices); 5758ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan mButtonEnabledNetworks.setEntryValues( 5768ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan R.array.enabled_networks_cdma_values); 5778ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan } else { 5788ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan switch (settingsNetworkMode) { 5798ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan case Phone.NT_MODE_CDMA: 5808ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan case Phone.NT_MODE_CDMA_NO_EVDO: 5818ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan case Phone.NT_MODE_EVDO_NO_CDMA: 5828ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan mButtonEnabledNetworks.setEntries( 5838ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan R.array.enabled_networks_cdma_no_lte_choices); 5848ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan mButtonEnabledNetworks.setEntryValues( 5858ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan R.array.enabled_networks_cdma_no_lte_values); 5868ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan break; 5878ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan case Phone.NT_MODE_GLOBAL: 5888ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan case Phone.NT_MODE_LTE_CDMA_AND_EVDO: 5898ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA: 5908ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan case Phone.NT_MODE_LTE_ONLY: 5918ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan mButtonEnabledNetworks.setEntries( 5928ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan R.array.enabled_networks_cdma_only_lte_choices); 5938ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan mButtonEnabledNetworks.setEntryValues( 5948ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan R.array.enabled_networks_cdma_only_lte_values); 5958ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan break; 5968ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan default: 5978ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan mButtonEnabledNetworks.setEntries( 5988ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan R.array.enabled_networks_cdma_choices); 5998ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan mButtonEnabledNetworks.setEntryValues( 6008ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan R.array.enabled_networks_cdma_values); 6018ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan break; 6028ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan } 6038ea782a7a0edd1ec96b9c98290554bb775aecfaaAmit Mahajan } 6042127037244d2d035fd3f5f250067c2225647f996Sungmin Choi } 6057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mCdmaOptions = new CdmaOptions(this, prefSet, mPhone); 60648f6fea3612c04f6e2980705409756595f57805bPauloftheWest 60748f6fea3612c04f6e2980705409756595f57805bPauloftheWest // In World mode force a refresh of GSM Options. 60848f6fea3612c04f6e2980705409756595f57805bPauloftheWest if (isWorldMode()) { 60948f6fea3612c04f6e2980705409756595f57805bPauloftheWest mGsmUmtsOptions = null; 61048f6fea3612c04f6e2980705409756595f57805bPauloftheWest } 6117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) { 6129504c6b5c5c7072f72d8a9e6df59dbda8a6ccbe4Jonathan Basseri if (!carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL) 6132127037244d2d035fd3f5f250067c2225647f996Sungmin Choi && !getResources().getBoolean(R.bool.config_enabled_lte)) { 6142127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks.setEntries( 6152127037244d2d035fd3f5f250067c2225647f996Sungmin Choi R.array.enabled_networks_except_gsm_lte_choices); 6162127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks.setEntryValues( 6172127037244d2d035fd3f5f250067c2225647f996Sungmin Choi R.array.enabled_networks_except_gsm_lte_values); 6189504c6b5c5c7072f72d8a9e6df59dbda8a6ccbe4Jonathan Basseri } else if (!carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL)) { 6192127037244d2d035fd3f5f250067c2225647f996Sungmin Choi int select = (mShow4GForLTE == true) ? 6207060fbfbc3528f7f78cb8811820bb9d02cf771baJonathan Basseri R.array.enabled_networks_except_gsm_4g_choices 6217060fbfbc3528f7f78cb8811820bb9d02cf771baJonathan Basseri : R.array.enabled_networks_except_gsm_choices; 6222127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks.setEntries(select); 6232127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks.setEntryValues( 6242127037244d2d035fd3f5f250067c2225647f996Sungmin Choi R.array.enabled_networks_except_gsm_values); 6252127037244d2d035fd3f5f250067c2225647f996Sungmin Choi } else if (!getResources().getBoolean(R.bool.config_enabled_lte)) { 6262127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks.setEntries( 6272127037244d2d035fd3f5f250067c2225647f996Sungmin Choi R.array.enabled_networks_except_lte_choices); 6282127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks.setEntryValues( 6292127037244d2d035fd3f5f250067c2225647f996Sungmin Choi R.array.enabled_networks_except_lte_values); 6306bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi } else if (mIsGlobalCdma) { 6312127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks.setEntries( 6322127037244d2d035fd3f5f250067c2225647f996Sungmin Choi R.array.enabled_networks_cdma_choices); 6332127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks.setEntryValues( 6342127037244d2d035fd3f5f250067c2225647f996Sungmin Choi R.array.enabled_networks_cdma_values); 6352127037244d2d035fd3f5f250067c2225647f996Sungmin Choi } else { 6362127037244d2d035fd3f5f250067c2225647f996Sungmin Choi int select = (mShow4GForLTE == true) ? R.array.enabled_networks_4g_choices 6377060fbfbc3528f7f78cb8811820bb9d02cf771baJonathan Basseri : R.array.enabled_networks_choices; 6382127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks.setEntries(select); 6392127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks.setEntryValues( 6402127037244d2d035fd3f5f250067c2225647f996Sungmin Choi R.array.enabled_networks_values); 6412127037244d2d035fd3f5f250067c2225647f996Sungmin Choi } 642375e27d8a9dff087ed6e2e6be3738e708cd423f6PauloftheWest mGsmUmtsOptions = new GsmUmtsOptions(this, prefSet, phoneSubId); 6437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else { 6447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon throw new IllegalStateException("Unexpected phone type: " + phoneType); 6457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 6463a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a if (isWorldMode()) { 6473a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a mButtonEnabledNetworks.setEntries( 6483a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a R.array.preferred_network_mode_choices_world_mode); 6493a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a mButtonEnabledNetworks.setEntryValues( 6503a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a R.array.preferred_network_mode_values_world_mode); 6513a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a } 6522127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks.setOnPreferenceChangeListener(this); 6532127037244d2d035fd3f5f250067c2225647f996Sungmin Choi if (DBG) log("settingsNetworkMode: " + settingsNetworkMode); 6547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 6557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 6567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon final boolean missingDataServiceUrl = TextUtils.isEmpty( 6577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon android.provider.Settings.Global.getString(getContentResolver(), 6587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon android.provider.Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL)); 6597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (!isLteOnCdma || missingDataServiceUrl) { 6607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon prefSet.removePreference(mLteDataServicePref); 6617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else { 6627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon android.util.Log.d(LOG_TAG, "keep ltePref"); 6637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 6647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 665f5f0daec7eee6b1e27dd98fdd88bc54fa72d4bceEtan Cohen // Enable enhanced 4G LTE mode settings depending on whether exists on platform 66631a0c71081d871b3162413c050188921498fff50Etan Cohen if (!(ImsManager.isVolteEnabledByPlatform(this) 66731a0c71081d871b3162413c050188921498fff50Etan Cohen && ImsManager.isVolteProvisionedOnDevice(this))) { 668f830f760271fe847fa20085e48380aaf17c6869dHyejin Kim Preference pref = prefSet.findPreference(BUTTON_4G_LTE_KEY); 669f830f760271fe847fa20085e48380aaf17c6869dHyejin Kim if (pref != null) { 670f830f760271fe847fa20085e48380aaf17c6869dHyejin Kim prefSet.removePreference(pref); 671f830f760271fe847fa20085e48380aaf17c6869dHyejin Kim } 672f830f760271fe847fa20085e48380aaf17c6869dHyejin Kim } 673f830f760271fe847fa20085e48380aaf17c6869dHyejin Kim 6747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon ActionBar actionBar = getActionBar(); 6757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (actionBar != null) { 6767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // android.R.id.home will be triggered in onOptionsItemSelected() 6777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon actionBar.setDisplayHomeAsUpEnabled(true); 6787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 6795f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest 6805f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest final boolean isSecondaryUser = UserHandle.myUserId() != UserHandle.USER_OWNER; 6815f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest // Enable link to CMAS app settings depending on the value in config.xml. 6825f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest final boolean isCellBroadcastAppLinkEnabled = this.getResources().getBoolean( 6835f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest com.android.internal.R.bool.config_cellBroadcastAppLinks); 6845f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest if (isSecondaryUser || !isCellBroadcastAppLinkEnabled 6855f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest || mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_CELL_BROADCASTS)) { 6865f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest PreferenceScreen root = getPreferenceScreen(); 6875f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest Preference ps = findPreference(BUTTON_CELL_BROADCAST_SETTINGS); 6885f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest if (ps != null) { 6895f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest root.removePreference(ps); 6905f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest } 6915f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest } 692a4ca38a6127b9ce87240bffbddf0f095fbec233fJulia Reynolds 693e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville // Get the networkMode from Settings.System and displays it 6947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonDataRoam.setChecked(mPhone.getDataRoamingEnabled()); 6953c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest mButtonEnabledNetworks.setValue(Integer.toString(settingsNetworkMode)); 6963c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest mButtonPreferredNetworkMode.setValue(Integer.toString(settingsNetworkMode)); 6973c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest UpdatePreferredNetworkModeSummary(settingsNetworkMode); 6983c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest UpdateEnabledNetworksValueAndSummary(settingsNetworkMode); 699708cf312cbbd1ba7523574141e8ca419dc0778e4Sanket Padawe // Display preferred network type based on what modem returns b/18676277 700708cf312cbbd1ba7523574141e8ca419dc0778e4Sanket Padawe mPhone.setPreferredNetworkType(settingsNetworkMode, mHandler 701708cf312cbbd1ba7523574141e8ca419dc0778e4Sanket Padawe .obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE)); 702e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 703e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville /** 704e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville * Enable/disable depending upon if there are any active subscriptions. 705e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville * 706e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville * I've decided to put this enable/disable code at the bottom as the 707e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville * code above works even when there are no active subscriptions, thus 708e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville * putting it afterwards is a smaller change. This can be refined later, 709e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville * but you do need to remember that this all needs to work when subscriptions 710e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville * change dynamically such as when hot swapping sims. 711e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville */ 712579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak boolean hasActiveSubscriptions = hasActiveSubscriptions(); 713579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak TelephonyManager tm = (TelephonyManager) getSystemService( 714579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak Context.TELEPHONY_SERVICE); 715579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak boolean canChange4glte = (tm.getCallState() == TelephonyManager.CALL_STATE_IDLE) && 716579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak ImsManager.isNonTtyOrTtyOnVolteEnabled(getApplicationContext()); 717e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mButtonDataRoam.setEnabled(hasActiveSubscriptions); 718e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mButtonPreferredNetworkMode.setEnabled(hasActiveSubscriptions); 719e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mButtonEnabledNetworks.setEnabled(hasActiveSubscriptions); 720579ef55c610f88b1b8b78a1b69db599f9e0dfbf4Pavel Zhamaitsiak mButton4glte.setEnabled(hasActiveSubscriptions && canChange4glte); 721e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mLteDataServicePref.setEnabled(hasActiveSubscriptions); 722e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville Preference ps; 723e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville PreferenceScreen root = getPreferenceScreen(); 724e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville ps = findPreference(BUTTON_CELL_BROADCAST_SETTINGS); 725e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (ps != null) { 726e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville ps.setEnabled(hasActiveSubscriptions); 727e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 728e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville ps = findPreference(BUTTON_APN_EXPAND_KEY); 729e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (ps != null) { 730e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville ps.setEnabled(hasActiveSubscriptions); 731e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 732e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville ps = findPreference(BUTTON_OPERATOR_SELECTION_EXPAND_KEY); 733e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (ps != null) { 734e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville ps.setEnabled(hasActiveSubscriptions); 735e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 736e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville ps = findPreference(BUTTON_CARRIER_SETTINGS_KEY); 737e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (ps != null) { 738e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville ps.setEnabled(hasActiveSubscriptions); 739e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 740e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville ps = findPreference(BUTTON_CDMA_SYSTEM_SELECT_KEY); 741e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (ps != null) { 742e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville ps.setEnabled(hasActiveSubscriptions); 743e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville } 7447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 7457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 7467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 7477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onPause() { 7487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super.onPause(); 749e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("onPause:+"); 75024c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen 75131a0c71081d871b3162413c050188921498fff50Etan Cohen if (ImsManager.isVolteEnabledByPlatform(this) 75231a0c71081d871b3162413c050188921498fff50Etan Cohen && ImsManager.isVolteProvisionedOnDevice(this)) { 75324c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 75424c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); 75524c7ea60ce73408f7e491be9c78950fe7db8f960Etan Cohen } 756e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville 757e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville mSubscriptionManager 758f67832f67f330e645ea6109feb108bf7dd854155Wink Saville .removeOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener); 759e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville if (DBG) log("onPause:-"); 7607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 7617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 7627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** 7637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Implemented to support onPreferenceChangeListener to look for preference 7647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * changes specifically on CLIR. 7657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 7667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * @param preference is the preference to be changed, should be mButtonCLIR. 7677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * @param objValue should be the value of the selection, NOT its localized 7687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * display value. 7697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 7707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public boolean onPreferenceChange(Preference preference, Object objValue) { 7713c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest final int phoneSubId = mPhone.getSubId(); 7727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (preference == mButtonPreferredNetworkMode) { 7737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //NOTE onPreferenceChange seems to be called even if there is no change 7747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //Check if the button value is changed from the System.Setting 7757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setValue((String) objValue); 7767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon int buttonNetworkMode; 7777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon buttonNetworkMode = Integer.valueOf((String) objValue).intValue(); 7787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon int settingsNetworkMode = android.provider.Settings.Global.getInt( 7797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mPhone.getContext().getContentResolver(), 7803c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId, 7813c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest preferredNetworkMode); 7827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (buttonNetworkMode != settingsNetworkMode) { 7837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon int modemNetworkMode; 7847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // if new mode is invalid ignore it 7857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon switch (buttonNetworkMode) { 7867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_WCDMA_PREF: 7877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_GSM_ONLY: 7887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_WCDMA_ONLY: 7897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_GSM_UMTS: 7907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_CDMA: 7917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_CDMA_NO_EVDO: 7927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_EVDO_NO_CDMA: 7937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_GLOBAL: 7947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_LTE_CDMA_AND_EVDO: 7957d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_LTE_GSM_WCDMA: 796e994d46a1f951b496441a42d1eabd2a0e026ceaeJake Hamby case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA: 7977d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_LTE_ONLY: 7987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_LTE_WCDMA: 7997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // This is one of the modes we recognize 8007d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon modemNetworkMode = buttonNetworkMode; 8017d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 8027d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon default: 8037d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon loge("Invalid Network Mode (" + buttonNetworkMode + ") chosen. Ignore."); 8047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return true; 8057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 8067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 8077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(), 8083c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId, 8097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon buttonNetworkMode ); 8107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon //Set the modem network mode 8117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mPhone.setPreferredNetworkType(modemNetworkMode, mHandler 8127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon .obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE)); 8137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 8142127037244d2d035fd3f5f250067c2225647f996Sungmin Choi } else if (preference == mButtonEnabledNetworks) { 8152127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mButtonEnabledNetworks.setValue((String) objValue); 8162127037244d2d035fd3f5f250067c2225647f996Sungmin Choi int buttonNetworkMode; 8172127037244d2d035fd3f5f250067c2225647f996Sungmin Choi buttonNetworkMode = Integer.valueOf((String) objValue).intValue(); 8182127037244d2d035fd3f5f250067c2225647f996Sungmin Choi if (DBG) log("buttonNetworkMode: " + buttonNetworkMode); 8192127037244d2d035fd3f5f250067c2225647f996Sungmin Choi int settingsNetworkMode = android.provider.Settings.Global.getInt( 8202127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mPhone.getContext().getContentResolver(), 8213c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId, 8223c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest preferredNetworkMode); 8232127037244d2d035fd3f5f250067c2225647f996Sungmin Choi if (buttonNetworkMode != settingsNetworkMode) { 8242127037244d2d035fd3f5f250067c2225647f996Sungmin Choi int modemNetworkMode; 8252127037244d2d035fd3f5f250067c2225647f996Sungmin Choi // if new mode is invalid ignore it 8262127037244d2d035fd3f5f250067c2225647f996Sungmin Choi switch (buttonNetworkMode) { 8272127037244d2d035fd3f5f250067c2225647f996Sungmin Choi case Phone.NT_MODE_WCDMA_PREF: 8282127037244d2d035fd3f5f250067c2225647f996Sungmin Choi case Phone.NT_MODE_GSM_ONLY: 8292127037244d2d035fd3f5f250067c2225647f996Sungmin Choi case Phone.NT_MODE_LTE_GSM_WCDMA: 830e994d46a1f951b496441a42d1eabd2a0e026ceaeJake Hamby case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA: 8312127037244d2d035fd3f5f250067c2225647f996Sungmin Choi case Phone.NT_MODE_CDMA: 8322127037244d2d035fd3f5f250067c2225647f996Sungmin Choi case Phone.NT_MODE_CDMA_NO_EVDO: 8332127037244d2d035fd3f5f250067c2225647f996Sungmin Choi case Phone.NT_MODE_LTE_CDMA_AND_EVDO: 8342127037244d2d035fd3f5f250067c2225647f996Sungmin Choi // This is one of the modes we recognize 8352127037244d2d035fd3f5f250067c2225647f996Sungmin Choi modemNetworkMode = buttonNetworkMode; 8362127037244d2d035fd3f5f250067c2225647f996Sungmin Choi break; 8372127037244d2d035fd3f5f250067c2225647f996Sungmin Choi default: 8382127037244d2d035fd3f5f250067c2225647f996Sungmin Choi loge("Invalid Network Mode (" + buttonNetworkMode + ") chosen. Ignore."); 8392127037244d2d035fd3f5f250067c2225647f996Sungmin Choi return true; 8402127037244d2d035fd3f5f250067c2225647f996Sungmin Choi } 8412127037244d2d035fd3f5f250067c2225647f996Sungmin Choi 8426bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi UpdateEnabledNetworksValueAndSummary(buttonNetworkMode); 8432127037244d2d035fd3f5f250067c2225647f996Sungmin Choi 8442127037244d2d035fd3f5f250067c2225647f996Sungmin Choi android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(), 8453c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId, 8462127037244d2d035fd3f5f250067c2225647f996Sungmin Choi buttonNetworkMode ); 8472127037244d2d035fd3f5f250067c2225647f996Sungmin Choi //Set the modem network mode 8482127037244d2d035fd3f5f250067c2225647f996Sungmin Choi mPhone.setPreferredNetworkType(modemNetworkMode, mHandler 8492127037244d2d035fd3f5f250067c2225647f996Sungmin Choi .obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE)); 8502127037244d2d035fd3f5f250067c2225647f996Sungmin Choi } 8515f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest } else if (preference == mButton4glte) { 85292ecec7fb3c0a9a4881c91b830ca917f2c2d73beEtan Cohen SwitchPreference enhanced4gModePref = (SwitchPreference) preference; 85392ecec7fb3c0a9a4881c91b830ca917f2c2d73beEtan Cohen boolean enhanced4gMode = !enhanced4gModePref.isChecked(); 85492ecec7fb3c0a9a4881c91b830ca917f2c2d73beEtan Cohen enhanced4gModePref.setChecked(enhanced4gMode); 85592ecec7fb3c0a9a4881c91b830ca917f2c2d73beEtan Cohen ImsManager.setEnhanced4gLteModeSetting(this, enhanced4gModePref.isChecked()); 8565f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest } else if (preference == mButtonDataRoam) { 8575f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest if (DBG) log("onPreferenceTreeClick: preference == mButtonDataRoam."); 8585f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest 8595f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest //normally called on the toggle click 8605f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest if (!mButtonDataRoam.isChecked()) { 8615f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest // First confirm with a warning dialog about charges 8625f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest mOkClicked = false; 8635f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest new AlertDialog.Builder(this).setMessage( 8645f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest getResources().getString(R.string.roaming_warning)) 865539be08e169bb261fee3d1ba1f0d1a9af1659e55Sanket Padawe .setTitle(R.string.roaming_alert_title) 8665f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest .setIconAttribute(android.R.attr.alertDialogIcon) 8675f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest .setPositiveButton(android.R.string.yes, this) 8685f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest .setNegativeButton(android.R.string.no, this) 8695f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest .show() 8705f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest .setOnDismissListener(this); 8715f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest } else { 8725f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest mPhone.setDataRoamingEnabled(false); 8735f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest } 8745f907c3de6c24256c9157fed6412c9af45eb3c4bPauloftheWest return true; 8757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 8767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 877c0fae3a9a63baaeea9e61d84553d95b857fef450PauloftheWest updateBody(); 8787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // always let the preference setting proceed. 8797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return true; 8807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 8817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 8827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private class MyHandler extends Handler { 8837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 884410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa static final int MESSAGE_SET_PREFERRED_NETWORK_TYPE = 0; 8857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 8867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 8877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void handleMessage(Message msg) { 8887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon switch (msg.what) { 8897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case MESSAGE_SET_PREFERRED_NETWORK_TYPE: 8907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon handleSetPreferredNetworkTypeResponse(msg); 8917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 8927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 8937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 8947d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 895410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa private void handleSetPreferredNetworkTypeResponse(Message msg) { 8967d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon AsyncResult ar = (AsyncResult) msg.obj; 897410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa final int phoneSubId = mPhone.getSubId(); 8987d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 8997d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (ar.exception == null) { 900410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa int networkMode; 901410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa if (getPreferenceScreen().findPreference(BUTTON_PREFERED_NETWORK_MODE) != null) { 902410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa networkMode = Integer.valueOf( 903410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa mButtonPreferredNetworkMode.getValue()).intValue(); 904410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(), 905410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId, 906410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa networkMode ); 9077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 908410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa if (getPreferenceScreen().findPreference(BUTTON_ENABLED_NETWORKS_KEY) != null) { 909410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa networkMode = Integer.valueOf( 910410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa mButtonEnabledNetworks.getValue()).intValue(); 911410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(), 912410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId, 913410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa networkMode ); 9147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 915410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa } else { 916410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa if (DBG) { 917410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa log("handleSetPreferredNetworkTypeResponse: exception in setting network mode."); 9187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 919410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa updatePreferredNetworkUIFromDb(); 9207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 9217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 922410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa } 9237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 924410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa private void updatePreferredNetworkUIFromDb() { 925410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa final int phoneSubId = mPhone.getSubId(); 9267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 927410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa int settingsNetworkMode = android.provider.Settings.Global.getInt( 928410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa mPhone.getContext().getContentResolver(), 929410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId, 930410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa preferredNetworkMode); 9317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 932410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa if (DBG) { 933410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa log("updatePreferredNetworkUIFromDb: settingsNetworkMode = " + 934410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa settingsNetworkMode); 9357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 936410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa 937410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa UpdatePreferredNetworkModeSummary(settingsNetworkMode); 938410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa UpdateEnabledNetworksValueAndSummary(settingsNetworkMode); 939410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa // changes the mButtonPreferredNetworkMode accordingly to settingsNetworkMode 940410f74211df682826d5366ac49748dd710da5a1eAbhishek Adappa mButtonPreferredNetworkMode.setValue(Integer.toString(settingsNetworkMode)); 9417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 9427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 9437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private void UpdatePreferredNetworkModeSummary(int NetworkMode) { 9447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon switch(NetworkMode) { 9457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_WCDMA_PREF: 9467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 9477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_wcdma_perf_summary); 9487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 9497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_GSM_ONLY: 9507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 9517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_gsm_only_summary); 9527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 9537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_WCDMA_ONLY: 9547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 9557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_wcdma_only_summary); 9567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 9577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_GSM_UMTS: 9587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 9597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_gsm_wcdma_summary); 9607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 9617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_CDMA: 9627d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon switch (mPhone.getLteOnCdmaMode()) { 9637d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case PhoneConstants.LTE_ON_CDMA_TRUE: 9647d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 9657d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_cdma_summary); 9667d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 9677d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case PhoneConstants.LTE_ON_CDMA_FALSE: 9687d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon default: 9697d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 9707d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_cdma_evdo_summary); 9717d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 9727d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 9737d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 9747d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_CDMA_NO_EVDO: 9757d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 9767d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_cdma_only_summary); 9777d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 9787d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_EVDO_NO_CDMA: 9797d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 9807d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_evdo_only_summary); 9817d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 9827d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_LTE_ONLY: 9837d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 9847d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_lte_summary); 9857d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 9867d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_LTE_GSM_WCDMA: 9877d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 9887d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_lte_gsm_wcdma_summary); 9897d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 9907d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_LTE_CDMA_AND_EVDO: 9917d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 9927d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_lte_cdma_evdo_summary); 9937d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 994e994d46a1f951b496441a42d1eabd2a0e026ceaeJake Hamby case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA: 99594846fea8b88b76955982112cb4d0e3ce6672e51Amit Mahajan if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA || 99694846fea8b88b76955982112cb4d0e3ce6672e51Amit Mahajan mIsGlobalCdma || 99794846fea8b88b76955982112cb4d0e3ce6672e51Amit Mahajan isWorldMode()) { 998af65e4fb687d9412d65f1250cfee7c202e9ef319Amit Mahajan mButtonPreferredNetworkMode.setSummary( 999af65e4fb687d9412d65f1250cfee7c202e9ef319Amit Mahajan R.string.preferred_network_mode_global_summary); 1000af65e4fb687d9412d65f1250cfee7c202e9ef319Amit Mahajan } else { 1001af65e4fb687d9412d65f1250cfee7c202e9ef319Amit Mahajan mButtonPreferredNetworkMode.setSummary( 1002af65e4fb687d9412d65f1250cfee7c202e9ef319Amit Mahajan R.string.preferred_network_mode_lte_summary); 1003af65e4fb687d9412d65f1250cfee7c202e9ef319Amit Mahajan } 10047d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 10057d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_GLOBAL: 10067d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 10077d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_cdma_evdo_gsm_wcdma_summary); 10087d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 10097d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case Phone.NT_MODE_LTE_WCDMA: 10107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 10117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_lte_wcdma_summary); 10127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 10137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon default: 10147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mButtonPreferredNetworkMode.setSummary( 10157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon R.string.preferred_network_mode_global_summary); 10167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 10177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 10187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 10196bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi private void UpdateEnabledNetworksValueAndSummary(int NetworkMode) { 10206bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi switch (NetworkMode) { 10216bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi case Phone.NT_MODE_WCDMA_ONLY: 10226bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi case Phone.NT_MODE_GSM_UMTS: 10232127037244d2d035fd3f5f250067c2225647f996Sungmin Choi case Phone.NT_MODE_WCDMA_PREF: 10246bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi if (!mIsGlobalCdma) { 10256bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi mButtonEnabledNetworks.setValue( 10266bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi Integer.toString(Phone.NT_MODE_WCDMA_PREF)); 1027b0449b3f154aa0cb6a5c59233c2dd7bed699d6aeSungmin Choi mButtonEnabledNetworks.setSummary(R.string.network_3G); 10286bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi } else { 10296bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi mButtonEnabledNetworks.setValue( 1030e994d46a1f951b496441a42d1eabd2a0e026ceaeJake Hamby Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA)); 1031b0449b3f154aa0cb6a5c59233c2dd7bed699d6aeSungmin Choi mButtonEnabledNetworks.setSummary(R.string.network_global); 10326bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi } 10332127037244d2d035fd3f5f250067c2225647f996Sungmin Choi break; 10342127037244d2d035fd3f5f250067c2225647f996Sungmin Choi case Phone.NT_MODE_GSM_ONLY: 10356bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi if (!mIsGlobalCdma) { 10366bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi mButtonEnabledNetworks.setValue( 10376bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi Integer.toString(Phone.NT_MODE_GSM_ONLY)); 1038b0449b3f154aa0cb6a5c59233c2dd7bed699d6aeSungmin Choi mButtonEnabledNetworks.setSummary(R.string.network_2G); 10396bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi } else { 10406bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi mButtonEnabledNetworks.setValue( 1041e994d46a1f951b496441a42d1eabd2a0e026ceaeJake Hamby Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA)); 1042b0449b3f154aa0cb6a5c59233c2dd7bed699d6aeSungmin Choi mButtonEnabledNetworks.setSummary(R.string.network_global); 10436bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi } 10442127037244d2d035fd3f5f250067c2225647f996Sungmin Choi break; 10452127037244d2d035fd3f5f250067c2225647f996Sungmin Choi case Phone.NT_MODE_LTE_GSM_WCDMA: 1046dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a if (isWorldMode()) { 10473a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a mButtonEnabledNetworks.setSummary( 10483a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a R.string.preferred_network_mode_lte_gsm_umts_summary); 1049dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a controlCdmaOptions(false); 1050dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a controlGsmOptions(true); 10513a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a break; 10523a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a } 10536bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi case Phone.NT_MODE_LTE_ONLY: 10546bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi case Phone.NT_MODE_LTE_WCDMA: 10556bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi if (!mIsGlobalCdma) { 10566bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi mButtonEnabledNetworks.setValue( 10576bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi Integer.toString(Phone.NT_MODE_LTE_GSM_WCDMA)); 1058b0449b3f154aa0cb6a5c59233c2dd7bed699d6aeSungmin Choi mButtonEnabledNetworks.setSummary((mShow4GForLTE == true) 1059b0449b3f154aa0cb6a5c59233c2dd7bed699d6aeSungmin Choi ? R.string.network_4G : R.string.network_lte); 10606bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi } else { 10616bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi mButtonEnabledNetworks.setValue( 1062e994d46a1f951b496441a42d1eabd2a0e026ceaeJake Hamby Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA)); 1063b0449b3f154aa0cb6a5c59233c2dd7bed699d6aeSungmin Choi mButtonEnabledNetworks.setSummary(R.string.network_global); 10646bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi } 10652127037244d2d035fd3f5f250067c2225647f996Sungmin Choi break; 10662127037244d2d035fd3f5f250067c2225647f996Sungmin Choi case Phone.NT_MODE_LTE_CDMA_AND_EVDO: 1067dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a if (isWorldMode()) { 10683a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a mButtonEnabledNetworks.setSummary( 10693a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a R.string.preferred_network_mode_lte_cdma_summary); 1070dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a controlCdmaOptions(true); 1071dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a controlGsmOptions(false); 10723a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a } else { 10733a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a mButtonEnabledNetworks.setValue( 10743a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a Integer.toString(Phone.NT_MODE_LTE_CDMA_AND_EVDO)); 10753a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a mButtonEnabledNetworks.setSummary(R.string.network_lte); 10763a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a } 10772127037244d2d035fd3f5f250067c2225647f996Sungmin Choi break; 10782127037244d2d035fd3f5f250067c2225647f996Sungmin Choi case Phone.NT_MODE_CDMA: 10796bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi case Phone.NT_MODE_EVDO_NO_CDMA: 10802127037244d2d035fd3f5f250067c2225647f996Sungmin Choi case Phone.NT_MODE_GLOBAL: 10816bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi mButtonEnabledNetworks.setValue( 10826bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi Integer.toString(Phone.NT_MODE_CDMA)); 1083b0449b3f154aa0cb6a5c59233c2dd7bed699d6aeSungmin Choi mButtonEnabledNetworks.setSummary(R.string.network_3G); 10842127037244d2d035fd3f5f250067c2225647f996Sungmin Choi break; 10852127037244d2d035fd3f5f250067c2225647f996Sungmin Choi case Phone.NT_MODE_CDMA_NO_EVDO: 10866bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi mButtonEnabledNetworks.setValue( 10876bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi Integer.toString(Phone.NT_MODE_CDMA_NO_EVDO)); 1088b0449b3f154aa0cb6a5c59233c2dd7bed699d6aeSungmin Choi mButtonEnabledNetworks.setSummary(R.string.network_1x); 10892127037244d2d035fd3f5f250067c2225647f996Sungmin Choi break; 1090e994d46a1f951b496441a42d1eabd2a0e026ceaeJake Hamby case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA: 1091dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a if (isWorldMode()) { 1092dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a controlCdmaOptions(true); 1093dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a controlGsmOptions(false); 1094dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a } 10956bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi mButtonEnabledNetworks.setValue( 1096e994d46a1f951b496441a42d1eabd2a0e026ceaeJake Hamby Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA)); 109794846fea8b88b76955982112cb4d0e3ce6672e51Amit Mahajan if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA || 109894846fea8b88b76955982112cb4d0e3ce6672e51Amit Mahajan mIsGlobalCdma || 109994846fea8b88b76955982112cb4d0e3ce6672e51Amit Mahajan isWorldMode()) { 1100af65e4fb687d9412d65f1250cfee7c202e9ef319Amit Mahajan mButtonEnabledNetworks.setSummary(R.string.network_global); 1101af65e4fb687d9412d65f1250cfee7c202e9ef319Amit Mahajan } else { 1102af65e4fb687d9412d65f1250cfee7c202e9ef319Amit Mahajan mButtonEnabledNetworks.setSummary((mShow4GForLTE == true) 1103af65e4fb687d9412d65f1250cfee7c202e9ef319Amit Mahajan ? R.string.network_4G : R.string.network_lte); 1104af65e4fb687d9412d65f1250cfee7c202e9ef319Amit Mahajan } 11052127037244d2d035fd3f5f250067c2225647f996Sungmin Choi break; 11062127037244d2d035fd3f5f250067c2225647f996Sungmin Choi default: 11076bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi String errMsg = "Invalid Network Mode (" + NetworkMode + "). Ignore."; 11086bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi loge(errMsg); 11096bb4d4454cf105b0d3037aae5f224c33c2828c2eSungmin Choi mButtonEnabledNetworks.setSummary(errMsg); 11102127037244d2d035fd3f5f250067c2225647f996Sungmin Choi } 11112127037244d2d035fd3f5f250067c2225647f996Sungmin Choi } 11122127037244d2d035fd3f5f250067c2225647f996Sungmin Choi 11137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 11147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onActivityResult(int requestCode, int resultCode, Intent data) { 11157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon switch(requestCode) { 11167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon case REQUEST_CODE_EXIT_ECM: 11177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Boolean isChoiceYes = 11187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon data.getBooleanExtra(EmergencyCallbackModeExitDialog.EXTRA_EXIT_ECM_RESULT, false); 11197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (isChoiceYes) { 11207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // If the phone exits from ECM mode, show the CDMA Options 11217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mCdmaOptions.showDialog(mClickedPreference); 11227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } else { 11237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // do nothing 11247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 11257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 11267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 11277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon default: 11287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon break; 11297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 11307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 11317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 11327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static void log(String msg) { 11337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Log.d(LOG_TAG, msg); 11347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 11357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 11367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private static void loge(String msg) { 11377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon Log.e(LOG_TAG, msg); 11387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 11397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 11407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 11417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public boolean onOptionsItemSelected(MenuItem item) { 11427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon final int itemId = item.getItemId(); 11437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (itemId == android.R.id.home) { // See ActionBar#setDisplayHomeAsUpEnabled() 11447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // Commenting out "logical up" capability. This is a workaround for issue 5278083. 11457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // 11467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // Settings app may not launch this activity via UP_ACTIVITY_CLASS but the other 11477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // Activity that looks exactly same as UP_ACTIVITY_CLASS ("SubSettings" Activity). 11487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // At that moment, this Activity launches UP_ACTIVITY_CLASS on top of the Activity. 11497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // which confuses users. 11507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // TODO: introduce better mechanism for "up" capability here. 11517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /*Intent intent = new Intent(Intent.ACTION_MAIN); 11527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon intent.setClassName(UP_ACTIVITY_PACKAGE, UP_ACTIVITY_CLASS); 11537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 11547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon startActivity(intent);*/ 11557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon finish(); 11567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return true; 11577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 11587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon return super.onOptionsItemSelected(item); 11597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 11603a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a 11613a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a private boolean isWorldMode() { 11623a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a boolean worldModeOn = false; 11633a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 11643a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a final String configString = getResources().getString(R.string.config_world_mode); 11653a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a 11663a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a if (!TextUtils.isEmpty(configString)) { 11673a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a String[] configArray = configString.split(";"); 11683a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a // Check if we have World mode configuration set to True only or config is set to True 11693a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a // and SIM GID value is also set and matches to the current SIM GID. 11703a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a if (configArray != null && 11713a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a ((configArray.length == 1 && configArray[0].equalsIgnoreCase("true")) || 11723a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a (configArray.length == 2 && !TextUtils.isEmpty(configArray[1]) && 11733a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a tm != null && configArray[1].equalsIgnoreCase(tm.getGroupIdLevel1())))) { 11743a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a worldModeOn = true; 11753a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a } 11763a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a } 11773a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a 11783a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a if (DBG) { 1179e31492a6d1a9c6eada391f49d89bec7046961ffeWink Saville log("isWorldMode=" + worldModeOn); 11803a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a } 11813a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a 11823a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a return worldModeOn; 11833a4447b532a883e4303b0719005e76c0d70b38f8Rohit Sisodia (a } 1184dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a 1185dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a private void controlGsmOptions(boolean enable) { 1186dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a PreferenceScreen prefSet = getPreferenceScreen(); 1187dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a if (prefSet == null) { 1188dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a return; 1189dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a } 1190dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a 11915236f3ae1e7b4d2b07079fbf12b1666a82e1099cPauloftheWest if (mGsmUmtsOptions == null) { 1192375e27d8a9dff087ed6e2e6be3738e708cd423f6PauloftheWest mGsmUmtsOptions = new GsmUmtsOptions(this, prefSet, mPhone.getSubId()); 1193dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a } 1194dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a PreferenceScreen apnExpand = 1195dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a (PreferenceScreen) prefSet.findPreference(BUTTON_APN_EXPAND_KEY); 1196dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a PreferenceScreen operatorSelectionExpand = 1197dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a (PreferenceScreen) prefSet.findPreference(BUTTON_OPERATOR_SELECTION_EXPAND_KEY); 1198dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a PreferenceScreen carrierSettings = 1199dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a (PreferenceScreen) prefSet.findPreference(BUTTON_CARRIER_SETTINGS_KEY); 1200dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a if (apnExpand != null) { 12015236f3ae1e7b4d2b07079fbf12b1666a82e1099cPauloftheWest apnExpand.setEnabled(isWorldMode() || enable); 1202dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a } 1203dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a if (operatorSelectionExpand != null) { 1204dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a operatorSelectionExpand.setEnabled(enable); 1205dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a } 1206dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a if (carrierSettings != null) { 1207dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a prefSet.removePreference(carrierSettings); 1208dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a } 1209dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a } 1210dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a 1211dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a private void controlCdmaOptions(boolean enable) { 1212dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a PreferenceScreen prefSet = getPreferenceScreen(); 1213dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a if (prefSet == null) { 1214dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a return; 1215dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a } 1216dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a if (enable && mCdmaOptions == null) { 1217dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a mCdmaOptions = new CdmaOptions(this, prefSet, mPhone); 1218dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a } 1219dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a CdmaSystemSelectListPreference systemSelect = 1220dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a (CdmaSystemSelectListPreference)prefSet.findPreference 1221dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a (BUTTON_CDMA_SYSTEM_SELECT_KEY); 1222dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a if (systemSelect != null) { 1223dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a systemSelect.setEnabled(enable); 1224dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a } 1225dfa0410fffd9097053ef0c14f99444ebca912407Rohit Sisodia (a } 12263c6ce5e6e05cedb43c62508152dc39e60b03ccacPauloftheWest 12277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon} 1228