| /* |
| * Copyright (C) 2012 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 android.support.v4.view.accessibility; |
| |
| import android.os.Bundle; |
| import android.view.accessibility.AccessibilityNodeInfo; |
| |
| /** |
| * KitKat-specific AccessibilityNodeInfo API implementation. |
| */ |
| class AccessibilityNodeInfoCompatKitKat { |
| private static final byte TRAIT_UNSET = -1; |
| private static final String TRAITS_KEY = |
| "android.view.accessibility.AccessibilityNodeInfo.traits"; |
| private static final long TRAIT_HAS_IMAGE = 0x00000001; |
| private static final String ROLE_DESCRIPTION_KEY = |
| "AccessibilityNodeInfo.roleDescription"; |
| |
| static int getLiveRegion(Object info) { |
| return ((AccessibilityNodeInfo) info).getLiveRegion(); |
| } |
| |
| static void setLiveRegion(Object info, int mode) { |
| ((AccessibilityNodeInfo) info).setLiveRegion(mode); |
| } |
| |
| static Object getCollectionInfo(Object info) { |
| return ((AccessibilityNodeInfo) info).getCollectionInfo(); |
| } |
| |
| static Object getCollectionItemInfo(Object info) { |
| return ((AccessibilityNodeInfo) info).getCollectionItemInfo(); |
| } |
| |
| public static void setCollectionInfo(Object info, Object collectionInfo) { |
| ((AccessibilityNodeInfo) info).setCollectionInfo( |
| (AccessibilityNodeInfo.CollectionInfo)collectionInfo); |
| } |
| |
| public static void setCollectionItemInfo(Object info, Object collectionItemInfo) { |
| ((AccessibilityNodeInfo) info).setCollectionItemInfo( |
| (AccessibilityNodeInfo.CollectionItemInfo) collectionItemInfo); |
| } |
| |
| static Object getRangeInfo(Object info) { |
| return ((AccessibilityNodeInfo) info).getRangeInfo(); |
| } |
| |
| public static void setRangeInfo(Object info, Object rangeInfo) { |
| ((AccessibilityNodeInfo) info).setRangeInfo((AccessibilityNodeInfo.RangeInfo) rangeInfo); |
| } |
| |
| public static Object obtainCollectionInfo(int rowCount, int columnCount, |
| boolean hierarchical, int selectionMode) { |
| return AccessibilityNodeInfo.CollectionInfo.obtain(rowCount, columnCount, hierarchical); |
| } |
| |
| public static Object obtainCollectionItemInfo(int rowIndex, int rowSpan, int columnIndex, |
| int columnSpan, boolean heading) { |
| return AccessibilityNodeInfo.CollectionItemInfo.obtain(rowIndex, rowSpan, columnIndex, |
| columnSpan, heading); |
| } |
| |
| public static void setContentInvalid(Object info, boolean contentInvalid) { |
| ((AccessibilityNodeInfo) info).setContentInvalid(contentInvalid); |
| } |
| |
| public static boolean isContentInvalid(Object info) { |
| return ((AccessibilityNodeInfo) info).isContentInvalid(); |
| } |
| |
| public static boolean canOpenPopup(Object info) { |
| return ((AccessibilityNodeInfo) info).canOpenPopup(); |
| } |
| |
| public static void setCanOpenPopup(Object info, boolean opensPopup) { |
| ((AccessibilityNodeInfo) info).setCanOpenPopup(opensPopup); |
| } |
| |
| public static Bundle getExtras(Object info) { |
| return ((AccessibilityNodeInfo) info).getExtras(); |
| } |
| |
| private static long getTraits(Object info) { |
| return getExtras(info).getLong(TRAITS_KEY, TRAIT_UNSET); |
| } |
| |
| private static void setTrait(Object info, long trait) { |
| Bundle extras = getExtras(info); |
| long traits = extras.getLong(TRAITS_KEY, 0); |
| extras.putLong(TRAITS_KEY, traits | trait); |
| } |
| |
| public static int getInputType(Object info) { |
| return ((AccessibilityNodeInfo) info).getInputType(); |
| } |
| |
| public static void setInputType(Object info, int inputType) { |
| ((AccessibilityNodeInfo) info).setInputType(inputType); |
| } |
| |
| public static boolean isDismissable(Object info) { |
| return ((AccessibilityNodeInfo) info).isDismissable(); |
| } |
| |
| public static void setDismissable(Object info, boolean dismissable) { |
| ((AccessibilityNodeInfo) info).setDismissable(dismissable); |
| } |
| |
| public static boolean isMultiLine(Object info) { |
| return ((AccessibilityNodeInfo) info).isMultiLine(); |
| } |
| |
| public static void setMultiLine(Object info, boolean multiLine) { |
| ((AccessibilityNodeInfo) info).setMultiLine(multiLine); |
| } |
| |
| public static CharSequence getRoleDescription(Object info) { |
| Bundle extras = getExtras(info); |
| return extras.getCharSequence(ROLE_DESCRIPTION_KEY); |
| } |
| |
| public static void setRoleDescription(Object info, CharSequence roleDescription) { |
| Bundle extras = getExtras(info); |
| extras.putCharSequence(ROLE_DESCRIPTION_KEY, roleDescription); |
| } |
| |
| static class CollectionInfo { |
| static int getColumnCount(Object info) { |
| return ((AccessibilityNodeInfo.CollectionInfo) info).getColumnCount(); |
| } |
| |
| static int getRowCount(Object info) { |
| return ((AccessibilityNodeInfo.CollectionInfo) info).getRowCount(); |
| } |
| |
| static boolean isHierarchical(Object info) { |
| return ((AccessibilityNodeInfo.CollectionInfo) info).isHierarchical(); |
| } |
| } |
| |
| static class CollectionItemInfo { |
| static int getColumnIndex(Object info) { |
| return ((AccessibilityNodeInfo.CollectionItemInfo) info).getColumnIndex(); |
| } |
| |
| static int getColumnSpan(Object info) { |
| return ((AccessibilityNodeInfo.CollectionItemInfo) info).getColumnSpan(); |
| } |
| |
| static int getRowIndex(Object info) { |
| return ((AccessibilityNodeInfo.CollectionItemInfo) info).getRowIndex(); |
| } |
| |
| static int getRowSpan(Object info) { |
| return ((AccessibilityNodeInfo.CollectionItemInfo) info).getRowSpan(); |
| } |
| |
| static boolean isHeading(Object info) { |
| return ((AccessibilityNodeInfo.CollectionItemInfo) info).isHeading(); |
| } |
| } |
| |
| static class RangeInfo { |
| static float getCurrent(Object info) { |
| return ((AccessibilityNodeInfo.RangeInfo) info).getCurrent(); |
| } |
| |
| static float getMax(Object info) { |
| return ((AccessibilityNodeInfo.RangeInfo) info).getMax(); |
| } |
| |
| static float getMin(Object info) { |
| return ((AccessibilityNodeInfo.RangeInfo) info).getMin(); |
| } |
| |
| static int getType(Object info) { |
| return ((AccessibilityNodeInfo.RangeInfo) info).getType(); |
| } |
| } |
| } |