package com.simplecity.amp_library.ui.adapters;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
import com.annimon.stream.Stream;
import com.simplecity.amp_library.model.Album;
import com.simplecity.amp_library.ui.modelviews.AlbumView;
import com.simplecity.amp_library.utils.SettingsManager;
import com.simplecity.amp_library.utils.SortManager;
import com.simplecity.amp_library.utils.StringUtils;
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
public class AlbumAdapter extends ItemAdapter implements FastScrollRecyclerView.SectionedAdapter {
private AlbumListener mListener;
public interface AlbumListener {
void onItemClick(View v, int position, Album album);
void onOverflowClick(View v, int position, Album album);
void onLongClick(View v, int position, Album album);
}
public void setListener(AlbumListener listener) {
mListener = listener;
}
public Album getAlbum(int position) {
return ((AlbumView) items.get(position)).album;
}
@Override
protected void attachListeners(final RecyclerView.ViewHolder viewHolder) {
super.attachListeners(viewHolder);
if (viewHolder instanceof AlbumView.ViewHolder) {
viewHolder.itemView.setOnClickListener(v -> {
if (mListener != null && viewHolder.getAdapterPosition() != -1) {
mListener.onItemClick(v, viewHolder.getAdapterPosition(), getAlbum(viewHolder.getAdapterPosition()));
}
});
((AlbumView.ViewHolder) viewHolder).overflowButton.setOnClickListener(v -> {
if (mListener != null && viewHolder.getAdapterPosition() != -1) {
mListener.onOverflowClick(v, viewHolder.getAdapterPosition(), getAlbum(viewHolder.getAdapterPosition()));
}
});
((AlbumView.ViewHolder) viewHolder).itemView.setOnLongClickListener(v -> {
if (mListener != null && viewHolder.getAdapterPosition() != -1) {
mListener.onLongClick(v, viewHolder.getAdapterPosition(), getAlbum(viewHolder.getAdapterPosition()));
}
return true;
});
}
}
public void updateItemViewType() {
int viewType = SettingsManager.getInstance().getAlbumDisplayType();
Stream.of(items)
.filter(adaptableItem ->
adaptableItem instanceof AlbumView)
.forEach(adaptableItem ->
((AlbumView) adaptableItem).setViewType(viewType));
}
@NonNull
@Override
public String getSectionName(int position) {
if (!(items.get(position) instanceof AlbumView)) {
return "";
}
int sortOrder = SortManager.getInstance().getAlbumsSortOrder();
Album album = ((AlbumView) items.get(position)).album;
String string = null;
boolean requiresSubstring = true;
switch (sortOrder) {
case SortManager.AlbumSort.DEFAULT:
string = StringUtils.keyFor(album.name);
break;
case SortManager.AlbumSort.NAME:
string = album.name;
break;
case SortManager.AlbumSort.ARTIST_NAME:
string = album.albumArtistName;
break;
case SortManager.AlbumSort.YEAR:
string = String.valueOf(album.year);
if (string.length() != 4) {
string = "-";
} else {
string = string.substring(2, 4);
}
requiresSubstring = false;
break;
}
if (requiresSubstring) {
if (!TextUtils.isEmpty(string)) {
string = string.substring(0, 1).toUpperCase();
} else {
string = " ";
}
}
return string;
}
}