Fix CDMA Call Forwarding/Call Waiting UI
The CDMA Call Forwarding and Call Waiting UI was incorrectly
being created in the CallFeaturesSettings. Since Call waiting requires
a TimeConsumingPreferenceListener, it can not be directly added to
the main CallFeaturesSettings activity. It should eventually follow
the GSM pattern (or be refactored to have one UI for both technologies).
This changes the call forwarding/call waiting settings to be under
"Additional Settings" in order to support the Call Waiting Activity.
Bug: 185963699
Test: manual; test UI
Change-Id: I981d9d825ba781b691b610ef741b1b2d01953317
diff --git a/src/com/android/phone/CdmaCallOptions.java b/src/com/android/phone/CdmaCallOptions.java
index 2e310aa..40e3517 100644
--- a/src/com/android/phone/CdmaCallOptions.java
+++ b/src/com/android/phone/CdmaCallOptions.java
@@ -32,7 +32,6 @@
private static final String BUTTON_VP_KEY = "button_voice_privacy_key";
private static final String CALL_FORWARDING_KEY = "call_forwarding_key";
private static final String CALL_WAITING_KEY = "call_waiting_key";
- private CdmaVoicePrivacySwitchPreference mButtonVoicePrivacy;
@Override
protected void onCreate(Bundle icicle) {
@@ -44,8 +43,9 @@
subInfoHelper.setActionBarTitle(
getActionBar(), getResources(), R.string.labelCdmaMore_with_label);
- mButtonVoicePrivacy = (CdmaVoicePrivacySwitchPreference) findPreference(BUTTON_VP_KEY);
- mButtonVoicePrivacy.setPhone(subInfoHelper.getPhone());
+ CdmaVoicePrivacySwitchPreference buttonVoicePrivacy =
+ (CdmaVoicePrivacySwitchPreference) findPreference(BUTTON_VP_KEY);
+ buttonVoicePrivacy.setPhone(subInfoHelper.getPhone());
PersistableBundle carrierConfig;
if (subInfoHelper.hasSubId()) {
carrierConfig = PhoneGlobals.getInstance().getCarrierConfigForSubId(
@@ -55,16 +55,26 @@
}
if (subInfoHelper.getPhone().getPhoneType() != PhoneConstants.PHONE_TYPE_CDMA
|| carrierConfig.getBoolean(CarrierConfigManager.KEY_VOICE_PRIVACY_DISABLE_UI_BOOL)) {
- // disable the entire screen
- mButtonVoicePrivacy.setEnabled(false);
+ buttonVoicePrivacy.setEnabled(false);
}
Preference callForwardingPref = getPreferenceScreen().findPreference(CALL_FORWARDING_KEY);
- callForwardingPref.setIntent(subInfoHelper.getIntent(CdmaCallForwardOptions.class));
+ if (carrierConfig != null && carrierConfig.getBoolean(
+ CarrierConfigManager.KEY_CALL_FORWARDING_VISIBILITY_BOOL)) {
+ callForwardingPref.setIntent(
+ subInfoHelper.getIntent(CdmaCallForwardOptions.class));
+ } else {
+ getPreferenceScreen().removePreference(callForwardingPref);
+ }
CdmaCallWaitingPreference callWaitingPref = (CdmaCallWaitingPreference)getPreferenceScreen()
.findPreference(CALL_WAITING_KEY);
- callWaitingPref.init(this, subInfoHelper.getPhone());
+ if (carrierConfig != null && carrierConfig.getBoolean(
+ CarrierConfigManager.KEY_ADDITIONAL_SETTINGS_CALL_WAITING_VISIBILITY_BOOL)) {
+ callWaitingPref.init(this, subInfoHelper.getPhone());
+ } else {
+ getPreferenceScreen().removePreference(callWaitingPref);
+ }
}
@Override