Fix 2241848 - 3D apps folder does not send accessibility events

It's now sending them.  The beeping and vibrating accessibility things
work, but we only have prebuilts for the speech one and it's not saying
anything and I can't debug it, so this will have to do.
This commit is contained in:
Joe Onorato
2009-11-11 14:52:11 -08:00
parent a30ce8e6b2
commit 52a653f3ff
3 changed files with 63 additions and 2 deletions
+6
View File
@@ -88,6 +88,12 @@
<!-- Title of dialog when user is selecting live folder to add to homescreen -->
<string name="title_select_live_folder">Select folder</string>
<!-- All applications label for accessibilty (spoken when the button gets focus). -->
<string name="all_apps_button_label">All applications</string>
<!-- Label for button in all applications label to go back home (to the workspace / desktop)
for accessibilty (spoken when the button gets focus). -->
<string name="all_apps_home_button_label">Home</string>
<!-- Menus items: -->
<skip />
<!-- Verb, menu item used to add an item on the desktop -->
+55 -2
View File
@@ -46,6 +46,7 @@ import android.view.SurfaceHolder;
import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.accessibility.AccessibilityEvent;
import java.util.ArrayList;
import java.util.Collections;
@@ -565,6 +566,44 @@ public class AllAppsView extends RSSurfaceView
return true;
}
@Override
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_SELECTED) {
if (!isVisible()) {
return false;
}
String text = null;
int index;
int count = mAllAppsList.size() + 1; // +1 is home
int pos = -1;
switch (mLastSelection) {
case SELECTION_ICONS:
index = mRollo.mState.selectedIconIndex;
if (index >= 0) {
ApplicationInfo info = mAllAppsList.get(index);
if (info.title != null) {
text = info.title.toString();
pos = index;
}
}
break;
case SELECTION_HOME:
text = getContext().getString(R.string.all_apps_home_button_label);
pos = count;
break;
}
if (text != null) {
Log.d(TAG, "dispatchPopulateAccessibilityEvent setting text=" + text);
event.setEnabled(true);
event.getText().add(text);
//event.setContentDescription(text);
event.setItemCount(count);
event.setCurrentItemIndex(pos);
}
}
return false;
}
public void setDragController(DragController dragger) {
mDragController = dragger;
}
@@ -1286,19 +1325,28 @@ public class AllAppsView extends RSSurfaceView
mLastSelection = SELECTION_ICONS;
}
int prev = mState.selectedIconIndex;
mState.selectedIconIndex = index;
ApplicationInfo info = mAllAppsList.get(index);
Bitmap selectionBitmap = mSelectionBitmap;
Utilities.drawSelectedAllAppsBitmap(mSelectionCanvas,
selectionBitmap.getWidth(), selectionBitmap.getHeight(),
pressed == SELECTED_PRESSED,
mAllAppsList.get(index).iconBitmap);
pressed == SELECTED_PRESSED, info.iconBitmap);
mSelectedIcon = Allocation.createFromBitmap(mRS, selectionBitmap,
Element.RGBA_8888(mRS), false);
mSelectedIcon.uploadToTexture(0);
mState.selectedIconTexture = mSelectedIcon.getID();
if (prev != index) {
if (info.title != null && info.title.length() > 0) {
Log.d(TAG, "sendAccessibilityEvent SELECTION_ICONS " + info.title);
//setContentDescription(info.title);
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
}
}
}
}
@@ -1310,6 +1358,7 @@ public class AllAppsView extends RSSurfaceView
}
void setHomeSelected(int mode) {
final int prev = mLastSelection;
switch (mode) {
case SELECTED_NONE:
mState.homeButtonId = mHomeButtonNormal.getID();
@@ -1317,6 +1366,10 @@ public class AllAppsView extends RSSurfaceView
case SELECTED_FOCUSED:
mLastSelection = SELECTION_HOME;
mState.homeButtonId = mHomeButtonFocused.getID();
if (prev != SELECTION_HOME) {
Log.d(TAG, "sendAccessibilityEvent SELECTION_HOME");
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
}
break;
case SELECTED_PRESSED:
mState.homeButtonId = mHomeButtonPressed.getID();
@@ -45,6 +45,8 @@ public class HandleView extends ImageView {
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.HandleView, defStyle, 0);
mOrientation = a.getInt(R.styleable.HandleView_direction, ORIENTATION_HORIZONTAL);
a.recycle();
setContentDescription(context.getString(R.string.all_apps_button_label));
}
@Override