Search in sources :

Example 21 with Song

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

the class PlaylistAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(final ItemHolder itemHolder, final int i) {
    final Playlist localItem = arraylist.get(i);
    itemHolder.title.setText(localItem.name);
    itemHolder.songcount.setText(ListenerUtil.makeLabel(mContext, R.plurals.Nsongs, localItem.songCount));
    itemHolder.subtitle1.setVisibility(View.GONE);
    itemHolder.divider.setVisibility(View.GONE);
    PlaylistSongLoader.getSongsInPlaylist(mContext, localItem.id).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<List<Song>>() {

        @Override
        public void call(List<Song> playlistsongs) {
            String uri = "";
            long firstAlbumID = -1;
            if (playlistsongs.size() != 0) {
                firstAlbumID = playlistsongs.get(0).albumId;
                uri = ListenerUtil.getAlbumArtUri(firstAlbumID).toString();
            }
            itemHolder.playlistArt.setTag(R.string.playlistArt, firstAlbumID);
            Glide.with(itemHolder.itemView.getContext()).load(uri).asBitmap().placeholder(ATEUtil.getDefaultAlbumDrawable(mContext)).into(new SimpleTarget<Bitmap>() {

                @Override
                public void onLoadFailed(Exception e, Drawable errorDrawable) {
                    if (isGrid) {
                        itemHolder.footer.setBackgroundColor(ATEUtil.getThemeAlbumDefaultPaletteColor(mContext));
                    }
                    itemHolder.playlistArt.setImageDrawable(ATEUtil.getDefaultAlbumDrawable(mContext));
                    itemHolder.title.setTextColor(ATEUtil.getThemeTextColorPrimary(mContext));
                    itemHolder.songcount.setTextColor(ATEUtil.getThemeTextColorSecondly(mContext));
                    itemHolder.popupMenu.setColorFilter(mContext.getResources().getColor(R.color.background_floating_material_dark));
                }

                @Override
                public void onResourceReady(final Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                    if (isGrid) {
                        new Palette.Builder(resource).generate(new Palette.PaletteAsyncListener() {

                            @Override
                            public void onGenerated(Palette palette) {
                                Palette.Swatch swatch = ColorUtil.getMostPopulousSwatch(palette);
                                if (swatch != null) {
                                    int color = swatch.getRgb();
                                    itemHolder.footer.setBackgroundColor(color);
                                    int detailColor = swatch.getTitleTextColor();
                                    itemHolder.playlistArt.setImageBitmap(resource);
                                    itemHolder.title.setTextColor(ColorUtil.getOpaqueColor(detailColor));
                                    itemHolder.songcount.setTextColor(detailColor);
                                    itemHolder.popupMenu.setColorFilter(detailColor);
                                }
                            }
                        });
                    } else {
                        itemHolder.playlistArt.setImageBitmap(resource);
                    }
                }
            });
        }
    });
    if (ListenerUtil.isLollipop())
        itemHolder.playlistArt.setTransitionName("transition_album_art" + i);
    setOnPopupMenuListener(itemHolder, i);
}
Also used : Palette(android.support.v7.graphics.Palette) Drawable(android.graphics.drawable.Drawable) GlideAnimation(com.bumptech.glide.request.animation.GlideAnimation) SimpleTarget(com.bumptech.glide.request.target.SimpleTarget) Playlist(io.hefuyi.listener.mvp.model.Playlist) Song(io.hefuyi.listener.mvp.model.Song) Bitmap(android.graphics.Bitmap) ArrayList(java.util.ArrayList) List(java.util.List)

Example 22 with Song

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

the class PlayqueueSongsAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    ItemHolder itemHolder = (ItemHolder) holder;
    Song localItem;
    localItem = arraylist.get(position);
    itemHolder.title.setText(localItem.title);
    itemHolder.artist.setText(localItem.artistName);
    itemHolder.album.setText(localItem.albumName);
    if (mSwatch != null) {
        itemHolder.title.setTextColor(mSwatch.getBodyTextColor());
        itemHolder.artist.setTextColor(mSwatch.getTitleTextColor());
        itemHolder.album.setTextColor(mSwatch.getTitleTextColor());
        if (MusicPlayer.getQueuePosition() == position) {
            itemHolder.playIndicator.setVisibility(View.VISIBLE);
            itemHolder.playIndicator.setBackgroundColor(ColorUtil.getBlackWhiteColor(mSwatch.getRgb()));
        } else {
            itemHolder.playIndicator.setVisibility(View.GONE);
        }
    }
    Glide.with(holder.itemView.getContext()).load(ListenerUtil.getAlbumArtUri(localItem.albumId).toString()).error(ATEUtil.getDefaultAlbumDrawable(mContext)).placeholder(ATEUtil.getDefaultAlbumDrawable(mContext)).centerCrop().into(itemHolder.albumArt);
}
Also used : Song(io.hefuyi.listener.mvp.model.Song)

Example 23 with Song

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

the class SearchAdapter method setSongPopupMenu.

private void setSongPopupMenu(ItemHolder itemHolder, final int position) {
    final Song song = (Song) 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_song_play_next:
                            MusicPlayer.playNext(mContext, new long[] { song.id }, -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:
                            MusicPlayer.addToQueue(mContext, new long[] { song.id }, -1, ListenerUtil.IdType.NA);
                            break;
                        case R.id.popup_song_addto_playlist:
                            ListenerUtil.showAddPlaylistDialog(mContext, new long[] { song.id });
                            break;
                        case R.id.popup_song_delete:
                            ListenerUtil.showDeleteDialog(mContext, song.title, new long[] { song.id }, new MaterialDialog.SingleButtonCallback() {

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

Example 24 with Song

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

the class SearchAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(ItemHolder itemHolder, int position) {
    switch(getItemViewType(position)) {
        case 0:
            Song song = (Song) searchResults.get(position);
            itemHolder.title.setText(song.title);
            itemHolder.subtitle1.setText(song.artistName);
            itemHolder.subtitle2.setText(song.albumName);
            Glide.with(itemHolder.itemView.getContext()).load(ListenerUtil.getAlbumArtUri(song.albumId).toString()).error(ATEUtil.getDefaultAlbumDrawable(mContext)).placeholder(ATEUtil.getDefaultAlbumDrawable(mContext)).centerCrop().into(itemHolder.image);
            setOnPopupMenuListener(itemHolder, 0, position);
            break;
        case 1:
            Album album = (Album) searchResults.get(position);
            itemHolder.title.setText(album.title);
            itemHolder.subtitle1.setText(album.artistName);
            itemHolder.subtitle2.setText(ListenerUtil.makeLabel(mContext, R.plurals.Nsongs, album.songCount));
            Glide.with(itemHolder.itemView.getContext()).load(ListenerUtil.getAlbumArtUri(album.id).toString()).asBitmap().placeholder(ATEUtil.getDefaultAlbumDrawable(mContext)).error(ATEUtil.getDefaultAlbumDrawable(mContext)).centerCrop().into(itemHolder.image);
            if (ListenerUtil.isLollipop())
                itemHolder.image.setTransitionName("transition_album_art" + position);
            setOnPopupMenuListener(itemHolder, 1, position);
            break;
        case 2:
            Artist artist = (Artist) searchResults.get(position);
            itemHolder.title.setText(artist.name);
            itemHolder.subtitle1.setText(ListenerUtil.makeLabel(mContext, R.plurals.Nalbums, artist.albumCount));
            itemHolder.subtitle2.setText(ListenerUtil.makeLabel(mContext, R.plurals.Nsongs, artist.songCount));
            String artistArtJson = PreferencesUtility.getInstance(mContext).getArtistArt(artist.id);
            if (!TextUtils.isEmpty(artistArtJson)) {
                ArtistArt artistArt = new Gson().fromJson(artistArtJson, ArtistArt.class);
                Glide.with(mContext).load(artistArt.getLarge()).asBitmap().placeholder(ATEUtil.getDefaultSingerDrawable(mContext)).diskCacheStrategy(DiskCacheStrategy.SOURCE).error(ATEUtil.getDefaultSingerDrawable(mContext)).into(itemHolder.image);
            }
            if (ListenerUtil.isLollipop())
                itemHolder.image.setTransitionName("transition_artist_art" + position);
            setOnPopupMenuListener(itemHolder, 2, position);
            break;
        case 10:
            itemHolder.sectionHeader.setText((String) searchResults.get(position));
        case 3:
            break;
    }
}
Also used : Artist(io.hefuyi.listener.mvp.model.Artist) Song(io.hefuyi.listener.mvp.model.Song) Album(io.hefuyi.listener.mvp.model.Album) Gson(com.google.gson.Gson) ArtistArt(io.hefuyi.listener.mvp.model.ArtistArt)

Example 25 with Song

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

the class AlbumSongsAdapter method onBindViewHolder.

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

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