Merge "Remove RemoteInput on lockscreen setting" into nyc-dev
diff --git a/res/layout/redaction_interstitial.xml b/res/layout/redaction_interstitial.xml
index 0c4273f..ec0c249 100644
--- a/res/layout/redaction_interstitial.xml
+++ b/res/layout/redaction_interstitial.xml
@@ -65,13 +65,4 @@
</RadioGroup>
- <com.android.settings.RestrictedCheckBox
- android:id="@+id/lockscreen_remote_input"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- style="@style/RedactionItemAndLabel"
- android:layout_marginStart="?android:attr/listPreferredItemPaddingStart"
- android:layout_marginEnd="?android:attr/listPreferredItemPaddingEnd"
- android:text="@string/lockscreen_remote_input" />
-
</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/setup_redaction_interstitial.xml b/res/layout/setup_redaction_interstitial.xml
index 1b96d20..e99756a 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" />
-
- <!-- Place the checkbox inside RadioGroup and use SuwRadioButton style instead of
- SuwCheckBox style so that the checkbox and text is aligned with radio buttons. -->
- <com.android.settings.RestrictedCheckBox
- android:id="@+id/lockscreen_remote_input"
- style="@style/SuwRadioButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/redaction_vertical_margins"
- android:text="@string/lockscreen_remote_input" />
</RadioGroup>
</LinearLayout>
diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml
index 3574aed..8778abb 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" />
<!-- When device is locked -->
- <com.android.settings.notification.NotificationLockscreenPreference
+ <com.android.settings.notification.RestrictedDropDownPreference
android:key="lock_screen_notifications"
android:title="@string/lock_screen_notifications_title"
android:summary="%s" />
diff --git a/res/xml/configure_notification_settings_profile.xml b/res/xml/configure_notification_settings_profile.xml
index 647ac9d..301f3c0 100644
--- a/res/xml/configure_notification_settings_profile.xml
+++ b/res/xml/configure_notification_settings_profile.xml
@@ -21,7 +21,7 @@
<PreferenceCategory
android:title="@string/profile_section_header" >
- <com.android.settings.notification.NotificationLockscreenPreference
+ <com.android.settings.notification.RestrictedDropDownPreference
android:key="lock_screen_notifications_profile"
android:title="@string/lock_screen_notifications_title"
android:summary="%s" />
diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java
index 89aebf9..1bb5530 100644
--- a/src/com/android/settings/notification/ConfigureNotificationSettings.java
+++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java
@@ -57,8 +57,8 @@
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 @@
}
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 @@
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 @@
// === 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<CharSequence> entries = new ArrayList<>();
ArrayList<CharSequence> values = new ArrayList<>();
entries.add(getString(R.string.lock_screen_notifications_summary_disable_profile));
@@ -243,14 +239,14 @@
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 @@
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 84ae35d..4aa5ec8 100644
--- a/src/com/android/settings/notification/RedactionInterstitial.java
+++ b/src/com/android/settings/notification/RedactionInterstitial.java
@@ -78,12 +78,11 @@
}
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 @@
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 @@
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 @@
}
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 @@
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 e4a4cb6..d19cf8d 100644
--- a/src/com/android/settings/notification/RestrictedDropDownPreference.java
+++ b/src/com/android/settings/notification/RestrictedDropDownPreference.java
@@ -42,6 +42,7 @@
private ReselectionSpinner mSpinner;
private List<RestrictedItem> mRestrictedItems = new ArrayList<>();
private boolean mUserClicked = false;
+ private OnPreferenceClickListener mPreClickListener;
public RestrictedDropDownPreference(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -118,6 +119,9 @@
@Override
public void performClick() {
+ if (mPreClickListener != null && mPreClickListener.onPreferenceClick(this)) {
+ return;
+ }
if (!mHelper.performClick()) {
mUserClicked = true;
super.performClick();
@@ -139,6 +143,14 @@
}
}
+ /**
+ * Similar to {@link #setOnPreferenceClickListener(OnPreferenceClickListener)}, but can
+ * preempt {@link #onClick()}.
+ */
+ public void setOnPreClickListener(OnPreferenceClickListener l) {
+ mPreClickListener = l;
+ }
+
public boolean isDisabledByAdmin() {
return mHelper.isDisabledByAdmin();
}