Search in sources :

Example 1 with Playlist

use of org.videolan.medialibrary.media.Playlist in project vlc-android by GeoffreyMetais.

the class AudioBrowserFragment method handleContextItemSelected.

protected boolean handleContextItemSelected(final MenuItem item, final int position) {
    final int mode = mViewPager.getCurrentItem();
    final AudioBrowserAdapter adapter = mAdapters[mode];
    if (position < 0 && position >= adapter.getItemCount())
        return false;
    final int id = item.getItemId();
    final MediaLibraryItem mediaItem = adapter.getItem(position);
    if (id == R.id.audio_list_browser_delete) {
        final MediaLibraryItem previous = position > 0 ? adapter.getItem(position - 1) : null;
        final MediaLibraryItem next = position < adapter.getItemCount() - 1 ? adapter.getItem(position + 1) : null;
        final String message;
        final Runnable action;
        final Runnable cancel;
        final MediaLibraryItem separator = previous != null && previous.getItemType() == MediaLibraryItem.TYPE_DUMMY && (next == null || next.getItemType() == MediaLibraryItem.TYPE_DUMMY) ? previous : null;
        if (separator != null)
            adapter.remove(separator, mediaItem);
        else
            adapter.remove(mediaItem);
        if (mode == MODE_PLAYLIST) {
            cancel = null;
            message = getString(R.string.playlist_deleted);
            action = new Runnable() {

                @Override
                public void run() {
                    deletePlaylist((Playlist) mediaItem);
                }
            };
        } else if (mode == MODE_SONG) {
            message = getString(R.string.file_deleted);
            cancel = new Runnable() {

                @Override
                public void run() {
                    if (separator != null)
                        adapter.addItems(separator, mediaItem);
                    else
                        adapter.addItems(mediaItem);
                }
            };
            action = new Runnable() {

                @Override
                public void run() {
                    deleteMedia(mediaItem, true, cancel);
                }
            };
            if (!checkWritePermission((MediaWrapper) mediaItem, new Runnable() {

                @Override
                public void run() {
                    final View v = getView();
                    if (v != null)
                        UiTools.snackerWithCancel(getView(), message, action, cancel);
                }
            }))
                return false;
        } else
            return false;
        final View v = getView();
        if (v != null)
            UiTools.snackerWithCancel(getView(), message, action, cancel);
        return true;
    }
    if (id == R.id.audio_list_browser_set_song) {
        if (mSongsAdapter.getItemCount() <= position)
            return false;
        AudioUtil.setRingtone((MediaWrapper) mSongsAdapter.getItem(position), getActivity());
        return true;
    }
    if (id == R.id.audio_view_info) {
        showInfoDialog(mSongsAdapter.getItem(position));
        return true;
    }
    if (id == R.id.audio_view_add_playlist) {
        UiTools.addToPlaylist(getActivity(), mediaItem.getTracks(), SavePlaylistDialog.KEY_NEW_TRACKS);
        return true;
    }
    int startPosition;
    MediaWrapper[] medias;
    boolean useAllItems = id == R.id.audio_list_browser_play_all;
    boolean append = id == R.id.audio_list_browser_append;
    boolean insert_next = id == R.id.audio_list_browser_insert_next;
    // Play/Append
    if (useAllItems) {
        if (mSongsAdapter.getItemCount() <= position)
            return false;
        final List<MediaLibraryItem> mediaList = new ArrayList<>();
        startPosition = mSongsAdapter.getListWithPosition(mediaList, position);
        medias = Arrays.copyOf(mediaList.toArray(), mediaList.size(), MediaWrapper[].class);
    } else {
        startPosition = 0;
        if (position >= adapter.getItemCount())
            return false;
        medias = mediaItem.getTracks();
    }
    if (append)
        MediaUtils.appendMedia(getActivity(), medias);
    else if (insert_next)
        MediaUtils.insertNext(getActivity(), medias);
    else
        MediaUtils.openArray(getActivity(), medias, startPosition);
    return true;
}
Also used : MediaWrapper(org.videolan.medialibrary.media.MediaWrapper) MediaLibraryItem(org.videolan.medialibrary.media.MediaLibraryItem) ArrayList(java.util.ArrayList) View(android.view.View) ContextMenuRecyclerView(org.videolan.vlc.gui.view.ContextMenuRecyclerView) TextView(android.widget.TextView) RecyclerView(android.support.v7.widget.RecyclerView) Playlist(org.videolan.medialibrary.media.Playlist)

Example 2 with Playlist

use of org.videolan.medialibrary.media.Playlist in project vlc-android by videolan.

the class AudioBrowserFragment method handleContextItemSelected.

protected boolean handleContextItemSelected(final MenuItem item, final int position) {
    final int mode = mViewPager.getCurrentItem();
    final AudioBrowserAdapter adapter = mAdapters[mode];
    if (position < 0 && position >= adapter.getItemCount())
        return false;
    final int id = item.getItemId();
    final MediaLibraryItem mediaItem = adapter.getItem(position);
    if (id == R.id.audio_list_browser_delete) {
        final MediaLibraryItem previous = position > 0 ? adapter.getItem(position - 1) : null;
        final MediaLibraryItem next = position < adapter.getItemCount() - 1 ? adapter.getItem(position + 1) : null;
        final String message;
        final Runnable action;
        final Runnable cancel;
        final MediaLibraryItem separator = previous != null && previous.getItemType() == MediaLibraryItem.TYPE_DUMMY && (next == null || next.getItemType() == MediaLibraryItem.TYPE_DUMMY) ? previous : null;
        if (separator != null)
            adapter.remove(separator, mediaItem);
        else
            adapter.remove(mediaItem);
        if (mode == MODE_PLAYLIST) {
            cancel = null;
            message = getString(R.string.playlist_deleted);
            action = new Runnable() {

                @Override
                public void run() {
                    deletePlaylist((Playlist) mediaItem);
                }
            };
        } else if (mode == MODE_SONG) {
            message = getString(R.string.file_deleted);
            cancel = new Runnable() {

                @Override
                public void run() {
                    if (separator != null)
                        adapter.addItems(separator, mediaItem);
                    else
                        adapter.addItems(mediaItem);
                }
            };
            action = new Runnable() {

                @Override
                public void run() {
                    deleteMedia(mediaItem, true, cancel);
                }
            };
            if (!checkWritePermission((MediaWrapper) mediaItem, new Runnable() {

                @Override
                public void run() {
                    final View v = getView();
                    if (v != null)
                        UiTools.snackerWithCancel(getView(), message, action, cancel);
                }
            }))
                return false;
        } else
            return false;
        final View v = getView();
        if (v != null)
            UiTools.snackerWithCancel(getView(), message, action, cancel);
        return true;
    }
    if (id == R.id.audio_list_browser_set_song) {
        if (mSongsAdapter.getItemCount() <= position)
            return false;
        AudioUtil.setRingtone((MediaWrapper) mSongsAdapter.getItem(position), getActivity());
        return true;
    }
    if (id == R.id.audio_view_info) {
        showInfoDialog(mSongsAdapter.getItem(position));
        return true;
    }
    if (id == R.id.audio_view_add_playlist) {
        UiTools.addToPlaylist(getActivity(), mediaItem.getTracks(), SavePlaylistDialog.KEY_NEW_TRACKS);
        return true;
    }
    int startPosition;
    MediaWrapper[] medias;
    boolean useAllItems = id == R.id.audio_list_browser_play_all;
    boolean append = id == R.id.audio_list_browser_append;
    boolean insert_next = id == R.id.audio_list_browser_insert_next;
    // Play/Append
    if (useAllItems) {
        if (mSongsAdapter.getItemCount() <= position)
            return false;
        final List<MediaLibraryItem> mediaList = new ArrayList<>();
        startPosition = mSongsAdapter.getListWithPosition(mediaList, position);
        medias = Arrays.copyOf(mediaList.toArray(), mediaList.size(), MediaWrapper[].class);
    } else {
        startPosition = 0;
        if (position >= adapter.getItemCount())
            return false;
        medias = mediaItem.getTracks();
    }
    if (mService != null) {
        if (append)
            mService.append(medias);
        else if (insert_next)
            mService.insertNext(medias);
        else
            mService.load(medias, startPosition);
        return true;
    } else
        return false;
}
Also used : MediaWrapper(org.videolan.medialibrary.media.MediaWrapper) MediaLibraryItem(org.videolan.medialibrary.media.MediaLibraryItem) ArrayList(java.util.ArrayList) View(android.view.View) ContextMenuRecyclerView(org.videolan.vlc.gui.view.ContextMenuRecyclerView) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) Playlist(org.videolan.medialibrary.media.Playlist)

Example 3 with Playlist

use of org.videolan.medialibrary.media.Playlist in project vlc-android by videolan.

the class PlaylistActivity method removeFromPlaylist.

private void removeFromPlaylist(final List<MediaWrapper> list) {
    final List<MediaLibraryItem> oldAdapter = new ArrayList<>(mAdapter.getAll());
    for (MediaLibraryItem mediaItem : list) mAdapter.remove(mediaItem);
    UiTools.snackerWithCancel(mBinding.getRoot(), getString(R.string.file_deleted), new Runnable() {

        @Override
        public void run() {
            for (MediaLibraryItem mediaItem : list) ((Playlist) mPlaylist).remove(mediaItem.getId());
            if (mPlaylist.getTracks().length == 0)
                ((Playlist) mPlaylist).delete();
        }
    }, new Runnable() {

        @Override
        public void run() {
            mAdapter.update(oldAdapter);
        }
    });
}
Also used : Playlist(org.videolan.medialibrary.media.Playlist) MediaLibraryItem(org.videolan.medialibrary.media.MediaLibraryItem) ArrayList(java.util.ArrayList)

Example 4 with Playlist

use of org.videolan.medialibrary.media.Playlist in project vlc-android by GeoffreyMetais.

the class PlaylistActivity method removeFromPlaylist.

private void removeFromPlaylist(final List<MediaWrapper> list) {
    final List<MediaLibraryItem> oldAdapter = new ArrayList<>(mAdapter.getAll());
    for (MediaLibraryItem mediaItem : list) mAdapter.remove(mediaItem);
    UiTools.snackerWithCancel(mBinding.getRoot(), getString(R.string.file_deleted), new Runnable() {

        @Override
        public void run() {
            for (MediaLibraryItem mediaItem : list) ((Playlist) mPlaylist).remove(mediaItem.getId());
            if (mPlaylist.getTracks().length == 0)
                ((Playlist) mPlaylist).delete();
        }
    }, new Runnable() {

        @Override
        public void run() {
            mAdapter.update(oldAdapter);
        }
    });
}
Also used : Playlist(org.videolan.medialibrary.media.Playlist) MediaLibraryItem(org.videolan.medialibrary.media.MediaLibraryItem) ArrayList(java.util.ArrayList)

Aggregations

ArrayList (java.util.ArrayList)4 MediaLibraryItem (org.videolan.medialibrary.media.MediaLibraryItem)4 Playlist (org.videolan.medialibrary.media.Playlist)4 RecyclerView (android.support.v7.widget.RecyclerView)2 View (android.view.View)2 TextView (android.widget.TextView)2 MediaWrapper (org.videolan.medialibrary.media.MediaWrapper)2 ContextMenuRecyclerView (org.videolan.vlc.gui.view.ContextMenuRecyclerView)2