libsaria: Add ids to queue visible set

When adding songs to the queue, we also need to add the ids to the
visible set if they are visible.  Without this step, we won't have an
easy way of knowing how many IDs are visible.
This commit is contained in:
Bryan Schumaker 2011-05-23 09:18:30 -04:00
parent d7ba67ee38
commit c4629024a6
3 changed files with 15 additions and 23 deletions

View File

@ -48,6 +48,7 @@ def get_attrs(*attrs):
def filter(text):
visible = library.filter(text)
playlist.set_visible(visible)
queue.set_visible(visible)
callbacks.refilter()
def is_visible(id):

View File

@ -1,40 +1,32 @@
# Bryan Schumaker (12/12/2010)
import libsaria
from libsaria.sources import oldlibrary
from libsaria import callbacks
import queue
filtered = False
visible = None
visible = set()
# Function pointers for convenience
add_ids = queue.add_ids
rm_ids = queue.rm_ids
reset = queue.reset
rm_ids = queue.rm_ids
reset = queue.reset
def list_ids():
for id in queue.queue_list:
yield id
def filter(text):
global visible, filtered
if len(text) > 0:
song_set = queue.as_set()
visible = song_set.intersection(oldlibrary.test_filter(text))
filtered = True
else:
visible = None
filtered = False
def add_ids(id_list):
queue.add_ids(id_list)
for id in id_list:
if libsaria.sources.is_visible(id):
visible.add(id)
callbacks.queue_changed()
def is_visible(id):
if filtered == True:
return id in visible
return True
def set_visible(vset):
global visible
visible = queue.as_set().intersection(vset)
def num_visible():
if filtered == True:
return len(visible)
return len(queue.queue_list)
return len(visible)
def next():
return queue.pop()

View File

@ -13,7 +13,6 @@ def add_ids(id_list):
lock_queue()
queue_list.extend(id_list)
unlock_queue()
callbacks.queue_changed()
def rm_ids(id_list):
lock_queue()