Search in sources :

Example 6 with Song

use of io.hefuyi.listener.mvp.model.Song in project ListenerMusicPlayer by hefuyicoder.

the class PlaylistSongAdapter method setOnPopupMenuListener.

private void setOnPopupMenuListener(final ItemHolder itemHolder, final int position) {
    itemHolder.popupMenu.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            final PopupMenu menu = new PopupMenu(mContext, v);
            final int adapterPosition = itemHolder.getAdapterPosition();
            final Song song = arraylist.get(adapterPosition);
            menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch(item.getItemId()) {
                        case R.id.popup_song_play_next:
                            long[] ids = new long[1];
                            ids[0] = arraylist.get(adapterPosition).id;
                            MusicPlayer.playNext(mContext, ids, -1, ListenerUtil.IdType.NA);
                            break;
                        case R.id.popup_song_goto_album:
                            NavigationUtil.goToAlbum(mContext, song.albumId, song.title);
                            break;
                        case R.id.popup_song_goto_artist:
                            NavigationUtil.goToArtist(mContext, song.artistId, song.artistName);
                            break;
                        case R.id.popup_song_addto_queue:
                            long[] id = new long[1];
                            id[0] = song.id;
                            MusicPlayer.addToQueue(mContext, id, -1, ListenerUtil.IdType.Playlist);
                            break;
                        case R.id.popup_song_addto_playlist:
                            ListenerUtil.showAddPlaylistDialog(mContext, new long[] { song.id });
                            break;
                        case R.id.popup_song_delete:
                            new MaterialDialog.Builder(mContext).title(mContext.getResources().getString(R.string.delete_playlist_song) + "?").positiveText(R.string.delete).negativeText(R.string.cancel).onPositive(new MaterialDialog.SingleButtonCallback() {

                                @Override
                                public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                                    PlaylistSongLoader.removeFromPlaylist(mContext, new long[] { song.id }, playlistId);
                                    arraylist.remove(adapterPosition);
                                    songIDs = getSongIds();
                                    notifyItemRemoved(adapterPosition);
                                }
                            }).onNegative(new MaterialDialog.SingleButtonCallback() {

                                @Override
                                public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                                    dialog.dismiss();
                                }
                            }).show();
                            break;
                    }
                    return false;
                }
            });
            menu.inflate(R.menu.popup_song);
            menu.show();
        }
    });
}
Also used : MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) MenuItem(android.view.MenuItem) ImageView(android.widget.ImageView) FastScrollRecyclerView(io.hefuyi.listener.widget.fastscroller.FastScrollRecyclerView) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) Song(io.hefuyi.listener.mvp.model.Song) DialogAction(com.afollestad.materialdialogs.DialogAction) NonNull(android.support.annotation.NonNull) PopupMenu(android.widget.PopupMenu)

Example 7 with Song

use of io.hefuyi.listener.mvp.model.Song in project ListenerMusicPlayer by hefuyicoder.

the class PlaylistSongAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    ItemHolder itemHolder = (ItemHolder) holder;
    Song localItem = arraylist.get(holder.getAdapterPosition());
    itemHolder.title.setText(localItem.title);
    itemHolder.artist.setText(localItem.artistName);
    itemHolder.album.setText(localItem.albumName);
    Glide.with(holder.itemView.getContext()).load(ListenerUtil.getAlbumArtUri(localItem.albumId).toString()).error(ATEUtil.getDefaultAlbumDrawable(mContext)).placeholder(ATEUtil.getDefaultAlbumDrawable(mContext)).diskCacheStrategy(DiskCacheStrategy.SOURCE).centerCrop().into(itemHolder.albumArt);
    if (MusicPlayer.getCurrentAudioId() == localItem.id) {
        itemHolder.title.setTextColor(ATEUtil.getThemeAccentColor(mContext));
    } else {
        itemHolder.title.setTextColor(ATEUtil.getThemeTextColorPrimary(mContext));
    }
    setOnPopupMenuListener(itemHolder, position);
}
Also used : Song(io.hefuyi.listener.mvp.model.Song)

Example 8 with Song

use of io.hefuyi.listener.mvp.model.Song in project ListenerMusicPlayer by hefuyicoder.

the class SearchAdapter method setArtistPopupMenu.

private void setArtistPopupMenu(ItemHolder itemHolder, final int position) {
    final Artist artist = (Artist) searchResults.get(position);
    itemHolder.popupMenu.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            final PopupMenu menu = new PopupMenu(mContext, v);
            menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch(item.getItemId()) {
                        case R.id.popup_artist_addto_queue:
                            getSongListIdByArtist(artist.id).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<long[]>() {

                                @Override
                                public void call(long[] ids) {
                                    MusicPlayer.addToQueue(mContext, ids, -1, ListenerUtil.IdType.NA);
                                }
                            });
                            break;
                        case R.id.popup_artist_addto_playlist:
                            getSongListIdByArtist(artist.id).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<long[]>() {

                                @Override
                                public void call(long[] ids) {
                                    ListenerUtil.showAddPlaylistDialog(mContext, ids);
                                }
                            });
                            break;
                        case R.id.popup_artist_delete:
                            ArtistSongLoader.getSongsForArtist(mContext, artist.id).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<List<Song>>() {

                                @Override
                                public void call(List<Song> songs) {
                                    long[] ids = new long[songs.size()];
                                    int i = 0;
                                    for (Song song : songs) {
                                        ids[i] = song.id;
                                        i++;
                                    }
                                    if (ids.length == 1) {
                                        ListenerUtil.showDeleteDialog(mContext, songs.get(0).title, ids, new MaterialDialog.SingleButtonCallback() {

                                            @Override
                                            public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                                                searchResults.remove(position);
                                                notifyDataSetChanged();
                                            }
                                        });
                                    } else {
                                        String songCount = ListenerUtil.makeLabel(mContext, R.plurals.Nsongs, artist.songCount);
                                        ListenerUtil.showDeleteDialog(mContext, songCount, ids, new MaterialDialog.SingleButtonCallback() {

                                            @Override
                                            public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                                                searchResults.remove(position);
                                                notifyDataSetChanged();
                                            }
                                        });
                                    }
                                }
                            });
                            break;
                    }
                    return false;
                }
            });
            menu.inflate(R.menu.popup_artist);
            menu.show();
        }
    });
}
Also used : Artist(io.hefuyi.listener.mvp.model.Artist) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) MenuItem(android.view.MenuItem) ImageView(android.widget.ImageView) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) Song(io.hefuyi.listener.mvp.model.Song) DialogAction(com.afollestad.materialdialogs.DialogAction) NonNull(android.support.annotation.NonNull) List(java.util.List) PopupMenu(android.widget.PopupMenu)

Example 9 with Song

use of io.hefuyi.listener.mvp.model.Song in project ListenerMusicPlayer by hefuyicoder.

the class SearchAdapter method setAlbumPopupMenu.

private void setAlbumPopupMenu(ItemHolder itemHolder, final int position) {
    final Album album = (Album) searchResults.get(position);
    itemHolder.popupMenu.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            final PopupMenu menu = new PopupMenu(mContext, v);
            menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch(item.getItemId()) {
                        case R.id.popup_album_addto_queue:
                            getSongListIdByAlbum(album.id).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<long[]>() {

                                @Override
                                public void call(long[] ids) {
                                    MusicPlayer.addToQueue(mContext, ids, -1, ListenerUtil.IdType.NA);
                                }
                            });
                            break;
                        case R.id.popup_album_addto_playlist:
                            getSongListIdByAlbum(album.id).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<long[]>() {

                                @Override
                                public void call(long[] ids) {
                                    ListenerUtil.showAddPlaylistDialog(mContext, ids);
                                }
                            });
                            break;
                        case R.id.popup_album_goto_artist:
                            NavigationUtil.goToArtist(mContext, album.artistId, album.artistName);
                            break;
                        case R.id.popup_artist_delete:
                            AlbumSongLoader.getSongsForAlbum(mContext, album.id).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<List<Song>>() {

                                @Override
                                public void call(List<Song> songs) {
                                    long[] ids = new long[songs.size()];
                                    int i = 0;
                                    for (Song song : songs) {
                                        ids[i] = song.id;
                                        i++;
                                    }
                                    if (ids.length == 1) {
                                        ListenerUtil.showDeleteDialog(mContext, songs.get(0).title, ids, new MaterialDialog.SingleButtonCallback() {

                                            @Override
                                            public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                                                searchResults.remove(position);
                                                notifyDataSetChanged();
                                            }
                                        });
                                    } else {
                                        String songCount = ListenerUtil.makeLabel(mContext, R.plurals.Nsongs, album.songCount);
                                        ListenerUtil.showDeleteDialog(mContext, songCount, ids, new MaterialDialog.SingleButtonCallback() {

                                            @Override
                                            public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                                                searchResults.remove(position);
                                                notifyDataSetChanged();
                                            }
                                        });
                                    }
                                }
                            });
                            break;
                    }
                    return false;
                }
            });
            menu.inflate(R.menu.popup_album);
            menu.show();
        }
    });
}
Also used : MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) Album(io.hefuyi.listener.mvp.model.Album) MenuItem(android.view.MenuItem) ImageView(android.widget.ImageView) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) Song(io.hefuyi.listener.mvp.model.Song) DialogAction(com.afollestad.materialdialogs.DialogAction) NonNull(android.support.annotation.NonNull) List(java.util.List) PopupMenu(android.widget.PopupMenu)

Example 10 with Song

use of io.hefuyi.listener.mvp.model.Song in project ListenerMusicPlayer by hefuyicoder.

the class SongsListAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    int viewType = getItemViewType(position);
    switch(viewType) {
        case Type.TYPE_PLAY_SHUFFLE:
            break;
        case Type.TYPE_SONG:
            ItemHolder itemHolder = (ItemHolder) holder;
            Song localItem;
            if (withHeader) {
                localItem = arraylist.get(position - 1);
            } else {
                localItem = arraylist.get(position);
            }
            itemHolder.title.setText(localItem.title);
            itemHolder.artist.setText(localItem.artistName);
            itemHolder.album.setText(localItem.albumName);
            Glide.with(holder.itemView.getContext()).load(ListenerUtil.getAlbumArtUri(localItem.albumId).toString()).error(ATEUtil.getDefaultAlbumDrawable(mContext)).placeholder(ATEUtil.getDefaultAlbumDrawable(mContext)).diskCacheStrategy(DiskCacheStrategy.SOURCE).centerCrop().into(itemHolder.albumArt);
            if (MusicPlayer.getCurrentAudioId() == localItem.id) {
                itemHolder.title.setTextColor(ATEUtil.getThemeAccentColor(mContext));
            } else {
                itemHolder.title.setTextColor(ATEUtil.getThemeTextColorPrimary(mContext));
            }
            if (topPlayScore != -1) {
                itemHolder.playscore.setVisibility(View.VISIBLE);
                RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) itemHolder.playscore.getLayoutParams();
                int full = DensityUtil.getScreenWidth(mContext);
                layoutParams.width = (int) (full * (localItem.getPlayCountScore() / topPlayScore));
            }
            setOnPopupMenuListener(itemHolder, position);
            break;
    }
}
Also used : Song(io.hefuyi.listener.mvp.model.Song) RelativeLayout(android.widget.RelativeLayout)

Aggregations

Song (io.hefuyi.listener.mvp.model.Song)26 List (java.util.List)16 Subscription (rx.Subscription)7 CompositeSubscription (rx.subscriptions.CompositeSubscription)7 RecyclerView (android.support.v7.widget.RecyclerView)6 MenuItem (android.view.MenuItem)6 View (android.view.View)6 ImageView (android.widget.ImageView)6 PopupMenu (android.widget.PopupMenu)6 TextView (android.widget.TextView)6 DialogAction (com.afollestad.materialdialogs.DialogAction)6 MaterialDialog (com.afollestad.materialdialogs.MaterialDialog)6 ArrayList (java.util.ArrayList)6 NonNull (android.support.annotation.NonNull)5 Observable (rx.Observable)4 Cursor (android.database.Cursor)3 Album (io.hefuyi.listener.mvp.model.Album)3 Artist (io.hefuyi.listener.mvp.model.Artist)3 GetSongs (io.hefuyi.listener.mvp.usecase.GetSongs)3 FastScrollRecyclerView (io.hefuyi.listener.widget.fastscroller.FastScrollRecyclerView)3