summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2017-12-05 01:23:30 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-12-05 01:23:30 +0000
commit7370d93ade1d2b96020b6bc5cb31ba1b48fce70b (patch)
treeda3e26b8b0f06771ddd3a36b61716d12a2dbb8b6
parent9ffe71da47f4623e227102ca5fe231f280c6d32e (diff)
parent7658f34ae01715d496573bf7e29e748cb5459f69 (diff)
Merge "Add filtration logic to Assisted Dialing Settings."
-rw-r--r--java/com/android/dialer/assisteddialing/AndroidManifest.xml22
-rw-r--r--java/com/android/dialer/assisteddialing/ConcreteCreator.java1
-rw-r--r--java/com/android/dialer/assisteddialing/CountryCodeProvider.java2
-rw-r--r--java/com/android/dialer/assisteddialing/res/values/strings.xml22
-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
-rw-r--r--packages.mk1
8 files changed, 123 insertions, 9 deletions
diff --git a/java/com/android/dialer/assisteddialing/AndroidManifest.xml b/java/com/android/dialer/assisteddialing/AndroidManifest.xml
new file mode 100644
index 000000000..6625dff07
--- /dev/null
+++ b/java/com/android/dialer/assisteddialing/AndroidManifest.xml
@@ -0,0 +1,22 @@
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.dialer.assisteddialing">
+
+ <uses-sdk
+ android:minSdkVersion="23"
+ android:targetSdkVersion="24"/>
+
+</manifest> \ No newline at end of file
diff --git a/java/com/android/dialer/assisteddialing/ConcreteCreator.java b/java/com/android/dialer/assisteddialing/ConcreteCreator.java
index 8a5661e03..73817d7fc 100644
--- a/java/com/android/dialer/assisteddialing/ConcreteCreator.java
+++ b/java/com/android/dialer/assisteddialing/ConcreteCreator.java
@@ -25,7 +25,6 @@ import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
import android.support.v4.os.UserManagerCompat;
import android.telephony.TelephonyManager;
-import com.android.dialer.assisteddialing.ui.R;
import com.android.dialer.common.LogUtil;
import com.android.dialer.configprovider.ConfigProvider;
import com.android.dialer.configprovider.ConfigProviderBindings;
diff --git a/java/com/android/dialer/assisteddialing/CountryCodeProvider.java b/java/com/android/dialer/assisteddialing/CountryCodeProvider.java
index b12b3ddc0..118696e9b 100644
--- a/java/com/android/dialer/assisteddialing/CountryCodeProvider.java
+++ b/java/com/android/dialer/assisteddialing/CountryCodeProvider.java
@@ -34,7 +34,7 @@ import java.util.stream.Collectors;
/** A class to provide the appropriate country codes related to assisted dialing. */
@TargetApi(VERSION_CODES.N)
@SuppressWarnings("AndroidApiChecker") // Java 8 APIs
-final class CountryCodeProvider {
+public final class CountryCodeProvider {
// TODO(erfanian): Ensure the below standard is consistent between libphonenumber and the
// platform.
diff --git a/java/com/android/dialer/assisteddialing/res/values/strings.xml b/java/com/android/dialer/assisteddialing/res/values/strings.xml
new file mode 100644
index 000000000..f9cb123e0
--- /dev/null
+++ b/java/com/android/dialer/assisteddialing/res/values/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <!-- 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>
+</resources> \ No newline at end of file
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>
diff --git a/packages.mk b/packages.mk
index c86e276ef..ce425a90f 100644
--- a/packages.mk
+++ b/packages.mk
@@ -8,6 +8,7 @@ LOCAL_AAPT_FLAGS := \
com.android.dialer.app \
com.android.dialer.app.manifests.activities \
com.android.dialer.app.voicemail.error \
+ com.android.dialer.assisteddialing \
com.android.dialer.assisteddialing.ui \
com.android.dialer.backup \
com.android.dialer.binary.aosp.testing \