package org.wikipedia.readinglist; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.text.TextUtils; import android.util.AttributeSet; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import com.facebook.drawee.drawable.ScalingUtils; import org.wikipedia.R; import org.wikipedia.util.GradientUtil; import org.wikipedia.views.FaceAndColorDetectImageView; import org.wikipedia.views.ViewUtil; import java.util.List; import butterknife.BindView; import butterknife.BindViews; import butterknife.ButterKnife; public class ReadingListHeaderView extends FrameLayout { @BindView(R.id.reading_list_header_image_gradient) View gradientView; @BindView(R.id.reading_list_header_empty_image) View emptyView; @BindView(R.id.reading_list_header_image_container) View imageContainerView; @BindViews({R.id.reading_list_header_image_0, R.id.reading_list_header_image_1, R.id.reading_list_header_image_2, R.id.reading_list_header_image_3, R.id.reading_list_header_image_4, R.id.reading_list_header_image_5}) List<FaceAndColorDetectImageView> imageViews; @Nullable private ReadingList readingList; public ReadingListHeaderView(Context context) { super(context); init(); } public ReadingListHeaderView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public ReadingListHeaderView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public ReadingListHeaderView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(); } public void setReadingList(@NonNull ReadingList readingList) { this.readingList = readingList; if (readingList.getPages().isEmpty()) { imageContainerView.setVisibility(GONE); emptyView.setVisibility(VISIBLE); } else { imageContainerView.setVisibility(VISIBLE); emptyView.setVisibility(GONE); getThumbnails(); } } private void init() { inflate(getContext(), R.layout.view_reading_list_header, this); ButterKnife.bind(this); setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); ViewUtil.setBackgroundDrawable(gradientView, GradientUtil.getCubicGradient(ContextCompat.getColor(getContext(), R.color.lead_gradient_start), Gravity.TOP)); if (isInEditMode()) { return; } clearThumbnails(); } private void getThumbnails() { ReadingListPageDetailFetcher.updateInfo(readingList, new ReadingListPageDetailFetcher.Callback() { @Override public void success() { if (getWindowToken() == null) { return; } updateThumbnails(); } @Override public void failure(Throwable e) { } }); updateThumbnails(); } private void clearThumbnails() { for (FaceAndColorDetectImageView imageView : imageViews) { ViewUtil.loadImageUrlInto(imageView, null); imageView.getHierarchy().setFailureImage(null); } } private void updateThumbnails() { if (readingList == null) { return; } clearThumbnails(); for (int i = 0; i < readingList.getPages().size() && i < imageViews.size(); ++i) { loadThumbnail(imageViews.get(i), readingList.getPages().get(i).thumbnailUrl()); } } private void loadThumbnail(@NonNull FaceAndColorDetectImageView view, @Nullable String url) { if (TextUtils.isEmpty(url)) { view.getHierarchy().setFailureImage(R.drawable.ic_image_gray_24dp, ScalingUtils.ScaleType.FIT_CENTER); } ViewUtil.loadImageUrlInto(view, url); } }