Search in sources :

Example 1 with SelectEvent

use of org.schabi.newpipe.playlist.events.SelectEvent in project NewPipe by TeamNewPipe.

the class PlayQueue method setIndex.

/*//////////////////////////////////////////////////////////////////////////
    // Write ops
    //////////////////////////////////////////////////////////////////////////*/
/**
 * Changes the current playing index to a new index.
 *
 * This method is guarded using in a circular manner for index exceeding the play queue size.
 *
 * Will emit a {@link SelectEvent} if the index is not the current playing index.
 */
public synchronized void setIndex(final int index) {
    final int oldIndex = getIndex();
    int newIndex = index;
    if (index < 0)
        newIndex = 0;
    if (index >= streams.size())
        newIndex = isComplete() ? index % streams.size() : streams.size() - 1;
    queueIndex.set(newIndex);
    broadcast(new SelectEvent(oldIndex, newIndex));
}
Also used : SelectEvent(org.schabi.newpipe.playlist.events.SelectEvent)

Example 2 with SelectEvent

use of org.schabi.newpipe.playlist.events.SelectEvent in project NewPipe by TeamNewPipe.

the class PlayQueueAdapter method onPlayQueueChanged.

private void onPlayQueueChanged(final PlayQueueEvent message) {
    switch(message.type()) {
        case RECOVERY:
            // Do nothing.
            break;
        case SELECT:
            final SelectEvent selectEvent = (SelectEvent) message;
            notifyItemChanged(selectEvent.getOldIndex());
            notifyItemChanged(selectEvent.getNewIndex());
            break;
        case APPEND:
            final AppendEvent appendEvent = (AppendEvent) message;
            notifyItemRangeInserted(playQueue.size(), appendEvent.getAmount());
            break;
        case ERROR:
            final ErrorEvent errorEvent = (ErrorEvent) message;
            if (!errorEvent.isSkippable()) {
                notifyItemRemoved(errorEvent.getErrorIndex());
            }
            notifyItemChanged(errorEvent.getErrorIndex());
            notifyItemChanged(errorEvent.getQueueIndex());
            break;
        case REMOVE:
            final RemoveEvent removeEvent = (RemoveEvent) message;
            notifyItemRemoved(removeEvent.getRemoveIndex());
            notifyItemChanged(removeEvent.getQueueIndex());
            break;
        case MOVE:
            final MoveEvent moveEvent = (MoveEvent) message;
            notifyItemMoved(moveEvent.getFromIndex(), moveEvent.getToIndex());
            break;
        case INIT:
        case REORDER:
        default:
            notifyDataSetChanged();
            break;
    }
}
Also used : ErrorEvent(org.schabi.newpipe.playlist.events.ErrorEvent) RemoveEvent(org.schabi.newpipe.playlist.events.RemoveEvent) SelectEvent(org.schabi.newpipe.playlist.events.SelectEvent) MoveEvent(org.schabi.newpipe.playlist.events.MoveEvent) AppendEvent(org.schabi.newpipe.playlist.events.AppendEvent)

Aggregations

SelectEvent (org.schabi.newpipe.playlist.events.SelectEvent)2 AppendEvent (org.schabi.newpipe.playlist.events.AppendEvent)1 ErrorEvent (org.schabi.newpipe.playlist.events.ErrorEvent)1 MoveEvent (org.schabi.newpipe.playlist.events.MoveEvent)1 RemoveEvent (org.schabi.newpipe.playlist.events.RemoveEvent)1