package de.danoeh.antennapod.core.event;
import android.support.annotation.Nullable;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.List;
import de.danoeh.antennapod.core.feed.FeedItem;
public class QueueEvent {
public enum Action {
ADDED, ADDED_ITEMS, SET_QUEUE, REMOVED, IRREVERSIBLE_REMOVED, CLEARED, DELETED_MEDIA, SORTED, MOVED
}
public final Action action;
public final FeedItem item;
public final int position;
public final List<FeedItem> items;
private QueueEvent(Action action,
@Nullable FeedItem item,
@Nullable List<FeedItem> items,
int position) {
this.action = action;
this.item = item;
this.items = items;
this.position = position;
}
public static QueueEvent added(FeedItem item, int position) {
return new QueueEvent(Action.ADDED, item, null, position);
}
public static QueueEvent setQueue(List<FeedItem> queue) {
return new QueueEvent(Action.SET_QUEUE, null, queue, -1);
}
public static QueueEvent removed(FeedItem item) {
return new QueueEvent(Action.REMOVED, item, null, -1);
}
public static QueueEvent irreversibleRemoved(FeedItem item) {
return new QueueEvent(Action.IRREVERSIBLE_REMOVED, item, null, -1);
}
public static QueueEvent cleared() {
return new QueueEvent(Action.CLEARED, null, null, -1);
}
public static QueueEvent sorted(List<FeedItem> sortedQueue) {
return new QueueEvent(Action.SORTED, null, sortedQueue, -1);
}
public static QueueEvent moved(FeedItem item, int newPosition) {
return new QueueEvent(Action.MOVED, item, null, newPosition);
}
public boolean contains(long id) {
if(item != null) {
return item.getId() == id;
}
for(FeedItem item : items) {
if(item.getId() == id) {
return true;
}
}
return false;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
.append("action", action)
.append("item", item)
.append("items", items)
.append("position", position)
.toString();
}
}