Merge "Properly show/hide advanced settings" into oc-mr1-dev

This commit is contained in:
TreeHugger Robot
2017-09-06 18:26:13 +00:00
committed by Android (Google) Code Review
3 changed files with 19 additions and 8 deletions

View File

@@ -38,6 +38,7 @@
settings:useAdditionalSummary="true" /> settings:useAdditionalSummary="true" />
<PreferenceCategory <PreferenceCategory
android:key="advanced"
android:title="@string/advanced_apps"> android:title="@string/advanced_apps">
<!-- Visibility Override --> <!-- Visibility Override -->

View File

@@ -26,6 +26,7 @@ import android.os.Bundle;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.provider.Settings; import android.provider.Settings;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceGroup;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.BidiFormatter; import android.text.BidiFormatter;
import android.text.SpannableStringBuilder; import android.text.SpannableStringBuilder;
@@ -57,6 +58,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
private static final String KEY_VIBRATE = "vibrate"; private static final String KEY_VIBRATE = "vibrate";
private static final String KEY_RINGTONE = "ringtone"; private static final String KEY_RINGTONE = "ringtone";
private static final String KEY_IMPORTANCE = "importance"; private static final String KEY_IMPORTANCE = "importance";
private static final String KEY_ADVANCED = "advanced";
private Preference mImportance; private Preference mImportance;
private RestrictedSwitchPreference mLights; private RestrictedSwitchPreference mLights;
@@ -65,6 +67,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
private FooterPreference mFooter; private FooterPreference mFooter;
private NotificationChannelGroup mChannelGroup; private NotificationChannelGroup mChannelGroup;
private EntityHeaderController mHeaderPref; private EntityHeaderController mHeaderPref;
private PreferenceGroup mAdvanced;
@Override @Override
public int getMetricsCategory() { public int getMetricsCategory() {
@@ -129,6 +132,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
setupVibrate(); setupVibrate();
setupRingtone(); setupRingtone();
setupImportance(); setupImportance();
mAdvanced = (PreferenceGroup) findPreference(KEY_ADVANCED);
} }
private void addHeaderPref() { private void addHeaderPref() {
@@ -373,18 +377,19 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
if (mShowLegacyChannelConfig) { if (mShowLegacyChannelConfig) {
setVisible(mImportanceToggle, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN)); setVisible(mImportanceToggle, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN));
} else { } else {
setVisible(mAdvanced, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN));
setVisible(mImportance, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN)); setVisible(mImportance, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN));
setVisible(mLights, checkCanBeVisible( setVisible(mAdvanced, mLights, checkCanBeVisible(
NotificationManager.IMPORTANCE_DEFAULT) && canPulseLight()); NotificationManager.IMPORTANCE_DEFAULT) && canPulseLight());
setVisible(mVibrate, checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT)); setVisible(mVibrate, checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT));
setVisible(mRingtone, checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT)); setVisible(mRingtone, checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT));
} }
setVisible(mBadge, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN)); setVisible(mAdvanced, mBadge, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN));
setVisible(mPriority, checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT) setVisible(mAdvanced, mPriority, checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT)
|| (checkCanBeVisible(NotificationManager.IMPORTANCE_LOW) || (checkCanBeVisible(NotificationManager.IMPORTANCE_LOW)
&& mDndVisualEffectsSuppressed)); && mDndVisualEffectsSuppressed));
setVisible(mVisibilityOverride, checkCanBeVisible(NotificationManager.IMPORTANCE_LOW) setVisible(mAdvanced, mVisibilityOverride, isLockScreenSecure()
&& isLockScreenSecure()); &&checkCanBeVisible(NotificationManager.IMPORTANCE_LOW));
setVisible(mBlockedDesc, mChannel.getImportance() == IMPORTANCE_NONE); setVisible(mBlockedDesc, mChannel.getImportance() == IMPORTANCE_NONE);
if (mAppLink != null) { if (mAppLink != null) {
setVisible(mAppLink, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN)); setVisible(mAppLink, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN));

View File

@@ -53,6 +53,7 @@ import android.provider.Settings;
import android.service.notification.NotificationListenerService; import android.service.notification.NotificationListenerService;
import android.support.v7.preference.DropDownPreference; import android.support.v7.preference.DropDownPreference;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceGroup;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.Log; import android.util.Log;
@@ -195,12 +196,16 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
} }
protected void setVisible(Preference p, boolean visible) { protected void setVisible(Preference p, boolean visible) {
final boolean isVisible = getPreferenceScreen().findPreference(p.getKey()) != null; setVisible(getPreferenceScreen(), p, visible);
}
protected void setVisible(PreferenceGroup parent, Preference p, boolean visible) {
final boolean isVisible = parent.findPreference(p.getKey()) != null;
if (isVisible == visible) return; if (isVisible == visible) return;
if (visible) { if (visible) {
getPreferenceScreen().addPreference(p); parent.addPreference(p);
} else { } else {
getPreferenceScreen().removePreference(p); parent.removePreference(p);
} }
} }