1666ea1b28a76aeba74744148b15099254d918671Owen Lin/* 2666ea1b28a76aeba74744148b15099254d918671Owen Lin * Copyright (C) 2009 The Android Open Source Project 3666ea1b28a76aeba74744148b15099254d918671Owen Lin * 4666ea1b28a76aeba74744148b15099254d918671Owen Lin * Licensed under the Apache License, Version 2.0 (the "License"); 5666ea1b28a76aeba74744148b15099254d918671Owen Lin * you may not use this file except in compliance with the License. 6666ea1b28a76aeba74744148b15099254d918671Owen Lin * You may obtain a copy of the License at 7666ea1b28a76aeba74744148b15099254d918671Owen Lin * 8666ea1b28a76aeba74744148b15099254d918671Owen Lin * http://www.apache.org/licenses/LICENSE-2.0 9666ea1b28a76aeba74744148b15099254d918671Owen Lin * 10666ea1b28a76aeba74744148b15099254d918671Owen Lin * Unless required by applicable law or agreed to in writing, software 11666ea1b28a76aeba74744148b15099254d918671Owen Lin * distributed under the License is distributed on an "AS IS" BASIS, 12666ea1b28a76aeba74744148b15099254d918671Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13666ea1b28a76aeba74744148b15099254d918671Owen Lin * See the License for the specific language governing permissions and 14666ea1b28a76aeba74744148b15099254d918671Owen Lin * limitations under the License. 15666ea1b28a76aeba74744148b15099254d918671Owen Lin */ 16666ea1b28a76aeba74744148b15099254d918671Owen Lin 17666ea1b28a76aeba74744148b15099254d918671Owen Linpackage com.android.camera.gallery; 18666ea1b28a76aeba74744148b15099254d918671Owen Lin 19666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.content.ContentResolver; 20666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.database.Cursor; 21666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.graphics.Bitmap; 22666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.net.Uri; 23666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.provider.DrmStore; 24666ea1b28a76aeba74744148b15099254d918671Owen Lin 25666ea1b28a76aeba74744148b15099254d918671Owen Lin/** 26666ea1b28a76aeba74744148b15099254d918671Owen Lin * Represents an ordered collection of Image objects from the DRM provider. 27666ea1b28a76aeba74744148b15099254d918671Owen Lin */ 28666ea1b28a76aeba74744148b15099254d918671Owen Linpublic class DrmImageList extends ImageList implements IImageList { 29666ea1b28a76aeba74744148b15099254d918671Owen Lin 30666ea1b28a76aeba74744148b15099254d918671Owen Lin // TODO: get other field from database too ? 31666ea1b28a76aeba74744148b15099254d918671Owen Lin private static final String[] DRM_IMAGE_PROJECTION = new String[] { 32666ea1b28a76aeba74744148b15099254d918671Owen Lin DrmStore.Images._ID, 33666ea1b28a76aeba74744148b15099254d918671Owen Lin DrmStore.Images.DATA, 34666ea1b28a76aeba74744148b15099254d918671Owen Lin DrmStore.Images.MIME_TYPE, 35666ea1b28a76aeba74744148b15099254d918671Owen Lin }; 36666ea1b28a76aeba74744148b15099254d918671Owen Lin 37666ea1b28a76aeba74744148b15099254d918671Owen Lin private static final int INDEX_ID = 0; 38666ea1b28a76aeba74744148b15099254d918671Owen Lin private static final int INDEX_DATA_PATH = 1; 39666ea1b28a76aeba74744148b15099254d918671Owen Lin private static final int INDEX_MIME_TYPE = 2; 40666ea1b28a76aeba74744148b15099254d918671Owen Lin 41666ea1b28a76aeba74744148b15099254d918671Owen Lin public DrmImageList(ContentResolver resolver, Uri imageUri, int sort, 42666ea1b28a76aeba74744148b15099254d918671Owen Lin String bucketId) { 43b62254a185d04ecfe2ddc837b7e0e54f0273c478Owen Lin super(resolver, imageUri, sort, bucketId); 44666ea1b28a76aeba74744148b15099254d918671Owen Lin } 45666ea1b28a76aeba74744148b15099254d918671Owen Lin 46666ea1b28a76aeba74744148b15099254d918671Owen Lin @Override 47666ea1b28a76aeba74744148b15099254d918671Owen Lin protected String sortOrder() { 48666ea1b28a76aeba74744148b15099254d918671Owen Lin // We have no date information in DrmStore, so we just sort by _id. 49666ea1b28a76aeba74744148b15099254d918671Owen Lin return "_id ASC"; 50666ea1b28a76aeba74744148b15099254d918671Owen Lin } 51666ea1b28a76aeba74744148b15099254d918671Owen Lin 52666ea1b28a76aeba74744148b15099254d918671Owen Lin @Override 53666ea1b28a76aeba74744148b15099254d918671Owen Lin protected Cursor createCursor() { 54666ea1b28a76aeba74744148b15099254d918671Owen Lin return mContentResolver.query( 55666ea1b28a76aeba74744148b15099254d918671Owen Lin mBaseUri, DRM_IMAGE_PROJECTION, null, null, sortOrder()); 56666ea1b28a76aeba74744148b15099254d918671Owen Lin } 57666ea1b28a76aeba74744148b15099254d918671Owen Lin 58666ea1b28a76aeba74744148b15099254d918671Owen Lin private static class DrmImage extends Image { 59666ea1b28a76aeba74744148b15099254d918671Owen Lin 60666ea1b28a76aeba74744148b15099254d918671Owen Lin protected DrmImage(BaseImageList container, ContentResolver cr, 61666ea1b28a76aeba74744148b15099254d918671Owen Lin long id, int index, Uri uri, String dataPath, 62666ea1b28a76aeba74744148b15099254d918671Owen Lin long miniThumbMagic, String mimeType, long dateTaken, 63185a1a7c5f33ecc5cb9a36d23cecb719c8727178Chih-Chung Chang String title, int rotation) { 64b62254a185d04ecfe2ddc837b7e0e54f0273c478Owen Lin super(container, cr, id, index, uri, dataPath, 65185a1a7c5f33ecc5cb9a36d23cecb719c8727178Chih-Chung Chang mimeType, dateTaken, title, rotation); 66666ea1b28a76aeba74744148b15099254d918671Owen Lin } 67666ea1b28a76aeba74744148b15099254d918671Owen Lin 68666ea1b28a76aeba74744148b15099254d918671Owen Lin @Override 69666ea1b28a76aeba74744148b15099254d918671Owen Lin public int getDegreesRotated() { 70666ea1b28a76aeba74744148b15099254d918671Owen Lin return 0; 71666ea1b28a76aeba74744148b15099254d918671Owen Lin } 72666ea1b28a76aeba74744148b15099254d918671Owen Lin 73666ea1b28a76aeba74744148b15099254d918671Owen Lin @Override 74666ea1b28a76aeba74744148b15099254d918671Owen Lin public boolean isDrm() { 75666ea1b28a76aeba74744148b15099254d918671Owen Lin return true; 76666ea1b28a76aeba74744148b15099254d918671Owen Lin } 77666ea1b28a76aeba74744148b15099254d918671Owen Lin 78666ea1b28a76aeba74744148b15099254d918671Owen Lin @Override 79666ea1b28a76aeba74744148b15099254d918671Owen Lin public boolean isReadonly() { 80666ea1b28a76aeba74744148b15099254d918671Owen Lin return true; 81666ea1b28a76aeba74744148b15099254d918671Owen Lin } 82666ea1b28a76aeba74744148b15099254d918671Owen Lin 83666ea1b28a76aeba74744148b15099254d918671Owen Lin @Override 84666ea1b28a76aeba74744148b15099254d918671Owen Lin public Bitmap miniThumbBitmap() { 85666ea1b28a76aeba74744148b15099254d918671Owen Lin return fullSizeBitmap(IImage.MINI_THUMB_TARGET_SIZE, 86666ea1b28a76aeba74744148b15099254d918671Owen Lin IImage.MINI_THUMB_MAX_NUM_PIXELS); 87666ea1b28a76aeba74744148b15099254d918671Owen Lin } 88666ea1b28a76aeba74744148b15099254d918671Owen Lin 89666ea1b28a76aeba74744148b15099254d918671Owen Lin @Override 90666ea1b28a76aeba74744148b15099254d918671Owen Lin public Bitmap thumbBitmap(boolean rotateAsNeeded) { 91666ea1b28a76aeba74744148b15099254d918671Owen Lin return fullSizeBitmap(IImage.THUMBNAIL_TARGET_SIZE, 92666ea1b28a76aeba74744148b15099254d918671Owen Lin IImage.THUMBNAIL_MAX_NUM_PIXELS); 93666ea1b28a76aeba74744148b15099254d918671Owen Lin } 94666ea1b28a76aeba74744148b15099254d918671Owen Lin } 95666ea1b28a76aeba74744148b15099254d918671Owen Lin 96666ea1b28a76aeba74744148b15099254d918671Owen Lin @Override 97666ea1b28a76aeba74744148b15099254d918671Owen Lin protected BaseImage loadImageFromCursor(Cursor cursor) { 98666ea1b28a76aeba74744148b15099254d918671Owen Lin long id = cursor.getLong(INDEX_ID); 99666ea1b28a76aeba74744148b15099254d918671Owen Lin String dataPath = cursor.getString(INDEX_DATA_PATH); 100666ea1b28a76aeba74744148b15099254d918671Owen Lin String mimeType = cursor.getString(INDEX_MIME_TYPE); 101666ea1b28a76aeba74744148b15099254d918671Owen Lin return new DrmImage(this, mContentResolver, id, cursor.getPosition(), 102666ea1b28a76aeba74744148b15099254d918671Owen Lin contentUri(id), dataPath, 0, mimeType, 0, "DrmImage-" + id, 103185a1a7c5f33ecc5cb9a36d23cecb719c8727178Chih-Chung Chang 0); 104666ea1b28a76aeba74744148b15099254d918671Owen Lin } 105666ea1b28a76aeba74744148b15099254d918671Owen Lin} 106