summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMalcolm Chen <refuhoo@google.com>2017-05-04 18:42:11 -0700
committerMalcolm Chen <refuhoo@google.com>2017-05-16 11:47:06 -0700
commit67c76f156b706cc493e73c60534e96e2bdc11dc4 (patch)
tree6c036c9d97ff391e4c4c5dbfc124a85d3b2c8456 /src
parent6edb7b4ea5e2c325091fc27c0b6202a2c626ac27 (diff)
downloadandroid_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.java33
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java125
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) {