Merge "Add Carrier Config to hide "Network default" option in Caller ID setting" am: a01db49f14
am: 3b052ad236
Change-Id: I073329f33d65c7f4efc8fe01fd795cc1ecc01be7
diff --git a/src/com/android/phone/CLIRListPreference.java b/src/com/android/phone/CLIRListPreference.java
old mode 100644
new mode 100755
index b3ff171..5c6132b
--- a/src/com/android/phone/CLIRListPreference.java
+++ b/src/com/android/phone/CLIRListPreference.java
@@ -7,6 +7,7 @@
import android.os.Handler;
import android.os.Message;
import android.preference.ListPreference;
+import android.telephony.CarrierConfigManager;
import android.util.AttributeSet;
import android.util.Log;
@@ -26,6 +27,12 @@
private Phone mPhone;
private TimeConsumingPreferenceListener mTcpListener;
+ private final String[] mEntries = getContext().getResources()
+ .getStringArray(R.array.clir_display_values);
+ private final String[] mValues = getContext().getResources()
+ .getStringArray(R.array.clir_values);
+ private boolean mConfigSupportNetworkDefault;
+
int clirArray[];
public CLIRListPreference(Context context, AttributeSet attrs) {
@@ -40,7 +47,7 @@
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
- mPhone.setOutgoingCallerIdDisplay(findIndexOfValue(getValue()),
+ mPhone.setOutgoingCallerIdDisplay(convertValueToCLIRMode(getValue()),
mHandler.obtainMessage(MyHandler.MESSAGE_SET_CLIR));
if (mTcpListener != null) {
mTcpListener.onStarted(this, false);
@@ -51,6 +58,19 @@
TimeConsumingPreferenceListener listener, boolean skipReading, Phone phone) {
mPhone = phone;
mTcpListener = listener;
+ mConfigSupportNetworkDefault = PhoneGlobals.getInstance()
+ .getCarrierConfigForSubId(mPhone.getSubId())
+ .getBoolean(CarrierConfigManager.KEY_SUPPORT_CLIR_NETWORK_DEFAULT_BOOL);
+ // When "Network default" is not supported, create entries with remaining two values.
+ if (!mConfigSupportNetworkDefault) {
+ String[] noNetworkDefaultEntries = {mEntries[CommandsInterface.CLIR_INVOCATION],
+ mEntries[CommandsInterface.CLIR_SUPPRESSION]};
+ String[] noNetworkDefaultValues = {mValues[CommandsInterface.CLIR_INVOCATION],
+ mValues[CommandsInterface.CLIR_SUPPRESSION]};
+ setEntries(noNetworkDefaultEntries);
+ setEntryValues(noNetworkDefaultValues);
+ }
+
if (!skipReading) {
Log.i(LOG_TAG, "init: requesting CLIR");
mPhone.getOutgoingCallerIdDisplay(mHandler.obtainMessage(MyHandler.MESSAGE_GET_CLIR,
@@ -92,7 +112,10 @@
value = CommandsInterface.CLIR_DEFAULT;
break;
}
- setValueIndex(value);
+ value = (!mConfigSupportNetworkDefault && value == CommandsInterface.CLIR_DEFAULT)
+ ? CommandsInterface.CLIR_SUPPRESSION : value;
+
+ setValue(mValues[value]);
// set the string summary to reflect the value
int summary = R.string.sum_default_caller_id;
@@ -110,6 +133,25 @@
setSummary(summary);
}
+ /**
+ * When "Network default" is hidden, UI list index(0-1) doesn't match CLIR Mode(0-2 for Modem).
+ * In order to send request to Modem, it is necessary to convert value to CLIR Mode.
+ * ("Hide" = CommandsInterface.CLIR_INVOCATION, "Show" = CommandsInterface.CLIR_SUPPRESSION)
+ *
+ * @param String of entry value.
+ * @return "CommandInterface.CLIR_*" for Modem.
+ */
+ private int convertValueToCLIRMode(String value) {
+ if (mValues[CommandsInterface.CLIR_INVOCATION].equals(value)) {
+ return CommandsInterface.CLIR_INVOCATION;
+ } else if (mValues[CommandsInterface.CLIR_SUPPRESSION].equals(value)) {
+ return CommandsInterface.CLIR_SUPPRESSION;
+ } else {
+ return mConfigSupportNetworkDefault ? CommandsInterface.CLIR_DEFAULT :
+ CommandsInterface.CLIR_SUPPRESSION;
+ }
+ }
+
private class MyHandler extends Handler {
static final int MESSAGE_GET_CLIR = 0;
static final int MESSAGE_SET_CLIR = 1;