OSDN Git Service

Remove RemoteInput on lockscreen setting
authorAdrian Roos <roosa@google.com>
Thu, 16 Jun 2016 20:28:44 +0000 (13:28 -0700)
committerAdrian Roos <roosa@google.com>
Thu, 16 Jun 2016 20:29:11 +0000 (13:29 -0700)
Bug: 29370898
Change-Id: I6fef3deb55357e8569e023968967663582974f79

res/layout/redaction_interstitial.xml
res/layout/setup_redaction_interstitial.xml
res/xml/configure_notification_settings.xml
res/xml/configure_notification_settings_profile.xml
src/com/android/settings/notification/ConfigureNotificationSettings.java
src/com/android/settings/notification/RedactionInterstitial.java
src/com/android/settings/notification/RestrictedDropDownPreference.java

index 0c4273f..ec0c249 100644 (file)
 
     </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
index 1b96d20..e99756a 100644 (file)
                 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>
index 3574aed..8778abb 100644 (file)
@@ -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" />
index 647ac9d..301f3c0 100644 (file)
@@ -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" />
index 89aebf9..1bb5530 100644 (file)
@@ -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<CharSequence> entries = new ArrayList<>();
         ArrayList<CharSequence> 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);
             }
         }
index 84ae35d..4aa5ec8 100644 (file)
@@ -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);
         }
     }
 }
index e4a4cb6..d19cf8d 100644 (file)
@@ -42,6 +42,7 @@ public class RestrictedDropDownPreference extends DropDownPreference {
     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 @@ 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();
     }