Index: Plugins/Visualizer.pm =================================================================== --- Plugins/Visualizer.pm (revision 4234) +++ Plugins/Visualizer.pm (working copy) @@ -14,6 +14,7 @@ package Plugins::Visualizer; use Slim::Player::Squeezebox2; +use Slim::Utils::Strings qw(string); use vars qw($VERSION); $VERSION = substr(q$Revision: 1.0 $,10); @@ -102,6 +103,27 @@ EN Default screenaver ES Salvapantallas por defecto +PLUGIN_SCREENSAVER_VISUALIZER_SHOWTEXT_PLAYBACK + EN Show text during playback + +PLUGIN_SCREENSAVER_VISUALIZER_SHOWTEXT_TRANSITION + EN Show text on transitions + +PLUGIN_SCREENSAVER_VISUALIZER_NOTEXT_PLAYBACK + EN No text during playback + +PLUGIN_SCREENSAVER_VISUALIZER_NOTEXT_TRANSITION + EN No text on transitions + +PLUGIN_SCREENSAVER_VISUALIZER_SHOWTEXT + EN Visualizer Screensaver Show Text + +PLUGIN_SCREENSAVER_VISUALIZER_SHOWTEXT_CHANGED + EN Visualizer settings changed: + +PLUGIN_SCREENSAVER_VISUALIZER_SHOWTEXT_DESC + EN You may choose to show or hide the now playing information that is displayed periodicly during playback, or the next song info that is displayed in teh transition between songs. + '}; ################################################## @@ -331,6 +353,99 @@ $client); } +sub setupGroup { + my $client = shift; + my %setupGroup = ( + 'PrefOrder' => + ['plugin_screensaver_visualizer_showtext_playback','plugin_screensaver_visualizer_showtext_transition'] + ,'PrefsInTable' => 1 + ,'Suppress_PrefHead' => 1 + ,'Suppress_PrefDesc' => 1 + ,'Suppress_PrefLine' => 1 + ,'Suppress_PrefSub' => 1 + ,'GroupHead' => string('PLUGIN_SCREENSAVER_VISUALIZER_SHOWTEXT') + ,'GroupDesc' => string('PLUGIN_SCREENSAVER_VISUALIZER_SHOWTEXT_DESC') + ,'GroupLine' => 1 + ,'GroupSub' => 1 + ); + my %setupPrefs = ( + 'plugin_screensaver_visualizer_showtext_playback' => { + 'isArray' => 1 + ,'validate' => \&Slim::Web::Setup::validateTrueFalse + ,'inputTemplate' => 'setup_input_array_chk.html' + ,'currentValue' => sub { + my ($client, $key, $ind) = @_; + return $client->prefIsDefined($key,$ind) ? + $client->prefGet($key,$ind) : + $screensaver_info{$visualizer_screensavers[$ind]}{showtext}; + } + ,'onChange' => sub { + my ($client,$changeref,$paramref,$pageref) = @_; + for my $key (keys %{$changeref}) { + if ($key =~ /plugin_screensaver_visualizer_showtext_playback(\d+)$/) { + $client->prefGet($key,$changeref->{$key}{'new'},$ind); + $screensaver_info{$visualizer_screensavers[$ind]}{showtext} = $changeref->{$key}{'new'}; + } + } + } + ,'changeIntro' => string('PLUGIN_SCREENSAVER_VISUALIZER_SHOWTEXT_CHANGED') + ,'arrayMax' => 2 #set in preEval + ,'externalValue' => sub { + my ($client,$value,$key,$ind) = @_; + if (ref $value && !$value->{'new'}) { + return string($screensaver_info{$visualizer_screensavers[$1]}{name}).string('COLON')." ".string('PLUGIN_SCREENSAVER_VISUALIZER_NOTEXT_PLAYBACK'); + } + if ($key =~ /\D+(\d+)$/) { + return string($screensaver_info{$visualizer_screensavers[$1]}{name}).string('COLON')." ".string('PLUGIN_SCREENSAVER_VISUALIZER_SHOWTEXT_PLAYBACK'); + } + } + }, + 'plugin_screensaver_visualizer_showtext_transition' => { + 'isArray' => 1 + ,'validate' => \&Slim::Web::Setup::validateTrueFalse + ,'inputTemplate' => 'setup_input_array_chk.html' + ,'currentValue' => sub { + my ($client, $key, $ind) = @_; + return $client->prefIsDefined($key,$ind) ? + $client->prefGet($key,$ind) : + $screensaver_info{$visualizer_screensavers[$ind]}{showtext}; + } + ,'onChange' => sub { + my ($client,$changeref,$paramref,$pageref) = @_; + for my $key (keys %{$changeref}) { + if ($key =~ /plugin_screensaver_visualizer_showtext_playback(\d+)$/) { + $client->prefGet($key,$changeref->{$key}{'new'},$ind); + $screensaver_info{$visualizer_screensavers[$ind]}{showtext} = $changeref->{$key}{'new'}; + } + } + } + ,'changeIntro' => string('PLUGIN_SCREENSAVER_VISUALIZER_SHOWTEXT_CHANGED') + ,'arrayMax' => 2 #set in preEval + ,'externalValue' => sub { + my ($client,$value,$key,$ind) = @_; + if (ref $value && !$value->{'new'}) { + return string($screensaver_info{$visualizer_screensavers[$1]}{name}).string('COLON')." ".string('PLUGIN_SCREENSAVER_VISUALIZER_NOTEXT_PLAYBACK'); + } + if ($key =~ /\D+(\d+)$/) { + return string($screensaver_info{$visualizer_screensavers[$1]}{name}).string('COLON')." ".string('PLUGIN_SCREENSAVER_VISUALIZER_SHOWTEXT_PLAYBACK'); + } + } + }, + ); + return (\%setupGroup,\%setupPrefs,1); +} + +sub checkDefaults { + for my $client (Slim::Player::Client::clients()) { + if (!$client->prefIsDefined('plugin_screensaver_visualizer_showtext_playback')) { + $client->prefSet('plugin_screensaver_visualizer_showtext_playback',[1,0,0]) + } + if (!$client->prefIsDefined('plugin_screensaver_visualizer_showtext_transition')) { + $client->prefSet('plugin_screensaver_visualizer_showtext_transition',[1,0,0]) + } + } +} + 1; __END__