diff options
author | Kevin <kevhan@google.com> | 2019-01-23 12:14:33 -0800 |
---|---|---|
committer | Kevin <kevhan@google.com> | 2019-01-23 13:01:57 -0800 |
commit | 932ab718fdf240d9be9508f6166e9cadca7eddc1 (patch) | |
tree | e4ae93ecb779440a12c32285407b6872e496f388 /quickstep/recents_ui_overrides/src/com/android | |
parent | 494963c74a9be2ac07a946b7471cab508d65ef85 (diff) | |
download | android_packages_apps_Trebuchet-932ab718fdf240d9be9508f6166e9cadca7eddc1.tar.gz android_packages_apps_Trebuchet-932ab718fdf240d9be9508f6166e9cadca7eddc1.tar.bz2 android_packages_apps_Trebuchet-932ab718fdf240d9be9508f6166e9cadca7eddc1.zip |
Split OverviewState for IconRecents Go
Split common functionality in OverviewState so that it can be reused in
both implementations for IconRecents Go and non-Go.
Bug: 114136250
Test: Manual test NexusLauncher, Launcher3GoWithQuickstep
Test: Manual test IconRecentsGo (gets to recents screen w/o crashing)
Change-Id: Ibff5d3573b3b22dcdfda1b0662d4dd219d2e382f
Diffstat (limited to 'quickstep/recents_ui_overrides/src/com/android')
-rw-r--r-- | quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/OverviewState.java | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/OverviewState.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/OverviewState.java new file mode 100644 index 000000000..de6f7a759 --- /dev/null +++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/OverviewState.java @@ -0,0 +1,153 @@ +/* + * Copyright (C) 2017 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 com.android.launcher3.AbstractFloatingView.TYPE_QUICKSTEP_PREVIEW; +import static com.android.launcher3.LauncherAnimUtils.OVERVIEW_TRANSITION_MS; +import static com.android.launcher3.anim.Interpolators.DEACCEL_2; +import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE; +import static com.android.launcher3.states.RotationHelper.REQUEST_ROTATE; + +import android.graphics.Rect; +import android.view.View; + +import com.android.launcher3.AbstractFloatingView; +import com.android.launcher3.DeviceProfile; +import com.android.launcher3.Launcher; +import com.android.launcher3.LauncherState; +import com.android.launcher3.R; +import com.android.launcher3.Workspace; +import com.android.launcher3.allapps.DiscoveryBounce; +import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; +import com.android.quickstep.RecentsModel; +import com.android.quickstep.views.RecentsView; +import com.android.quickstep.views.TaskView; + +/** + * Definition for overview state + */ +public class OverviewState extends LauncherState { + + protected static final Rect sTempRect = new Rect(); + + private static final int STATE_FLAGS = FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED + | FLAG_DISABLE_RESTORE | FLAG_OVERVIEW_UI | FLAG_DISABLE_ACCESSIBILITY; + + public OverviewState(int id) { + this(id, OVERVIEW_TRANSITION_MS, STATE_FLAGS); + } + + protected OverviewState(int id, int transitionDuration, int stateFlags) { + super(id, ContainerType.TASKSWITCHER, transitionDuration, stateFlags); + } + + @Override + public float[] getWorkspaceScaleAndTranslation(Launcher launcher) { + RecentsView recentsView = launcher.getOverviewPanel(); + Workspace workspace = launcher.getWorkspace(); + View workspacePage = workspace.getPageAt(workspace.getCurrentPage()); + float workspacePageWidth = workspacePage != null && workspacePage.getWidth() != 0 + ? workspacePage.getWidth() : launcher.getDeviceProfile().availableWidthPx; + recentsView.getTaskSize(sTempRect); + float scale = (float) sTempRect.width() / workspacePageWidth; + float parallaxFactor = 0.5f; + return new float[]{scale, 0, -getDefaultSwipeHeight(launcher) * parallaxFactor}; + } + + @Override + public float[] getOverviewScaleAndTranslationYFactor(Launcher launcher) { + return new float[] {1f, 0f}; + } + + @Override + public void onStateEnabled(Launcher launcher) { + RecentsView rv = launcher.getOverviewPanel(); + rv.setOverviewStateEnabled(true); + if (ENABLE_QUICKSTEP_LIVE_TILE.get()) { + AbstractFloatingView.closeAllOpenViews(launcher); + } else { + AbstractFloatingView.closeAllOpenViewsExcept(launcher, TYPE_QUICKSTEP_PREVIEW); + } + } + + @Override + public void onStateDisabled(Launcher launcher) { + RecentsView rv = launcher.getOverviewPanel(); + rv.setOverviewStateEnabled(false); + RecentsModel.INSTANCE.get(launcher).resetAssistCache(); + } + + @Override + public void onStateTransitionEnd(Launcher launcher) { + launcher.getRotationHelper().setCurrentStateRequest(REQUEST_ROTATE); + DiscoveryBounce.showForOverviewIfNeeded(launcher); + } + + public PageAlphaProvider getWorkspacePageAlphaProvider(Launcher launcher) { + return new PageAlphaProvider(DEACCEL_2) { + @Override + public float getPageAlpha(int pageIndex) { + return 0; + } + }; + } + + @Override + public int getVisibleElements(Launcher launcher) { + if (launcher.getDeviceProfile().isVerticalBarLayout()) { + return VERTICAL_SWIPE_INDICATOR; + } else { + return HOTSEAT_SEARCH_BOX | VERTICAL_SWIPE_INDICATOR | + (launcher.getAppsView().getFloatingHeaderView().hasVisibleContent() + ? ALL_APPS_HEADER_EXTRA : HOTSEAT_ICONS); + } + } + + @Override + public float getWorkspaceScrimAlpha(Launcher launcher) { + return 0.5f; + } + + @Override + public float getVerticalProgress(Launcher launcher) { + if ((getVisibleElements(launcher) & ALL_APPS_HEADER_EXTRA) == 0) { + // We have no all apps content, so we're still at the fully down progress. + return super.getVerticalProgress(launcher); + } + return 1 - (getDefaultSwipeHeight(launcher) + / launcher.getAllAppsController().getShiftRange()); + } + + @Override + public String getDescription(Launcher launcher) { + return launcher.getString(R.string.accessibility_desc_recent_apps); + } + + public static float getDefaultSwipeHeight(Launcher launcher) { + DeviceProfile dp = launcher.getDeviceProfile(); + return dp.allAppsCellHeightPx - dp.allAppsIconTextSizePx; + } + + @Override + public void onBackPressed(Launcher launcher) { + TaskView taskView = launcher.<RecentsView>getOverviewPanel().getRunningTaskView(); + if (taskView != null) { + taskView.launchTask(true); + } else { + super.onBackPressed(launcher); + } + } +} |