use of org.videolan.medialibrary.media.MediaWrapper in project vlc-android by GeoffreyMetais.
the class AudioAlbumsSongsFragment method setContextMenuItems.
protected void setContextMenuItems(Menu menu, int position) {
if (mViewPager.getCurrentItem() != MODE_SONG) {
menu.setGroupVisible(R.id.songs_view_only, false);
menu.setGroupVisible(R.id.phone_only, false);
}
if (!AndroidDevices.isPhone)
menu.setGroupVisible(R.id.phone_only, false);
menu.findItem(R.id.audio_list_browser_play).setVisible(true);
// Hide delete if we cannot
final AudioBrowserAdapter adapter = mViewPager.getCurrentItem() == MODE_ALBUM ? mAlbumsAdapter : mSongsAdapter;
final MediaLibraryItem mediaItem = adapter.getItem(position);
String location = mediaItem instanceof MediaWrapper ? ((MediaWrapper) mediaItem).getLocation() : null;
menu.findItem(R.id.audio_list_browser_delete).setVisible(location != null && FileUtils.canWrite(location));
}
use of org.videolan.medialibrary.media.MediaWrapper 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.MediaWrapper in project vlc-android by GeoffreyMetais.
the class BaseAudioBrowser method onActionItemClicked.
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
final List<MediaLibraryItem> list = getCurrentAdapter().getSelection();
stopActionMode();
if (!list.isEmpty()) {
final List<MediaWrapper> tracks = new ArrayList<>();
for (MediaLibraryItem mediaItem : list) tracks.addAll(Arrays.asList(mediaItem.getTracks()));
switch(item.getItemId()) {
case R.id.action_mode_audio_play:
MediaUtils.openList(getActivity(), tracks, 0);
break;
case R.id.action_mode_audio_append:
MediaUtils.appendMedia(getActivity(), tracks);
break;
case R.id.action_mode_audio_add_playlist:
UiTools.addToPlaylist(getActivity(), tracks);
break;
case R.id.action_mode_audio_info:
showInfoDialog(list.get(0));
break;
case R.id.action_mode_audio_set_song:
AudioUtil.setRingtone((MediaWrapper) list.get(0), getActivity());
break;
default:
return false;
}
}
return true;
}
use of org.videolan.medialibrary.media.MediaWrapper in project vlc-android by GeoffreyMetais.
the class PlaylistAdapter method onItemDismiss.
@Override
public void onItemDismiss(final int position) {
final MediaWrapper media = getItem(position);
String message = String.format(VLCApplication.getAppResources().getString(R.string.remove_playlist_item), media.getTitle());
if (mPlayer instanceof Fragment) {
View v = ((Fragment) mPlayer).getView();
Runnable cancelAction = new Runnable() {
@Override
public void run() {
mService.insertItem(position, media);
}
};
UiTools.snackerWithCancel(v, message, null, cancelAction);
} else if (mPlayer instanceof Context) {
Toast.makeText(VLCApplication.getAppContext(), message, Toast.LENGTH_SHORT).show();
}
remove(position);
}
use of org.videolan.medialibrary.media.MediaWrapper in project vlc-android by GeoffreyMetais.
the class BaseBrowserFragment method onLongClick.
public boolean onLongClick(View v, int position, MediaLibraryItem item) {
if (mActionMode != null || item.getItemType() != MediaLibraryItem.TYPE_MEDIA)
return false;
final MediaWrapper mediaWrapper = (MediaWrapper) item;
if (mediaWrapper.getType() == MediaWrapper.TYPE_AUDIO || mediaWrapper.getType() == MediaWrapper.TYPE_VIDEO || mediaWrapper.getType() == MediaWrapper.TYPE_DIR) {
if (mActionMode != null)
return false;
item.setStateFlags(MediaLibraryItem.FLAG_SELECTED);
mAdapter.updateSelectionCount(mediaWrapper.hasStateFlags(MediaLibraryItem.FLAG_SELECTED));
mAdapter.notifyItemChanged(position, item);
startActionMode();
} else
mRecyclerView.openContextMenu(position);
return true;
}
Aggregations