# Bryan Schumaker (4 / 20 / 2011)

import gtk
import gobject

import libsaria
import queue
from ocarina import body
from ocarina import settings
from ocarina.body import footer
from libsaria import callbacks
import playlist
import library

def on_play():
	footer.on_play()
callbacks.on_play = on_play

def on_pause():
	footer.on_pause()
callbacks.on_pause = on_pause

def on_load(file, attrs):
	footer.on_load(attrs)
	queue.refresh()
	body.cur_page_goto()
callbacks.on_load = on_load

def on_like(like):
	footer.on_like(like)
callbacks.on_like = on_like


# A bit of a hack to force setting album art in the main thread
# Basically, I create a new signal and trigger it when new album
# art arrives
gobject.signal_new("get_art", gobject.GObject, gobject.SIGNAL_RUN_LAST,
		   gobject.TYPE_NONE,
		   (gobject.TYPE_INT, gobject.TYPE_STRING))

def on_get_art_helper(obj, id, path):
	if id == libsaria.sources.get_cur_id():
		footer.set_art(path)

on_get_art_obj = gobject.GObject()
on_get_art_obj.connect("get_art", on_get_art_helper)

def on_get_art(path, id):
	on_get_art_obj.emit("get_art", id, path)
callbacks.on_get_art = on_get_art

def on_load_playlist():
	playlist.refresh()
callbacks.on_load_playlist = on_load_playlist

def library_updated():
	library.refresh()
	settings.library.refresh()
callbacks.on_library_updated = library_updated

def on_queue_changed():
	queue.refresh()
callbacks.on_queue_changed = on_queue_changed

def on_refilter():
	queue.refilter()
	playlist.refilter()
	library.refilter()
callbacks.on_refilter = on_refilter
