1package com.android.wallpaperpicker.tileinfo;
2
3import android.content.res.Resources;
4import android.graphics.Point;
5import android.graphics.RectF;
6import android.graphics.drawable.Drawable;
7
8import com.android.photos.BitmapRegionTileSource;
9import com.android.photos.BitmapRegionTileSource.BitmapSource;
10import com.android.wallpaperpicker.WallpaperCropActivity.CropViewScaleAndOffsetProvider;
11import com.android.wallpaperpicker.WallpaperPickerActivity;
12
13public class ResourceWallpaperInfo extends DrawableThumbWallpaperInfo {
14
15    private final Resources mResources;
16    private final int mResId;
17
18    public ResourceWallpaperInfo(Resources res, int resId, Drawable thumb) {
19        super(thumb);
20        mResources = res;
21        mResId = resId;
22    }
23
24    @Override
25    public void onClick(final WallpaperPickerActivity a) {
26        a.setWallpaperButtonEnabled(false);
27        final BitmapRegionTileSource.InputStreamSource bitmapSource =
28                new BitmapRegionTileSource.InputStreamSource(mResources, mResId, a);
29        a.setCropViewTileSource(bitmapSource, false, false, new CropViewScaleAndOffsetProvider() {
30
31            @Override
32            public float getScale(Point wallpaperSize, RectF crop) {
33                return wallpaperSize.x /crop.width();
34            }
35
36            @Override
37            public float getParallaxOffset() {
38                return a.getWallpaperParallaxOffset();
39            }
40        }, new Runnable() {
41
42            @Override
43            public void run() {
44                if (bitmapSource.getLoadingState() == BitmapSource.State.LOADED) {
45                    a.setWallpaperButtonEnabled(true);
46                }
47            }
48        });
49    }
50
51    @Override
52    public void onSave(WallpaperPickerActivity a) {
53        a.cropImageAndSetWallpaper(mResources, mResId, true /* shouldFadeOutOnFinish */);
54    }
55
56    @Override
57    public boolean isSelectable() {
58        return true;
59    }
60
61    @Override
62    public boolean isNamelessWallpaper() {
63        return true;
64    }
65}