package com.simplecity.amp_library.ui.modelviews;
import android.support.v4.view.ViewCompat;
import com.bignerdranch.android.multiselector.MultiSelector;
import com.bumptech.glide.RequestManager;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.github.florent37.glidepalette.GlidePalette;
import com.simplecity.amp_library.R;
import com.simplecity.amp_library.format.PrefixHighlighter;
import com.simplecity.amp_library.glide.utils.GlideUtils;
import com.simplecity.amp_library.model.AlbumArtist;
import com.simplecity.amp_library.model.ContentsComparator;
import java.util.Arrays;
import java.util.List;
public class AlbumArtistView extends MultiItemView<AlbumArtist> implements ContentsComparator {
private static final String TAG = "AlbumArtistView";
public AlbumArtist albumArtist;
private int viewType;
private RequestManager requestManager;
private PrefixHighlighter prefixHighlighter;
private char[] prefix;
public AlbumArtistView(AlbumArtist albumArtist, @ViewType int viewType, RequestManager requestManager) {
this.albumArtist = albumArtist;
this.viewType = viewType;
this.requestManager = requestManager;
}
public AlbumArtistView(AlbumArtist albumArtist, @ViewType int viewType, MultiSelector multiSelector, RequestManager requestManager) {
this.albumArtist = albumArtist;
this.viewType = viewType;
this.requestManager = requestManager;
this.multiSelector = multiSelector;
}
public void setPrefix(PrefixHighlighter prefixHighlighter, char[] prefix) {
this.prefixHighlighter = prefixHighlighter;
this.prefix = prefix;
}
@Override
public int getViewType() {
return viewType;
}
public void setViewType(int viewType) {
this.viewType = viewType;
}
@Override
public void bindView(final ViewHolder holder) {
holder.lineOne.setText(albumArtist.name);
holder.lineTwo.setText(albumArtist.getNumAlbumsSongsLabel());
if (getViewType() == ViewType.ARTIST_PALETTE) {
holder.bottomContainer.setBackgroundColor(0x20000000);
}
requestManager.load(albumArtist)
.listener(getViewType() == ViewType.ARTIST_PALETTE ? GlidePalette.with(albumArtist.getArtworkKey())
.use(GlidePalette.Profile.MUTED_DARK)
.intoBackground(holder.bottomContainer)
.crossfade(true)
: null)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(GlideUtils.getPlaceHolderDrawable(albumArtist.name, false))
.into(holder.imageOne);
holder.overflowButton.setContentDescription(holder.itemView.getResources().getString(R.string.btn_options, albumArtist.name));
if (prefixHighlighter != null) {
prefixHighlighter.setText(holder.lineOne, prefix);
}
ViewCompat.setTransitionName(holder.imageOne, albumArtist.getArtworkKey());
}
@Override
public void bindView(ViewHolder holder, int position, List payloads) {
//A partial bind. Due to the areContentsEqual implementation, the only reason this is called
//is because the prefix changed. Update accordingly.
if (prefixHighlighter != null) {
prefixHighlighter.setText(holder.lineOne, prefix);
}
}
@Override
public AlbumArtist getItem() {
return albumArtist;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AlbumArtistView that = (AlbumArtistView) o;
if (viewType != that.viewType) return false;
return albumArtist != null ? albumArtist.equals(that.albumArtist) : that.albumArtist == null;
}
@Override
public int hashCode() {
int result = albumArtist != null ? albumArtist.hashCode() : 0;
result = 31 * result + viewType;
return result;
}
@Override
public boolean areContentsEqual(Object other) {
return this.equals(other) && Arrays.equals(prefix, ((AlbumArtistView) other).prefix);
}
}