#!/usr/bin/perl

#      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2010
#
#  This file is part of RoarAudio PlayList Daemon,
#  a playlist management daemon for RoarAudio.
#  See README for details.
#
#  This file is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License version 3
#  as published by the Free Software Foundation.
#
#  RoarAudio is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this software; see the file COPYING.  If not, write to
#  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.

use strict;
use Audio::RPLD;

my $rpld = Audio::RPLD->new();
my $cur;
my $playing;

$rpld->connect_default();
$rpld->is_connected() or die;

$cur     = $rpld->showcur();
$playing = $rpld->showplaying();

$rpld->disconnect();

$playing->{'state'} ||= 'STOPPED';

print 'Playback state: ', ucfirst(lc($playing->{'state'})), ".\n";

exit(0) if $playing->{'state'} eq 'STOPPED';

timedisplay($playing, $cur);


exit(0);

sub timedisplay {
 my ($p, $c) = @_;
 my $barlen = 50;
 my $f = -1;
 my $bar;
 my $ptime;
 my $ltime = 'unknown ';
 local $_;

 if ( $cur->{'length'} ) {
  $ltime = time2lr($cur->{'length'});
  $f = $p->{'time'}->{'s'} / $cur->{'length'};
 }

 if ( $f < 0 ) {
  $bar  = ' <unknown> ';
  $bar .= ' ' x ($barlen - length($bar));
 } else {
  $bar  = '=' x ($f * ($barlen - 1));
  $bar .= '>';
  $bar .= ' ' x ($barlen - length($bar));
 }

 $ptime = time2lr($p->{'time'}->{'s'});

 printf("%s of %s [%s]\n", $ptime, $ltime, $bar);

 printf("num:0    = %s, %s\n", $p->{'longgtn'}, $p->{'shortgtn'});
 printf("UUID:      %s\n", $p->{'uuid'}) if $p->{'uuid'};
 printf("Signal:    %i channels of %i bits at %i Hz\n",
     $p->{'channels'}, $p->{'bits'}, $p->{'rate'});

 foreach (keys(%{$p->{'meta'}})) {
  printf("%-10s %s\n", ucfirst(lc($_)).':', $p->{'meta'}->{$_});
 }
}

sub time2lr {
 my ($s) = @_;
 my $m;
 my $h;

 $h = int($s / 3600);
 $s = $s % 3600;

 $m = int($s / 60);
 $s = $s % 60;

 return sprintf('%.2i:%.2i:%.2i', $h, $m, $s);
}

#ll
