blob: 1492c813cfabc8eddefbd6f4aa31d60064d32e0b [file] [log] [blame]
/*
* Copyright (C) 2011 Google Inc.
* Licensed to The Android Open Source Project.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.ex.photo.adapters;
import android.content.Context;
import android.database.Cursor;
import android.support.v4.app.Fragment;
import com.android.ex.photo.Intents;
import com.android.ex.photo.Intents.PhotoViewIntentBuilder;
import com.android.ex.photo.fragments.PhotoViewFragment;
import com.android.ex.photo.provider.PhotoContract;
/**
* Pager adapter for the photo view
*/
public class PhotoPagerAdapter extends BaseCursorPagerAdapter {
private int mContentUriIndex;
private int mThumbnailUriIndex;
private int mLoadingIndex;
private final float mMaxScale;
public PhotoPagerAdapter(Context context, android.support.v4.app.FragmentManager fm, Cursor c, float maxScale) {
super(context, fm, c);
mMaxScale = maxScale;
}
@Override
public Fragment getItem(Context context, Cursor cursor, int position) {
final String photoUri = cursor.getString(mContentUriIndex);
final String thumbnailUri = cursor.getString(mThumbnailUriIndex);
boolean loading;
if(mLoadingIndex != -1) {
loading = Boolean.valueOf(cursor.getString(mLoadingIndex));
} else {
loading = false;
}
boolean onlyShowSpinner = false;
if(photoUri == null && loading) {
onlyShowSpinner = true;
}
// create new PhotoViewFragment
final PhotoViewIntentBuilder builder =
Intents.newPhotoViewFragmentIntentBuilder(mContext);
builder
.setResolvedPhotoUri(photoUri)
.setThumbnailUri(thumbnailUri)
.setMaxInitialScale(mMaxScale);
return new PhotoViewFragment(builder.build(), position, this, onlyShowSpinner);
}
@Override
public Cursor swapCursor(Cursor newCursor) {
if (newCursor != null) {
mContentUriIndex =
newCursor.getColumnIndex(PhotoContract.PhotoViewColumns.CONTENT_URI);
mThumbnailUriIndex =
newCursor.getColumnIndex(PhotoContract.PhotoViewColumns.THUMBNAIL_URI);
mLoadingIndex =
newCursor.getColumnIndex(PhotoContract.PhotoViewColumns.LOADING_INDICATOR);
} else {
mContentUriIndex = -1;
mThumbnailUriIndex = -1;
mLoadingIndex = -1;
}
return super.swapCursor(newCursor);
}
public String getPhotoUri(Cursor cursor) {
return cursor.getString(mContentUriIndex);
}
}