13815561997eced7fd773062ce32eaa50bece072cPauloftheWest/* 23815561997eced7fd773062ce32eaa50bece072cPauloftheWest * Copyright (C) 2014 The Android Open Source Project 33815561997eced7fd773062ce32eaa50bece072cPauloftheWest * 43815561997eced7fd773062ce32eaa50bece072cPauloftheWest * Licensed under the Apache License, Version 2.0 (the "License"); 53815561997eced7fd773062ce32eaa50bece072cPauloftheWest * you may not use this file except in compliance with the License. 63815561997eced7fd773062ce32eaa50bece072cPauloftheWest * You may obtain a copy of the License at 73815561997eced7fd773062ce32eaa50bece072cPauloftheWest * 83815561997eced7fd773062ce32eaa50bece072cPauloftheWest * http://www.apache.org/licenses/LICENSE-2.0 93815561997eced7fd773062ce32eaa50bece072cPauloftheWest * 103815561997eced7fd773062ce32eaa50bece072cPauloftheWest * Unless required by applicable law or agreed to in writing, software 113815561997eced7fd773062ce32eaa50bece072cPauloftheWest * distributed under the License is distributed on an "AS IS" BASIS, 123815561997eced7fd773062ce32eaa50bece072cPauloftheWest * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133815561997eced7fd773062ce32eaa50bece072cPauloftheWest * See the License for the specific language governing permissions and 143815561997eced7fd773062ce32eaa50bece072cPauloftheWest * limitations under the License. 153815561997eced7fd773062ce32eaa50bece072cPauloftheWest */ 163815561997eced7fd773062ce32eaa50bece072cPauloftheWest 173815561997eced7fd773062ce32eaa50bece072cPauloftheWestpackage com.android.settings.sim; 183815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1922a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglioimport android.provider.SearchIndexableResource; 203815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport com.android.settings.R; 213815561997eced7fd773062ce32eaa50bece072cPauloftheWest 223815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.app.AlertDialog; 233815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.content.BroadcastReceiver; 243815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.content.Context; 253815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.content.Intent; 263815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.content.IntentFilter; 273815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.content.DialogInterface; 283815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.content.res.Resources; 293815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.os.Bundle; 303815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.os.IBinder; 313815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.os.RemoteException; 323815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.os.UserHandle; 333815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.preference.ListPreference; 343815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.preference.Preference; 353815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.preference.PreferenceCategory; 363815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.preference.Preference.OnPreferenceChangeListener; 373815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.preference.PreferenceScreen; 383815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.telephony.SubInfoRecord; 393815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.telephony.SubscriptionManager; 403815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.telephony.TelephonyManager; 413e71b197f7f85c5045a083ecc532954958807be6Tyler Gunnimport android.telecom.PhoneAccount; 423815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.telephony.CellInfo; 433815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.text.TextUtils; 443815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.util.Log; 453815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.view.LayoutInflater; 463815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.view.View; 473815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.widget.ArrayAdapter; 483815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.widget.EditText; 493815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.widget.FrameLayout; 503815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.widget.ImageView; 513815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.widget.ListView; 523815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.widget.Spinner; 533815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport android.widget.TextView; 543815561997eced7fd773062ce32eaa50bece072cPauloftheWest 553815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport com.android.internal.telephony.PhoneConstants; 563815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport com.android.internal.telephony.TelephonyIntents; 573815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport com.android.settings.RestrictedSettingsFragment; 583815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport com.android.settings.SettingsPreferenceFragment; 5922a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglioimport com.android.settings.Utils; 603815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport com.android.settings.notification.DropDownPreference; 613815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport com.android.settings.search.BaseSearchIndexProvider; 623815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport com.android.settings.search.Indexable; 633815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport com.android.settings.search.Indexable.SearchIndexProvider; 643815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport com.android.settings.search.SearchIndexableRaw; 653815561997eced7fd773062ce32eaa50bece072cPauloftheWest 663815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport java.util.ArrayList; 673815561997eced7fd773062ce32eaa50bece072cPauloftheWestimport java.util.List; 683815561997eced7fd773062ce32eaa50bece072cPauloftheWest 693815561997eced7fd773062ce32eaa50bece072cPauloftheWestpublic class SimSettings extends RestrictedSettingsFragment implements Indexable { 703815561997eced7fd773062ce32eaa50bece072cPauloftheWest private static final String TAG = "SimSettings"; 713815561997eced7fd773062ce32eaa50bece072cPauloftheWest 723815561997eced7fd773062ce32eaa50bece072cPauloftheWest private static final String DISALLOW_CONFIG_SIM = "no_config_sim"; 733815561997eced7fd773062ce32eaa50bece072cPauloftheWest private static final String SIM_CARD_CATEGORY = "sim_cards"; 743815561997eced7fd773062ce32eaa50bece072cPauloftheWest private static final String KEY_CELLULAR_DATA = "sim_cellular_data"; 753815561997eced7fd773062ce32eaa50bece072cPauloftheWest private static final String KEY_CALLS = "sim_calls"; 763815561997eced7fd773062ce32eaa50bece072cPauloftheWest private static final String KEY_SMS = "sim_sms"; 773815561997eced7fd773062ce32eaa50bece072cPauloftheWest private static final String KEY_ACTIVITIES = "activities"; 783815561997eced7fd773062ce32eaa50bece072cPauloftheWest 793815561997eced7fd773062ce32eaa50bece072cPauloftheWest /** 803815561997eced7fd773062ce32eaa50bece072cPauloftheWest * By UX design we have use only one Subscription Information(SubInfo) record per SIM slot. 813815561997eced7fd773062ce32eaa50bece072cPauloftheWest * mAvalableSubInfos is the list of SubInfos we present to the user. 823815561997eced7fd773062ce32eaa50bece072cPauloftheWest * mSubInfoList is the list of all SubInfos. 833815561997eced7fd773062ce32eaa50bece072cPauloftheWest */ 843815561997eced7fd773062ce32eaa50bece072cPauloftheWest private List<SubInfoRecord> mAvailableSubInfos = null; 853815561997eced7fd773062ce32eaa50bece072cPauloftheWest private List<SubInfoRecord> mSubInfoList = null; 863815561997eced7fd773062ce32eaa50bece072cPauloftheWest 873815561997eced7fd773062ce32eaa50bece072cPauloftheWest private SubInfoRecord mCellularData = null; 883815561997eced7fd773062ce32eaa50bece072cPauloftheWest private SubInfoRecord mCalls = null; 893815561997eced7fd773062ce32eaa50bece072cPauloftheWest private SubInfoRecord mSMS = null; 903815561997eced7fd773062ce32eaa50bece072cPauloftheWest 917f74c6e8156409e3c4eb57e71b374b4442106229PauloftheWest private int mNumSims; 927f74c6e8156409e3c4eb57e71b374b4442106229PauloftheWest 933815561997eced7fd773062ce32eaa50bece072cPauloftheWest public SimSettings() { 943815561997eced7fd773062ce32eaa50bece072cPauloftheWest super(DISALLOW_CONFIG_SIM); 953815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 963815561997eced7fd773062ce32eaa50bece072cPauloftheWest 973815561997eced7fd773062ce32eaa50bece072cPauloftheWest @Override 983815561997eced7fd773062ce32eaa50bece072cPauloftheWest public void onCreate(final Bundle bundle) { 993815561997eced7fd773062ce32eaa50bece072cPauloftheWest super.onCreate(bundle); 1003815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1013815561997eced7fd773062ce32eaa50bece072cPauloftheWest if (mSubInfoList == null) { 102d85710432560e41535d3b32b7622fff48199db99Wink Saville mSubInfoList = SubscriptionManager.getActiveSubInfoList(); 1033815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1043815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1053815561997eced7fd773062ce32eaa50bece072cPauloftheWest createPreferences(); 1063815561997eced7fd773062ce32eaa50bece072cPauloftheWest updateAllOptions(); 1073815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1083815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1093815561997eced7fd773062ce32eaa50bece072cPauloftheWest private void createPreferences() { 1103815561997eced7fd773062ce32eaa50bece072cPauloftheWest final TelephonyManager tm = 1113815561997eced7fd773062ce32eaa50bece072cPauloftheWest (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE); 1123815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1133815561997eced7fd773062ce32eaa50bece072cPauloftheWest addPreferencesFromResource(R.xml.sim_settings); 1143815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1153815561997eced7fd773062ce32eaa50bece072cPauloftheWest final PreferenceCategory simCards = (PreferenceCategory)findPreference(SIM_CARD_CATEGORY); 1163815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1173815561997eced7fd773062ce32eaa50bece072cPauloftheWest final int numSlots = tm.getSimCount(); 1183815561997eced7fd773062ce32eaa50bece072cPauloftheWest mAvailableSubInfos = new ArrayList<SubInfoRecord>(numSlots); 1197f74c6e8156409e3c4eb57e71b374b4442106229PauloftheWest mNumSims = 0; 1203815561997eced7fd773062ce32eaa50bece072cPauloftheWest for (int i = 0; i < numSlots; ++i) { 1213815561997eced7fd773062ce32eaa50bece072cPauloftheWest final SubInfoRecord sir = findRecordBySlotId(i); 1223815561997eced7fd773062ce32eaa50bece072cPauloftheWest simCards.addPreference(new SimPreference(getActivity(), sir, i)); 1233815561997eced7fd773062ce32eaa50bece072cPauloftheWest mAvailableSubInfos.add(sir); 1247f74c6e8156409e3c4eb57e71b374b4442106229PauloftheWest if (sir != null) { 1257f74c6e8156409e3c4eb57e71b374b4442106229PauloftheWest mNumSims++; 1267f74c6e8156409e3c4eb57e71b374b4442106229PauloftheWest } 1273815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1283815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1293815561997eced7fd773062ce32eaa50bece072cPauloftheWest updateActivitesCategory(); 1303815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1313815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1323815561997eced7fd773062ce32eaa50bece072cPauloftheWest private void updateAllOptions() { 1333815561997eced7fd773062ce32eaa50bece072cPauloftheWest updateSimSlotValues(); 1343815561997eced7fd773062ce32eaa50bece072cPauloftheWest updateActivitesCategory(); 1353815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1363815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1373815561997eced7fd773062ce32eaa50bece072cPauloftheWest private void updateSimSlotValues() { 138d85710432560e41535d3b32b7622fff48199db99Wink Saville SubscriptionManager.getAllSubInfoList(); 1393815561997eced7fd773062ce32eaa50bece072cPauloftheWest final PreferenceCategory simCards = (PreferenceCategory)findPreference(SIM_CARD_CATEGORY); 1403815561997eced7fd773062ce32eaa50bece072cPauloftheWest final PreferenceScreen prefScreen = getPreferenceScreen(); 1413815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1423815561997eced7fd773062ce32eaa50bece072cPauloftheWest final int prefSize = prefScreen.getPreferenceCount(); 1433815561997eced7fd773062ce32eaa50bece072cPauloftheWest for (int i = 0; i < prefSize; ++i) { 1443815561997eced7fd773062ce32eaa50bece072cPauloftheWest Preference pref = prefScreen.getPreference(i); 1453815561997eced7fd773062ce32eaa50bece072cPauloftheWest if (pref instanceof SimPreference) { 1463815561997eced7fd773062ce32eaa50bece072cPauloftheWest ((SimPreference)pref).update(); 1473815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1483815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1493815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1503815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1513815561997eced7fd773062ce32eaa50bece072cPauloftheWest private void updateActivitesCategory() { 1523815561997eced7fd773062ce32eaa50bece072cPauloftheWest createDropDown((DropDownPreference) findPreference(KEY_CELLULAR_DATA)); 1533815561997eced7fd773062ce32eaa50bece072cPauloftheWest createDropDown((DropDownPreference) findPreference(KEY_CALLS)); 1543815561997eced7fd773062ce32eaa50bece072cPauloftheWest createDropDown((DropDownPreference) findPreference(KEY_SMS)); 1553815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1563815561997eced7fd773062ce32eaa50bece072cPauloftheWest updateCellularDataValues(); 1573815561997eced7fd773062ce32eaa50bece072cPauloftheWest updateCallValues(); 1583815561997eced7fd773062ce32eaa50bece072cPauloftheWest updateSmsValues(); 1593815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1603815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1613815561997eced7fd773062ce32eaa50bece072cPauloftheWest /** 1623815561997eced7fd773062ce32eaa50bece072cPauloftheWest * finds a record with subId. 1633815561997eced7fd773062ce32eaa50bece072cPauloftheWest * Since the number of SIMs are few, an array is fine. 1643815561997eced7fd773062ce32eaa50bece072cPauloftheWest */ 1653815561997eced7fd773062ce32eaa50bece072cPauloftheWest private SubInfoRecord findRecordBySubId(final long subId) { 1663815561997eced7fd773062ce32eaa50bece072cPauloftheWest final int availableSubInfoLength = mAvailableSubInfos.size(); 1673815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1683815561997eced7fd773062ce32eaa50bece072cPauloftheWest for (int i = 0; i < availableSubInfoLength; ++i) { 1693815561997eced7fd773062ce32eaa50bece072cPauloftheWest final SubInfoRecord sir = mAvailableSubInfos.get(i); 17078b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville if (sir != null && sir.subId == subId) { 1713815561997eced7fd773062ce32eaa50bece072cPauloftheWest return sir; 1723815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1733815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1743815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1753815561997eced7fd773062ce32eaa50bece072cPauloftheWest return null; 1763815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1773815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1783815561997eced7fd773062ce32eaa50bece072cPauloftheWest /** 1793815561997eced7fd773062ce32eaa50bece072cPauloftheWest * finds a record with slotId. 1803815561997eced7fd773062ce32eaa50bece072cPauloftheWest * Since the number of SIMs are few, an array is fine. 1813815561997eced7fd773062ce32eaa50bece072cPauloftheWest */ 1823815561997eced7fd773062ce32eaa50bece072cPauloftheWest private SubInfoRecord findRecordBySlotId(final int slotId) { 1833815561997eced7fd773062ce32eaa50bece072cPauloftheWest if (mSubInfoList != null){ 1843815561997eced7fd773062ce32eaa50bece072cPauloftheWest final int availableSubInfoLength = mSubInfoList.size(); 1853815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1863815561997eced7fd773062ce32eaa50bece072cPauloftheWest for (int i = 0; i < availableSubInfoLength; ++i) { 1873815561997eced7fd773062ce32eaa50bece072cPauloftheWest final SubInfoRecord sir = mSubInfoList.get(i); 18878b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville if (sir.slotId == slotId) { 1893815561997eced7fd773062ce32eaa50bece072cPauloftheWest //Right now we take the first subscription on a SIM. 1903815561997eced7fd773062ce32eaa50bece072cPauloftheWest return sir; 1913815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1923815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1933815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1943815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1953815561997eced7fd773062ce32eaa50bece072cPauloftheWest return null; 1963815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 1973815561997eced7fd773062ce32eaa50bece072cPauloftheWest 1983815561997eced7fd773062ce32eaa50bece072cPauloftheWest private void updateSmsValues() { 1993815561997eced7fd773062ce32eaa50bece072cPauloftheWest final DropDownPreference simPref = (DropDownPreference) findPreference(KEY_SMS); 200d85710432560e41535d3b32b7622fff48199db99Wink Saville final SubInfoRecord sir = findRecordBySubId(SubscriptionManager.getDefaultSmsSubId()); 2013815561997eced7fd773062ce32eaa50bece072cPauloftheWest if (sir != null) { 20278b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville simPref.setSelectedItem(sir.slotId + 1); 2033815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2047f74c6e8156409e3c4eb57e71b374b4442106229PauloftheWest simPref.setEnabled(mNumSims > 1); 2053815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2063815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2073815561997eced7fd773062ce32eaa50bece072cPauloftheWest private void updateCellularDataValues() { 2083815561997eced7fd773062ce32eaa50bece072cPauloftheWest final DropDownPreference simPref = (DropDownPreference) findPreference(KEY_CELLULAR_DATA); 2093815561997eced7fd773062ce32eaa50bece072cPauloftheWest final SubInfoRecord sir = findRecordBySubId(SubscriptionManager.getDefaultDataSubId()); 2103815561997eced7fd773062ce32eaa50bece072cPauloftheWest if (sir != null) { 21178b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville simPref.setSelectedItem(sir.slotId); 2123815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2137f74c6e8156409e3c4eb57e71b374b4442106229PauloftheWest simPref.setEnabled(mNumSims > 1); 2143815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2153815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2163815561997eced7fd773062ce32eaa50bece072cPauloftheWest private void updateCallValues() { 2173815561997eced7fd773062ce32eaa50bece072cPauloftheWest final DropDownPreference simPref = (DropDownPreference) findPreference(KEY_CALLS); 2183815561997eced7fd773062ce32eaa50bece072cPauloftheWest final SubInfoRecord sir = findRecordBySubId(SubscriptionManager.getDefaultVoiceSubId()); 2193815561997eced7fd773062ce32eaa50bece072cPauloftheWest if (sir != null) { 22078b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville simPref.setSelectedItem(sir.slotId + 1); 2213815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2227f74c6e8156409e3c4eb57e71b374b4442106229PauloftheWest simPref.setEnabled(mNumSims > 1); 2233815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2243815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2253815561997eced7fd773062ce32eaa50bece072cPauloftheWest @Override 2263815561997eced7fd773062ce32eaa50bece072cPauloftheWest public void onResume() { 2273815561997eced7fd773062ce32eaa50bece072cPauloftheWest super.onResume(); 2283815561997eced7fd773062ce32eaa50bece072cPauloftheWest updateAllOptions(); 2293815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2303815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2313815561997eced7fd773062ce32eaa50bece072cPauloftheWest @Override 2323815561997eced7fd773062ce32eaa50bece072cPauloftheWest public boolean onPreferenceTreeClick(final PreferenceScreen preferenceScreen, 2333815561997eced7fd773062ce32eaa50bece072cPauloftheWest final Preference preference) { 2343815561997eced7fd773062ce32eaa50bece072cPauloftheWest if (preference instanceof SimPreference) { 2353815561997eced7fd773062ce32eaa50bece072cPauloftheWest ((SimPreference)preference).createEditDialog((SimPreference)preference); 2363815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2373815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2383815561997eced7fd773062ce32eaa50bece072cPauloftheWest return true; 2393815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2403815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2413815561997eced7fd773062ce32eaa50bece072cPauloftheWest public void createDropDown(DropDownPreference preference) { 2423815561997eced7fd773062ce32eaa50bece072cPauloftheWest final DropDownPreference simPref = preference; 2433815561997eced7fd773062ce32eaa50bece072cPauloftheWest final String keyPref = simPref.getKey(); 2443815561997eced7fd773062ce32eaa50bece072cPauloftheWest final boolean askFirst = keyPref.equals(KEY_CALLS) || keyPref.equals(KEY_SMS); 2453815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2463815561997eced7fd773062ce32eaa50bece072cPauloftheWest simPref.clearItems(); 2473815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2483815561997eced7fd773062ce32eaa50bece072cPauloftheWest if (askFirst) { 2493815561997eced7fd773062ce32eaa50bece072cPauloftheWest simPref.addItem(getResources().getString( 2503815561997eced7fd773062ce32eaa50bece072cPauloftheWest R.string.sim_calls_ask_first_prefs_title), null); 2513815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2523815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2533815561997eced7fd773062ce32eaa50bece072cPauloftheWest final int subAvailableSize = mAvailableSubInfos.size(); 2543815561997eced7fd773062ce32eaa50bece072cPauloftheWest for (int i = 0; i < subAvailableSize; ++i) { 2553815561997eced7fd773062ce32eaa50bece072cPauloftheWest final SubInfoRecord sir = mAvailableSubInfos.get(i); 2563815561997eced7fd773062ce32eaa50bece072cPauloftheWest if(sir != null){ 25778b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville simPref.addItem(sir.displayName, sir); 2583815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2593815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2603815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2613815561997eced7fd773062ce32eaa50bece072cPauloftheWest simPref.setCallback(new DropDownPreference.Callback() { 2623815561997eced7fd773062ce32eaa50bece072cPauloftheWest @Override 2633815561997eced7fd773062ce32eaa50bece072cPauloftheWest public boolean onItemSelected(int pos, Object value) { 26478b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville final long subId = value == null ? 0 : ((SubInfoRecord)value).subId; 2653815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2663815561997eced7fd773062ce32eaa50bece072cPauloftheWest if (simPref.getKey().equals(KEY_CELLULAR_DATA)) { 2673815561997eced7fd773062ce32eaa50bece072cPauloftheWest SubscriptionManager.setDefaultDataSubId(subId); 2683815561997eced7fd773062ce32eaa50bece072cPauloftheWest } else if (simPref.getKey().equals(KEY_CALLS)) { 2693815561997eced7fd773062ce32eaa50bece072cPauloftheWest SubscriptionManager.setDefaultVoiceSubId(subId); 2703815561997eced7fd773062ce32eaa50bece072cPauloftheWest } else if (simPref.getKey().equals(KEY_SMS)) { 2713815561997eced7fd773062ce32eaa50bece072cPauloftheWest // TODO: uncomment once implemented. Bug: 16520931 2723815561997eced7fd773062ce32eaa50bece072cPauloftheWest // SubscriptionManager.setDefaultSMSSubId(subId); 2733815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2743815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2753815561997eced7fd773062ce32eaa50bece072cPauloftheWest return true; 2763815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2773815561997eced7fd773062ce32eaa50bece072cPauloftheWest }); 2783815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2793815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2803815561997eced7fd773062ce32eaa50bece072cPauloftheWest private void setActivity(Preference preference, SubInfoRecord sir) { 2813815561997eced7fd773062ce32eaa50bece072cPauloftheWest final String key = preference.getKey(); 2823815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2833815561997eced7fd773062ce32eaa50bece072cPauloftheWest if (key.equals(KEY_CELLULAR_DATA)) { 2843815561997eced7fd773062ce32eaa50bece072cPauloftheWest mCellularData = sir; 2853815561997eced7fd773062ce32eaa50bece072cPauloftheWest } else if (key.equals(KEY_CALLS)) { 2863815561997eced7fd773062ce32eaa50bece072cPauloftheWest mCalls = sir; 2873815561997eced7fd773062ce32eaa50bece072cPauloftheWest } else if (key.equals(KEY_SMS)) { 2883815561997eced7fd773062ce32eaa50bece072cPauloftheWest mSMS = sir; 2893815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2903815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2913815561997eced7fd773062ce32eaa50bece072cPauloftheWest updateActivitesCategory(); 2923815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 2933815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2943815561997eced7fd773062ce32eaa50bece072cPauloftheWest private class SimPreference extends Preference{ 2953815561997eced7fd773062ce32eaa50bece072cPauloftheWest private SubInfoRecord mSubInfoRecord; 2963815561997eced7fd773062ce32eaa50bece072cPauloftheWest private int mSlotId; 2973815561997eced7fd773062ce32eaa50bece072cPauloftheWest 2983815561997eced7fd773062ce32eaa50bece072cPauloftheWest public SimPreference(Context context, SubInfoRecord subInfoRecord, int slotId) { 2993815561997eced7fd773062ce32eaa50bece072cPauloftheWest super(context); 3003815561997eced7fd773062ce32eaa50bece072cPauloftheWest 3013815561997eced7fd773062ce32eaa50bece072cPauloftheWest mSubInfoRecord = subInfoRecord; 3023815561997eced7fd773062ce32eaa50bece072cPauloftheWest mSlotId = slotId; 3033815561997eced7fd773062ce32eaa50bece072cPauloftheWest setKey("sim" + mSlotId); 3043815561997eced7fd773062ce32eaa50bece072cPauloftheWest update(); 3053815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 3063815561997eced7fd773062ce32eaa50bece072cPauloftheWest 3073815561997eced7fd773062ce32eaa50bece072cPauloftheWest public void update() { 3083815561997eced7fd773062ce32eaa50bece072cPauloftheWest final Resources res = getResources(); 3093815561997eced7fd773062ce32eaa50bece072cPauloftheWest 3103815561997eced7fd773062ce32eaa50bece072cPauloftheWest setTitle(res.getString(R.string.sim_card_number_title, mSlotId + 1)); 3113815561997eced7fd773062ce32eaa50bece072cPauloftheWest if (mSubInfoRecord != null) { 3123815561997eced7fd773062ce32eaa50bece072cPauloftheWest setSummary(res.getString(R.string.sim_settings_summary, 31378b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville mSubInfoRecord.displayName, mSubInfoRecord.number)); 3143815561997eced7fd773062ce32eaa50bece072cPauloftheWest setEnabled(true); 3153815561997eced7fd773062ce32eaa50bece072cPauloftheWest } else { 3163815561997eced7fd773062ce32eaa50bece072cPauloftheWest setSummary(R.string.sim_slot_empty); 3173815561997eced7fd773062ce32eaa50bece072cPauloftheWest setFragment(null); 3183815561997eced7fd773062ce32eaa50bece072cPauloftheWest setEnabled(false); 3193815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 3203815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 3213815561997eced7fd773062ce32eaa50bece072cPauloftheWest 3223815561997eced7fd773062ce32eaa50bece072cPauloftheWest public void createEditDialog(SimPreference simPref) { 3233815561997eced7fd773062ce32eaa50bece072cPauloftheWest AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 3243815561997eced7fd773062ce32eaa50bece072cPauloftheWest 3253815561997eced7fd773062ce32eaa50bece072cPauloftheWest final View dialogLayout = getActivity().getLayoutInflater().inflate( 3263815561997eced7fd773062ce32eaa50bece072cPauloftheWest R.layout.multi_sim_dialog, null); 3273815561997eced7fd773062ce32eaa50bece072cPauloftheWest builder.setView(dialogLayout); 3283815561997eced7fd773062ce32eaa50bece072cPauloftheWest 3293815561997eced7fd773062ce32eaa50bece072cPauloftheWest EditText nameText = (EditText)dialogLayout.findViewById(R.id.sim_name); 33078b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville nameText.setText(mSubInfoRecord.displayName); 3313815561997eced7fd773062ce32eaa50bece072cPauloftheWest 3323815561997eced7fd773062ce32eaa50bece072cPauloftheWest TextView numberView = (TextView)dialogLayout.findViewById(R.id.number); 33378b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville numberView.setText(mSubInfoRecord.number); 3343815561997eced7fd773062ce32eaa50bece072cPauloftheWest 3353815561997eced7fd773062ce32eaa50bece072cPauloftheWest TextView carrierView = (TextView)dialogLayout.findViewById(R.id.carrier); 33678b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville carrierView.setText(mSubInfoRecord.displayName); 3373815561997eced7fd773062ce32eaa50bece072cPauloftheWest 3383815561997eced7fd773062ce32eaa50bece072cPauloftheWest builder.setTitle(R.string.sim_editor_title); 3393815561997eced7fd773062ce32eaa50bece072cPauloftheWest 3403815561997eced7fd773062ce32eaa50bece072cPauloftheWest builder.setPositiveButton(R.string.okay, new DialogInterface.OnClickListener() { 3413815561997eced7fd773062ce32eaa50bece072cPauloftheWest @Override 3423815561997eced7fd773062ce32eaa50bece072cPauloftheWest public void onClick(DialogInterface dialog, int whichButton) { 3433815561997eced7fd773062ce32eaa50bece072cPauloftheWest final EditText nameText = (EditText)dialogLayout.findViewById(R.id.sim_name); 3443815561997eced7fd773062ce32eaa50bece072cPauloftheWest final Spinner displayNumbers = 3453815561997eced7fd773062ce32eaa50bece072cPauloftheWest (Spinner)dialogLayout.findViewById(R.id.display_numbers); 3463815561997eced7fd773062ce32eaa50bece072cPauloftheWest 347d85710432560e41535d3b32b7622fff48199db99Wink Saville SubscriptionManager.setDisplayNumberFormat( 3483815561997eced7fd773062ce32eaa50bece072cPauloftheWest displayNumbers.getSelectedItemPosition() == 0 3493815561997eced7fd773062ce32eaa50bece072cPauloftheWest ? SubscriptionManager.DISPLAY_NUMBER_LAST 35078b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville : SubscriptionManager.DISPLAY_NUMBER_FIRST, mSubInfoRecord.subId); 3513815561997eced7fd773062ce32eaa50bece072cPauloftheWest 35278b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville mSubInfoRecord.displayName = nameText.getText().toString(); 35378b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville SubscriptionManager.setDisplayName(mSubInfoRecord.displayName, 35478b36ba35e4ac9d49b17757cbe47e9e027dd9946Wink Saville mSubInfoRecord.subId); 3553815561997eced7fd773062ce32eaa50bece072cPauloftheWest 3563815561997eced7fd773062ce32eaa50bece072cPauloftheWest updateAllOptions(); 35797535e83a9f1fa4361f1c330c8ba6845348385e9PauloftheWest update(); 3583815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 3593815561997eced7fd773062ce32eaa50bece072cPauloftheWest }); 3603815561997eced7fd773062ce32eaa50bece072cPauloftheWest 3613815561997eced7fd773062ce32eaa50bece072cPauloftheWest builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { 3623815561997eced7fd773062ce32eaa50bece072cPauloftheWest @Override 3633815561997eced7fd773062ce32eaa50bece072cPauloftheWest public void onClick(DialogInterface dialog, int whichButton) { 3643815561997eced7fd773062ce32eaa50bece072cPauloftheWest dialog.dismiss(); 3653815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 3663815561997eced7fd773062ce32eaa50bece072cPauloftheWest }); 3673815561997eced7fd773062ce32eaa50bece072cPauloftheWest 3683815561997eced7fd773062ce32eaa50bece072cPauloftheWest builder.create().show(); 3693815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 3703815561997eced7fd773062ce32eaa50bece072cPauloftheWest } 37122a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio 37222a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio /** 37322a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio * For search 37422a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio */ 37522a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = 37622a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio new BaseSearchIndexProvider() { 37722a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio @Override 37822a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, 37922a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio boolean enabled) { 38022a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio ArrayList<SearchIndexableResource> result = 38122a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio new ArrayList<SearchIndexableResource>(); 38222a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio 38322a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio if (Utils.showSimCardTile(context)) { 38422a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio SearchIndexableResource sir = new SearchIndexableResource(context); 38522a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio sir.xmlResId = R.xml.sim_settings; 38622a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio result.add(sir); 38722a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio } 38822a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio 38922a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio return result; 39022a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio } 39122a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio }; 39222a2a49b445b8721c8194eedf3608ea81c62ccefFabrice Di Meglio 3933815561997eced7fd773062ce32eaa50bece072cPauloftheWest} 394