X-Git-Url: http://git.code-monkey.de/?p=euphoria.git;a=blobdiff_plain;f=lib%2Fplaylist.rb;h=9406a5b52ccb7734167a2bf9e8a554aa7a2df58b;hp=6d22e6df44c9262bbc14f316a4888bf61ee49787;hb=HEAD;hpb=1e4752ea4801aec7b6ff6c2fe5b09c3be2227c92 diff --git a/lib/playlist.rb b/lib/playlist.rb index 6d22e6d..9406a5b 100644 --- a/lib/playlist.rb +++ b/lib/playlist.rb @@ -1,5 +1,3 @@ -# $Id: playlist.rb,v 1.30 2006/03/11 19:09:32 tsauerbeck Exp $ - require "euphoria/playlist_item" class Playlist < Array @@ -14,12 +12,14 @@ 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| @@ -31,15 +31,18 @@ class Playlist < Array 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 @@ -159,6 +162,7 @@ class Playlist < Array @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 } @@ -191,4 +195,15 @@ class Playlist < Array @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