X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=bindings%2Fjava%2Fcore%2Fsrc%2Fmain%2Fjava%2Forg%2Fvideolan%2Fjvlc%2FMediaList.java;h=979222cab0df9690ec098be37cda22fad4748273;hb=5f584e4c451865ea350cd54e28a4d1417d50e9c6;hp=bef31c4247015d0509d40e7f5b1f6e82b27c3a1f;hpb=5a0c3a5164cebef2e6111506ac12edb71762b047;p=vlc diff --git a/bindings/java/core/src/main/java/org/videolan/jvlc/MediaList.java b/bindings/java/core/src/main/java/org/videolan/jvlc/MediaList.java index bef31c4247..979222cab0 100644 --- a/bindings/java/core/src/main/java/org/videolan/jvlc/MediaList.java +++ b/bindings/java/core/src/main/java/org/videolan/jvlc/MediaList.java @@ -25,6 +25,10 @@ package org.videolan.jvlc; +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; + import org.videolan.jvlc.internal.LibVlc.LibVlcEventManager; import org.videolan.jvlc.internal.LibVlc.LibVlcMediaDescriptor; import org.videolan.jvlc.internal.LibVlc.LibVlcMediaList; @@ -40,6 +44,8 @@ public class MediaList private final LibVlcEventManager eventManager; + private List items = new ArrayList(); + public MediaList(JVLC jvlc) { this.jvlc = jvlc; @@ -56,6 +62,11 @@ public class MediaList public void addMediaDescriptor(MediaDescriptor descriptor) { + if (items.contains(descriptor.getMrl())) + { + return; + } + items.add(descriptor.getMrl()); libvlc_exception_t exception = new libvlc_exception_t(); jvlc.getLibvlc().libvlc_media_list_add_media_descriptor(instance, descriptor.getInstance(), exception); } @@ -79,10 +90,33 @@ public class MediaList return new MediaDescriptor(jvlc, descriptor); } - public void remove(int index) + /** + * @param index The index of the media to remove + * @return True if the media was successfully removed, false otherwise. + */ + public boolean removeMedia(int index) { libvlc_exception_t exception = new libvlc_exception_t(); jvlc.getLibvlc().libvlc_media_list_remove_index(instance, index, exception); + if (exception.raised == 0) + { + items.remove(index); + return true; + } + return false; + } + + /** + * @param media The media descriptor mrl + */ + public boolean removeMedia(String mrl) + { + int index = items.indexOf(mrl); + if (index == -1) + { + return false; + } + return removeMedia(index); } public void insertMediaDescriptor(MediaDescriptor descriptor, int index) @@ -112,4 +146,18 @@ public class MediaList return instance; } + /** + * @param mediaDescriptor + */ + public boolean removeMedia(MediaDescriptor mediaDescriptor) + { + String mrl = mediaDescriptor.getMrl(); + int index = items.indexOf(mrl); + if (index == -1) + { + return false; + } + return removeMedia(index); + } + }