Merge "Notification slider changes." into nyc-dev
diff --git a/src/com/android/settings/PreviewPagerAdapter.java b/src/com/android/settings/PreviewPagerAdapter.java
index 20d1761..7e4ebf3 100644
--- a/src/com/android/settings/PreviewPagerAdapter.java
+++ b/src/com/android/settings/PreviewPagerAdapter.java
@@ -45,19 +45,23 @@
     /** Interpolator to use when cross-fading between previews. */
     private static final Interpolator FADE_OUT_INTERPOLATOR = new AccelerateInterpolator();
 
-    private final FrameLayout[] mPreviewFrames;
+    private FrameLayout[] mPreviewFrames;
+
+    private boolean mIsLayoutRtl;
 
     private Runnable mAnimationEndAction;
 
     private int mAnimationCounter;
 
-    public PreviewPagerAdapter(Context context, int[] previewSampleResIds,
-                               Configuration[] configurations) {
+    public PreviewPagerAdapter(Context context, boolean isLayoutRtl,
+            int[] previewSampleResIds, Configuration[] configurations) {
+        mIsLayoutRtl = isLayoutRtl;
         mPreviewFrames = new FrameLayout[previewSampleResIds.length];
 
         for (int i = 0; i < previewSampleResIds.length; ++i) {
-            mPreviewFrames[i] = new FrameLayout(context);
-            mPreviewFrames[i].setLayoutParams(new LinearLayout.LayoutParams(
+            int p = mIsLayoutRtl ? previewSampleResIds.length - 1 - i : i;
+            mPreviewFrames[p] = new FrameLayout(context);
+            mPreviewFrames[p].setLayoutParams(new LinearLayout.LayoutParams(
                     LinearLayout.LayoutParams.MATCH_PARENT,
                     LinearLayout.LayoutParams.MATCH_PARENT));
 
@@ -69,10 +73,10 @@
 
                 final LayoutInflater configInflater = LayoutInflater.from(configContext);
                 final View sampleView = configInflater.inflate(previewSampleResIds[i],
-                        mPreviewFrames[i], false);
+                        mPreviewFrames[p], false);
                 sampleView.setAlpha(0);
                 sampleView.setVisibility(View.INVISIBLE);
-                mPreviewFrames[i].addView(sampleView);
+                mPreviewFrames[p].addView(sampleView);
             }
         }
     }
diff --git a/src/com/android/settings/PreviewSeekBarPreferenceFragment.java b/src/com/android/settings/PreviewSeekBarPreferenceFragment.java
index a7763f7..ff9e035 100644
--- a/src/com/android/settings/PreviewSeekBarPreferenceFragment.java
+++ b/src/com/android/settings/PreviewSeekBarPreferenceFragment.java
@@ -21,6 +21,7 @@
 import android.os.Bundle;
 import android.support.v4.view.ViewPager;
 import android.support.v4.view.ViewPager.OnPageChangeListener;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -29,9 +30,11 @@
 import android.widget.SeekBar;
 import android.widget.SeekBar.OnSeekBarChangeListener;
 import android.widget.TextView;
+
 import com.android.settings.widget.DotsPageIndicator;
 import com.android.settings.widget.LabeledSeekBar;
 
+import java.util.Locale;
 
 /**
  * Preference fragment shows a preview and a seek bar to adjust a specific settings.
@@ -146,6 +149,7 @@
 
         final Context context = getPrefContext();
         final Configuration origConfig = context.getResources().getConfiguration();
+        final boolean isLayoutRtl = origConfig.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
         Configuration[] configurations = new Configuration[mEntries.length];
         for (int i = 0; i < mEntries.length; ++i) {
             configurations[i] = createConfig(origConfig, i);
@@ -153,9 +157,10 @@
 
         mPreviewPager = (ViewPager) content.findViewById(R.id.preview_pager);
         if (mPreviewPager != null) {
-            mPreviewPagerAdapter = new PreviewPagerAdapter(context, mPreviewSampleResIds,
-                    configurations);
+            mPreviewPagerAdapter = new PreviewPagerAdapter(context, isLayoutRtl,
+                    mPreviewSampleResIds, configurations);
             mPreviewPager.setAdapter(mPreviewPagerAdapter);
+            mPreviewPager.setCurrentItem(isLayoutRtl ? mPreviewSampleResIds.length - 1 : 0);
             mPreviewPager.addOnPageChangeListener(mPreviewPageChangeListener);
 
             mPageIndicator = (DotsPageIndicator) content.findViewById(R.id.page_indicator);
diff --git a/src/com/android/settings/accounts/AccountSettings.java b/src/com/android/settings/accounts/AccountSettings.java
index 927ad23..852d33a 100644
--- a/src/com/android/settings/accounts/AccountSettings.java
+++ b/src/com/android/settings/accounts/AccountSettings.java
@@ -251,7 +251,11 @@
             ProfileData profileData = mProfiles.valueAt(i);
             if (preference == profileData.workModeSwitch) {
                 final int userId = profileData.userInfo.id;
-                mUm.setQuietModeEnabled(userId, !((boolean) newValue));
+                if ((boolean) newValue) {
+                    mUm.trySetQuietModeDisabled(userId, null);
+                } else {
+                    mUm.setQuietModeEnabled(userId, true);
+                }
                 return true;
             }
         }
diff --git a/src/com/android/settings/dashboard/conditional/WorkModeCondition.java b/src/com/android/settings/dashboard/conditional/WorkModeCondition.java
index f46b495..3d9958b 100644
--- a/src/com/android/settings/dashboard/conditional/WorkModeCondition.java
+++ b/src/com/android/settings/dashboard/conditional/WorkModeCondition.java
@@ -90,7 +90,7 @@
     @Override
     public void onActionClick(int index) {
         if (index == 0) {
-            mUm.setQuietModeEnabled(mUserHandle.getIdentifier(), false);
+            mUm.trySetQuietModeDisabled(mUserHandle.getIdentifier(), null);
             setActive(false);
         } else {
             throw new IllegalArgumentException("Unexpected index " + index);
diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java
index c342ba0..9acac06 100644
--- a/src/com/android/settings/notification/ConfigureNotificationSettings.java
+++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java
@@ -213,7 +213,7 @@
             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));
diff --git a/src/com/android/settings/notification/NotificationLockscreenPreference.java b/src/com/android/settings/notification/NotificationLockscreenPreference.java
index cd3e30c..8c89968 100644
--- a/src/com/android/settings/notification/NotificationLockscreenPreference.java
+++ b/src/com/android/settings/notification/NotificationLockscreenPreference.java
@@ -18,11 +18,14 @@
 
 import com.android.settings.R;
 import com.android.settings.RestrictedListPreference;
+import com.android.settings.Utils;
 
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.os.UserHandle;
+import android.os.UserManager;
 import android.provider.Settings;
 import android.util.AttributeSet;
 import android.view.View;
@@ -38,6 +41,7 @@
     private Listener mListener;
     private boolean mShowRemoteInput;
     private boolean mRemoteInputCheckBoxEnabled = true;
+    private int mUserId = UserHandle.myUserId();
 
     public NotificationLockscreenPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -48,6 +52,20 @@
     }
 
     @Override
+    protected void onClick() {
+        final Context context = getContext();
+        if (!Utils.startQuietModeDialogIfNecessary(context, UserManager.get(context), mUserId)) {
+            // Call super to create preference dialog only when work mode is on
+            // startQuietModeDialogIfNecessary will return false if mUserId is not a managed user
+            super.onClick();
+        }
+    }
+
+    public void setUserId(int userId) {
+        mUserId = userId;
+    }
+
+    @Override
     protected void onPrepareDialogBuilder(AlertDialog.Builder builder,
             DialogInterface.OnClickListener innerListener) {