Don't show nonesensical notification visibility value.

lock_screen_notifications_summary_hide doesn't make sense on insecure
lock screens, so don't show it, but make sure we can restore it if the
user re-enables a secure method.

Bug: 16649523
Change-Id: Ie295cd59f5e527da8402748834576bab97e9ad89
diff --git a/src/com/android/settings/notification/NotificationSettings.java b/src/com/android/settings/notification/NotificationSettings.java
index 2b0fd5c..a523a75 100644
--- a/src/com/android/settings/notification/NotificationSettings.java
+++ b/src/com/android/settings/notification/NotificationSettings.java
@@ -40,6 +40,7 @@
 import android.provider.Settings;
 import android.util.Log;
 
+import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
@@ -82,6 +83,8 @@
     private TwoStatePreference mNotificationPulse;
     private DropDownPreference mLockscreen;
     private Preference mNotificationAccess;
+    private boolean mSecure;
+    private int mLockscreenSelectedValue;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -89,6 +92,7 @@
         mContext = getActivity();
         mPM = mContext.getPackageManager();
         mVoiceCapable = Utils.isVoiceCapable(mContext);
+        mSecure = new LockPatternUtils(getActivity()).isSecure();
         addPreferencesFromResource(R.xml.notification_settings);
 
         final PreferenceCategory sound = (PreferenceCategory) findPreference(KEY_SOUND);
@@ -303,10 +307,13 @@
             Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_NOTIFICATIONS);
             return;
         }
+
         mLockscreen.addItem(R.string.lock_screen_notifications_summary_show,
                 R.string.lock_screen_notifications_summary_show);
-        mLockscreen.addItem(R.string.lock_screen_notifications_summary_hide,
-                R.string.lock_screen_notifications_summary_hide);
+        if (mSecure) {
+            mLockscreen.addItem(R.string.lock_screen_notifications_summary_hide,
+                    R.string.lock_screen_notifications_summary_hide);
+        }
         mLockscreen.addItem(R.string.lock_screen_notifications_summary_disable,
                 R.string.lock_screen_notifications_summary_disable);
         updateLockscreenNotifications();
@@ -314,12 +321,16 @@
             @Override
             public boolean onItemSelected(int pos, Object value) {
                 final int val = (Integer) value;
+                if (val == mLockscreenSelectedValue) {
+                    return true;
+                }
                 final boolean enabled = val != R.string.lock_screen_notifications_summary_disable;
                 final boolean show = val == R.string.lock_screen_notifications_summary_show;
                 Settings.Secure.putInt(getContentResolver(),
                         Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, show ? 1 : 0);
                 Settings.Secure.putInt(getContentResolver(),
                         Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, enabled ? 1 : 0);
+                mLockscreenSelectedValue = val;
                 return true;
             }
         });
@@ -329,12 +340,12 @@
         if (mLockscreen == null) {
             return;
         }
-        final boolean allowPrivate = getLockscreenAllowPrivateNotifications();
         final boolean enabled = getLockscreenNotificationsEnabled();
-        final int selectedVal = !enabled ? R.string.lock_screen_notifications_summary_disable :
+        final boolean allowPrivate = !mSecure || getLockscreenAllowPrivateNotifications();
+        mLockscreenSelectedValue = !enabled ? R.string.lock_screen_notifications_summary_disable :
                 allowPrivate ? R.string.lock_screen_notifications_summary_show :
                 R.string.lock_screen_notifications_summary_hide;
-        mLockscreen.setSelectedValue(selectedVal);
+        mLockscreen.setSelectedValue(mLockscreenSelectedValue);
     }
 
     private boolean getLockscreenNotificationsEnabled() {