summaryrefslogtreecommitdiffstats
path: root/quickstep/recents_ui_overrides/src/com/android/launcher3
diff options
context:
space:
mode:
authorKevin <kevhan@google.com>2019-01-07 17:22:05 -0800
committerKevin <kevhan@google.com>2019-01-10 12:57:15 -0800
commitec6e41dda1b287003420096c70ce7864f466d75f (patch)
treee783f952abe6fe941905921ec2c51e0f9e4543dc /quickstep/recents_ui_overrides/src/com/android/launcher3
parent238f324ebff31ecb7151a7a94955c857ca8e33de (diff)
downloadandroid_packages_apps_Trebuchet-ec6e41dda1b287003420096c70ce7864f466d75f.tar.gz
android_packages_apps_Trebuchet-ec6e41dda1b287003420096c70ce7864f466d75f.tar.bz2
android_packages_apps_Trebuchet-ec6e41dda1b287003420096c70ce7864f466d75f.zip
Split out recents logic from UiFactory
This CL splits out RecentsView specific logic from UiFactory and overrides it in the Go IconRecents version, stubbing out much of the functionality. Bug: 114136250 Test: Manual test NexusLauncher, Launcher3GoQuickstep Test: Build Launcher3GoIconRecents Change-Id: I043f7f2b2581831f1a74a80110e9c4c25231c046
Diffstat (limited to 'quickstep/recents_ui_overrides/src/com/android/launcher3')
-rw-r--r--quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsUiFactory.java113
1 files changed, 113 insertions, 0 deletions
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsUiFactory.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsUiFactory.java
new file mode 100644
index 000000000..f18f43c4c
--- /dev/null
+++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/RecentsUiFactory.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.launcher3.uioverrides;
+
+import static android.view.View.VISIBLE;
+
+import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
+import static com.android.launcher3.LauncherState.NORMAL;
+import static com.android.launcher3.LauncherState.OVERVIEW;
+
+import com.android.launcher3.Launcher;
+import com.android.launcher3.LauncherState;
+import com.android.launcher3.LauncherStateManager.StateHandler;
+import com.android.launcher3.anim.AnimatorPlaybackController;
+import com.android.launcher3.util.TouchController;
+import com.android.quickstep.views.RecentsView;
+
+/**
+ * Provides recents-related {@link UiFactory} logic and classes.
+ */
+public final class RecentsUiFactory {
+
+ // Scale recents takes before animating in
+ private static final float RECENTS_PREPARE_SCALE = 1.33f;
+
+ private RecentsUiFactory() {}
+
+ /**
+ * Creates and returns a touch controller for swiping recents tasks.
+ *
+ * @param launcher the launcher activity
+ * @return the touch controller for recents tasks
+ */
+ public static TouchController createTaskSwipeController(Launcher launcher) {
+ return new LauncherTaskViewController(launcher);
+ }
+
+ /**
+ * Creates and returns the controller responsible for recents view state transitions.
+ *
+ * @param launcher the launcher activity
+ * @return state handler for recents
+ */
+ public static StateHandler createRecentsViewStateController(Launcher launcher) {
+ return new RecentsViewStateController(launcher);
+ }
+
+ /**
+ * Prepare the recents view to animate in.
+ *
+ * @param launcher the launcher activity
+ */
+ public static void prepareToShowRecents(Launcher launcher) {
+ RecentsView overview = launcher.getOverviewPanel();
+ if (overview.getVisibility() != VISIBLE || overview.getContentAlpha() == 0) {
+ SCALE_PROPERTY.set(overview, RECENTS_PREPARE_SCALE);
+ }
+ }
+
+ /**
+ * Clean-up logic that occurs when recents is no longer in use/visible.
+ *
+ * @param launcher the launcher activity
+ */
+ public static void resetRecents(Launcher launcher) {
+ RecentsView recents = launcher.getOverviewPanel();
+ recents.reset();
+ }
+
+ /**
+ * Recents logic that triggers when launcher state changes or launcher activity stops/resumes.
+ *
+ * @param launcher the launcher activity
+ */
+ public static void onLauncherStateOrResumeChanged(Launcher launcher) {
+ LauncherState state = launcher.getStateManager().getState();
+ if (state == NORMAL) {
+ launcher.<RecentsView>getOverviewPanel().setSwipeDownShouldLaunchApp(false);
+ }
+ }
+
+ private static final class LauncherTaskViewController extends
+ TaskViewTouchController<Launcher> {
+
+ LauncherTaskViewController(Launcher activity) {
+ super(activity);
+ }
+
+ @Override
+ protected boolean isRecentsInteractive() {
+ return mActivity.isInState(OVERVIEW);
+ }
+
+ @Override
+ protected void onUserControlledAnimationCreated(AnimatorPlaybackController animController) {
+ mActivity.getStateManager().setCurrentUserControlledAnimation(animController);
+ }
+ }
+}