diff options
Diffstat (limited to 'src/com/android/launcher3/accessibility/AccessibleDragListenerAdapter.java')
-rw-r--r-- | src/com/android/launcher3/accessibility/AccessibleDragListenerAdapter.java | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/com/android/launcher3/accessibility/AccessibleDragListenerAdapter.java b/src/com/android/launcher3/accessibility/AccessibleDragListenerAdapter.java new file mode 100644 index 000000000..f8df5d7be --- /dev/null +++ b/src/com/android/launcher3/accessibility/AccessibleDragListenerAdapter.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2016 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.accessibility; + +import android.view.ViewGroup; + +import com.android.launcher3.CellLayout; +import com.android.launcher3.DropTarget.DragObject; +import com.android.launcher3.Launcher; +import com.android.launcher3.dragndrop.DragController.DragListener; +import com.android.launcher3.dragndrop.DragOptions; + +/** + * Utility listener to enable/disable accessibility drag flags for a ViewGroup + * containing CellLayouts + */ +public class AccessibleDragListenerAdapter implements DragListener { + + private final ViewGroup mViewGroup; + private final int mDragType; + + /** + * @param parent + * @param dragType either {@link CellLayout#WORKSPACE_ACCESSIBILITY_DRAG} or + * {@link CellLayout#FOLDER_ACCESSIBILITY_DRAG} + */ + public AccessibleDragListenerAdapter(ViewGroup parent, int dragType) { + mViewGroup = parent; + mDragType = dragType; + } + + @Override + public void onDragStart(DragObject dragObject, DragOptions options) { + enableAccessibleDrag(true); + } + + @Override + public void onDragEnd() { + enableAccessibleDrag(false); + Launcher.getLauncher(mViewGroup.getContext()).getDragController().removeDragListener(this); + } + + protected void enableAccessibleDrag(boolean enable) { + for (int i = 0; i < mViewGroup.getChildCount(); i++) { + setEnableForLayout((CellLayout) mViewGroup.getChildAt(i), enable); + } + } + + protected final void setEnableForLayout(CellLayout layout, boolean enable) { + layout.enableAccessibleDrag(enable, mDragType); + } +} |