summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/assisteddialing/ui
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/assisteddialing/ui')
-rw-r--r--java/com/android/dialer/assisteddialing/ui/AndroidManifest.xml2
-rw-r--r--java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java76
-rw-r--r--java/com/android/dialer/assisteddialing/ui/res/values/strings.xml6
3 files changed, 77 insertions, 7 deletions
diff --git a/java/com/android/dialer/assisteddialing/ui/AndroidManifest.xml b/java/com/android/dialer/assisteddialing/ui/AndroidManifest.xml
index 6625dff07..724874750 100644
--- a/java/com/android/dialer/assisteddialing/ui/AndroidManifest.xml
+++ b/java/com/android/dialer/assisteddialing/ui/AndroidManifest.xml
@@ -13,7 +13,7 @@
limitations under the License.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.dialer.assisteddialing">
+ package="com.android.dialer.assisteddialing.ui">
<uses-sdk
android:minSdkVersion="23"
diff --git a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java
index 05ca6d912..03418940a 100644
--- a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java
+++ b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java
@@ -15,22 +15,53 @@
*/
package com.android.dialer.assisteddialing.ui;
+import android.annotation.TargetApi;
+import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.SwitchPreference;
import android.text.TextUtils;
+import com.android.dialer.assisteddialing.ConcreteCreator;
+import com.android.dialer.assisteddialing.CountryCodeProvider;
+import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
+import com.google.auto.value.AutoValue;
+import java.util.ArrayList;
+import java.util.List;
/** The setting for Assisted Dialing */
+@TargetApi(VERSION_CODES.N)
+@SuppressWarnings("AndroidApiChecker") // Java 8 APIs
public class AssistedDialingSettingFragment extends PreferenceFragment {
+ private CountryCodeProvider countryCodeProvider;
+
+ @AutoValue
+ abstract static class DisplayNameAndCountryCodeTuple {
+
+ static DisplayNameAndCountryCodeTuple create(
+ CharSequence countryDisplayName, CharSequence countryCode) {
+ return new AutoValue_AssistedDialingSettingFragment_DisplayNameAndCountryCodeTuple(
+ countryDisplayName, countryCode);
+ }
+
+ // The user-readable name of the country.
+ abstract CharSequence countryDisplayname();
+
+ // The ISO 3166-2 country code of the country.
+ abstract CharSequence countryCode();
+ }
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ countryCodeProvider =
+ ConcreteCreator.getCountryCodeProvider(ConfigProviderBindings.get(getContext()));
+
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.assisted_dialing_setting);
SwitchPreference switchPref =
@@ -41,6 +72,8 @@ public class AssistedDialingSettingFragment extends PreferenceFragment {
(ListPreference)
findPreference(getContext().getString(R.string.assisted_dialing_setting_cc_key));
+ updateCountryChoices(countryChooserPref);
+
if (!TextUtils.isEmpty(countryChooserPref.getEntry())) {
countryChooserPref.setSummary(countryChooserPref.getEntry());
}
@@ -48,6 +81,49 @@ public class AssistedDialingSettingFragment extends PreferenceFragment {
switchPref.setOnPreferenceChangeListener(this::logIfUserDisabledFeature);
}
+ /**
+ * Filters the default entries in the country chooser by only showing those countries in which the
+ * feature in enabled.
+ */
+ private void updateCountryChoices(ListPreference countryChooserPref) {
+
+ List<DisplayNameAndCountryCodeTuple> defaultCountryChoices =
+ buildDefaultCountryChooserKeysAndValues(countryChooserPref);
+
+ // Always include the default preference.
+ List<CharSequence> newKeys = new ArrayList<>();
+ List<CharSequence> newValues = new ArrayList<>();
+ newKeys.add(countryChooserPref.getEntries()[0]);
+ newValues.add(countryChooserPref.getEntryValues()[0]);
+
+ for (DisplayNameAndCountryCodeTuple tuple : defaultCountryChoices) {
+ if (countryCodeProvider.isSupportedCountryCode(tuple.countryCode().toString())) {
+ newKeys.add(tuple.countryDisplayname());
+ newValues.add(tuple.countryCode());
+ }
+ }
+
+ countryChooserPref.setEntries(newKeys.toArray(new CharSequence[newKeys.size()]));
+ countryChooserPref.setEntryValues(newValues.toArray(new CharSequence[newValues.size()]));
+ }
+
+ private List<DisplayNameAndCountryCodeTuple> buildDefaultCountryChooserKeysAndValues(
+ ListPreference countryChooserPref) {
+ CharSequence[] keys = countryChooserPref.getEntries();
+ CharSequence[] values = countryChooserPref.getEntryValues();
+
+ if (keys.length != values.length) {
+ throw new IllegalStateException("Unexpected mismatch in country chooser key/value size");
+ }
+
+ List<DisplayNameAndCountryCodeTuple> displayNamesandCountryCodes = new ArrayList<>();
+ for (int i = 0; i < keys.length; i++) {
+ displayNamesandCountryCodes.add(DisplayNameAndCountryCodeTuple.create(keys[i], values[i]));
+ }
+
+ return displayNamesandCountryCodes;
+ }
+
boolean updateListSummary(Preference pref, Object newValue) {
ListPreference listPref = (ListPreference) pref;
CharSequence[] entries = listPref.getEntries();
diff --git a/java/com/android/dialer/assisteddialing/ui/res/values/strings.xml b/java/com/android/dialer/assisteddialing/ui/res/values/strings.xml
index 1dc778f59..3a81780a9 100644
--- a/java/com/android/dialer/assisteddialing/ui/res/values/strings.xml
+++ b/java/com/android/dialer/assisteddialing/ui/res/values/strings.xml
@@ -22,12 +22,6 @@
<!-- Label for a setting enabling assisted dialing switch preference-->
<string name="assisted_dialing_setting_summary">Predict and add a country code when you call while traveling abroad</string>
- <!-- Key for the assisted dialing setting toggle-->
- <string name="assisted_dialing_setting_toggle_key" translatable="false">assisted_dialing_setting_toggle_key</string>
-
- <!-- Key for the assisted dialing home country setting-->
- <string name="assisted_dialing_setting_cc_key" translatable="false">assisted_dialing_setting_cc_key</string>
-
<!-- Indicates the default state for the home country selector-->
<string name="assisted_dialing_setting_cc_default_summary">Automatically detected</string>