-# $Id: playlist.rb,v 1.30 2006/03/11 19:09:32 tsauerbeck Exp $
-
require "euphoria/playlist_item"
class Playlist < Array
@eet = nil
@container = nil
- @xmms.playlist_list.notifier { |res| push(*res.value) }
+ query_contents
- begin
- @current_pos = @xmms.playlist_current_pos.wait.value
- rescue Xmms::Result::ValueError
- @current_pos = nil
+ @xmms.playlist.current_pos.notifier do |res|
+ begin
+ @current_pos = res.value
+ rescue Xmms::Result::ValueError
+ @current_pos = nil
+ end
end
@xmms.broadcast_playlist_current_pos.notifier do |res|
current_item.hilighted = true
end
+ @xmms.broadcast_playlist_loaded.
+ notifier(&method(:on_playlist_loaded))
+
@xmms.broadcast_playlist_changed.notifier do |res|
case res.value[:type]
- when Xmms::Result::PLAYLIST_CHANGED_ADD
+ when Xmms::Playlist::ADD
self << res.value[:id]
- when Xmms::Result::PLAYLIST_CHANGED_REMOVE
+ when Xmms::Playlist::REMOVE
# the daemon sends the position of the song, not the
# unique mlib id
delete(self[res.value[:position]])
- when Xmms::Result::PLAYLIST_CHANGED_CLEAR
+ when Xmms::Playlist::CLEAR
clear
end
end
@ee = Ecore::Evas::SoftwareX11.new
@ee.title = "Euphoria Playlist"
@ee.borderless = true
+ @ee.evas.font_hinting = Evas::Evas::AUTO
@ee.on_pre_render { Edje::thaw }
@ee.on_post_render { Edje::freeze }
@ee.shaped = !@edje.data("shaped").nil?
end
+
+ def query_contents
+ @xmms.playlist.entries.notifier do |res|
+ push(*res.value)
+ end
+ end
+
+ def on_playlist_loaded(res)
+ clear
+ query_contents
+ end
end