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;
}
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;
}
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);
}
});
}
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);
}
});
}
Aggregations