am ba65185e: Merge "Add content description for wallpaper thumbs" into jb-ub-now-indigo-rose

* commit 'ba65185edde8efeb2f3f450832308c2cc2807f40':
  Add content description for wallpaper thumbs
This commit is contained in:
Michael Jurka
2013-10-08 14:17:18 -07:00
committed by Android Git Automerger
4 changed files with 91 additions and 48 deletions
+3
View File
@@ -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>
@@ -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();
}
}
}
}
@@ -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) {
@@ -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);
}