1ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leepackage com.android.phone.settings; 2ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 3ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport android.content.ActivityNotFoundException; 4ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport android.content.Intent; 5ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport android.net.sip.SipManager; 6ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport android.os.Bundle; 7ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport android.preference.CheckBoxPreference; 8ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport android.preference.ListPreference; 9ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport android.preference.Preference; 10ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport android.preference.PreferenceFragment; 11ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport android.telecom.PhoneAccountHandle; 12ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport android.telecom.TelecomManager; 13ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport android.util.Log; 14ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 15ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport com.android.phone.R; 164d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Leeimport com.android.services.telephony.sip.SipAccountRegistry; 17ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport com.android.services.telephony.sip.SipSharedPreferences; 18ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport com.android.services.telephony.sip.SipUtil; 19ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 20ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leeimport java.util.List; 21ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 22ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Leepublic class PhoneAccountSettingsFragment extends PreferenceFragment 23ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee implements Preference.OnPreferenceChangeListener, 24ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee Preference.OnPreferenceClickListener, 25ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee AccountSelectionPreference.AccountSelectionListener { 26ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 27ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private static final Intent CONNECTION_SERVICE_CONFIGURE_INTENT = 28ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee new Intent(TelecomManager.ACTION_CONNECTION_SERVICE_CONFIGURE) 29ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee .addCategory(Intent.CATEGORY_DEFAULT); 30ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 31ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private static final String DEFAULT_OUTGOING_ACCOUNT_KEY = "default_outgoing_account"; 32ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 33ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private static final String CONFIGURE_CALL_ASSISTANT_PREF_KEY = 34ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee "wifi_calling_configure_call_assistant_preference"; 35ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private static final String CALL_ASSISTANT_CATEGORY_PREF_KEY = 36ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee "phone_accounts_call_assistant_settings_category_key"; 37ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private static final String SELECT_CALL_ASSISTANT_PREF_KEY = 38ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee "wifi_calling_call_assistant_preference"; 39ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 401e58e41b50b337ba00605b9a56f4fa49cacb1708Nancy Chen private static final String SIP_SETTINGS_CATEGORY_PREF_KEY = 411e58e41b50b337ba00605b9a56f4fa49cacb1708Nancy Chen "phone_accounts_sip_settings_category_key"; 42ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private static final String USE_SIP_PREF_KEY = "use_sip_calling_options_key"; 434d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee private static final String SIP_RECEIVE_CALLS_PREF_KEY = "sip_receive_calls_key"; 44ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 45ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private String LOG_TAG = PhoneAccountSettingsFragment.class.getSimpleName(); 46ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 47ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private TelecomManager mTelecomManager; 48ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 49ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private AccountSelectionPreference mDefaultOutgoingAccount; 50ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private AccountSelectionPreference mSelectCallAssistant; 51ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private Preference mConfigureCallAssistant; 52ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 53ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private ListPreference mUseSipCalling; 544d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee private CheckBoxPreference mSipReceiveCallsPreference; 55ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private SipSharedPreferences mSipSharedPreferences; 56ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 57ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee @Override 58ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee public void onCreate(Bundle icicle) { 59ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee super.onCreate(icicle); 60ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 61ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mTelecomManager = TelecomManager.from(getActivity()); 62ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 63ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 64ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee @Override 65ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee public void onResume() { 66ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee super.onResume(); 67ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 68ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee if (getPreferenceScreen() != null) { 69ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee getPreferenceScreen().removeAll(); 70ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 71ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 72ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee addPreferencesFromResource(com.android.phone.R.xml.phone_account_settings); 73ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 7439f4a2538f7cbbb13035dc2901edffa62dcc8336Andrew Lee mDefaultOutgoingAccount = (AccountSelectionPreference) 7539f4a2538f7cbbb13035dc2901edffa62dcc8336Andrew Lee getPreferenceScreen().findPreference(DEFAULT_OUTGOING_ACCOUNT_KEY); 76ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee if (mTelecomManager.getAllPhoneAccountsCount() > 1) { 77ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mDefaultOutgoingAccount.setListener(this); 78ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee updateDefaultOutgoingAccountsModel(); 79ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } else { 80ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee getPreferenceScreen().removePreference(mDefaultOutgoingAccount); 81ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 82ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 83ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee if (!mTelecomManager.getSimCallManagers().isEmpty()) { 84ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mSelectCallAssistant = (AccountSelectionPreference) 85ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee getPreferenceScreen().findPreference(SELECT_CALL_ASSISTANT_PREF_KEY); 86ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mSelectCallAssistant.setListener(this); 87ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mSelectCallAssistant.setDialogTitle( 88ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee R.string.wifi_calling_select_call_assistant_summary); 89ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 90ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mConfigureCallAssistant = 91ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee getPreferenceScreen().findPreference(CONFIGURE_CALL_ASSISTANT_PREF_KEY); 92ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mConfigureCallAssistant.setOnPreferenceClickListener(this); 93ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee updateCallAssistantModel(); 94ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } else { 95ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee getPreferenceScreen().removePreference( 96ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee getPreferenceScreen().findPreference(CALL_ASSISTANT_CATEGORY_PREF_KEY)); 97ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 98ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 99ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee if (SipUtil.isVoipSupported(getActivity())) { 100ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mSipSharedPreferences = new SipSharedPreferences(getActivity()); 101ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 102ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mUseSipCalling = (ListPreference) 103ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee getPreferenceScreen().findPreference(USE_SIP_PREF_KEY); 104ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mUseSipCalling.setEntries(!SipManager.isSipWifiOnly(getActivity()) 105ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee ? R.array.sip_call_options_wifi_only_entries 106ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee : R.array.sip_call_options_entries); 107ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mUseSipCalling.setOnPreferenceChangeListener(this); 108829e46ecc3fa122b6c5f29d2771a62e89eedd1a7Andrew Lee 109829e46ecc3fa122b6c5f29d2771a62e89eedd1a7Andrew Lee int optionsValueIndex = 110829e46ecc3fa122b6c5f29d2771a62e89eedd1a7Andrew Lee mUseSipCalling.findIndexOfValue(mSipSharedPreferences.getSipCallOption()); 111829e46ecc3fa122b6c5f29d2771a62e89eedd1a7Andrew Lee if (optionsValueIndex == -1) { 112829e46ecc3fa122b6c5f29d2771a62e89eedd1a7Andrew Lee // If the option is invalid (eg. deprecated value), default to SIP_ADDRESS_ONLY. 113829e46ecc3fa122b6c5f29d2771a62e89eedd1a7Andrew Lee mSipSharedPreferences.setSipCallOption( 114829e46ecc3fa122b6c5f29d2771a62e89eedd1a7Andrew Lee getResources().getString(R.string.sip_address_only)); 115829e46ecc3fa122b6c5f29d2771a62e89eedd1a7Andrew Lee optionsValueIndex = 116829e46ecc3fa122b6c5f29d2771a62e89eedd1a7Andrew Lee mUseSipCalling.findIndexOfValue(mSipSharedPreferences.getSipCallOption()); 117829e46ecc3fa122b6c5f29d2771a62e89eedd1a7Andrew Lee } 118829e46ecc3fa122b6c5f29d2771a62e89eedd1a7Andrew Lee mUseSipCalling.setValueIndex(optionsValueIndex); 119ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mUseSipCalling.setSummary(mUseSipCalling.getEntry()); 1204d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee 1214d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee mSipReceiveCallsPreference = (CheckBoxPreference) 1224d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee getPreferenceScreen().findPreference(SIP_RECEIVE_CALLS_PREF_KEY); 1234d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee mSipReceiveCallsPreference.setEnabled(SipUtil.isPhoneIdle(getActivity())); 1244d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee mSipReceiveCallsPreference.setChecked( 1254d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee mSipSharedPreferences.isReceivingCallsEnabled()); 1264d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee mSipReceiveCallsPreference.setOnPreferenceChangeListener(this); 127ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } else { 128ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee getPreferenceScreen().removePreference( 129ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee getPreferenceScreen().findPreference(SIP_SETTINGS_CATEGORY_PREF_KEY)); 130ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 131ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 132ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 133ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee /** 1344d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee * Handles changes to the preferences. 135ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * 136ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * @param pref The preference changed. 137ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * @param objValue The changed value. 138ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * @return True if the preference change has been handled, and false otherwise. 139ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee */ 140ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee @Override 141ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee public boolean onPreferenceChange(Preference pref, Object objValue) { 142ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee if (pref == mUseSipCalling) { 143ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee String option = objValue.toString(); 144ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mSipSharedPreferences.setSipCallOption(option); 145ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mUseSipCalling.setValueIndex(mUseSipCalling.findIndexOfValue(option)); 146ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mUseSipCalling.setSummary(mUseSipCalling.getEntry()); 147ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee return true; 1484d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee } else if (pref == mSipReceiveCallsPreference) { 1494d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee final boolean isEnabled = !mSipReceiveCallsPreference.isChecked(); 1504d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee new Thread(new Runnable() { 1514d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee public void run() { 1524d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee handleSipReceiveCallsOption(isEnabled); 1534d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee } 1544d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee }).start(); 1554d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee return true; 156ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 157ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee return false; 158ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 159ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 160ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee @Override 161ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee public boolean onPreferenceClick(Preference pref) { 162ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee if (pref == mConfigureCallAssistant) { 163ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee try { 164ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee startActivity(CONNECTION_SERVICE_CONFIGURE_INTENT); 165ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } catch (ActivityNotFoundException e) { 166ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee Log.d(LOG_TAG, "Could not resolve telecom connection service configure intent."); 167ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 168ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee return true; 169ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 170ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee return false; 171ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 172ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 173ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee /** 174ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * Handles a phone account selection, namely when a call assistant has been selected. 175ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * 176ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * @param pref The account selection preference which triggered the account selected event. 177ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * @param account The account selected. 178ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * @return True if the account selection has been handled, and false otherwise. 179ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee */ 180ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee @Override 181ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee public boolean onAccountSelected(AccountSelectionPreference pref, PhoneAccountHandle account) { 182ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee if (pref == mDefaultOutgoingAccount) { 183ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mTelecomManager.setUserSelectedOutgoingPhoneAccount(account); 184ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee return true; 185ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } else if (pref == mSelectCallAssistant) { 186ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mTelecomManager.setSimCallManager(account); 187ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee return true; 188ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 189ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee return false; 190ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 191ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 192ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee /** 193ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * Repopulate the dialog to pick up changes before showing. 194ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * 195ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * @param pref The account selection preference dialog being shown. 196ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee */ 197ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee @Override 198ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee public void onAccountSelectionDialogShow(AccountSelectionPreference pref) { 199ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee if (pref == mDefaultOutgoingAccount) { 200ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee updateDefaultOutgoingAccountsModel(); 201ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } else if (pref == mSelectCallAssistant) { 202ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee updateCallAssistantModel(); 203ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 204ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 205ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 206ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee /** 207ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * Update the configure preference summary when the call assistant changes. 208ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee */ 209ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee @Override 210ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee public void onAccountChanged(AccountSelectionPreference pref) { 211ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee if (pref == mSelectCallAssistant) { 212ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee updateConfigureCallAssistantSummary(); 213ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 214ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 215ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 2164d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee private synchronized void handleSipReceiveCallsOption(boolean isEnabled) { 2174d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee mSipSharedPreferences.setReceivingCallsEnabled(isEnabled); 2184d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee 2194d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee SipUtil.useSipToReceiveIncomingCalls(getActivity(), isEnabled); 2204d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee 2214d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee // Restart all Sip services to ensure we reflect whether we are receiving calls. 2224d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee SipAccountRegistry sipAccountRegistry = SipAccountRegistry.getInstance(); 2234d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee sipAccountRegistry.restartSipService(getActivity()); 2244d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee } 2254d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee 226ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee /** 227ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * Queries the telcomm manager to update the default outgoing account selection preference 228ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * with the list of outgoing accounts and the current default outgoing account. 229ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee */ 230ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private void updateDefaultOutgoingAccountsModel() { 231ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mDefaultOutgoingAccount.setModel( 232ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mTelecomManager, 233ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mTelecomManager.getCallCapablePhoneAccounts(), 234ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mTelecomManager.getUserSelectedOutgoingPhoneAccount(), 235ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee getString(R.string.phone_accounts_ask_every_time)); 236ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 237ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 238ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee /** 239ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * Queries the telecomm manager to update the account selection preference with the list of 240ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * call assistants, and the currently selected call assistant. 241ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee */ 242ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee public void updateCallAssistantModel() { 243ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee List<PhoneAccountHandle> simCallManagers = mTelecomManager.getSimCallManagers(); 244ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mSelectCallAssistant.setModel( 245ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mTelecomManager, 246ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee simCallManagers, 247ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mTelecomManager.getSimCallManager(), 2484d37f5279f2896d16ec3d4e10ec4dcba63e86c3cAndrew Lee getString(R.string.wifi_calling_call_assistant_none)); 249ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 250ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee updateConfigureCallAssistantSummary(); 251ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 252ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee 253ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee /** 254ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * Updates the summary on the "configure call assistant" preference. If it is the last entry, 255ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * show the summary for when no call assistant is selected. Otherwise, display the currently 256ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee * selected call assistant. 257ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee */ 258ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee private void updateConfigureCallAssistantSummary() { 259ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee if (mSelectCallAssistant.getEntries().length - 1 260ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee == mSelectCallAssistant.findIndexOfValue(mSelectCallAssistant.getValue())) { 261ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mConfigureCallAssistant.setSummary( 262ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee R.string.wifi_calling_call_assistant_configure_no_selection); 263ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mConfigureCallAssistant.setEnabled(false); 264ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } else { 265ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mConfigureCallAssistant.setSummary(null); 266ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee mConfigureCallAssistant.setEnabled(true); 267ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 268ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee } 269ce8ae2af29acbf5cfa9509b0770615e317ff03a0Andrew Lee} 270