summaryrefslogtreecommitdiffstats
path: root/src/com/android/messaging/util/BugleSubscriptionPrefs.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/messaging/util/BugleSubscriptionPrefs.java')
-rw-r--r--src/com/android/messaging/util/BugleSubscriptionPrefs.java95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/com/android/messaging/util/BugleSubscriptionPrefs.java b/src/com/android/messaging/util/BugleSubscriptionPrefs.java
new file mode 100644
index 0000000..039712a
--- /dev/null
+++ b/src/com/android/messaging/util/BugleSubscriptionPrefs.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.messaging.util;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.text.TextUtils;
+
+import com.android.messaging.Factory;
+import com.android.messaging.R;
+
+/**
+ * Provides interface to access per-subscription shared preferences. We have one instance of
+ * this per active subscription.
+ */
+public class BugleSubscriptionPrefs extends BuglePrefsImpl {
+ private final int mSubId;
+
+ public BugleSubscriptionPrefs(final Context context, final int subId) {
+ super(context);
+ mSubId = subId;
+ }
+
+ @Override
+ public String getSharedPreferencesName() {
+ return SHARED_PREFERENCES_PER_SUBSCRIPTION_PREFIX + String.valueOf(mSubId);
+ }
+
+ @Override
+ protected void validateKey(String key) {
+ super.validateKey(key);
+ // Callers should only access per-subscription preferences from this class
+ Assert.isTrue(key.startsWith(SHARED_PREFERENCES_PER_SUBSCRIPTION_PREFIX));
+ }
+
+ @Override
+ public void onUpgrade(final int oldVersion, final int newVersion) {
+ switch (oldVersion) {
+ case BuglePrefs.NO_SHARED_PREFERENCES_VERSION:
+ // Upgrade to version 1. Adding per-subscription shared prefs.
+ // Migrate values from the application-wide settings.
+ migratePrefBooleanInternal(BuglePrefs.getApplicationPrefs(), "delivery_reports",
+ R.string.delivery_reports_pref_key, R.bool.delivery_reports_pref_default);
+ migratePrefBooleanInternal(BuglePrefs.getApplicationPrefs(), "auto_retrieve_mms",
+ R.string.auto_retrieve_mms_pref_key, R.bool.auto_retrieve_mms_pref_default);
+ migratePrefBooleanInternal(BuglePrefs.getApplicationPrefs(),
+ "auto_retrieve_mms_when_roaming",
+ R.string.auto_retrieve_mms_when_roaming_pref_key,
+ R.bool.auto_retrieve_mms_when_roaming_pref_default);
+ migratePrefBooleanInternal(BuglePrefs.getApplicationPrefs(), "group_messaging",
+ R.string.group_mms_pref_key, R.bool.group_mms_pref_default);
+
+ if (PhoneUtils.getDefault().getActiveSubscriptionCount() == 1) {
+ migratePrefStringInternal(BuglePrefs.getApplicationPrefs(), "mms_phone_number",
+ R.string.mms_phone_number_pref_key, null);
+ }
+ }
+ }
+
+ private void migratePrefBooleanInternal(final BuglePrefs oldPrefs, final String oldKey,
+ final int newKeyResId, final int defaultValueResId) {
+ final Resources resources = Factory.get().getApplicationContext().getResources();
+ final boolean defaultValue = resources.getBoolean(defaultValueResId);
+ final boolean oldValue = oldPrefs.getBoolean(oldKey, defaultValue);
+
+ // Only migrate pref value if it's different than the default.
+ if (oldValue != defaultValue) {
+ putBoolean(resources.getString(newKeyResId), oldValue);
+ }
+ }
+
+ private void migratePrefStringInternal(final BuglePrefs oldPrefs, final String oldKey,
+ final int newKeyResId, final String defaultValue) {
+ final Resources resources = Factory.get().getApplicationContext().getResources();
+ final String oldValue = oldPrefs.getString(oldKey, defaultValue);
+
+ // Only migrate pref value if it's different than the default.
+ if (!TextUtils.equals(oldValue, defaultValue)) {
+ putString(resources.getString(newKeyResId), oldValue);
+ }
+ }
+}