package DCOP::Amarok::Playlist; use 5.008001; use strict; use warnings; require DCOP::Amarok; our @ISA = qw(DCOP::Amarok); our $VERSION = '0.009'; =head1 NAME DCOP::Amarok::Playlist - Perl extension to speak to an amaroK player object via system's DCOP. =head1 SYNOPSIS use DCOP::Amarok::Playlist; $playlist = DCOP::Amarok::Playlist->new(); $playlist->togglePlaylist(); print $playlist->getActiveIndex(); =head1 DESCRIPTION This module is a quick hack to get an interface between perl and Kde's DCOP, since Kde3.4's perl bindings are disabled. This suite talks to 'dcop'. DCOP::Amarok::Playlist talks directly to the playlist object of amaroK. =head1 EXPORT None by default. =head1 METHODS =item new() Constructor. No arguments needed. If the program will be run remotely, the need for 'user => "myusername"' arises. =cut sub new() { my $proto = shift; my $class = ref( $proto ) || $proto; my %params = @_; my $self = $class->SUPER::new( %params, control => "playlist" ); bless( $self, $class ); return $self; } =item interfaces() Returns a list of the interfaces. =cut sub interfaces() { my $self = shift; return $self->run( "interfaces" ); } =item functions() Returns a list of the functions. =cut sub functions() { my $self = shift; return $self->run( "functions" ); } =item getActiveIndex() Returns the number of the active index. =cut sub getActiveIndex() { my $self = shift; return $self->run( "getActiveIndex" ); } =item getTotalTrackCount() Returns the total number of tracks in the playlist. =cut sub getTotalTrackCount() { my $self = shift; return $self->run( "getTotalTrackCount" ); } =item saveCurrentPlaylist() Makes the object save the present list. Returns the path. =cut sub saveCurrentPlaylist() { my $self = shift; return $self->run( "saveCurrentPlaylist" ); } =item addMedia($URL) Adds new media. =cut sub addMedia() { my $self = shift; while ( @_ ) { $self->run( "addMedia", "$_" ); } } =item addMediaList() Adds new media. =cut sub addMediaList() { my $self = shift; $self->run( "addMediaList", @_ ); } =item clearPlaylist() =cut sub clearPlaylist() { my $self = shift; $self->run( "clearPlaylist" ); } =item playByIndex($index) Plays the song in the $index position. =cut sub playByIndex() { my $self = shift; my $index = shift; $self->run( "playByIndex", "$index" ); } =item playMedia($uri) Play a specific object. =cut sub playMedia() { my $self = shift; my $url = shift; $self->run( "playMedia", "$url" ); } =item popupMessage($msg) Pops up $msg in screen. TODO: $msg has to escape white spaces with '\'. e.g. "Hi\\\ there"; e.g2. 'I\ am\ here' =cut sub popupMessage() { my $self = shift; my $msg = shift; $self->run( "popupMessage", "$msg" ); } =item removeCurrentTrack() Removes current track from playlist =cut sub removeCurrentTrack() { my $self = shift; $self->run( "removeCurrentTrack" ); } =item repopulate() Repopulate playlist. =cut sub repopulate() { my $self = shift; $self->run( "repopulate" ); } =item saveM3uRelative($path) Saves the M3U file with a relavtive path. =cut sub saveM3uRelative() { my $self = shift; my $path = shift; $self->run( "saveM3u", "$path", "1" ); } =item saveM3uAbsolute($path) Saves the M3U file with an absolut path. =cut sub saveM3uAbsolute() { my $self = shift; my $path = shift; $self->run( "saveM3u", "$path", "0" ); } =item setStopAfterCurrent() Enable StopAfterCurrent track. =cut sub setStopAfterCurrent() { my $self = shift; $self->run( "setStopAfterCurrent", "1" ); } =item notStopAfterCurrent() Disable StopAfterCurrent track. =cut sub notStopAfterCurrent() { my $self = shift; $self->run( "setStopAfterCurrent", "0" ); } =item shortStatusMessage($msg) Display $msg in the status bar. =cut sub shortStatusMessage() { my $self = shift; my $msg = shift; $self->run( "shortStatusMessage", "$msg" ); } =item shufflePlaylist() Shuffle playlist. =cut sub shufflePlaylist() { my $self = shift; $self->run( "shufflePlaylist" ); } =item togglePlaylist() Show/Hide playlist. =cut sub togglePlaylist() { my $self = shift; $self->run( "togglePlaylist" ); } 1; __END__ =head1 AUTHOR Juan C. Muller, Ejcmuller@gmail.comE =head1 COPYRIGHT AND LICENSE Copyright 2005 by Juan C. Muller This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut