OSDN Git Service

Add content description to bagded icons.
authorKenny Guy <kennyguy@google.com>
Fri, 20 Jun 2014 20:24:53 +0000 (21:24 +0100)
committerKenny Guy <kennyguy@google.com>
Mon, 23 Jun 2014 15:42:37 +0000 (16:42 +0100)
Enabled accesibility so that icons badged by the
managed profile have a content description
that is different to the non-bagdged version.

Bug: 15106236
Change-Id: Id483273173d9539916eebd59111d179087526be3

src/com/android/launcher3/BubbleTextView.java
src/com/android/launcher3/Folder.java
src/com/android/launcher3/IconCache.java
src/com/android/launcher3/ItemInfo.java
src/com/android/launcher3/Launcher.java
src/com/android/launcher3/LauncherModel.java
src/com/android/launcher3/PagedViewIcon.java
src/com/android/launcher3/ShortcutInfo.java
src/com/android/launcher3/Workspace.java

index 95300c1..ffe8366 100644 (file)
@@ -125,6 +125,9 @@ public class BubbleTextView extends TextView {
         setCompoundDrawables(null, iconDrawable, null, null);
         setCompoundDrawablePadding(grid.iconDrawablePaddingPx);
         setText(info.title);
+        if (info.contentDescription != null) {
+            setContentDescription(info.contentDescription);
+        }
         setTag(info);
         if (info.isPromise()) {
             setState(ShortcutInfo.PACKAGE_STATE_UNKNOWN); // TODO: persist this state somewhere
index e900c2b..af4a177 100644 (file)
@@ -571,6 +571,9 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
         textView.setCompoundDrawables(null,
                 Utilities.createIconDrawable(item.getIcon(mIconCache)), null, null);
         textView.setText(item.title);
+        if (item.contentDescription != null) {
+            textView.setContentDescription(item.contentDescription);
+        }
         textView.setTag(item);
         textView.setTextColor(getResources().getColor(R.color.folder_items_text_color));
         textView.setShadowsEnabled(false);
index be02d35..7d8628d 100644 (file)
@@ -65,6 +65,7 @@ public class IconCache {
     private static class CacheEntry {
         public Bitmap icon;
         public String title;
+        public String contentDescription;
     }
 
     private static class CacheKey {
@@ -240,6 +241,7 @@ public class IconCache {
 
             application.title = entry.title;
             application.iconBitmap = entry.icon;
+            application.contentDescription = entry.contentDescription;
         }
     }
 
@@ -262,6 +264,7 @@ public class IconCache {
             CacheEntry entry = cacheLocked(component, launcherActInfo, null, user);
             if (title != null) {
                 entry.title = title;
+                entry.contentDescription = mUserManager.getBadgedLabelForUser(title, user);
             }
             return entry.icon;
         }
@@ -310,6 +313,7 @@ public class IconCache {
                     }
                 }
 
+                entry.contentDescription = mUserManager.getBadgedLabelForUser(entry.title, user);
                 entry.icon = Utilities.createIconBitmap(
                         info.getBadgedIcon(mIconDpi), mContext);
             } else {
index 74f16e3..fe03017 100644 (file)
@@ -108,6 +108,11 @@ public class ItemInfo {
     CharSequence title;
 
     /**
+     * Content description of the item.
+     */
+    String contentDescription;
+
+    /**
      * The position of the item in a drag-and-drop operation.
      */
     int[] dropPos = null;
@@ -115,6 +120,7 @@ public class ItemInfo {
     UserHandleCompat user;
 
     ItemInfo() {
+        user = UserHandleCompat.myUserHandle();
     }
 
     ItemInfo(ItemInfo info) {
@@ -127,6 +133,7 @@ public class ItemInfo {
         itemType = info.itemType;
         container = info.container;
         user = info.user;
+        contentDescription = info.contentDescription;
         // tempdebug:
         LauncherModel.checkItemInfo(this);
     }
index 1d8591b..bf774f9 100644 (file)
@@ -4674,7 +4674,9 @@ public class Launcher extends Activity
 
     public ItemInfo createShortcutDragInfo(Intent shortcutIntent, CharSequence caption,
             Bitmap icon, UserHandleCompat user) {
-        return new ShortcutInfo(shortcutIntent, caption, icon, user);
+        UserManagerCompat userManager = UserManagerCompat.getInstance(this);
+        String contentDescription = userManager.getBadgedLabelForUser(caption.toString(), user);
+        return new ShortcutInfo(shortcutIntent, caption, contentDescription, icon, user);
     }
 
     protected void moveWorkspaceToDefaultScreen() {
index a975da4..310450f 100644 (file)
@@ -2820,6 +2820,7 @@ public class LauncherModel extends BroadcastReceiver
                         if (isShortcutInfoUpdateable(i)) {
                             ShortcutInfo info = (ShortcutInfo) i;
                             info.title = a.title.toString();
+                            info.contentDescription = a.contentDescription;
                             updateItemInDatabase(context, info);
                         }
                     }
@@ -2955,6 +2956,8 @@ public class LauncherModel extends BroadcastReceiver
             info.title = "";
         }
         info.user = UserHandleCompat.myUserHandle();
+        info.contentDescription = mUserManager.getBadgedLabelForUser(
+                info.title.toString(), info.user);
         info.setIcon(mIconCache.getIcon(intent, info.title.toString(), info.user));
         info.itemType = LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT;
         info.restoredIntent = intent;
@@ -3061,6 +3064,8 @@ public class LauncherModel extends BroadcastReceiver
         }
         info.itemType = LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
         info.user = user;
+        info.contentDescription = mUserManager.getBadgedLabelForUser(
+                info.title.toString(), info.user);
         return info;
     }
 
@@ -3336,6 +3341,8 @@ public class LauncherModel extends BroadcastReceiver
         info.setIcon(icon);
 
         info.title = name;
+        info.contentDescription = mUserManager.getBadgedLabelForUser(
+                info.title.toString(), info.user);
         info.intent = intent;
         info.customIcon = customIcon;
         info.iconResource = iconResource;
index f7cb997..713d3a4 100644 (file)
@@ -77,6 +77,9 @@ public class PagedViewIcon extends TextView {
         setCompoundDrawables(null, icon, null, null);
         setCompoundDrawablePadding(grid.iconDrawablePaddingPx);
         setText(info.title);
+        if (info.contentDescription != null) {
+            setContentDescription(info.contentDescription);
+        }
         setTag(info);
     }
 
index f40cf9f..0be7c02 100644 (file)
@@ -113,10 +113,12 @@ public class ShortcutInfo extends ItemInfo {
         }
     }
 
-    ShortcutInfo(Intent intent, CharSequence title, Bitmap icon, UserHandleCompat user) {
+    ShortcutInfo(Intent intent, CharSequence title, String contentDescrition,
+            Bitmap icon, UserHandleCompat user) {
         this();
         this.intent = intent;
         this.title = title;
+        this.contentDescription = contentDescription;
         mIcon = icon;
         this.user = user;
     }
index 6afea82..6476bc9 100644 (file)
@@ -4781,6 +4781,7 @@ public class Workspace extends SmoothPagedView
                 shortcutInfo.restore();
                 shortcutInfo.updateIcon(mIconCache);
                 shortcutInfo.title = appInfo.title.toString();
+                shortcutInfo.contentDescription = appInfo.contentDescription;
                 shortcut.applyFromShortcutInfo(shortcutInfo, mIconCache);
             }
         }