/* * 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.LauncherState.OVERVIEW; import android.view.MotionEvent; import com.android.launcher3.Launcher; import com.android.launcher3.touch.SwipeDetector; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch; import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; import com.android.launcher3.util.VerticalSwipeController; /** * Extension of {@link VerticalSwipeController} which allows swipe up from OVERVIEW to ALL_APPS * Note that the swipe down is handled by {@link TwoStepSwipeController}. */ public class OverviewSwipeUpController extends VerticalSwipeController { public OverviewSwipeUpController(Launcher l) { super(l, OVERVIEW); } @Override protected boolean shouldInterceptTouch(MotionEvent ev) { if (!mLauncher.isInState(OVERVIEW)) { return false; } if (mLauncher.getDeviceProfile().isVerticalBarLayout()) { return ev.getY() > mLauncher.getDragLayer().getHeight() * OVERVIEW.getVerticalProgress(mLauncher); } else { return mLauncher.getDragLayer().isEventOverHotseat(ev); } } @Override protected int getSwipeDirection(MotionEvent ev) { return SwipeDetector.DIRECTION_POSITIVE; } @Override protected void onTransitionComplete(boolean wasFling, boolean stateChanged) { if (stateChanged) { // Transition complete. log the action mLauncher.getUserEventDispatcher().logStateChangeAction( wasFling ? Touch.FLING : Touch.SWIPE, Direction.UP, ContainerType.HOTSEAT, ContainerType.TASKSWITCHER, ContainerType.ALLAPPS, mLauncher.getWorkspace().getCurrentPage()); } } }