Prework for multiselect

This commit is contained in:
Karim Abou Zeid 2015-05-21 18:58:27 +02:00
commit 4e27388fbe

View file

@ -28,6 +28,7 @@ import com.nostra13.universalimageloader.core.ImageLoader;
import com.squareup.otto.Subscribe; import com.squareup.otto.Subscribe;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
/** /**
* @author Karim Abou Zeid (kabouzeid) * @author Karim Abou Zeid (kabouzeid)
@ -40,9 +41,11 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
protected final AppCompatActivity activity; protected final AppCompatActivity activity;
protected ArrayList<Song> dataSet; protected ArrayList<Song> dataSet;
private HashSet<Integer> checked;
public SongAdapter(AppCompatActivity activity) { public SongAdapter(AppCompatActivity activity) {
this.activity = activity; this.activity = activity;
checked = new HashSet<>();
loadDataSet(); loadDataSet();
} }
@ -77,6 +80,7 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
.resetViewBeforeLoading(true) .resetViewBeforeLoading(true)
.build() .build()
); );
holder.view.setActivated(checked.contains(song.id));
} else { } else {
holder.songTitle.setText(activity.getResources().getString(R.string.shuffle_all).toUpperCase()); holder.songTitle.setText(activity.getResources().getString(R.string.shuffle_all).toUpperCase());
holder.songTitle.setTextColor(ThemeSingleton.get().positiveColor); holder.songTitle.setTextColor(ThemeSingleton.get().positiveColor);
@ -97,7 +101,7 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
return dataSet.size() + 1; return dataSet.size() + 1;
} }
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
final TextView songTitle; final TextView songTitle;
final TextView songInfo; final TextView songInfo;
final ImageView overflowButton; final ImageView overflowButton;
@ -115,43 +119,55 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
overflowButton = (ImageView) itemView.findViewById(R.id.menu); overflowButton = (ImageView) itemView.findViewById(R.id.menu);
separator = itemView.findViewById(R.id.separator); separator = itemView.findViewById(R.id.separator);
short_separator = itemView.findViewById(R.id.short_separator); short_separator = itemView.findViewById(R.id.short_separator);
view.setOnClickListener(this);
overflowButton.setOnClickListener(this); view.setOnLongClickListener(this);
itemView.setOnClickListener(new View.OnClickListener() { overflowButton.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View view) {
if (getItemViewType() == SHUFFLE_BUTTON) { PopupMenu popupMenu = new PopupMenu(activity, view);
MusicPlayerRemote.shuffleAllSongs(activity); popupMenu.inflate(R.menu.menu_item_song);
} else { popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
MusicPlayerRemote.openQueue(dataSet, getAdapterPosition() - 1, true); @Override
} public boolean onMenuItemClick(MenuItem item) {
final int position = getAdapterPosition() - 1;
switch (item.getItemId()) {
case R.id.action_go_to_album:
Pair[] albumPairs = new Pair[]{
Pair.create(albumArt, activity.getResources().getString(R.string.transition_album_cover))
};
if (activity instanceof AbsFabActivity)
albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs);
NavigationUtil.goToAlbum(activity, dataSet.get(position).albumId, albumPairs);
return true;
}
return MenuItemClickHelper.handleSongMenuClick(activity, dataSet.get(position), item);
}
});
popupMenu.show();
} }
}); });
} }
@Override @Override
public void onClick(View v) { public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(activity, v); if (getItemViewType() == SHUFFLE_BUTTON) {
popupMenu.inflate(R.menu.menu_item_song); MusicPlayerRemote.shuffleAllSongs(activity);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { } else {
@Override MusicPlayerRemote.openQueue(dataSet, getAdapterPosition() - 1, true);
public boolean onMenuItemClick(MenuItem item) { }
final int position = getAdapterPosition() - 1;
switch (item.getItemId()) {
case R.id.action_go_to_album:
Pair[] albumPairs = new Pair[]{
Pair.create(albumArt, activity.getResources().getString(R.string.transition_album_cover))
};
if (activity instanceof AbsFabActivity)
albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs);
NavigationUtil.goToAlbum(activity, dataSet.get(position).albumId, albumPairs);
return true;
}
return MenuItemClickHelper.handleSongMenuClick(activity, dataSet.get(position), item);
}
});
popupMenu.show();
} }
@Override
public boolean onLongClick(View view) {
toggleChecked(getAdapterPosition());
return true;
}
}
private void toggleChecked(final int position) {
final int id = dataSet.get(position - 1).id;
if (!checked.add(id)) checked.remove(id);
notifyItemChanged(position);
} }
@Override @Override