summaryrefslogtreecommitdiffstats
path: root/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java')
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java495
1 files changed, 399 insertions, 96 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
index c8226025..10cfa09d 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
@@ -17,7 +17,6 @@
package com.android.cellbroadcastreceiver;
import android.content.Context;
-import android.content.res.Resources;
import android.os.Bundle;
import android.os.UserManager;
import android.preference.CheckBoxPreference;
@@ -25,10 +24,20 @@ import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
-import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.provider.Settings;
import android.telephony.TelephonyManager;
+import android.telephony.SubscriptionManager;
+import android.telephony.SubscriptionInfo;
+import android.util.Log;
+import android.view.View;
+import android.widget.TabHost;
+import android.widget.TabHost.OnTabChangeListener;
+import android.widget.TabHost.TabContentFactory;
+import android.widget.TabHost.TabSpec;
+import android.widget.TabWidget;
+import java.util.ArrayList;
+import java.util.List;
/**
* Settings activity for the cell broadcast receiver.
@@ -89,164 +98,458 @@ public class CellBroadcastSettings extends PreferenceActivity {
// Alert reminder interval ("once" = single 2 minute reminder).
public static final String KEY_ALERT_REMINDER_INTERVAL = "alert_reminder_interval";
+ // Default reminder interval.
+ public static final String ALERT_REMINDER_INTERVAL = "0";
+
+ private final static String TAG = "CellBroadcastSettings";
+
+ private TelephonyManager mTelephonyManager;
+ private SubscriptionInfo mSir;
+ private TabHost mTabHost;
+ private TabWidget mTabWidget;
+ private List<SubscriptionInfo> mSelectableSubInfos;
+
+ private CheckBoxPreference mExtremeCheckBox;
+ private CheckBoxPreference mSevereCheckBox;
+ private CheckBoxPreference mAmberCheckBox;
+ private CheckBoxPreference mEmergencyCheckBox;
+ private ListPreference mAlertDuration;
+ private ListPreference mReminderInterval;
+ private CheckBoxPreference mVibrateCheckBox;
+ private CheckBoxPreference mSpeechCheckBox;
+ private CheckBoxPreference mEtwsTestCheckBox;
+ private CheckBoxPreference mChannel50CheckBox;
+ private CheckBoxPreference mCmasCheckBox;
+ private CheckBoxPreference mOptOutCheckBox;
+ private PreferenceCategory mAlertCategory;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE);
-
if (userManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_CELL_BROADCASTS)) {
setContentView(R.layout.cell_broadcast_disallowed_preference_screen);
return;
}
- // Display the fragment as the main content.
- getFragmentManager().beginTransaction().replace(android.R.id.content,
- new CellBroadcastSettingsFragment()).commit();
+ mTelephonyManager = (TelephonyManager) getSystemService(
+ Context.TELEPHONY_SERVICE);
+ mSelectableSubInfos = new ArrayList<SubscriptionInfo>();
+ for (int i = 0; i < mTelephonyManager.getSimCount(); i++) {
+ final SubscriptionInfo sir =
+ findRecordBySlotId(getApplicationContext(), i);
+ if (sir != null) {
+ mSelectableSubInfos.add(sir);
+ }
+ }
+
+ addPreferencesFromResource(R.xml.preferences);
+ mSir = mSelectableSubInfos.size() > 0 ? mSelectableSubInfos.get(0) : null;
+ if (mSelectableSubInfos.size() > 1) {
+ setContentView(com.android.internal.R.layout.common_tab_settings);
+
+ mTabHost = (TabHost) findViewById(android.R.id.tabhost);
+ mTabHost.setup();
+ mTabHost.setOnTabChangedListener(mTabListener);
+ mTabHost.clearAllTabs();
+
+ for (int i = 0; i < mSelectableSubInfos.size(); i++) {
+ mTabHost.addTab(buildTabSpec(String.valueOf(i),
+ String.valueOf(mSelectableSubInfos.get(i).getDisplayName())));
+ }
+ }
+ updatePreferences();
}
- /**
- * New fragment-style implementation of preferences.
- */
- public static class CellBroadcastSettingsFragment extends PreferenceFragment {
+ private void updatePreferences() {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
+ PreferenceScreen prefScreen = getPreferenceScreen();
+ if (prefScreen != null) {
+ prefScreen.removeAll();
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
- PreferenceScreen preferenceScreen = getPreferenceScreen();
+ mExtremeCheckBox = (CheckBoxPreference)
+ findPreference(KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS);
+ mSevereCheckBox = (CheckBoxPreference)
+ findPreference(KEY_ENABLE_CMAS_SEVERE_THREAT_ALERTS);
+ mAmberCheckBox = (CheckBoxPreference)
+ findPreference(KEY_ENABLE_CMAS_AMBER_ALERTS);
+ mEmergencyCheckBox = (CheckBoxPreference)
+ findPreference(KEY_ENABLE_EMERGENCY_ALERTS);
+ mAlertDuration = (ListPreference)
+ findPreference(KEY_ALERT_SOUND_DURATION);
+ mReminderInterval = (ListPreference)
+ findPreference(KEY_ALERT_REMINDER_INTERVAL);
+ mVibrateCheckBox = (CheckBoxPreference)
+ findPreference(KEY_ENABLE_ALERT_VIBRATE);
+ mSpeechCheckBox = (CheckBoxPreference)
+ findPreference(KEY_ENABLE_ALERT_SPEECH);
+ mEtwsTestCheckBox = (CheckBoxPreference)
+ findPreference(KEY_ENABLE_ETWS_TEST_ALERTS);
+ mChannel50CheckBox = (CheckBoxPreference)
+ findPreference(KEY_ENABLE_CHANNEL_50_ALERTS);
+ mCmasCheckBox = (CheckBoxPreference)
+ findPreference(KEY_ENABLE_CMAS_TEST_ALERTS);
+ mOptOutCheckBox = (CheckBoxPreference)
+ findPreference(KEY_SHOW_CMAS_OPT_OUT_DIALOG);
+ mAlertCategory = (PreferenceCategory)
+ findPreference(KEY_CATEGORY_ALERT_SETTINGS);
+
+ if(mSir == null) {
+ mExtremeCheckBox.setEnabled(false);
+ mSevereCheckBox.setEnabled(false);
+ mAmberCheckBox.setEnabled(false);
+ mEmergencyCheckBox.setEnabled(false);
+ mReminderInterval.setEnabled(false);
+ mAlertDuration.setEnabled(false);
+ mVibrateCheckBox.setEnabled(false);
+ mSpeechCheckBox.setEnabled(false);
+ mEtwsTestCheckBox.setEnabled(false);
+ mChannel50CheckBox.setEnabled(false);
+ mCmasCheckBox.setEnabled(false);
+ mOptOutCheckBox.setEnabled(false);
+ return;
+ }
// Handler for settings that require us to reconfigure enabled channels in radio
Preference.OnPreferenceChangeListener startConfigServiceListener =
new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference pref, Object newValue) {
- CellBroadcastReceiver.startConfigService(pref.getContext());
- boolean isExtreme =
- (pref.getKey()).equals(KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS);
- if (isExtreme) {
- boolean isExtremeAlertChecked =
- ((Boolean) newValue).booleanValue();
- CheckBoxPreference severeCheckBox = (CheckBoxPreference)
- findPreference(KEY_ENABLE_CMAS_SEVERE_THREAT_ALERTS);
- if (severeCheckBox != null) {
- severeCheckBox.setEnabled(isExtremeAlertChecked);
- severeCheckBox.setChecked(false);
- }
+ int newVal = (((Boolean) newValue).booleanValue()) ? 1 : 0;
+
+ switch (pref.getKey()) {
+ case KEY_ENABLE_EMERGENCY_ALERTS:
+ SubscriptionManager
+ .setSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_EMERGENCY_ALERT,
+ newVal + "");
+ break;
+ case KEY_ENABLE_CHANNEL_50_ALERTS:
+ SubscriptionManager
+ .setSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_CHANNEL_50_ALERT,
+ newVal + "");
+ break;
+ case KEY_ENABLE_ETWS_TEST_ALERTS:
+ SubscriptionManager
+ .setSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_ETWS_TEST_ALERT,
+ newVal + "");
+ break;
+ case KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS:
+ SubscriptionManager
+ .setSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_EXTREME_THREAT_ALERT,
+ newVal + "");
+ if (newVal == 1) {
+ SubscriptionManager
+ .setSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_SEVERE_THREAT_ALERT,
+ "0");
+ }
+ boolean isExtremeAlertChecked =
+ ((Boolean) newValue).booleanValue();
+
+ if (mSevereCheckBox != null) {
+ mSevereCheckBox.setEnabled(isExtremeAlertChecked);
+ mSevereCheckBox.setChecked(false);
+ }
+ break;
+ case KEY_ENABLE_CMAS_SEVERE_THREAT_ALERTS:
+ SubscriptionManager
+ .setSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_SEVERE_THREAT_ALERT,
+ newVal + "");
+ break;
+ case KEY_ENABLE_CMAS_AMBER_ALERTS:
+ SubscriptionManager
+ .setSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_AMBER_ALERT,
+ newVal + "");
+ break;
+ case KEY_ENABLE_CMAS_TEST_ALERTS:
+ SubscriptionManager
+ .setSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_CMAS_TEST_ALERT,
+ newVal + "");
+ break;
+ default:
+ Log.d(TAG, "Invalid preference changed");
+
}
+
+ CellBroadcastReceiver.startConfigService(pref.getContext(),
+ mSir.getSubscriptionId());
return true;
}
};
// Show extra settings when developer options is enabled in settings.
- boolean enableDevSettings = Settings.Global.getInt(getActivity().getContentResolver(),
+ boolean enableDevSettings = Settings.Global.getInt(getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0;
- Resources res = getResources();
- boolean showEtwsSettings = res.getBoolean(R.bool.show_etws_settings);
-
- // Emergency alert preference category (general and CMAS preferences).
- PreferenceCategory alertCategory = (PreferenceCategory)
- findPreference(KEY_CATEGORY_ALERT_SETTINGS);
+ boolean showEtwsSettings = SubscriptionManager.getResourcesForSubId(
+ getApplicationContext(), mSir.getSubscriptionId())
+ .getBoolean(R.bool.show_etws_settings);
+ String queryReturnVal;
// alert reminder interval
- ListPreference interval = (ListPreference) findPreference(KEY_ALERT_REMINDER_INTERVAL);
- interval.setSummary(interval.getEntry());
- interval.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
- @Override
- public boolean onPreferenceChange(Preference pref, Object newValue) {
- final ListPreference listPref = (ListPreference) pref;
- final int idx = listPref.findIndexOfValue((String) newValue);
- listPref.setSummary(listPref.getEntries()[idx]);
- return true;
- }
- });
+ queryReturnVal = SubscriptionManager.getIntegerSubscriptionProperty(
+ mSir.getSubscriptionId(), SubscriptionManager.CB_ALERT_REMINDER_INTERVAL,
+ Integer.parseInt(ALERT_REMINDER_INTERVAL), this) + "";
+
+ mReminderInterval.setValue(queryReturnVal);
+ mReminderInterval.setSummary(mReminderInterval
+ .getEntries()[mReminderInterval.findIndexOfValue(queryReturnVal)]);
+
+ mReminderInterval.setOnPreferenceChangeListener(
+ new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference pref, Object newValue) {
+ final ListPreference listPref = (ListPreference) pref;
+ final int idx = listPref.findIndexOfValue((String) newValue);
+ listPref.setSummary(listPref.getEntries()[idx]);
+ SubscriptionManager.setSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_ALERT_REMINDER_INTERVAL,
+ (String) newValue);
+ return true;
+ }
+ });
// Show alert settings and ETWS categories for ETWS builds and developer mode.
if (enableDevSettings || showEtwsSettings) {
// enable/disable all alerts
- Preference enablePwsAlerts = findPreference(KEY_ENABLE_EMERGENCY_ALERTS);
- if (enablePwsAlerts != null) {
- enablePwsAlerts.setOnPreferenceChangeListener(startConfigServiceListener);
+ if (mEmergencyCheckBox != null) {
+ if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_EMERGENCY_ALERT, true, this)) {
+ mEmergencyCheckBox.setChecked(true);
+ } else {
+ mEmergencyCheckBox.setChecked(false);
+ }
+ mEmergencyCheckBox.setOnPreferenceChangeListener(startConfigServiceListener);
}
// alert sound duration
- ListPreference duration = (ListPreference) findPreference(KEY_ALERT_SOUND_DURATION);
- duration.setSummary(duration.getEntry());
- duration.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
- @Override
- public boolean onPreferenceChange(Preference pref, Object newValue) {
- final ListPreference listPref = (ListPreference) pref;
- final int idx = listPref.findIndexOfValue((String) newValue);
- listPref.setSummary(listPref.getEntries()[idx]);
- return true;
- }
- });
+ queryReturnVal = SubscriptionManager.getIntegerSubscriptionProperty(
+ mSir.getSubscriptionId(), SubscriptionManager.CB_ALERT_SOUND_DURATION,
+ Integer.parseInt(ALERT_SOUND_DEFAULT_DURATION), this) + "";
+ mAlertDuration.setValue(queryReturnVal);
+ mAlertDuration.setSummary(mAlertDuration
+ .getEntries()[mAlertDuration.findIndexOfValue(queryReturnVal)]);
+ mAlertDuration.setOnPreferenceChangeListener(
+ new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference pref, Object newValue) {
+ final ListPreference listPref = (ListPreference) pref;
+ final int idx = listPref.findIndexOfValue((String) newValue);
+ listPref.setSummary(listPref.getEntries()[idx]);
+ SubscriptionManager.setSubscriptionProperty(
+ mSir.getSubscriptionId(),
+ SubscriptionManager.CB_ALERT_SOUND_DURATION,
+ (String) newValue);
+ return true;
+ }
+ });
} else {
// Remove general emergency alert preference items (not shown for CMAS builds).
- alertCategory.removePreference(findPreference(KEY_ENABLE_EMERGENCY_ALERTS));
- alertCategory.removePreference(findPreference(KEY_ALERT_SOUND_DURATION));
- alertCategory.removePreference(findPreference(KEY_ENABLE_ALERT_SPEECH));
+ mAlertCategory.removePreference(findPreference(KEY_ENABLE_EMERGENCY_ALERTS));
+ mAlertCategory.removePreference(findPreference(KEY_ALERT_SOUND_DURATION));
+ mAlertCategory.removePreference(findPreference(KEY_ENABLE_ALERT_SPEECH));
// Remove ETWS preference category.
- preferenceScreen.removePreference(findPreference(KEY_CATEGORY_ETWS_SETTINGS));
+ prefScreen.removePreference(findPreference(KEY_CATEGORY_ETWS_SETTINGS));
}
- if (!res.getBoolean(R.bool.show_cmas_settings)) {
+ if (!SubscriptionManager.getResourcesForSubId(getApplicationContext(),
+ mSir.getSubscriptionId()).getBoolean(R.bool.show_cmas_settings)) {
// Remove CMAS preference items in emergency alert category.
- alertCategory.removePreference(
+ mAlertCategory.removePreference(
findPreference(KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS));
- alertCategory.removePreference(
+ mAlertCategory.removePreference(
findPreference(KEY_ENABLE_CMAS_SEVERE_THREAT_ALERTS));
- alertCategory.removePreference(findPreference(KEY_ENABLE_CMAS_AMBER_ALERTS));
+ mAlertCategory.removePreference(findPreference(KEY_ENABLE_CMAS_AMBER_ALERTS));
}
- TelephonyManager tm = (TelephonyManager) getActivity().getSystemService(
- Context.TELEPHONY_SERVICE);
-
- boolean enableChannel50Support = res.getBoolean(R.bool.show_brazil_settings) ||
- "br".equals(tm.getSimCountryIso());
+ boolean enableChannel50Support = SubscriptionManager.getResourcesForSubId(
+ getApplicationContext(), mSir.getSubscriptionId()).getBoolean(
+ R.bool.show_brazil_settings)
+ || "br".equals(mTelephonyManager.getSimCountryIso());
if (!enableChannel50Support) {
- preferenceScreen.removePreference(findPreference(KEY_CATEGORY_BRAZIL_SETTINGS));
+ prefScreen.removePreference(findPreference(KEY_CATEGORY_BRAZIL_SETTINGS));
}
if (!enableDevSettings) {
- preferenceScreen.removePreference(findPreference(KEY_CATEGORY_DEV_SETTINGS));
+ prefScreen.removePreference(findPreference(KEY_CATEGORY_DEV_SETTINGS));
}
- Preference enableChannel50Alerts = findPreference(KEY_ENABLE_CHANNEL_50_ALERTS);
- if (enableChannel50Alerts != null) {
- enableChannel50Alerts.setOnPreferenceChangeListener(startConfigServiceListener);
+ if (mSpeechCheckBox != null) {
+ if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_ALERT_SPEECH, true, this)) {
+ mSpeechCheckBox.setChecked(true);
+ } else {
+ mSpeechCheckBox.setChecked(false);
+ }
+ mSpeechCheckBox.setOnPreferenceChangeListener(
+ new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference pref, Object newValue) {
+ int newVal = (((Boolean) newValue).booleanValue()) ? 1 : 0;
+ SubscriptionManager.setSubscriptionProperty(
+ mSir.getSubscriptionId(),
+ SubscriptionManager.CB_ALERT_SPEECH, newVal + "");
+ return true;
+ }
+ });
}
- Preference enableEtwsAlerts = findPreference(KEY_ENABLE_ETWS_TEST_ALERTS);
- if (enableEtwsAlerts != null) {
- enableEtwsAlerts.setOnPreferenceChangeListener(startConfigServiceListener);
+
+ if (mVibrateCheckBox != null) {
+ if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_ALERT_VIBRATE, true, this)) {
+ mVibrateCheckBox.setChecked(true);
+ } else {
+ mVibrateCheckBox.setChecked(false);
+ }
+ mVibrateCheckBox.setOnPreferenceChangeListener(
+ new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference pref, Object newValue) {
+ int newVal = (((Boolean) newValue).booleanValue()) ? 1 : 0;
+ SubscriptionManager.setSubscriptionProperty(
+ mSir.getSubscriptionId(),
+ SubscriptionManager.CB_ALERT_VIBRATE, newVal + "");
+ return true;
+ }
+ });
}
- Preference enableCmasExtremeAlerts =
- findPreference(KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS);
- if (enableCmasExtremeAlerts != null) {
- enableCmasExtremeAlerts.setOnPreferenceChangeListener(startConfigServiceListener);
+
+ if (mOptOutCheckBox != null) {
+ if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_OPT_OUT_DIALOG, true, this)) {
+ mOptOutCheckBox.setChecked(true);
+ } else {
+ mOptOutCheckBox.setChecked(false);
+ }
+ mOptOutCheckBox.setOnPreferenceChangeListener(
+ new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference pref, Object newValue) {
+ int newVal = (((Boolean) newValue).booleanValue()) ? 1 : 0;
+ SubscriptionManager.setSubscriptionProperty(
+ mSir.getSubscriptionId(),
+ SubscriptionManager.CB_OPT_OUT_DIALOG, newVal + "");
+ return true;
+ }
+ });
}
- Preference enableCmasSevereAlerts =
- findPreference(KEY_ENABLE_CMAS_SEVERE_THREAT_ALERTS);
- if (enableCmasSevereAlerts != null) {
- enableCmasSevereAlerts.setOnPreferenceChangeListener(startConfigServiceListener);
- if (enableCmasExtremeAlerts != null) {
+
+ if (mChannel50CheckBox != null) {
+ if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_CHANNEL_50_ALERT, true, this)) {
+ mChannel50CheckBox.setChecked(true);
+ } else {
+ mChannel50CheckBox.setChecked(false);
+ }
+ mChannel50CheckBox.setOnPreferenceChangeListener(startConfigServiceListener);
+ }
+
+ if (mEtwsTestCheckBox != null) {
+ if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_ETWS_TEST_ALERT, false, this)) {
+ mEtwsTestCheckBox.setChecked(true);
+ } else {
+ mEtwsTestCheckBox.setChecked(false);
+ }
+ mEtwsTestCheckBox.setOnPreferenceChangeListener(startConfigServiceListener);
+ }
+
+ if (mExtremeCheckBox != null) {
+ if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_EXTREME_THREAT_ALERT, true, this)) {
+ mExtremeCheckBox.setChecked(true);
+ } else {
+ mExtremeCheckBox.setChecked(false);
+ }
+ mExtremeCheckBox.setOnPreferenceChangeListener(startConfigServiceListener);
+ }
+
+ if (mSevereCheckBox != null) {
+ if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_SEVERE_THREAT_ALERT, true, this)) {
+ mSevereCheckBox.setChecked(true);
+ } else {
+ mSevereCheckBox.setChecked(false);
+ }
+ mSevereCheckBox.setOnPreferenceChangeListener(startConfigServiceListener);
+ if (mExtremeCheckBox != null) {
boolean isExtremeAlertChecked =
- ((CheckBoxPreference)enableCmasExtremeAlerts).isChecked();
- enableCmasSevereAlerts.setEnabled(isExtremeAlertChecked);
+ ((CheckBoxPreference) mExtremeCheckBox).isChecked();
+ mSevereCheckBox.setEnabled(isExtremeAlertChecked);
}
}
- Preference enableCmasAmberAlerts = findPreference(KEY_ENABLE_CMAS_AMBER_ALERTS);
- if (enableCmasAmberAlerts != null) {
- enableCmasAmberAlerts.setOnPreferenceChangeListener(startConfigServiceListener);
+
+ if (mAmberCheckBox != null) {
+ if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_AMBER_ALERT, true, this)) {
+ mAmberCheckBox.setChecked(true);
+ } else {
+ mAmberCheckBox.setChecked(false);
+ }
+ mAmberCheckBox.setOnPreferenceChangeListener(startConfigServiceListener);
}
- Preference enableCmasTestAlerts = findPreference(KEY_ENABLE_CMAS_TEST_ALERTS);
- if (enableCmasTestAlerts != null) {
- enableCmasTestAlerts.setOnPreferenceChangeListener(startConfigServiceListener);
+
+ if (mCmasCheckBox != null) {
+ if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
+ SubscriptionManager.CB_CMAS_TEST_ALERT, false, this)) {
+ mCmasCheckBox.setChecked(true);
+ } else {
+ mCmasCheckBox.setChecked(false);
+ }
+ mCmasCheckBox.setOnPreferenceChangeListener(startConfigServiceListener);
}
}
+
+ }
+
+ private OnTabChangeListener mTabListener = new OnTabChangeListener() {
+ @Override
+ public void onTabChanged(String tabId) {
+ final int slotId = Integer.parseInt(tabId);
+ mSir = mSelectableSubInfos.get(slotId);
+ updatePreferences();
+ }
+ };
+
+ private TabContentFactory mEmptyTabContent = new TabContentFactory() {
+ @Override
+ public View createTabContent(String tag) {
+ return new View(mTabHost.getContext());
+ }
+ };
+
+ private TabSpec buildTabSpec(String tag, String title) {
+ return mTabHost.newTabSpec(tag).setIndicator(title).setContent(
+ mEmptyTabContent);
+
}
+
+ public SubscriptionInfo findRecordBySlotId(Context context, final int slotId) {
+ final List<SubscriptionInfo> subInfoList =
+ SubscriptionManager.from(context).getActiveSubscriptionInfoList();
+ if (subInfoList != null) {
+ final int subInfoLength = subInfoList.size();
+
+ for (int i = 0; i < subInfoLength; ++i) {
+ final SubscriptionInfo sir = subInfoList.get(i);
+ if (sir.getSimSlotIndex() == slotId) {
+ return sir;
+ }
+ }
+ }
+
+ return null;
+ }
+
}