194b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal/* 294b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * Copyright (C) 2016 The Android Open Source Project 394b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * 494b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * Licensed under the Apache License, Version 2.0 (the "License"); 594b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * you may not use this file except in compliance with the License. 694b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * You may obtain a copy of the License at 794b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * 894b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * http://www.apache.org/licenses/LICENSE-2.0 994b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * 1094b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * Unless required by applicable law or agreed to in writing, software 1194b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * distributed under the License is distributed on an "AS IS" BASIS, 1294b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1394b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * See the License for the specific language governing permissions and 1494b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * limitations under the License. 1594b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal */ 1694b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal 1794b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyalpackage com.android.launcher3.accessibility; 1894b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal 1994b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyalimport android.view.ViewGroup; 2094b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal 2194b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyalimport com.android.launcher3.CellLayout; 2294b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyalimport com.android.launcher3.DropTarget.DragObject; 2394b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyalimport com.android.launcher3.Launcher; 2494b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyalimport com.android.launcher3.dragndrop.DragController.DragListener; 2594b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyalimport com.android.launcher3.dragndrop.DragOptions; 2694b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal 2794b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal/** 2894b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * Utility listener to enable/disable accessibility drag flags for a ViewGroup 2994b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * containing CellLayouts 3094b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal */ 310de011705b132eacdd10f7bfb5cdc4bd79a147e8Hyunyoung Songpublic class AccessibleDragListenerAdapter implements DragListener { 3294b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal 3394b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal private final ViewGroup mViewGroup; 3494b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal private final int mDragType; 3594b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal 3694b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal /** 3794b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * @param parent 3894b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * @param dragType either {@link CellLayout#WORKSPACE_ACCESSIBILITY_DRAG} or 3994b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal * {@link CellLayout#FOLDER_ACCESSIBILITY_DRAG} 4094b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal */ 410de011705b132eacdd10f7bfb5cdc4bd79a147e8Hyunyoung Song public AccessibleDragListenerAdapter(ViewGroup parent, int dragType) { 4294b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal mViewGroup = parent; 4394b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal mDragType = dragType; 4494b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal } 4594b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal 4694b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal @Override 4794b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal public void onDragStart(DragObject dragObject, DragOptions options) { 4894b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal enableAccessibleDrag(true); 4994b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal } 5094b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal 5194b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal @Override 5294b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal public void onDragEnd() { 5394b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal enableAccessibleDrag(false); 5494b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal Launcher.getLauncher(mViewGroup.getContext()).getDragController().removeDragListener(this); 5594b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal } 5694b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal 5794b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal protected void enableAccessibleDrag(boolean enable) { 5894b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal for (int i = 0; i < mViewGroup.getChildCount(); i++) { 5994b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal setEnableForLayout((CellLayout) mViewGroup.getChildAt(i), enable); 6094b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal } 6194b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal } 6294b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal 6394b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal protected final void setEnableForLayout(CellLayout layout, boolean enable) { 6494b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal layout.enableAccessibleDrag(enable, mDragType); 6594b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal } 6694b510cc683a6436ae82c6d323cbd8b429561b06Sunny Goyal} 67