Change VmProviderSettingsUtil methods to static.
I plan to create a VoicemailProviderListPreference, and move the
initVoicemailProviders code into the preference. In context of this,
the current instance-based implementation of the settings util
seems to be less flexible; a context can simply be passed in to
obtain the SharedPreferences object as necessary.
Bug: 18232725
Change-Id: Ie9a46925a2e5fbb1bf89dcc58ca5bf2e18496513
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 7207fa2..e67071a 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -179,7 +179,6 @@
private Phone mPhone;
private AudioManager mAudioManager;
- private VoicemailProviderSettingsUtil mVmProviderSettingsUtil;
private SubscriptionInfoHelper mSubscriptionInfoHelper;
@@ -403,7 +402,7 @@
updateVMPreferenceWidgets(newProviderKey);
final VoicemailProviderSettings newProviderSettings =
- mVmProviderSettingsUtil.load(newProviderKey);
+ VoicemailProviderSettingsUtil.load(this, newProviderKey);
// If the user switches to a voice mail provider and we have numbers stored for it we
// will automatically change the phone's voice mail and forwarding number to the stored
@@ -503,7 +502,7 @@
if (mVMChangeCompletedSuccessfully || mFwdChangesRequireRollback) {
showDialogIfForeground(VoicemailDialogUtil.VM_REVERTING_DIALOG);
final VoicemailProviderSettings prevSettings =
- mVmProviderSettingsUtil.load(mPreviousVMProviderKey);
+ VoicemailProviderSettingsUtil.load(this, mPreviousVMProviderKey);
if (prevSettings == null) {
Log.e(LOG_TAG, "VoicemailProviderSettings for the key \""
+ mPreviousVMProviderKey + "\" is null but should be loaded.");
@@ -716,7 +715,7 @@
return;
}
- mVmProviderSettingsUtil.save(key, newSettings);
+ VoicemailProviderSettingsUtil.save(this, key, newSettings);
mVMChangeCompletedSuccessfully = false;
mFwdChangesRequireRollback = false;
mVMOrFwdSetError = 0;
@@ -796,7 +795,7 @@
dismissDialogSafely(VoicemailDialogUtil.VM_FWD_READING_DIALOG);
if (mReadingSettingsForDefaultProvider) {
- mVmProviderSettingsUtil.save(DEFAULT_VM_PROVIDER_KEY,
+ VoicemailProviderSettingsUtil.save(this, DEFAULT_VM_PROVIDER_KEY,
new VoicemailProviderSettings(this.mOldVmNumber, mForwardingReadResults));
mReadingSettingsForDefaultProvider = false;
}
@@ -1123,7 +1122,6 @@
}
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
- mVmProviderSettingsUtil = new VoicemailProviderSettingsUtil(getApplicationContext());
// Show the voicemail preference in onResume if the calling intent specifies the
// ACTION_ADD_VOICEMAIL action.
@@ -1410,7 +1408,7 @@
// Remove this provider from the list.
if (!TextUtils.isEmpty(providerToIgnore)) {
if (DBG) log("Found ACTION_ADD_VOICEMAIL. providerToIgnore= " + providerToIgnore);
- mVmProviderSettingsUtil.delete(providerToIgnore);
+ VoicemailProviderSettingsUtil.delete(this, providerToIgnore);
}
}
diff --git a/src/com/android/phone/settings/VoicemailProviderSettingsUtil.java b/src/com/android/phone/settings/VoicemailProviderSettingsUtil.java
index 20fd05a..62e4798 100644
--- a/src/com/android/phone/settings/VoicemailProviderSettingsUtil.java
+++ b/src/com/android/phone/settings/VoicemailProviderSettingsUtil.java
@@ -18,7 +18,6 @@
import android.content.Context;
import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
import android.telephony.PhoneNumberUtils;
import android.util.Log;
@@ -47,19 +46,14 @@
private static final String FWD_SETTING_NUMBER = "#Number";
private static final String FWD_SETTING_TIME = "#Time";
- private SharedPreferences mVmProviderPrefs;
-
- public VoicemailProviderSettingsUtil(Context context) {
- mVmProviderPrefs = context.getSharedPreferences(
- VM_NUMBERS_SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
- }
-
/**
* Returns settings previously stored for the currently selected voice mail provider. If no
* setting is stored for the voice mail provider, return null.
*/
- public VoicemailProviderSettings load(String key) {
- String vmNumberSetting = mVmProviderPrefs.getString(key + VM_NUMBER_TAG, null);
+ public static VoicemailProviderSettings load(Context context, String key) {
+ SharedPreferences prefs = getPrefs(context);
+
+ String vmNumberSetting = prefs.getString(key + VM_NUMBER_TAG, null);
if (vmNumberSetting == null) {
Log.w(LOG_TAG, "VoiceMailProvider settings for the key \"" + key + "\""
+ " were not found. Returning null.");
@@ -68,20 +62,20 @@
CallForwardInfo[] cfi = VoicemailProviderSettings.NO_FORWARDING;
String fwdKey = key + FWD_SETTINGS_TAG;
- int fwdLen = mVmProviderPrefs.getInt(fwdKey + FWD_SETTINGS_LENGTH_TAG, 0);
+ int fwdLen = prefs.getInt(fwdKey + FWD_SETTINGS_LENGTH_TAG, 0);
if (fwdLen > 0) {
cfi = new CallForwardInfo[fwdLen];
for (int i = 0; i < cfi.length; i++) {
String settingKey = fwdKey + FWD_SETTING_TAG + String.valueOf(i);
cfi[i] = new CallForwardInfo();
- cfi[i].status = mVmProviderPrefs.getInt(settingKey + FWD_SETTING_STATUS, 0);
- cfi[i].reason = mVmProviderPrefs.getInt(
+ cfi[i].status = prefs.getInt(settingKey + FWD_SETTING_STATUS, 0);
+ cfi[i].reason = prefs.getInt(
settingKey + FWD_SETTING_REASON,
CommandsInterface.CF_REASON_ALL_CONDITIONAL);
cfi[i].serviceClass = CommandsInterface.SERVICE_CLASS_VOICE;
cfi[i].toa = PhoneNumberUtils.TOA_International;
- cfi[i].number = mVmProviderPrefs.getString(settingKey + FWD_SETTING_NUMBER, "");
- cfi[i].timeSeconds = mVmProviderPrefs.getInt(settingKey + FWD_SETTING_TIME, 20);
+ cfi[i].number = prefs.getString(settingKey + FWD_SETTING_NUMBER, "");
+ cfi[i].timeSeconds = prefs.getInt(settingKey + FWD_SETTING_TIME, 20);
}
}
@@ -96,8 +90,8 @@
*
* These will be used later when the user switches a provider.
*/
- public void save(String key, VoicemailProviderSettings newSettings) {
- VoicemailProviderSettings curSettings = load(key);
+ public static void save(Context context, String key, VoicemailProviderSettings newSettings) {
+ VoicemailProviderSettings curSettings = load(context, key);
if (newSettings.equals(curSettings)) {
if (DBG) log("save: Not saving setting for " + key + " since they have not changed");
return;
@@ -105,7 +99,8 @@
if (DBG) log("Saving settings for " + key + ": " + newSettings.toString());
- Editor editor = mVmProviderPrefs.edit();
+ SharedPreferences prefs = getPrefs(context);
+ SharedPreferences.Editor editor = prefs.edit();
editor.putString(key + VM_NUMBER_TAG, newSettings.getVoicemailNumber());
String fwdKey = key + FWD_SETTINGS_TAG;
@@ -130,16 +125,22 @@
/**
* Deletes settings for the provider identified by this key.
*/
- public void delete(String key) {
+ public static void delete(Context context, String key) {
if (DBG) log("Deleting settings for" + key);
- mVmProviderPrefs.edit()
+ SharedPreferences prefs = getPrefs(context);
+ prefs.edit()
.putString(key + VM_NUMBER_TAG, null)
.putInt(key + FWD_SETTINGS_TAG + FWD_SETTINGS_LENGTH_TAG, 0)
.commit();
}
- private void log(String msg) {
+ private static SharedPreferences getPrefs(Context context) {
+ return context.getSharedPreferences(
+ VM_NUMBERS_SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
+ }
+
+ private static void log(String msg) {
Log.d(LOG_TAG, msg);
}
}