package com.xabber.android.ui.preferences; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceManager; import com.xabber.android.R; import com.xabber.android.data.SettingsManager; import com.xabber.android.data.account.AccountItem; import com.xabber.android.data.account.AccountManager; import com.xabber.android.data.entity.AccountJid; import com.xabber.android.ui.activity.PreferenceSummaryHelperActivity; import java.util.Collection; public class ConnectionSettingsFragment extends android.preference.PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference_connection); PreferenceSummaryHelperActivity.updateSummary(getPreferenceScreen()); setDnsResolverSummary(SettingsManager.connectionDnsResolver()); } @Override public void onResume() { super.onResume(); PreferenceManager.getDefaultSharedPreferences(getActivity()) .registerOnSharedPreferenceChangeListener(this); } @Override public void onPause() { super.onPause(); PreferenceManager.getDefaultSharedPreferences(getActivity()) .unregisterOnSharedPreferenceChangeListener(this); } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals(getString(R.string.connection_dns_resolver_type_key))) { String value = sharedPreferences.getString(key, getString(R.string.connection_dns_resolver_type_default)); SettingsManager.DnsResolverType dnsResolverType = SettingsManager.getDnsResolverType(value); setDnsResolverSummary(dnsResolverType); // reconnect all enabled account to apply and check changes Collection<AccountJid> enabledAccounts = AccountManager.getInstance().getEnabledAccounts(); for (AccountJid accountJid : enabledAccounts) { AccountItem accountItem = AccountManager.getInstance().getAccount(accountJid); if (accountItem != null) { accountItem.recreateConnection(); } } } } private void setDnsResolverSummary(SettingsManager.DnsResolverType dnsResolverType) { Preference preference = findPreference(getString(R.string.connection_dns_resolver_type_key)); String summary = ""; switch (dnsResolverType) { case dnsJavaResolver: summary = getString(R.string.connection_dns_resolver_type_dns_java_resolver); break; case miniDnsResolver: summary = getString(R.string.connection_dns_resolver_type_mini_dns_resolver); break; } preference.setSummary(summary); } }