diff options
author | Malcolm Chen <refuhoo@google.com> | 2017-05-04 18:42:11 -0700 |
---|---|---|
committer | Malcolm Chen <refuhoo@google.com> | 2017-05-16 11:47:06 -0700 |
commit | 67c76f156b706cc493e73c60534e96e2bdc11dc4 (patch) | |
tree | 6c036c9d97ff391e4c4c5dbfc124a85d3b2c8456 /src | |
parent | 6edb7b4ea5e2c325091fc27c0b6202a2c626ac27 (diff) | |
download | android_packages_apps_CellBroadcastReceiver-67c76f156b706cc493e73c60534e96e2bdc11dc4.tar.gz android_packages_apps_CellBroadcastReceiver-67c76f156b706cc493e73c60534e96e2bdc11dc4.tar.bz2 android_packages_apps_CellBroadcastReceiver-67c76f156b706cc493e73c60534e96e2bdc11dc4.zip |
Clean up / refactor Cell Broadcast settings view.
Make CellBroadcast setting view's styles and themes match what
Settings app has. Icon space reserved, divider removed between
preferences.
Re-arranged categories and preferences.
Re-wrote some of texts: title, summary.
Added preference linked to alert history activity.
Fix: 37863851
Test: Manual test
Change-Id: I92a77468ba8551521d2f65bac966c1c313c62268
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/cellbroadcastreceiver/CellBroadcastSearchIndexableProvider.java | 33 | ||||
-rw-r--r-- | src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java | 125 |
2 files changed, 98 insertions, 60 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSearchIndexableProvider.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSearchIndexableProvider.java index f2fafd2d..b5dd8f2c 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastSearchIndexableProvider.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSearchIndexableProvider.java @@ -16,6 +16,18 @@ package com.android.cellbroadcastreceiver; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_CLASS_NAME; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_ICON_RESID; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_INTENT_ACTION; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_RANK; +import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_RESID; +import static android.provider.SearchIndexablesContract.INDEXABLES_RAW_COLUMNS; +import static android.provider.SearchIndexablesContract.INDEXABLES_XML_RES_COLUMNS; +import static android.provider.SearchIndexablesContract.NON_INDEXABLES_KEYS_COLUMNS; + import android.content.Context; import android.content.res.Resources; import android.database.Cursor; @@ -26,19 +38,6 @@ import android.provider.Settings; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_RANK; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_RESID; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_CLASS_NAME; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_ICON_RESID; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_INTENT_ACTION; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_INTENT_TARGET_PACKAGE; -import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_INTENT_TARGET_CLASS; - -import static android.provider.SearchIndexablesContract.INDEXABLES_RAW_COLUMNS; -import static android.provider.SearchIndexablesContract.INDEXABLES_XML_RES_COLUMNS; -import static android.provider.SearchIndexablesContract.NON_INDEXABLES_KEYS_COLUMNS; - public class CellBroadcastSearchIndexableProvider extends SearchIndexablesProvider { private static final String TAG = "CellBroadcastSearchIndexableProvider"; @@ -85,12 +84,10 @@ public class CellBroadcastSearchIndexableProvider extends SearchIndexablesProvid Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; Resources res = getContext().getResources(); - boolean showEtwsSettings = res.getBoolean(R.bool.show_etws_settings); - Object[] ref; // Show alert settings and ETWS categories for ETWS builds and developer mode. - if (!enableDevSettings && !showEtwsSettings) { + if (!enableDevSettings) { // Remove general emergency alert preference items (not shown for CMAS builds). ref = new Object[1]; ref[COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE] = @@ -105,7 +102,7 @@ public class CellBroadcastSearchIndexableProvider extends SearchIndexablesProvid // Remove ETWS preference category. ref = new Object[1]; ref[COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE] = - CellBroadcastSettings.KEY_CATEGORY_ETWS_SETTINGS; + CellBroadcastSettings.KEY_ENABLE_ETWS_TEST_ALERTS; cursor.addRow(ref); } @@ -141,7 +138,7 @@ public class CellBroadcastSearchIndexableProvider extends SearchIndexablesProvid if (!enableChannel50Support) { ref = new Object[1]; ref[COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE] = - CellBroadcastSettings.KEY_CATEGORY_BRAZIL_SETTINGS; + CellBroadcastSettings.KEY_ENABLE_CHANNEL_50_ALERTS; cursor.addRow(ref); } diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java index b8bb84f9..768d9599 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java @@ -16,20 +16,21 @@ package com.android.cellbroadcastreceiver; +import android.app.Activity; import android.app.backup.BackupManager; import android.content.Context; +import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; import android.os.PersistableBundle; import android.os.UserManager; -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.preference.TwoStatePreference; import android.provider.Settings; +import android.support.v14.preference.PreferenceFragment; +import android.support.v7.preference.ListPreference; +import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceCategory; +import android.support.v7.preference.PreferenceScreen; +import android.support.v7.preference.TwoStatePreference; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -38,7 +39,7 @@ import android.util.Log; /** * Settings activity for the cell broadcast receiver. */ -public class CellBroadcastSettings extends PreferenceActivity { +public class CellBroadcastSettings extends Activity { private static final String TAG = "CellBroadcastSettings"; @@ -57,10 +58,10 @@ public class CellBroadcastSettings extends PreferenceActivity { public static final String KEY_USE_FULL_VOLUME = "use_full_volume"; // Preference category for emergency alert and CMAS settings. - public static final String KEY_CATEGORY_ALERT_SETTINGS = "category_alert_settings"; + public static final String KEY_CATEGORY_EMERGENCY_ALERTS = "category_emergency_alerts"; - // Preference category for ETWS related settings. - public static final String KEY_CATEGORY_ETWS_SETTINGS = "category_etws_settings"; + // Preference category for alert preferences. + public static final String KEY_CATEGORY_ALERT_PREFERENCES = "category_alert_preferences"; // Whether to display CMAS extreme threat notifications (default is enabled). public static final String KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS = @@ -82,9 +83,6 @@ public class CellBroadcastSettings extends PreferenceActivity { // Whether to display CMAS monthly test messages (default is disabled). public static final String KEY_ENABLE_CMAS_TEST_ALERTS = "enable_cmas_test_alerts"; - // Preference category for Brazil specific settings. - public static final String KEY_CATEGORY_BRAZIL_SETTINGS = "category_brazil_settings"; - // Preference key for whether to enable channel 50 notifications // Enabled by default for phones sold in Brazil, otherwise this setting may be hidden. public static final String KEY_ENABLE_CHANNEL_50_ALERTS = "enable_channel_50_alerts"; @@ -95,6 +93,9 @@ public class CellBroadcastSettings extends PreferenceActivity { // Alert reminder interval ("once" = single 2 minute reminder). public static final String KEY_ALERT_REMINDER_INTERVAL = "alert_reminder_interval"; + // Preference key for emergency alerts history + public static final String KEY_EMERGENCY_ALERT_HISTORY = "emergency_alert_history"; + // Brazil country code private static final String COUNTRY_BRAZIL = "br"; @@ -128,14 +129,14 @@ public class CellBroadcastSettings extends PreferenceActivity { private TwoStatePreference mEtwsTestCheckBox; private TwoStatePreference mChannel50CheckBox; private TwoStatePreference mCmasTestCheckBox; + private Preference mAlertHistory; private PreferenceCategory mAlertCategory; - private PreferenceCategory mETWSSettingCategory; + private PreferenceCategory mAlertPreferencesCategory; + private PreferenceCategory mDevSettingCategory; private boolean mDisableSevereWhenExtremeDisabled = true; @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); @@ -161,10 +162,13 @@ public class CellBroadcastSettings extends PreferenceActivity { findPreference(KEY_ENABLE_CHANNEL_50_ALERTS); mCmasTestCheckBox = (TwoStatePreference) findPreference(KEY_ENABLE_CMAS_TEST_ALERTS); + mAlertHistory = findPreference(KEY_EMERGENCY_ALERT_HISTORY); mAlertCategory = (PreferenceCategory) - findPreference(KEY_CATEGORY_ALERT_SETTINGS); - mETWSSettingCategory = (PreferenceCategory) - findPreference(KEY_CATEGORY_ETWS_SETTINGS); + findPreference(KEY_CATEGORY_EMERGENCY_ALERTS); + mAlertPreferencesCategory = (PreferenceCategory) + findPreference(KEY_CATEGORY_ALERT_PREFERENCES); + mDevSettingCategory = (PreferenceCategory) + findPreference(KEY_CATEGORY_DEV_SETTINGS); mDisableSevereWhenExtremeDisabled = isFeatureEnabled(getContext(), CarrierConfigManager.KEY_DISABLE_SEVERE_WHEN_EXTREME_DISABLED_BOOL, true); @@ -186,6 +190,11 @@ public class CellBroadcastSettings extends PreferenceActivity { } } + if (pref.getKey().equals(KEY_ENABLE_EMERGENCY_ALERTS)) { + boolean isEnableAlerts = (Boolean) newValue; + setAlertsEnabled(isEnableAlerts); + } + // Notify backup manager a backup pass is needed. new BackupManager(getContext()).dataChanged(); return true; @@ -197,7 +206,6 @@ public class CellBroadcastSettings extends PreferenceActivity { Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; Resources res = getResources(); - boolean showEtwsSettings = res.getBoolean(R.bool.show_etws_settings); initReminderIntervalList(); @@ -207,35 +215,32 @@ public class CellBroadcastSettings extends PreferenceActivity { boolean emergencyAlertOnOffOptionEnabled = isFeatureEnabled(getContext(), CarrierConfigManager.KEY_ALWAYS_SHOW_EMERGENCY_ALERT_ONOFF_BOOL, false); - if (enableDevSettings || showEtwsSettings || emergencyAlertOnOffOptionEnabled) { + if (enableDevSettings || emergencyAlertOnOffOptionEnabled) { // enable/disable all alerts except CMAS presidential alerts. if (mEmergencyCheckBox != null) { mEmergencyCheckBox.setOnPreferenceChangeListener(startConfigServiceListener); } + // If allow alerts are disabled, we turn all sub-alerts off. If it's enabled, we + // leave them as they are. + if (!mEmergencyCheckBox.isChecked()) { + setAlertsEnabled(false); + } } else { mAlertCategory.removePreference(mEmergencyCheckBox); } // Show alert settings and ETWS categories for ETWS builds and developer mode. - if (enableDevSettings || showEtwsSettings) { - + if (enableDevSettings) { if (forceDisableEtwsCmasTest) { - // Remove ETWS test preference. - preferenceScreen.removePreference(mETWSSettingCategory); - - PreferenceCategory devSettingCategory = - (PreferenceCategory) findPreference(KEY_CATEGORY_DEV_SETTINGS); - - // Remove CMAS test preference. - if (devSettingCategory != null) { - devSettingCategory.removePreference(mCmasTestCheckBox); + if (mDevSettingCategory != null) { + // Remove ETWS test preference. + mDevSettingCategory.removePreference(mEtwsTestCheckBox); + // Remove CMAS test preference. + mDevSettingCategory.removePreference(mCmasTestCheckBox); } } } else { - mAlertCategory.removePreference(mSpeechCheckBox); - mAlertCategory.removePreference(mFullVolumeCheckBox); - // Remove ETWS test preference category. - preferenceScreen.removePreference(mETWSSettingCategory); + preferenceScreen.removePreference(mDevSettingCategory); } if (!res.getBoolean(R.bool.show_cmas_settings)) { @@ -265,10 +270,7 @@ public class CellBroadcastSettings extends PreferenceActivity { } if (!enableChannel50Support) { - preferenceScreen.removePreference(findPreference(KEY_CATEGORY_BRAZIL_SETTINGS)); - } - if (!enableDevSettings) { - preferenceScreen.removePreference(findPreference(KEY_CATEGORY_DEV_SETTINGS)); + mAlertPreferencesCategory.removePreference(mChannel50CheckBox); } if (mChannel50CheckBox != null) { @@ -295,6 +297,19 @@ public class CellBroadcastSettings extends PreferenceActivity { if (mCmasTestCheckBox != null) { mCmasTestCheckBox.setOnPreferenceChangeListener(startConfigServiceListener); } + + if (mAlertHistory != null) { + mAlertHistory.setOnPreferenceClickListener( + new Preference.OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(final Preference preference) { + final Intent intent = new Intent(getContext(), + CellBroadcastListActivity.class); + startActivity(intent); + return true; + } + }); + } } private void initReminderIntervalList() { @@ -330,6 +345,32 @@ public class CellBroadcastSettings extends PreferenceActivity { } }); } + + + private void setAlertsEnabled(boolean alertsEnabled) { + if (mSevereCheckBox != null) { + mSevereCheckBox.setEnabled(alertsEnabled); + mSevereCheckBox.setChecked(alertsEnabled); + } + if (mExtremeCheckBox != null) { + mExtremeCheckBox.setEnabled(alertsEnabled); + mExtremeCheckBox.setChecked(alertsEnabled); + } + if (mAmberCheckBox != null) { + mAmberCheckBox.setEnabled(alertsEnabled); + mAmberCheckBox.setChecked(alertsEnabled); + } + if (mChannel50CheckBox != null) { + mChannel50CheckBox.setEnabled(alertsEnabled); + mChannel50CheckBox.setChecked(alertsEnabled); + } + if (mAlertPreferencesCategory != null) { + mAlertPreferencesCategory.setEnabled(alertsEnabled); + } + if (mDevSettingCategory != null) { + mDevSettingCategory.setEnabled(alertsEnabled); + } + } } public static boolean isFeatureEnabled(Context context, String feature, boolean defaultValue) { |