Remove mReadingSettingsForDefaultProvider.
+ Remove mReadingSettingsForDefaultProvider as a class variable.
This was set by the value of mPreviousVMProviderKey. But,
mPreviousVMProviderKey shouldn't change in the middle of a save.
It is only set on initialization, preference tree click, and after
the VM/FWD set has been completed. None of these should happen
while reading call forwarding. Initialization has already taken
place. The dialog on l.697 should prevent a preference tree click,
and the VM/FWD set won't complete until we finish reading the
call forwarding information.
+ Misc style cleanups to make code easier to read.
Bug: 17019623
Change-Id: I3552e02a22e4dcd31a2db5a5609ebd107bb4a569
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index d6bb030..37c21f1 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -268,14 +268,6 @@
}
/**
- * We have to pull current settings from the network for all kinds of
- * voicemail providers so we can tell whether we have to update them,
- * so use this bit to keep track of whether we're reading settings for the
- * default provider and should therefore save them out when done.
- */
- private boolean mReadingSettingsForDefaultProvider = false;
-
- /**
* Used to indicate that the voicemail preference should be shown.
*/
private boolean mShowVoicemailPreference = false;
@@ -663,10 +655,9 @@
mNewVMNumber = (mNewVMNumber == null) ? "" : mNewVMNumber;
mNewFwdSettings = newSettings.getForwardingSettings();
- // No fwd settings on CDMA.
- boolean isCdma = mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA;
- if (isCdma) {
- if (DBG) log("ignoring forwarding setting since this is CDMA phone");
+ // Call forwarding is not suppported on CDMA.
+ if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) {
+ if (DBG) log("Ignoring forwarding setting since this is CDMA phone");
mNewFwdSettings = VoicemailProviderSettings.NO_FORWARDING;
}
@@ -682,14 +673,12 @@
mFwdChangesRequireRollback = false;
mVMOrFwdSetError = 0;
- // Don't read call forwarding settings if CDMA. Call forwarding is not supported by CDMA.
- if (isCdma || mNewFwdSettings == VoicemailProviderSettings.NO_FORWARDING) {
- if (DBG) log("Not touching fwd #");
+ if (mNewFwdSettings == VoicemailProviderSettings.NO_FORWARDING
+ || key.equals(mPreviousVMProviderKey)) {
+ if (DBG) log("Set voicemail number. No changes to forwarding number.");
setVoicemailNumberWithCarrier();
} else {
- mReadingSettingsForDefaultProvider =
- mPreviousVMProviderKey.equals(VoicemailProviderListPreference.DEFAULT_KEY);
- if (DBG) log("Reading current forwarding settings");
+ if (DBG) log("Reading current forwarding settings.");
int numSettingsReasons = VoicemailProviderSettings.FORWARDING_SETTINGS_REASONS.length;
mForwardingReadResults = new CallForwardInfo[numSettingsReasons];
for (int i = 0; i < mForwardingReadResults.length; i++) {
@@ -700,7 +689,6 @@
showDialogIfForeground(VoicemailDialogUtil.VM_FWD_READING_DIALOG);
}
- // Refresh the MWI indicator if it is already showing.
PhoneGlobals.getInstance().refreshMwiIndicator(mSubscriptionInfoHelper.getSubId());
}
@@ -762,11 +750,10 @@
if (DBG) Log.d(LOG_TAG, "Done receiving fwd info");
dismissDialogSafely(VoicemailDialogUtil.VM_FWD_READING_DIALOG);
- if (mReadingSettingsForDefaultProvider) {
+ if (mPreviousVMProviderKey.equals(VoicemailProviderListPreference.DEFAULT_KEY)) {
VoicemailProviderSettingsUtil.save(mPhone.getContext(),
VoicemailProviderListPreference.DEFAULT_KEY,
new VoicemailProviderSettings(mOldVmNumber, mForwardingReadResults));
- mReadingSettingsForDefaultProvider = false;
}
saveVoiceMailAndForwardingNumberStage2();
}