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);
     }
 }