package org.wordpress.android.ui.reader.views; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import org.wordpress.android.R; import org.wordpress.android.datasets.ReaderPostTable; import org.wordpress.android.ui.reader.ReaderActivityLauncher; import org.wordpress.android.ui.reader.ReaderActivityLauncher.PhotoViewerOption; import org.wordpress.android.ui.reader.ReaderConstants; import org.wordpress.android.ui.reader.models.ReaderImageList; import org.wordpress.android.ui.reader.utils.ReaderImageScanner; import org.wordpress.android.util.AniUtils; import org.wordpress.android.util.DisplayUtils; import org.wordpress.android.util.PhotonUtils; import org.wordpress.android.widgets.WPNetworkImageView; import java.util.EnumSet; /** * displays a row of image thumbnails from a reader post - only shows when two or more images * of a minimum size are found */ public class ReaderThumbnailStrip extends LinearLayout { public static final int IMAGE_COUNT = 4; private ViewGroup mView; private int mThumbnailHeight; private int mThumbnailWidth; public ReaderThumbnailStrip(Context context) { super(context); initView(context); } public ReaderThumbnailStrip(Context context, AttributeSet attrs) { super(context, attrs); initView(context); } public ReaderThumbnailStrip(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public ReaderThumbnailStrip(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); initView(context); } private void initView(Context context) { mView = (ViewGroup) inflate(context, R.layout.reader_thumbnail_strip, this); mThumbnailHeight = context.getResources().getDimensionPixelSize(R.dimen.reader_thumbnail_strip_image_height); int displayWidth = DisplayUtils.getDisplayPixelWidth(context); int margins = context.getResources().getDimensionPixelSize(R.dimen.reader_card_content_padding) * 2; mThumbnailWidth = (displayWidth - margins) / IMAGE_COUNT; } public void loadThumbnails(long blogId, long postId, boolean isPrivate) { // get rid of any views already added mView.removeAllViews(); // get this post's content and scan it for images suitable in a gallery final String content = ReaderPostTable.getPostText(blogId, postId); final ReaderImageList imageList = new ReaderImageScanner(content, isPrivate).getImageList(IMAGE_COUNT, ReaderConstants.MIN_GALLERY_IMAGE_WIDTH); if (imageList.size() < IMAGE_COUNT) { mView.setVisibility(View.GONE); return; } final EnumSet<PhotoViewerOption> photoViewerOptions = EnumSet.of(PhotoViewerOption.IS_GALLERY_IMAGE); if (isPrivate) { photoViewerOptions.add(PhotoViewerOption.IS_PRIVATE_IMAGE); } // add a separate imageView for each image up to the max int numAdded = 0; LayoutInflater inflater = LayoutInflater.from(getContext()); for (final String imageUrl: imageList) { View view = inflater.inflate(R.layout.reader_thumbnail_strip_image, mView, false); WPNetworkImageView imageView = (WPNetworkImageView) view.findViewById(R.id.thumbnail_strip_image); mView.addView(view); String photonUrl = PhotonUtils.getPhotonImageUrl(imageUrl, mThumbnailWidth, mThumbnailHeight); imageView.setImageUrl(photonUrl, WPNetworkImageView.ImageType.PHOTO); // tapping a thumbnail opens the photo viewer imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { ReaderActivityLauncher.showReaderPhotoViewer( view.getContext(), imageUrl, content, view, photoViewerOptions, 0, 0); } }); numAdded++; if (numAdded >= IMAGE_COUNT) { break; } } if (mView.getVisibility() != View.VISIBLE) { AniUtils.fadeIn(mView, AniUtils.Duration.SHORT); } } }