/* * 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) { return mLauncher.isInState(OVERVIEW) && 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().logActionOnContainer( wasFling ? Touch.FLING : Touch.SWIPE, Direction.UP, ContainerType.OVERVIEW, mLauncher.getWorkspace().getCurrentPage()); } } }