PhotoPagerAdapter.java revision 91dbfd25cc234de393ae22fc39a832a6335e1bc2
1f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein/* 2f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * Copyright (C) 2011 Google Inc. 3f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * Licensed to The Android Open Source Project. 4f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * 5f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * Licensed under the Apache License, Version 2.0 (the "License"); 6f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * you may not use this file except in compliance with the License. 7f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * You may obtain a copy of the License at 8f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * 9f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * http://www.apache.org/licenses/LICENSE-2.0 10f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * 11f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * Unless required by applicable law or agreed to in writing, software 12f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * distributed under the License is distributed on an "AS IS" BASIS, 13f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * See the License for the specific language governing permissions and 15f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * limitations under the License. 16f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein */ 17f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein 18f77a7eb196d16110c7b1087352b423913821ff61Andrew Sappersteinpackage com.android.ex.photo.adapters; 19f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein 20f77a7eb196d16110c7b1087352b423913821ff61Andrew Sappersteinimport android.app.Fragment; 21f77a7eb196d16110c7b1087352b423913821ff61Andrew Sappersteinimport android.app.FragmentManager; 22f77a7eb196d16110c7b1087352b423913821ff61Andrew Sappersteinimport android.content.Context; 23f77a7eb196d16110c7b1087352b423913821ff61Andrew Sappersteinimport android.database.Cursor; 24f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein 25f77a7eb196d16110c7b1087352b423913821ff61Andrew Sappersteinimport com.android.ex.photo.Intents; 26f77a7eb196d16110c7b1087352b423913821ff61Andrew Sappersteinimport com.android.ex.photo.Intents.PhotoViewIntentBuilder; 27f77a7eb196d16110c7b1087352b423913821ff61Andrew Sappersteinimport com.android.ex.photo.fragments.PhotoViewFragment; 28f77a7eb196d16110c7b1087352b423913821ff61Andrew Sappersteinimport com.android.ex.photo.provider.PhotoContract; 29f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein 30f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein/** 31f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein * Pager adapter for the photo view 32f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein */ 33f77a7eb196d16110c7b1087352b423913821ff61Andrew Sappersteinpublic class PhotoPagerAdapter extends BaseCursorPagerAdapter { 34f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein private int mContentUriIndex; 35928a39fb533255b34145285fabbd4f51961df63aAndrew Sapperstein private int mThumbnailUriIndex; 3691dbfd25cc234de393ae22fc39a832a6335e1bc2Adam Copp private float mMaxScale; 37f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein 3891dbfd25cc234de393ae22fc39a832a6335e1bc2Adam Copp public PhotoPagerAdapter(Context context, FragmentManager fm, Cursor c, float maxScale) { 39f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein super(context, fm, c); 4091dbfd25cc234de393ae22fc39a832a6335e1bc2Adam Copp mMaxScale = maxScale; 41f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein } 42f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein 43f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein @Override 440c18e5deef5209d21b527a01feb6b789715eb48eAndrew Sapperstein public Fragment getItem(Context context, Cursor cursor, int position) { 45f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein final String photoUri = cursor.getString(mContentUriIndex); 46928a39fb533255b34145285fabbd4f51961df63aAndrew Sapperstein final String thumbnailUri = cursor.getString(mThumbnailUriIndex); 47f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein 48f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein // create new PhotoViewFragment 49f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein final PhotoViewIntentBuilder builder = 50f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein Intents.newPhotoViewFragmentIntentBuilder(mContext); 519db663e1e820c3445f57fe11d9a12e9c8777e704Andrew Sapperstein builder 52928a39fb533255b34145285fabbd4f51961df63aAndrew Sapperstein .setResolvedPhotoUri(photoUri) 5391dbfd25cc234de393ae22fc39a832a6335e1bc2Adam Copp .setThumbnailUri(thumbnailUri) 5491dbfd25cc234de393ae22fc39a832a6335e1bc2Adam Copp .setMaxInitialScale(mMaxScale); 55f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein 560c18e5deef5209d21b527a01feb6b789715eb48eAndrew Sapperstein return new PhotoViewFragment(builder.build(), position, this); 57f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein } 58f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein 59f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein @Override 60f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein public Cursor swapCursor(Cursor newCursor) { 61e6d03190d2b2ec6ea07a59daa7e687c3c383f9c3Paul Westbrook if (newCursor != null) { 62e6d03190d2b2ec6ea07a59daa7e687c3c383f9c3Paul Westbrook mContentUriIndex = 63e6d03190d2b2ec6ea07a59daa7e687c3c383f9c3Paul Westbrook newCursor.getColumnIndex(PhotoContract.PhotoViewColumns.CONTENT_URI); 64e6d03190d2b2ec6ea07a59daa7e687c3c383f9c3Paul Westbrook mThumbnailUriIndex = 65e6d03190d2b2ec6ea07a59daa7e687c3c383f9c3Paul Westbrook newCursor.getColumnIndex(PhotoContract.PhotoViewColumns.THUMBNAIL_URI); 66e6d03190d2b2ec6ea07a59daa7e687c3c383f9c3Paul Westbrook } else { 67e6d03190d2b2ec6ea07a59daa7e687c3c383f9c3Paul Westbrook mContentUriIndex = -1; 68e6d03190d2b2ec6ea07a59daa7e687c3c383f9c3Paul Westbrook mThumbnailUriIndex = -1; 69e6d03190d2b2ec6ea07a59daa7e687c3c383f9c3Paul Westbrook } 70f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein 71f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein return super.swapCursor(newCursor); 72f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein } 730c18e5deef5209d21b527a01feb6b789715eb48eAndrew Sapperstein 740c18e5deef5209d21b527a01feb6b789715eb48eAndrew Sapperstein public String getPhotoUri(Cursor cursor) { 750c18e5deef5209d21b527a01feb6b789715eb48eAndrew Sapperstein return cursor.getString(mContentUriIndex); 760c18e5deef5209d21b527a01feb6b789715eb48eAndrew Sapperstein } 77f77a7eb196d16110c7b1087352b423913821ff61Andrew Sapperstein} 78