ResourceWallpaperInfo.java revision 7bd5e80dc5e26102e59b300dec8dfd8abd9184b4
14428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyalpackage com.android.launcher3.wallpapertileinfo; 24428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal 34428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyalimport android.content.res.Resources; 44428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyalimport android.graphics.Point; 54428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyalimport android.graphics.RectF; 64428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyalimport android.graphics.drawable.Drawable; 74428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyalimport com.android.gallery3d.common.Utils; 87bd5e80dc5e26102e59b300dec8dfd8abd9184b4Tony Wickhamimport com.android.launcher3.WallpaperCropActivity.CropViewScaleAndOffsetProvider; 94428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyalimport com.android.launcher3.WallpaperPickerActivity; 104428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyalimport com.android.launcher3.util.WallpaperUtils; 114428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyalimport com.android.photos.BitmapRegionTileSource; 124428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyalimport com.android.photos.BitmapRegionTileSource.BitmapSource; 134428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyalimport com.android.photos.views.TiledImageRenderer.TileSource; 144428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal 154428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyalpublic class ResourceWallpaperInfo extends DrawableThumbWallpaperInfo { 164428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal 174428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal private final Resources mResources; 184428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal private final int mResId; 194428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal 204428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal public ResourceWallpaperInfo(Resources res, int resId, Drawable thumb) { 214428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal super(thumb); 224428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal mResources = res; 234428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal mResId = resId; 244428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal } 254428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal 264428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal @Override 274428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal public void onClick(final WallpaperPickerActivity a) { 284428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal a.setWallpaperButtonEnabled(false); 294428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal final BitmapRegionTileSource.ResourceBitmapSource bitmapSource = 304428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal new BitmapRegionTileSource.ResourceBitmapSource(mResources, mResId, a); 317bd5e80dc5e26102e59b300dec8dfd8abd9184b4Tony Wickham a.setCropViewTileSource(bitmapSource, false, true, new CropViewScaleAndOffsetProvider() { 324428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal 334428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal @Override 344428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal public float getScale(TileSource src) { 354428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal Point wallpaperSize = WallpaperUtils.getDefaultWallpaperSize( 364428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal a.getResources(), a.getWindowManager()); 374428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal RectF crop = Utils.getMaxCropRect( 384428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal src.getImageWidth(), src.getImageHeight(), 394428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal wallpaperSize.x, wallpaperSize.y, false); 404428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal return wallpaperSize.x / crop.width(); 414428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal } 427bd5e80dc5e26102e59b300dec8dfd8abd9184b4Tony Wickham 437bd5e80dc5e26102e59b300dec8dfd8abd9184b4Tony Wickham @Override 447bd5e80dc5e26102e59b300dec8dfd8abd9184b4Tony Wickham public float getParallaxOffset() { 457bd5e80dc5e26102e59b300dec8dfd8abd9184b4Tony Wickham return a.getWallpaperParallaxOffset(); 467bd5e80dc5e26102e59b300dec8dfd8abd9184b4Tony Wickham } 474428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal }, new Runnable() { 484428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal 494428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal @Override 504428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal public void run() { 514428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal if (bitmapSource.getLoadingState() == BitmapSource.State.LOADED) { 524428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal a.setWallpaperButtonEnabled(true); 534428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal } 544428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal } 554428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal }); 564428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal } 574428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal 584428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal @Override 594428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal public void onSave(WallpaperPickerActivity a) { 604428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal a.cropImageAndSetWallpaper(mResources, mResId); 614428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal } 624428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal 634428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal @Override 644428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal public boolean isSelectable() { 654428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal return true; 664428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal } 674428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal 684428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal @Override 694428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal public boolean isNamelessWallpaper() { 704428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal return true; 714428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal } 724428db78eed5d453c3bb376e6e28977c21b1c9ddSunny Goyal}