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}