diff --git a/quickstep/res/values-night/colors.xml b/quickstep/res/values-night/colors.xml
index 98e4871da2..a1e9c70f69 100644
--- a/quickstep/res/values-night/colors.xml
+++ b/quickstep/res/values-night/colors.xml
@@ -26,6 +26,4 @@
?attr/materialColorPrimary
- ?attr/materialColorPrimaryFixedDim
- ?attr/materialColorOnPrimaryFixed
\ No newline at end of file
diff --git a/quickstep/res/values/colors.xml b/quickstep/res/values/colors.xml
index 62873d6d64..668bce764c 100644
--- a/quickstep/res/values/colors.xml
+++ b/quickstep/res/values/colors.xml
@@ -94,6 +94,4 @@
?attr/materialColorPrimary
- ?attr/materialColorPrimaryFixedDim
- ?attr/materialColorOnPrimaryFixed
\ No newline at end of file
diff --git a/res/drawable/ic_corp_off.xml b/res/drawable/ic_corp_off.xml
index 117258e3bd..d4bb2f31a9 100644
--- a/res/drawable/ic_corp_off.xml
+++ b/res/drawable/ic_corp_off.xml
@@ -16,9 +16,9 @@
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
- android:viewportHeight="24"
- android:tint="?android:attr/textColorHint">
+ android:viewportHeight="24">
-
\ No newline at end of file
+ android:pathData="M16,6H20C21.11,6 22,6.89 22,8V18.99C22,19.021 21.994,19.05 21.989,19.077C21.984,19.102 21.98,19.126 21.98,19.15L20,17.17V8H10.83L8,5.17V4C8,2.89 8.89,2 10,2H14C15.11,2 16,2.89 16,4V6ZM10,6H14V4H10V6ZM19,19L8,8L6,6L2.81,2.81L1.39,4.22L3.3,6.13C2.54,6.41 2.01,7.14 2.01,8L2,19C2,20.11 2.89,21 4,21H18.17L19.78,22.61L21.19,21.2L20.82,20.83L19,19ZM4,8V19H16.17L5.17,8H4Z"
+ android:fillColor="?attr/materialColorOnPrimary"
+ android:fillType="evenOdd"/>
+
diff --git a/res/drawable/ic_schedule.xml b/res/drawable/ic_schedule.xml
new file mode 100644
index 0000000000..3eeb6a2c2e
--- /dev/null
+++ b/res/drawable/ic_schedule.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/work_mode_fab_background.xml b/res/drawable/work_mode_fab_background.xml
index fd948d1445..5bad965401 100644
--- a/res/drawable/work_mode_fab_background.xml
+++ b/res/drawable/work_mode_fab_background.xml
@@ -18,7 +18,7 @@
-
-
+
diff --git a/res/drawable/work_scheduler_background.xml b/res/drawable/work_scheduler_background.xml
new file mode 100644
index 0000000000..6bbf029fc4
--- /dev/null
+++ b/res/drawable/work_scheduler_background.xml
@@ -0,0 +1,26 @@
+
+
+
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/work_mode_fab.xml b/res/layout/work_mode_fab.xml
index fc59e568d3..46f2d8aa42 100644
--- a/res/layout/work_mode_fab.xml
+++ b/res/layout/work_mode_fab.xml
@@ -12,11 +12,9 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-
+
diff --git a/res/layout/work_mode_utility_view.xml b/res/layout/work_mode_utility_view.xml
new file mode 100644
index 0000000000..fc112ce849
--- /dev/null
+++ b/res/layout/work_mode_utility_view.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
diff --git a/res/values-night-v31/colors.xml b/res/values-night-v31/colors.xml
index 0f630e5860..d9f9769f94 100644
--- a/res/values-night-v31/colors.xml
+++ b/res/values-night-v31/colors.xml
@@ -53,10 +53,5 @@
@android:color/system_accent1_800
-
- @android:color/system_accent1_200
-
- @android:color/system_accent1_900
-
@android:color/system_neutral1_100
\ No newline at end of file
diff --git a/res/values-v31/colors.xml b/res/values-v31/colors.xml
index a5cdfc7a1d..d74e3087c2 100644
--- a/res/values-v31/colors.xml
+++ b/res/values-v31/colors.xml
@@ -104,11 +104,6 @@
@android:color/system_accent1_0
-
- @android:color/system_accent1_200
-
- @android:color/system_accent1_900
-
@android:color/system_neutral1_1000
@android:color/system_neutral1_900
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 1eca88d009..fa1626ea80 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -98,8 +98,6 @@
#40484D
?android:attr/colorAccent
- #A8C7FA
- #041E49
#EFEDED
#FAF9F8
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 037687dec1..d4773c3c9f 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -166,6 +166,9 @@
16dp
20dp
16dp
+ 16dp
+ 8dp
+ 56dp
20dp
16dp
16dp
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9d0602169c..af57c869aa 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -465,6 +465,8 @@
Got it
\u24D8
+
+
Work apps are paused
@@ -483,6 +485,8 @@
Pause work apps
Unpause
+
+ Work apps schedule
Filter
diff --git a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
index 0dd2791f5b..2456980100 100644
--- a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
@@ -726,7 +726,7 @@ public class ActivityAllAppsContainerView
post(() -> mAH.get(AdapterHolder.WORK).applyPadding());
} else {
- mWorkManager.detachWorkModeSwitch();
+ mWorkManager.detachWorkUtilityViews();
mViewPager = null;
}
@@ -1257,8 +1257,8 @@ public class ActivityAllAppsContainerView
/** Called in Launcher#bindStringCache() to update the UI when cache is updated. */
public void updateWorkUI() {
setDeviceManagementResources();
- if (mWorkManager.getWorkModeSwitch() != null) {
- mWorkManager.getWorkModeSwitch().updateStringFromCache();
+ if (mWorkManager.getWorkUtilityView() != null) {
+ mWorkManager.getWorkUtilityView().updateStringFromCache();
}
inflateWorkCardsIfNeeded();
}
@@ -1581,8 +1581,8 @@ public class ActivityAllAppsContainerView
void applyPadding() {
if (mRecyclerView != null) {
int bottomOffset = 0;
- if (isWork() && mWorkManager.getWorkModeSwitch() != null) {
- bottomOffset = mInsets.bottom + mWorkManager.getWorkModeSwitch().getHeight();
+ if (isWork() && mWorkManager.getWorkUtilityView() != null) {
+ bottomOffset = mInsets.bottom + mWorkManager.getWorkUtilityView().getHeight();
} else if (isMain() && mPrivateProfileManager != null) {
Optional privateSpaceHeaderItem = mAppsList.getAdapterItems()
.stream()
diff --git a/src/com/android/launcher3/allapps/WorkProfileManager.java b/src/com/android/launcher3/allapps/WorkProfileManager.java
index 96998a3e38..3d0c1d063d 100644
--- a/src/com/android/launcher3/allapps/WorkProfileManager.java
+++ b/src/com/android/launcher3/allapps/WorkProfileManager.java
@@ -58,7 +58,7 @@ public class WorkProfileManager extends UserProfileManager
implements PersonalWorkSlidingTabStrip.OnActivePageChangedListener {
private static final String TAG = "WorkProfileManager";
private final ActivityAllAppsContainerView> mAllApps;
- private WorkModeSwitch mWorkModeSwitch;
+ private WorkUtilityView mWorkUtilityView;
private final Predicate mWorkProfileMatcher;
public WorkProfileManager(
@@ -79,15 +79,15 @@ public class WorkProfileManager extends UserProfileManager
@Override
public void onActivePageChanged(int page) {
- updateWorkFAB(page);
+ updateWorkUtilityViews(page);
}
- private void updateWorkFAB(int page) {
- if (mWorkModeSwitch != null) {
+ private void updateWorkUtilityViews(int page) {
+ if (mWorkUtilityView != null) {
if (page == MAIN || page == SEARCH) {
- mWorkModeSwitch.animateVisibility(false);
+ mWorkUtilityView.animateVisibility(false);
} else if (page == WORK && getCurrentState() == STATE_ENABLED) {
- mWorkModeSwitch.animateVisibility(true);
+ mWorkUtilityView.animateVisibility(true);
}
}
}
@@ -104,10 +104,10 @@ public class WorkProfileManager extends UserProfileManager
}
boolean isEnabled = !mAllApps.getAppsStore().hasModelFlag(quietModeFlag);
updateCurrentState(isEnabled ? STATE_ENABLED : STATE_DISABLED);
- if (mWorkModeSwitch != null) {
+ if (mWorkUtilityView != null) {
// reset the position of the button and clear IME insets.
- mWorkModeSwitch.getImeInsets().setEmpty();
- mWorkModeSwitch.updateTranslationY();
+ mWorkUtilityView.getImeInsets().setEmpty();
+ mWorkUtilityView.updateTranslationY();
}
}
@@ -116,54 +116,54 @@ public class WorkProfileManager extends UserProfileManager
if (getAH() != null) {
getAH().mAppsList.updateAdapterItems();
}
- if (mWorkModeSwitch != null) {
- updateWorkFAB(mAllApps.getCurrentPage());
+ if (mWorkUtilityView != null) {
+ updateWorkUtilityViews(mAllApps.getCurrentPage());
}
if (getCurrentState() == STATE_ENABLED) {
- attachWorkModeSwitch();
+ attachWorkUtilityViews();
} else if (getCurrentState() == STATE_DISABLED) {
- detachWorkModeSwitch();
+ detachWorkUtilityViews();
}
}
/**
* Creates and attaches for profile toggle button to {@link ActivityAllAppsContainerView}
*/
- public boolean attachWorkModeSwitch() {
+ public boolean attachWorkUtilityViews() {
if (!mAllApps.getAppsStore().hasModelFlag(
FLAG_HAS_SHORTCUT_PERMISSION | FLAG_QUIET_MODE_CHANGE_PERMISSION)) {
Log.e(TAG, "unable to attach work mode switch; Missing required permissions");
return false;
}
- if (mWorkModeSwitch == null) {
- mWorkModeSwitch = (WorkModeSwitch) mAllApps.getLayoutInflater().inflate(
- R.layout.work_mode_fab, mAllApps, false);
+ if (mWorkUtilityView == null) {
+ mWorkUtilityView = (WorkUtilityView) mAllApps.getLayoutInflater().inflate(
+ R.layout.work_mode_utility_view, mAllApps, false);
}
- if (mWorkModeSwitch.getParent() == null) {
- mAllApps.addView(mWorkModeSwitch);
+ if (mWorkUtilityView.getParent() == null) {
+ mAllApps.addView(mWorkUtilityView);
}
if (mAllApps.getCurrentPage() != WORK) {
- mWorkModeSwitch.animateVisibility(false);
+ mWorkUtilityView.animateVisibility(false);
}
if (getAH() != null) {
getAH().applyPadding();
}
- mWorkModeSwitch.setOnClickListener(this::onWorkFabClicked);
+ mWorkUtilityView.setOnClickListener(this::onWorkFabClicked);
return true;
}
/**
* Removes work profile toggle button from {@link ActivityAllAppsContainerView}
*/
- public void detachWorkModeSwitch() {
- if (mWorkModeSwitch != null && mWorkModeSwitch.getParent() == mAllApps) {
- mAllApps.removeView(mWorkModeSwitch);
+ public void detachWorkUtilityViews() {
+ if (mWorkUtilityView != null && mWorkUtilityView.getParent() == mAllApps) {
+ mAllApps.removeView(mWorkUtilityView);
}
- mWorkModeSwitch = null;
+ mWorkUtilityView = null;
}
@Nullable
- public WorkModeSwitch getWorkModeSwitch() {
- return mWorkModeSwitch;
+ public WorkUtilityView getWorkUtilityView() {
+ return mWorkUtilityView;
}
private ActivityAllAppsContainerView.AdapterHolder getAH() {
@@ -199,7 +199,7 @@ public class WorkProfileManager extends UserProfileManager
}
private void onWorkFabClicked(View view) {
- if (getCurrentState() == STATE_ENABLED && mWorkModeSwitch.isEnabled()) {
+ if (getCurrentState() == STATE_ENABLED && mWorkUtilityView.isEnabled()) {
logEvents(LAUNCHER_TURN_OFF_WORK_APPS_TAP);
setWorkProfileEnabled(false);
}
@@ -216,7 +216,7 @@ public class WorkProfileManager extends UserProfileManager
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
- WorkModeSwitch fab = getWorkModeSwitch();
+ WorkUtilityView fab = getWorkUtilityView();
if (fab == null){
return;
}
diff --git a/src/com/android/launcher3/allapps/WorkModeSwitch.java b/src/com/android/launcher3/allapps/WorkUtilityView.java
similarity index 65%
rename from src/com/android/launcher3/allapps/WorkModeSwitch.java
rename to src/com/android/launcher3/allapps/WorkUtilityView.java
index f1f72b267b..ad347d9697 100644
--- a/src/com/android/launcher3/allapps/WorkModeSwitch.java
+++ b/src/com/android/launcher3/allapps/WorkUtilityView.java
@@ -21,11 +21,13 @@ import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.content.Context;
+import android.content.Intent;
import android.graphics.Rect;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.view.WindowInsets;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -36,6 +38,7 @@ import androidx.core.view.WindowInsetsCompat;
import com.android.app.animation.Interpolators;
import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.Flags;
import com.android.launcher3.Insettable;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
@@ -43,10 +46,13 @@ import com.android.launcher3.anim.AnimatedPropertySetter;
import com.android.launcher3.anim.KeyboardInsetAnimationCallback;
import com.android.launcher3.model.StringCache;
import com.android.launcher3.views.ActivityContext;
+
+import java.util.ArrayList;
+
/**
- * Work profile toggle switch shown at the bottom of AllApps work tab
+ * Work profile utility ViewGroup that is shown at the bottom of AllApps work tab
*/
-public class WorkModeSwitch extends LinearLayout implements Insettable,
+public class WorkUtilityView extends LinearLayout implements Insettable,
KeyboardInsetAnimationCallback.KeyboardInsetListener {
private static final int TEXT_EXPAND_OPACITY_DURATION = 300;
@@ -54,10 +60,14 @@ public class WorkModeSwitch extends LinearLayout implements Insettable,
private static final int EXPAND_COLLAPSE_DURATION = 300;
private static final int TEXT_ALPHA_EXPAND_DELAY = 80;
private static final int TEXT_ALPHA_COLLAPSE_DELAY = 0;
+ private static final int WORK_SCHEDULER_OPACITY_DURATION =
+ (int) (EXPAND_COLLAPSE_DURATION * 0.75f);
private static final int FLAG_FADE_ONGOING = 1 << 1;
private static final int FLAG_TRANSLATION_ONGOING = 1 << 2;
private static final int FLAG_IS_EXPAND = 1 << 3;
private static final int SCROLL_THRESHOLD_DP = 10;
+ private static final float WORK_SCHEDULER_SCALE_MIN = 0.25f;
+ private static final float WORK_SCHEDULER_SCALE_MAX = 1f;
private final Rect mInsets = new Rect();
private final Rect mImeInsets = new Rect();
@@ -67,22 +77,25 @@ public class WorkModeSwitch extends LinearLayout implements Insettable,
private final int mTextMarginStart;
private final int mTextMarginEnd;
private final int mIconMarginStart;
+ private final String mWorkSchedulerIntentAction;
// Threshold when user scrolls up/down to determine when should button extend/collapse
private final int mScrollThreshold;
- private TextView mTextView;
- private ImageView mIcon;
private ValueAnimator mPauseFABAnim;
+ private TextView mPauseText;
+ private ImageView mWorkIcon;
+ private ImageButton mSchedulerButton;
- public WorkModeSwitch(@NonNull Context context) {
+ public WorkUtilityView(@NonNull Context context) {
this(context, null, 0);
}
- public WorkModeSwitch(@NonNull Context context, @NonNull AttributeSet attrs) {
+ public WorkUtilityView(@NonNull Context context, @NonNull AttributeSet attrs) {
this(context, attrs, 0);
}
- public WorkModeSwitch(@NonNull Context context, @NonNull AttributeSet attrs, int defStyleAttr) {
+ public WorkUtilityView(@NonNull Context context, @NonNull AttributeSet attrs,
+ int defStyleAttr) {
super(context, attrs, defStyleAttr);
mContext = context;
mScrollThreshold = Utilities.dpToPx(SCROLL_THRESHOLD_DP);
@@ -93,14 +106,17 @@ public class WorkModeSwitch extends LinearLayout implements Insettable,
R.dimen.work_fab_text_end_margin);
mIconMarginStart = mContext.getResources().getDimensionPixelSize(
R.dimen.work_fab_icon_start_margin_expanded);
+ mWorkSchedulerIntentAction = mContext.getResources().getString(
+ R.string.work_profile_scheduler_intent);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
- mTextView = findViewById(R.id.pause_text);
- mIcon = findViewById(R.id.work_icon);
+ mPauseText = findViewById(R.id.pause_text);
+ mWorkIcon = findViewById(R.id.work_icon);
+ mSchedulerButton = findViewById(R.id.work_scheduler);
setSelected(true);
KeyboardInsetAnimationCallback keyboardInsetAnimationCallback =
new KeyboardInsetAnimationCallback(this);
@@ -109,6 +125,12 @@ public class WorkModeSwitch extends LinearLayout implements Insettable,
addFlag(FLAG_IS_EXPAND);
setInsets(mActivityContext.getDeviceProfile().getInsets());
updateStringFromCache();
+ mSchedulerButton.setVisibility(GONE);
+ if (shouldUseScheduler()) {
+ mSchedulerButton.setVisibility(VISIBLE);
+ mSchedulerButton.setOnClickListener(view ->
+ mContext.startActivity(new Intent(mWorkSchedulerIntentAction)));
+ }
}
@Override
@@ -183,15 +205,63 @@ public class WorkModeSwitch extends LinearLayout implements Insettable,
super.setTranslationY(Math.min(translationY, -mInsets.bottom));
}
+ private ValueAnimator animateSchedulerScale(boolean isExpanding) {
+ float scaleFrom = isExpanding ? WORK_SCHEDULER_SCALE_MIN : WORK_SCHEDULER_SCALE_MAX;
+ float scaleTo = isExpanding ? WORK_SCHEDULER_SCALE_MAX : WORK_SCHEDULER_SCALE_MIN;
+ ValueAnimator schedulerScaleAnim = ObjectAnimator.ofFloat(scaleFrom, scaleTo);
+ schedulerScaleAnim.setDuration(EXPAND_COLLAPSE_DURATION);
+ schedulerScaleAnim.setInterpolator(Interpolators.STANDARD);
+ schedulerScaleAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator valueAnimator) {
+ float scale = (float) valueAnimator.getAnimatedValue();
+ mSchedulerButton.setScaleX(scale);
+ mSchedulerButton.setScaleY(scale);
+ }
+ });
+ schedulerScaleAnim.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationStart(Animator animation) {
+ if (isExpanding) {
+ mSchedulerButton.setVisibility(VISIBLE);
+ }
+ }
- private void animatePillTransition(boolean isExpanding) {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ if (!isExpanding) {
+ mSchedulerButton.setVisibility(GONE);
+ }
+ }
+ });
+ return schedulerScaleAnim;
+ }
+
+ private ValueAnimator animateSchedulerAlpha(boolean isExpanding) {
+ float alphaFrom = isExpanding ? 0 : 1;
+ float alphaTo = isExpanding ? 1 : 0;
+ ValueAnimator schedulerAlphaAnim = ObjectAnimator.ofFloat(alphaFrom, alphaTo);
+ schedulerAlphaAnim.setDuration(WORK_SCHEDULER_OPACITY_DURATION);
+ schedulerAlphaAnim.setStartDelay(isExpanding ? 0 :
+ EXPAND_COLLAPSE_DURATION - WORK_SCHEDULER_OPACITY_DURATION);
+ schedulerAlphaAnim.setInterpolator(Interpolators.STANDARD);
+ schedulerAlphaAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator valueAnimator) {
+ mSchedulerButton.setAlpha((float) valueAnimator.getAnimatedValue());
+ }
+ });
+ return schedulerAlphaAnim;
+ }
+
+ private void animateWorkUtilityViews(boolean isExpanding) {
if (!shouldAnimate(isExpanding)) {
return;
}
AnimatorSet animatorSet = new AnimatedPropertySetter().buildAnim();
- mTextView.measure(0,0);
- int currentWidth = mTextView.getWidth();
- int fullWidth = mTextView.getMeasuredWidth();
+ mPauseText.measure(0,0);
+ int currentWidth = mPauseText.getWidth();
+ int fullWidth = mPauseText.getMeasuredWidth();
float from = isExpanding ? 0 : currentWidth;
float to = isExpanding ? fullWidth : 0;
mPauseFABAnim = ObjectAnimator.ofFloat(from, to);
@@ -203,15 +273,15 @@ public class WorkModeSwitch extends LinearLayout implements Insettable,
float translation = (float) valueAnimator.getAnimatedValue();
float translationFraction = translation / fullWidth;
ViewGroup.MarginLayoutParams textViewLayoutParams =
- (ViewGroup.MarginLayoutParams) mTextView.getLayoutParams();
+ (ViewGroup.MarginLayoutParams) mPauseText.getLayoutParams();
textViewLayoutParams.width = (int) translation;
textViewLayoutParams.setMarginStart((int) (mTextMarginStart * translationFraction));
textViewLayoutParams.setMarginEnd((int) (mTextMarginEnd * translationFraction));
- mTextView.setLayoutParams(textViewLayoutParams);
+ mPauseText.setLayoutParams(textViewLayoutParams);
ViewGroup.MarginLayoutParams iconLayoutParams =
- (ViewGroup.MarginLayoutParams) mIcon.getLayoutParams();
+ (ViewGroup.MarginLayoutParams) mWorkIcon.getLayoutParams();
iconLayoutParams.setMarginStart((int) (mIconMarginStart * translationFraction));
- mIcon.setLayoutParams(iconLayoutParams);
+ mWorkIcon.setLayoutParams(iconLayoutParams);
}
});
mPauseFABAnim.addListener(new AnimatorListenerAdapter() {
@@ -220,21 +290,28 @@ public class WorkModeSwitch extends LinearLayout implements Insettable,
if (isExpanding) {
addFlag(FLAG_IS_EXPAND);
} else {
- mTextView.setVisibility(GONE);
+ mPauseText.setVisibility(GONE);
removeFlag(FLAG_IS_EXPAND);
}
- mTextView.setHorizontallyScrolling(false);
- mTextView.setEllipsize(TextUtils.TruncateAt.END);
+ mPauseText.setHorizontallyScrolling(false);
+ mPauseText.setEllipsize(TextUtils.TruncateAt.END);
}
@Override
public void onAnimationStart(Animator animator) {
- mTextView.setHorizontallyScrolling(true);
- mTextView.setVisibility(VISIBLE);
- mTextView.setEllipsize(null);
+ mPauseText.setHorizontallyScrolling(true);
+ mPauseText.setVisibility(VISIBLE);
+ mPauseText.setEllipsize(null);
}
});
- animatorSet.playTogether(mPauseFABAnim, updatePauseTextAlpha(isExpanding));
+ ArrayList animatorList = new ArrayList<>();
+ animatorList.add(mPauseFABAnim);
+ animatorList.add(updatePauseTextAlpha(isExpanding));
+ if (shouldUseScheduler()) {
+ animatorList.add(animateSchedulerScale(isExpanding));
+ animatorList.add(animateSchedulerAlpha(isExpanding));
+ }
+ animatorSet.playTogether(animatorList);
animatorSet.start();
}
@@ -250,7 +327,7 @@ public class WorkModeSwitch extends LinearLayout implements Insettable,
alphaAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
- mTextView.setAlpha((float) valueAnimator.getAnimatedValue());
+ mPauseText.setAlpha((float) valueAnimator.getAnimatedValue());
}
});
return alphaAnim;
@@ -287,11 +364,11 @@ public class WorkModeSwitch extends LinearLayout implements Insettable,
}
public void extend() {
- animatePillTransition(true);
+ animateWorkUtilityViews(true);
}
- public void shrink(){
- animatePillTransition(false);
+ public void shrink() {
+ animateWorkUtilityViews(false);
}
/**
@@ -310,7 +387,11 @@ public class WorkModeSwitch extends LinearLayout implements Insettable,
public void updateStringFromCache(){
StringCache cache = mActivityContext.getStringCache();
if (cache != null) {
- mTextView.setText(cache.workProfilePauseButton);
+ mPauseText.setText(cache.workProfilePauseButton);
}
}
+
+ private boolean shouldUseScheduler() {
+ return Flags.workSchedulerInWorkProfile() && !mWorkSchedulerIntentAction.isEmpty();
+ }
}
diff --git a/tests/src/com/android/launcher3/ui/TaplWorkProfileTest.java b/tests/src/com/android/launcher3/ui/TaplWorkProfileTest.java
index a45e3bbb84..33ffd1dd40 100644
--- a/tests/src/com/android/launcher3/ui/TaplWorkProfileTest.java
+++ b/tests/src/com/android/launcher3/ui/TaplWorkProfileTest.java
@@ -158,16 +158,16 @@ public class TaplWorkProfileTest extends AbstractLauncherUiTest {
waitForLauncherCondition("work profile initial state check failed", launcher ->
- manager.getWorkModeSwitch() != null
+ manager.getWorkUtilityView() != null
&& manager.getCurrentState() == WorkProfileManager.STATE_ENABLED
- && manager.getWorkModeSwitch().isEnabled(),
+ && manager.getWorkUtilityView().isEnabled(),
LauncherInstrumentation.WAIT_TIME_MS);
//start work profile toggle OFF test
executeOnLauncher(l -> {
// Ensure updates are not deferred so notification happens when apps pause.
l.getAppsView().getAppsStore().disableDeferUpdates(DEFER_UPDATES_TEST);
- l.getAppsView().getWorkManager().getWorkModeSwitch().performClick();
+ l.getAppsView().getWorkManager().getWorkUtilityView().performClick();
});
waitForLauncherCondition("Work profile toggle OFF failed", launcher -> {