diff options
-rw-r--r-- | res/values/strings.xml | 3 | ||||
-rw-r--r-- | src/com/android/launcher3/LiveWallpaperListAdapter.java | 48 | ||||
-rw-r--r-- | src/com/android/launcher3/SavedWallpaperImages.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher3/WallpaperPickerActivity.java | 84 |
4 files changed, 91 insertions, 48 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index dfccd981b..9f4f20bfa 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -38,6 +38,9 @@ <item quantity="one">%1$d selected</item> <item quantity="other">%1$d selected</item> </plurals> + <!-- Accessibility string used as a label for a particular wallpaper in the Wallpaper Picker list. + e.g. "Wallpaper 3 of 10" --> + <string name="wallpaper_accessibility_name">Wallpaper %1$d of %2$d</string> <!-- Label on button to delete wallpaper(s) --> <string name="wallpaper_delete">Delete</string> diff --git a/src/com/android/launcher3/LiveWallpaperListAdapter.java b/src/com/android/launcher3/LiveWallpaperListAdapter.java index 4b597946f..54e0af749 100644 --- a/src/com/android/launcher3/LiveWallpaperListAdapter.java +++ b/src/com/android/launcher3/LiveWallpaperListAdapter.java @@ -93,6 +93,7 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter WallpaperPickerActivity.setWallpaperItemPaddingToZero((FrameLayout) view); LiveWallpaperTile wallpaperInfo = mWallpapers.get(position); + wallpaperInfo.setView(view); ImageView image = (ImageView) view.findViewById(R.id.wallpaper_image); ImageView icon = (ImageView) view.findViewById(R.id.wallpaper_icon); if (wallpaperInfo.mThumbnail != null) { @@ -174,46 +175,10 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter Intent launchIntent = new Intent(WallpaperService.SERVICE_INTERFACE); launchIntent.setClassName(info.getPackageName(), info.getServiceName()); LiveWallpaperTile wallpaper = new LiveWallpaperTile(thumb, info, launchIntent); - - // TODO: generate a default thumb - /* - final Resources res = mContext.getResources(); - Canvas canvas = new Canvas(); - Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG); - paint.setTextAlign(Paint.Align.CENTER); - BitmapDrawable galleryIcon = (BitmapDrawable) res.getDrawable( - R.drawable.livewallpaper_placeholder); - if (thumb == null) { - int thumbWidth = res.getDimensionPixelSize( - R.dimen.live_wallpaper_thumbnail_width); - int thumbHeight = res.getDimensionPixelSize( - R.dimen.live_wallpaper_thumbnail_height); - - Bitmap thumbnail = Bitmap.createBitmap(thumbWidth, thumbHeight, - Bitmap.Config.ARGB_8888); - - paint.setColor(res.getColor(R.color.live_wallpaper_thumbnail_background)); - canvas.setBitmap(thumbnail); - canvas.drawPaint(paint); - - galleryIcon.setBounds(0, 0, thumbWidth, thumbHeight); - galleryIcon.setGravity(Gravity.CENTER); - galleryIcon.draw(canvas); - - String title = info.loadLabel(packageManager).toString(); - - paint.setColor(res.getColor(R.color.live_wallpaper_thumbnail_text_color)); - paint.setTextSize( - res.getDimensionPixelSize(R.dimen.live_wallpaper_thumbnail_text_size)); - - canvas.drawText(title, (int) (thumbWidth * 0.5), - thumbHeight - res.getDimensionPixelSize( - R.dimen.live_wallpaper_thumbnail_text_offset), paint); - - thumb = new BitmapDrawable(res, thumbnail); - }*/ publishProgress(wallpaper); } + // Send a null object to show loading is finished + publishProgress((LiveWallpaperTile) null); return null; } @@ -221,6 +186,10 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter @Override protected void onProgressUpdate(LiveWallpaperTile...infos) { for (LiveWallpaperTile info : infos) { + if (info == null) { + LiveWallpaperListAdapter.this.notifyDataSetChanged(); + break; + } info.mThumbnail.setDither(true); if (mWallpaperPosition < mWallpapers.size()) { mWallpapers.set(mWallpaperPosition, info); @@ -228,9 +197,6 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter mWallpapers.add(info); } mWallpaperPosition++; - if (mWallpaperPosition == getCount()) { - LiveWallpaperListAdapter.this.notifyDataSetChanged(); - } } } } diff --git a/src/com/android/launcher3/SavedWallpaperImages.java b/src/com/android/launcher3/SavedWallpaperImages.java index 531672a04..ee4888d2b 100644 --- a/src/com/android/launcher3/SavedWallpaperImages.java +++ b/src/com/android/launcher3/SavedWallpaperImages.java @@ -79,6 +79,10 @@ public class SavedWallpaperImages extends BaseAdapter implements ListAdapter { public boolean isSelectable() { return true; } + @Override + public boolean isNamelessWallpaper() { + return true; + } } public SavedWallpaperImages(Activity context) { diff --git a/src/com/android/launcher3/WallpaperPickerActivity.java b/src/com/android/launcher3/WallpaperPickerActivity.java index 708d63095..9d3164bc9 100644 --- a/src/com/android/launcher3/WallpaperPickerActivity.java +++ b/src/com/android/launcher3/WallpaperPickerActivity.java @@ -92,10 +92,20 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { private WallpaperInfo mLiveWallpaperInfoOnPickerLaunch; public static abstract class WallpaperTileInfo { + protected View mView; + public void setView(View v) { + mView = v; + } public void onClick(WallpaperPickerActivity a) {} public void onSave(WallpaperPickerActivity a) {} public void onDelete(WallpaperPickerActivity a) {} public boolean isSelectable() { return false; } + public boolean isNamelessWallpaper() { return false; } + public void onIndexUpdated(CharSequence label) { + if (isNamelessWallpaper()) { + mView.setContentDescription(label); + } + } } public static class PickImageInfo extends WallpaperTileInfo { @@ -136,6 +146,10 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { public boolean isSelectable() { return true; } + @Override + public boolean isNamelessWallpaper() { + return true; + } } public static class ResourceWallpaperInfo extends WallpaperTileInfo { @@ -171,6 +185,10 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { public boolean isSelectable() { return true; } + @Override + public boolean isNamelessWallpaper() { + return true; + } } public void setWallpaperStripYOffset(float offset) { @@ -280,6 +298,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { liveWallpapersView.removeAllViews(); populateWallpapersFromAdapter(liveWallpapersView, a, false, false); initializeScrollForRtl(); + updateTileIndices(); } }); @@ -292,16 +311,16 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { // Add a tile for the Gallery LinearLayout masterWallpaperList = (LinearLayout) findViewById(R.id.master_wallpaper_list); - FrameLayout galleryThumbnail = (FrameLayout) getLayoutInflater(). + FrameLayout pickImageTile = (FrameLayout) getLayoutInflater(). inflate(R.layout.wallpaper_picker_image_picker_item, masterWallpaperList, false); - setWallpaperItemPaddingToZero(galleryThumbnail); - masterWallpaperList.addView(galleryThumbnail, 0); + setWallpaperItemPaddingToZero(pickImageTile); + masterWallpaperList.addView(pickImageTile, 0); // Make its background the last photo taken on external storage Bitmap lastPhoto = getThumbnailOfLastPhoto(); if (lastPhoto != null) { ImageView galleryThumbnailBg = - (ImageView) galleryThumbnail.findViewById(R.id.wallpaper_image); + (ImageView) pickImageTile.findViewById(R.id.wallpaper_image); galleryThumbnailBg.setImageBitmap(getThumbnailOfLastPhoto()); int colorOverlay = getResources().getColor(R.color.wallpaper_picker_translucent_gray); galleryThumbnailBg.setColorFilter(colorOverlay, PorterDuff.Mode.SRC_ATOP); @@ -309,8 +328,12 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { } PickImageInfo pickImageInfo = new PickImageInfo(); - galleryThumbnail.setTag(pickImageInfo); - galleryThumbnail.setOnClickListener(mThumbnailOnClickListener); + pickImageTile.setTag(pickImageInfo); + pickImageInfo.setView(pickImageTile); + pickImageTile.setOnClickListener(mThumbnailOnClickListener); + pickImageInfo.setView(pickImageTile); + + updateTileIndices(); // Update the scroll for RTL initializeScrollForRtl(); @@ -394,6 +417,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { for (View v : viewsToRemove) { mWallpapersView.removeView(v); } + updateTileIndices(); mode.finish(); // Action picked, so close the CAB return true; } else { @@ -477,7 +501,9 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { for (int i = 0; i < adapter.getCount(); i++) { FrameLayout thumbnail = (FrameLayout) adapter.getView(i, null, parent); parent.addView(thumbnail, i); - thumbnail.setTag(adapter.getItem(i)); + WallpaperTileInfo info = (WallpaperTileInfo) adapter.getItem(i); + thumbnail.setTag(info); + info.setView(thumbnail); if (addLongPressHandler) { addLongPressHandler(thumbnail); } @@ -488,6 +514,48 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { } } + private void updateTileIndices() { + LinearLayout masterWallpaperList = (LinearLayout) findViewById(R.id.master_wallpaper_list); + final int childCount = masterWallpaperList.getChildCount(); + ArrayList<WallpaperTileInfo> tiles = new ArrayList<WallpaperTileInfo>(); + final Resources res = getResources(); + + // Do two passes; the first pass gets the total number of tiles + int numTiles = 0; + for (int passNum = 0; passNum < 2; passNum++) { + int tileIndex = 0; + for (int i = 0; i < childCount; i++) { + View child = masterWallpaperList.getChildAt(i); + LinearLayout subList; + + int subListStart; + int subListEnd; + if (child.getTag() instanceof WallpaperTileInfo) { + subList = masterWallpaperList; + subListStart = i; + subListEnd = i + 1; + } else { // if (child instanceof LinearLayout) { + subList = (LinearLayout) child; + subListStart = 0; + subListEnd = subList.getChildCount(); + } + + for (int j = subListStart; j < subListEnd; j++) { + WallpaperTileInfo info = (WallpaperTileInfo) subList.getChildAt(j).getTag(); + if (info.isNamelessWallpaper()) { + if (passNum == 0) { + numTiles++; + } else { + CharSequence label = res.getString( + R.string.wallpaper_accessibility_name, ++tileIndex, numTiles); + info.onIndexUpdated(label); + } + } + } + } + } + } + private static Point getDefaultThumbnailSize(Resources res) { return new Point(res.getDimensionPixelSize(R.dimen.wallpaperThumbnailWidth), res.getDimensionPixelSize(R.dimen.wallpaperThumbnailHeight)); @@ -543,9 +611,11 @@ public class WallpaperPickerActivity extends WallpaperCropActivity { Log.e(TAG, "Error loading thumbnail for uri=" + uri); } mWallpapersView.addView(pickedImageThumbnail, 0); + updateTileIndices(); UriWallpaperInfo info = new UriWallpaperInfo(uri); pickedImageThumbnail.setTag(info); + info.setView(pickedImageThumbnail); pickedImageThumbnail.setOnClickListener(mThumbnailOnClickListener); mThumbnailOnClickListener.onClick(pickedImageThumbnail); } |