Show "work mode off" dialog when work security option is clicked

Bug: 28158297
Change-Id: I31bc3197d2ff9c95419ea87d009fe7d677181d69
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 653d361..049660e 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -625,6 +625,10 @@
             startFragment(this, "com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment",
                     R.string.lock_settings_picker_title, SET_OR_CHANGE_LOCK_METHOD_REQUEST, null);
         } else if (KEY_UNLOCK_SET_OR_CHANGE_PROFILE.equals(key)) {
+            if (Utils.startQuiteModeDialogIfNecessary(this.getActivity(), mUm,
+                    mProfileChallengeUserId)) {
+                return false;
+            }
             Bundle extras = new Bundle();
             extras.putInt(Intent.EXTRA_USER_ID, mProfileChallengeUserId);
             startFragment(this, "com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment",
@@ -746,8 +750,16 @@
         final String key = preference.getKey();
         final LockPatternUtils lockPatternUtils = mChooseLockSettingsHelper.utils();
         if (KEY_VISIBLE_PATTERN_PROFILE.equals(key)) {
+            if (Utils.startQuiteModeDialogIfNecessary(this.getActivity(), mUm,
+                    mProfileChallengeUserId)) {
+                return false;
+            }
             lockPatternUtils.setVisiblePatternEnabled((Boolean) value, mProfileChallengeUserId);
         } else if (KEY_UNIFICATION.equals(key)) {
+            if (Utils.startQuiteModeDialogIfNecessary(this.getActivity(), mUm,
+                    mProfileChallengeUserId)) {
+                return false;
+            }
             if ((Boolean) value) {
                 final boolean compliantForDevice =
                         (mLockPatternUtils.getKeyguardStoredPasswordQuality(mProfileChallengeUserId)
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 527194f..4dd203c 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -87,6 +87,8 @@
 import android.view.animation.AnimationUtils;
 import android.widget.ListView;
 import android.widget.TabWidget;
+
+import com.android.internal.app.UnlaunchableAppActivity;
 import com.android.internal.util.UserIcons;
 
 import java.io.IOException;
@@ -1104,5 +1106,15 @@
         return Settings.Global.getInt(context.getContentResolver(),
                 Settings.Global.DEVICE_PROVISIONED, 0) != 0;
     }
+
+    public static boolean startQuiteModeDialogIfNecessary(Context context, UserManager um,
+            int userId) {
+        if (um.isQuietModeEnabled(UserHandle.of(userId))) {
+            final Intent intent = UnlaunchableAppActivity.createInQuietModeDialogIntent(userId);
+            context.startActivity(intent);
+            return true;
+        }
+        return false;
+    }
 }
 
diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java
index 9e2c5ff..3b83e48 100644
--- a/src/com/android/settings/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/fingerprint/FingerprintSettings.java
@@ -40,6 +40,7 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.support.v7.preference.Preference;
+import android.support.v7.preference.Preference.OnPreferenceClickListener;
 import android.support.v7.preference.Preference.OnPreferenceChangeListener;
 import android.support.v7.preference.PreferenceGroup;
 import android.support.v7.preference.PreferenceScreen;
@@ -808,7 +809,7 @@
         }
     }
 
-    public static Preference getFingerprintPreferenceForUser(Context context, int userId) {
+    public static Preference getFingerprintPreferenceForUser(Context context, final int userId) {
         FingerprintManager fpm = (FingerprintManager) context.getSystemService(
                 Context.FINGERPRINT_SERVICE);
         if (fpm == null || !fpm.isHardwareDetected()) {
@@ -818,7 +819,6 @@
         Preference fingerprintPreference = new Preference(context);
         fingerprintPreference.setKey(KEY_FINGERPRINT_SETTINGS);
         fingerprintPreference.setTitle(R.string.security_settings_fingerprint_preference_title);
-        Intent intent = new Intent();
         final List<Fingerprint> items = fpm.getEnrolledFingerprints(userId);
         final int fingerprintCount = items != null ? items.size() : 0;
         final String clazz;
@@ -832,9 +832,22 @@
                     R.string.security_settings_fingerprint_preference_summary_none);
             clazz = FingerprintEnrollIntroduction.class.getName();
         }
-        intent.setClassName("com.android.settings", clazz);
-        intent.putExtra(Intent.EXTRA_USER_ID, userId);
-        fingerprintPreference.setIntent(intent);
+        fingerprintPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+            @Override
+            public boolean onPreferenceClick(Preference preference) {
+                final Context context = preference.getContext();
+                final UserManager userManager = UserManager.get(context);
+                if (Utils.startQuiteModeDialogIfNecessary(context, userManager,
+                        userId)) {
+                    return false;
+                }
+                Intent intent = new Intent();
+                intent.setClassName("com.android.settings", clazz);
+                intent.putExtra(Intent.EXTRA_USER_ID, userId);
+                context.startActivity(intent);
+                return true;
+            }
+        });
         return fingerprintPreference;
     }
 }