diff --git a/res/layout/redaction_interstitial.xml b/res/layout/redaction_interstitial.xml index 0c4273f5ab3..ec0c249c82a 100644 --- a/res/layout/redaction_interstitial.xml +++ b/res/layout/redaction_interstitial.xml @@ -65,13 +65,4 @@ - - \ No newline at end of file diff --git a/res/layout/setup_redaction_interstitial.xml b/res/layout/setup_redaction_interstitial.xml index 1b96d202de4..e99756ae099 100644 --- a/res/layout/setup_redaction_interstitial.xml +++ b/res/layout/setup_redaction_interstitial.xml @@ -71,16 +71,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/lock_screen_notifications_summary_disable" /> - - - diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml index 3574aed8ff0..8778abb97de 100644 --- a/res/xml/configure_notification_settings.xml +++ b/res/xml/configure_notification_settings.xml @@ -25,7 +25,7 @@ android:title="@string/notification_pulse_title" /> - diff --git a/res/xml/configure_notification_settings_profile.xml b/res/xml/configure_notification_settings_profile.xml index 647ac9d4e0a..301f3c0eda2 100644 --- a/res/xml/configure_notification_settings_profile.xml +++ b/res/xml/configure_notification_settings_profile.xml @@ -21,7 +21,7 @@ - diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java index 89aebf9b724..1bb55309954 100644 --- a/src/com/android/settings/notification/ConfigureNotificationSettings.java +++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java @@ -57,8 +57,8 @@ public class ConfigureNotificationSettings extends SettingsPreferenceFragment { private Context mContext; private TwoStatePreference mNotificationPulse; - private NotificationLockscreenPreference mLockscreen; - private NotificationLockscreenPreference mLockscreenProfile; + private RestrictedDropDownPreference mLockscreen; + private RestrictedDropDownPreference mLockscreenProfile; private boolean mSecure; private boolean mSecureProfile; private int mLockscreenSelectedValue; @@ -148,7 +148,7 @@ public class ConfigureNotificationSettings extends SettingsPreferenceFragment { } private void initLockscreenNotifications() { - mLockscreen = (NotificationLockscreenPreference) getPreferenceScreen().findPreference( + mLockscreen = (RestrictedDropDownPreference) getPreferenceScreen().findPreference( KEY_LOCK_SCREEN_NOTIFICATIONS); if (mLockscreen == null) { Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_NOTIFICATIONS); @@ -178,9 +178,6 @@ public class ConfigureNotificationSettings extends SettingsPreferenceFragment { KEYGUARD_DISABLE_SECURE_NOTIFICATIONS); } - mLockscreen.setRemoteInputRestricted(RestrictedLockUtils.checkIfKeyguardFeaturesDisabled( - mContext, DevicePolicyManager.KEYGUARD_DISABLE_REMOTE_INPUT, UserHandle.myUserId())); - mLockscreen.setEntries(entries.toArray(new CharSequence[entries.size()])); mLockscreen.setEntryValues(values.toArray(new CharSequence[values.size()])); updateLockscreenNotifications(); @@ -211,13 +208,12 @@ public class ConfigureNotificationSettings extends SettingsPreferenceFragment { // === Lockscreen (public / private) notifications === private void initLockscreenNotificationsForProfile() { - mLockscreenProfile = (NotificationLockscreenPreference) getPreferenceScreen() + mLockscreenProfile = (RestrictedDropDownPreference) getPreferenceScreen() .findPreference(KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS); if (mLockscreenProfile == null) { Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS); return; } - mLockscreenProfile.setUserId(mProfileChallengeUserId); ArrayList entries = new ArrayList<>(); ArrayList values = new ArrayList<>(); entries.add(getString(R.string.lock_screen_notifications_summary_disable_profile)); @@ -243,14 +239,14 @@ public class ConfigureNotificationSettings extends SettingsPreferenceFragment { KEYGUARD_DISABLE_SECURE_NOTIFICATIONS); } - mLockscreen.setRemoteInputRestricted(RestrictedLockUtils.checkIfKeyguardFeaturesDisabled( - mContext, DevicePolicyManager.KEYGUARD_DISABLE_REMOTE_INPUT, - mProfileChallengeUserId)); + mLockscreenProfile.setOnPreClickListener( + (Preference p) -> Utils.startQuietModeDialogIfNecessary(mContext, + UserManager.get(mContext), + mProfileChallengeUserId) + ); mLockscreenProfile.setEntries(entries.toArray(new CharSequence[entries.size()])); mLockscreenProfile.setEntryValues(values.toArray(new CharSequence[values.size()])); - // Work profile does not support this settings as we do not have a policy to enforce it yet - mLockscreenProfile.setRemoteInputCheckBoxEnabled(false); updateLockscreenNotificationsForProfile(); if (mLockscreenProfile.getEntries().length > 1) { mLockscreenProfile.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @@ -284,15 +280,18 @@ public class ConfigureNotificationSettings extends SettingsPreferenceFragment { CharSequence entryValue, int keyguardNotificationFeatures) { EnforcedAdmin admin = RestrictedLockUtils.checkIfKeyguardFeaturesDisabled( mContext, keyguardNotificationFeatures, UserHandle.myUserId()); - if (admin != null) { - RestrictedItem item = new RestrictedItem(entry, entryValue, admin); + if (admin != null && mLockscreen != null) { + RestrictedDropDownPreference.RestrictedItem item = + new RestrictedDropDownPreference.RestrictedItem(entry, entryValue, admin); mLockscreen.addRestrictedItem(item); } if (mProfileChallengeUserId != UserHandle.USER_NULL) { EnforcedAdmin profileAdmin = RestrictedLockUtils.checkIfKeyguardFeaturesDisabled( mContext, keyguardNotificationFeatures, mProfileChallengeUserId); - if (profileAdmin != null) { - RestrictedItem item = new RestrictedItem(entry, entryValue, profileAdmin); + if (profileAdmin != null && mLockscreenProfile != null) { + RestrictedDropDownPreference.RestrictedItem item = + new RestrictedDropDownPreference.RestrictedItem( + entry, entryValue, profileAdmin); mLockscreenProfile.addRestrictedItem(item); } } diff --git a/src/com/android/settings/notification/RedactionInterstitial.java b/src/com/android/settings/notification/RedactionInterstitial.java index 84ae35de401..4aa5ec8c5c4 100644 --- a/src/com/android/settings/notification/RedactionInterstitial.java +++ b/src/com/android/settings/notification/RedactionInterstitial.java @@ -78,12 +78,11 @@ public class RedactionInterstitial extends SettingsActivity { } public static class RedactionInterstitialFragment extends SettingsPreferenceFragment - implements RadioGroup.OnCheckedChangeListener, CompoundButton.OnCheckedChangeListener { + implements RadioGroup.OnCheckedChangeListener { private RadioGroup mRadioGroup; private RestrictedRadioButton mShowAllButton; private RestrictedRadioButton mRedactSensitiveButton; - private RestrictedCheckBox mRemoteInputCheckbox; private int mUserId; @Override @@ -104,9 +103,6 @@ public class RedactionInterstitial extends SettingsActivity { mShowAllButton = (RestrictedRadioButton) view.findViewById(R.id.show_all); mRedactSensitiveButton = (RestrictedRadioButton) view.findViewById(R.id.redact_sensitive); - mRemoteInputCheckbox = - (RestrictedCheckBox) view.findViewById(R.id.lockscreen_remote_input); - mRemoteInputCheckbox.setOnCheckedChangeListener(this); mRadioGroup.setOnCheckedChangeListener(this); mUserId = Utils.getUserIdFromBundle( @@ -132,9 +128,6 @@ public class RedactionInterstitial extends SettingsActivity { KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS); checkNotificationFeaturesAndSetDisabled(mRedactSensitiveButton, KEYGUARD_DISABLE_SECURE_NOTIFICATIONS); - mRemoteInputCheckbox.setDisabledByAdmin( - RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(getActivity(), - DevicePolicyManager.KEYGUARD_DISABLE_REMOTE_INPUT, mUserId)); loadFromSettings(); } @@ -161,12 +154,6 @@ public class RedactionInterstitial extends SettingsActivity { } mRadioGroup.check(checkedButtonId); - - boolean allowRemoteInput = Settings.Secure.getIntForUser(getContentResolver(), - Settings.Secure.LOCK_SCREEN_ALLOW_REMOTE_INPUT, 0, mUserId) != 0; - mRemoteInputCheckbox.setChecked(!allowRemoteInput); - - updateRemoteInputCheckboxVisibility(); } @Override @@ -179,23 +166,6 @@ public class RedactionInterstitial extends SettingsActivity { Settings.Secure.putIntForUser(getContentResolver(), Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, enabled ? 1 : 0, mUserId); - updateRemoteInputCheckboxVisibility(); - } - - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean checked) { - if (buttonView == mRemoteInputCheckbox) { - Settings.Secure.putIntForUser(getContentResolver(), - Settings.Secure.LOCK_SCREEN_ALLOW_REMOTE_INPUT, checked ? 0 : 1, mUserId); - } - } - - private void updateRemoteInputCheckboxVisibility() { - boolean visible = mRadioGroup.getCheckedRadioButtonId() == R.id.show_all; - boolean isManagedProfile = Utils.isManagedProfile(UserManager.get(getPrefContext()), - mUserId); - mRemoteInputCheckbox - .setVisibility((visible && !isManagedProfile) ? View.VISIBLE : View.INVISIBLE); } } } diff --git a/src/com/android/settings/notification/RestrictedDropDownPreference.java b/src/com/android/settings/notification/RestrictedDropDownPreference.java index e4a4cb6b154..d19cf8d7c9f 100644 --- a/src/com/android/settings/notification/RestrictedDropDownPreference.java +++ b/src/com/android/settings/notification/RestrictedDropDownPreference.java @@ -42,6 +42,7 @@ public class RestrictedDropDownPreference extends DropDownPreference { private ReselectionSpinner mSpinner; private List mRestrictedItems = new ArrayList<>(); private boolean mUserClicked = false; + private OnPreferenceClickListener mPreClickListener; public RestrictedDropDownPreference(Context context, AttributeSet attrs) { super(context, attrs); @@ -118,6 +119,9 @@ public class RestrictedDropDownPreference extends DropDownPreference { @Override public void performClick() { + if (mPreClickListener != null && mPreClickListener.onPreferenceClick(this)) { + return; + } if (!mHelper.performClick()) { mUserClicked = true; super.performClick(); @@ -139,6 +143,14 @@ public class RestrictedDropDownPreference extends DropDownPreference { } } + /** + * Similar to {@link #setOnPreferenceClickListener(OnPreferenceClickListener)}, but can + * preempt {@link #onClick()}. + */ + public void setOnPreClickListener(OnPreferenceClickListener l) { + mPreClickListener = l; + } + public boolean isDisabledByAdmin() { return mHelper.isDisabledByAdmin(); }