DO NOT MERGE Fix Notification Settings when unblockable app is blocked.

When an app was blocked in the past, don't hide the controls
so the user is able to unblock the app.  After unblocking, the
controls will be hidden the next time settings is visited.

Bug:32557897
Change-Id: I7ab17f647b197162932b131c41bb18cf5c18917d
This commit is contained in:
Geoffrey Pitsch
2016-12-28 12:29:40 -05:00
parent 94dee56f8d
commit db380fa9cb

View File

@@ -155,7 +155,7 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
} }
protected void setupImportancePrefs(boolean notBlockable, boolean notSilenceable, protected void setupImportancePrefs(boolean notBlockable, boolean notSilenceable,
int importance, boolean banned) { int importance, boolean banned) {
if (mShowSlider && !notSilenceable) { if (mShowSlider && !notSilenceable) {
setVisible(mBlock, false); setVisible(mBlock, false);
setVisible(mSilent, false); setVisible(mSilent, false);
@@ -176,10 +176,11 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
}); });
} else { } else {
setVisible(mImportance, false); setVisible(mImportance, false);
if (notBlockable) { // Hide controls that are not settable, unless they are already switched on.
final boolean blocked = (importance == Ranking.IMPORTANCE_NONE || banned);
if (notBlockable && !blocked) {
setVisible(mBlock, false); setVisible(mBlock, false);
} else { } else {
boolean blocked = importance == Ranking.IMPORTANCE_NONE || banned;
mBlock.setChecked(blocked); mBlock.setChecked(blocked);
mBlock.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { mBlock.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override @Override
@@ -193,10 +194,11 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
} }
}); });
} }
if (notSilenceable) { final boolean silenced = (importance == Ranking.IMPORTANCE_LOW);
if (notSilenceable && !silenced) {
setVisible(mSilent, false); setVisible(mSilent, false);
} else { } else {
mSilent.setChecked(importance == Ranking.IMPORTANCE_LOW); mSilent.setChecked(silenced);
mSilent.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { mSilent.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {