Search in sources :

Example 16 with Song

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

the class PlaylistSongLoader method getSongsInPlaylist.

public static Observable<List<Song>> getSongsInPlaylist(Context context, long playlistID) {
    ArrayList<Song> mSongList = new ArrayList<>();
    final int playlistCount = countPlaylist(context, playlistID);
    Cursor cursor = makePlaylistSongCursor(context, playlistID);
    if (cursor != null) {
        boolean runCleanup = false;
        if (cursor.getCount() != playlistCount) {
            runCleanup = true;
        }
        if (!runCleanup && cursor.moveToFirst()) {
            final int playOrderCol = cursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists.Members.PLAY_ORDER);
            int lastPlayOrder = -1;
            do {
                int playOrder = cursor.getInt(playOrderCol);
                if (playOrder == lastPlayOrder) {
                    runCleanup = true;
                    break;
                }
                lastPlayOrder = playOrder;
            } while (cursor.moveToNext());
        }
        if (runCleanup) {
            cleanupPlaylist(context, playlistID, cursor);
            cursor.close();
            cursor = makePlaylistSongCursor(context, playlistID);
            if (cursor != null) {
            }
        }
    }
    if (cursor != null && cursor.moveToFirst()) {
        do {
            final long id = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists.Members.AUDIO_ID));
            final String songName = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.TITLE));
            final String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ARTIST));
            final long albumId = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ALBUM_ID));
            final long artistId = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ARTIST_ID));
            final String album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.ALBUM));
            final long duration = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.DURATION));
            final int durationInSecs = (int) duration / 1000;
            final int tracknumber = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.AudioColumns.TRACK));
            final Song song = new Song(id, albumId, artistId, songName, artist, album, durationInSecs, tracknumber);
            mSongList.add(song);
        } while (cursor.moveToNext());
    }
    // Close the cursor
    if (cursor != null) {
        cursor.close();
        cursor = null;
    }
    return Observable.from(mSongList).toList();
}
Also used : Song(io.hefuyi.listener.mvp.model.Song) ArrayList(java.util.ArrayList) Cursor(android.database.Cursor)

Example 17 with Song

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

the class SongLoader method getSongsForCursor.

public static Observable<List<Song>> getSongsForCursor(final Cursor cursor) {
    return Observable.create(new Observable.OnSubscribe<List<Song>>() {

        @Override
        public void call(Subscriber<? super List<Song>> subscriber) {
            List<Song> arrayList = new ArrayList<Song>();
            if ((cursor != null) && (cursor.moveToFirst()))
                do {
                    long id = cursor.getLong(0);
                    String title = cursor.getString(1);
                    String artist = cursor.getString(2);
                    String album = cursor.getString(3);
                    int duration = cursor.getInt(4);
                    int trackNumber = cursor.getInt(5);
                    long artistId = cursor.getInt(6);
                    long albumId = cursor.getLong(7);
                    String path = cursor.getString(8);
                    arrayList.add(new Song(id, albumId, artistId, title, artist, album, duration, trackNumber, path));
                } while (cursor.moveToNext());
            if (cursor != null) {
                cursor.close();
            }
            subscriber.onNext(arrayList);
            subscriber.onCompleted();
        }
    });
}
Also used : FavoriteSong(io.hefuyi.listener.provider.FavoriteSong) Song(io.hefuyi.listener.mvp.model.Song) ArrayList(java.util.ArrayList) List(java.util.List) Observable(rx.Observable)

Example 18 with Song

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

the class PlayqueueSongPresenter method loadSongs.

@Override
public void loadSongs() {
    Subscription subscription = mUsecase.execute(new GetSongs.RequestValues(Constants.NAVIGATE_QUEUE)).getSongList().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<List<Song>>() {

        @Override
        public void call(List<Song> songs) {
            mView.showSongs(songs);
        }
    });
    mCompositeSubscription.add(subscription);
}
Also used : Song(io.hefuyi.listener.mvp.model.Song) GetSongs(io.hefuyi.listener.mvp.usecase.GetSongs) List(java.util.List) CompositeSubscription(rx.subscriptions.CompositeSubscription) Subscription(rx.Subscription)

Example 19 with Song

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

the class SongsPresenter method loadSongs.

@Override
public void loadSongs(String action) {
    mCompositeSubscription.clear();
    Subscription subscription = mUsecase.execute(new GetSongs.RequestValues(action)).getSongList().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<List<Song>>() {

        @Override
        public void call(List<Song> songList) {
            if (songList == null || songList.size() == 0) {
                mView.showEmptyView();
            } else {
                mView.showSongs(songList);
            }
        }
    });
    mCompositeSubscription.add(subscription);
}
Also used : Song(io.hefuyi.listener.mvp.model.Song) GetSongs(io.hefuyi.listener.mvp.usecase.GetSongs) List(java.util.List) CompositeSubscription(rx.subscriptions.CompositeSubscription) Subscription(rx.Subscription)

Example 20 with Song

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

the class ArtistSongAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(ItemHolder itemHolder, int i) {
    if (getItemViewType(i) == 0) {
        //nothing
        setUpAlbums(itemHolder.albumsRecyclerView);
    } else {
        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 - 1);
    }
}
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