[Slim-Checkins] r8851 - in /branches/BRANCH_SN_API/server: ./
Slim/Buttons/ Slim/Display/ Slim/Player/ Slim/Web/
andy at svn.slimdevices.com
andy at svn.slimdevices.com
Mon Aug 7 14:14:13 PDT 2006
Author: andy
Date: Mon Aug 7 14:14:07 2006
New Revision: 8851
URL: http://svn.slimdevices.com?rev=8851&view=rev
Log:
Merge from trunk -r8848:8849
Modified:
branches/BRANCH_SN_API/server/Slim/Buttons/Common.pm
branches/BRANCH_SN_API/server/Slim/Buttons/Playlist.pm
branches/BRANCH_SN_API/server/Slim/Buttons/ScreenSaver.pm
branches/BRANCH_SN_API/server/Slim/Buttons/Search.pm
branches/BRANCH_SN_API/server/Slim/Display/Display.pm
branches/BRANCH_SN_API/server/Slim/Display/NoDisplay.pm
branches/BRANCH_SN_API/server/Slim/Display/Transporter.pm
branches/BRANCH_SN_API/server/Slim/Player/Client.pm
branches/BRANCH_SN_API/server/Slim/Player/Player.pm
branches/BRANCH_SN_API/server/Slim/Web/Setup.pm
branches/BRANCH_SN_API/server/strings.txt
Modified: branches/BRANCH_SN_API/server/Slim/Buttons/Common.pm
URL: http://svn.slimdevices.com/branches/BRANCH_SN_API/server/Slim/Buttons/Common.pm?rev=8851&r1=8850&r2=8851&view=diff
==============================================================================
--- branches/BRANCH_SN_API/server/Slim/Buttons/Common.pm (original)
+++ branches/BRANCH_SN_API/server/Slim/Buttons/Common.pm Mon Aug 7 14:14:07 2006
@@ -135,7 +135,7 @@
return;
}
$client->execute(["playlist", "jump", "+1"]);
- $client->showBriefly($client->currentSongLines());
+ $client->showBriefly($client->currentSongLines()) unless suppressStatus($client);
},
'rew' => sub {
my $client = shift;
@@ -157,7 +157,7 @@
$client->execute(["playlist", "jump", "+0", $noplay]);
}
- $client->showBriefly($client->currentSongLines());
+ $client->showBriefly($client->currentSongLines()) unless suppressStatus($client);
},
'jump' => sub {
@@ -205,7 +205,7 @@
$client->execute(["playlist", "jump", "+0", $noplay]);
}
- $client->showBriefly($client->currentSongLines());
+ $client->showBriefly($client->currentSongLines()) unless suppressStatus($client);
},
'jumpinsong' => sub {
my ($client,$funct,$functarg) = @_;
@@ -259,7 +259,7 @@
# if (Slim::Player::Source::playmode($client) eq 'play' && Slim::Player::Source::rate($client) != 1) {
# Slim::Player::Source::rate($client,1);
# }
- $client->showBriefly($client->currentSongLines());
+ $client->showBriefly($client->currentSongLines()) unless suppressStatus($client);
},
'stop' => sub {
my $client = shift;
@@ -417,21 +417,39 @@
my $client = shift;
my $button = shift;
my $buttonarg = shift;
-
- my $vm = $client->prefGet('visuMode');
-
- unless (defined $vm) { $vm = 1; };
+
+ my $visModes = $client->prefGetArrayMax('visualModes') + 1;
+ my $vm = $client->prefGet('visualMode');
+
+ if (!defined $vm || $vm > $visModes) { $vm = 0; };
+
unless (defined $buttonarg) { $buttonarg = 'toggle'; };
if ($button eq 'visual_toggle') {
- $vm = ($vm + 1) % $client->display->visualizerModes();
+ $vm = ($vm + 1) % $visModes;
} else {
- if ($buttonarg && $buttonarg < $client->display->visualizerModes()) {
+ if (defined $buttonarg && $buttonarg < $visModes) {
$vm = $buttonarg;
}
}
- $client->prefSet('visuMode', $vm);
+ $client->prefSet('visualMode', $vm);
+
+ my $screen2 = $client->param('screen2');
+
+ if ($client->display->showExtendedText()) {
+ if (!$screen2) {
+ $client->param('screen2', 'periodic');
+ startPeriodicUpdates($client);
+ }
+ } else {
+ if ($screen2) {
+ if ($screen2 eq 'periodic') {
+ $client->modeParam('screen2', undef);
+ }
+ $client->update( { 'screen2' => {} } );
+ }
+ }
$client->update();
},
@@ -1170,6 +1188,10 @@
msg("Couldn't push into new mode: [$setmode] !: $@\n");
}
+ if ($client->display->showExtendedText() && !$client->param('screen2')) {
+ $client->param('screen2', 'periodic');
+ }
+
# some modes require periodic updates
startPeriodicUpdates($client);
@@ -1178,10 +1200,13 @@
sub popMode {
my $client = shift;
+
if (scalar(@{$client->modeStack}) < 1) {
$client->updateKnob(1);
return undef;
}
+
+ my $oldscreen2 = $client->param('screen2');
my $oldMode = mode($client);
@@ -1206,9 +1231,26 @@
$::d_ui && msg("popped to button mode: " . (mode($client) || 'empty!') . "\n");
- $client->updateKnob(1);
+ if ($client->display->hasScreen2) {
+
+ my $suppressScreen2Update = shift;
+
+ if ($client->display->showExtendedText()) {
+ $client->param('screen2', 'periodic') unless ($client->param('screen2'));
+
+ } elsif ($client->param('screen2') eq 'periodic') {
+ $client->modeParam('screen2', undef);
+ }
+
+ if (!$suppressScreen2Update && $oldscreen2 && !$client->param('screen2')) {
+ $client->update( { 'screen2' => {} } );
+ }
+ }
+
# some modes require periodic updates
startPeriodicUpdates($client);
+
+ $client->updateKnob(1);
return $oldMode
}
@@ -1227,25 +1269,87 @@
my $client = shift;
my $setmode = shift;
my $paramHashRef = shift;
-
- my $oldlines = $client->curLines();
-
- pushMode($client, $setmode, $paramHashRef);
-
- if (!$client->param('handledTransition')) {
- $client->pushLeft($oldlines, $client->curLines());
- $client->param('handledTransition',0);
+ my $display = $client->display();
+
+ my $oldlines = $display->curLines();
+
+ unless ($display->hasScreen2) {
+
+ pushMode($client, $setmode, $paramHashRef);
+
+ if (!$client->param('handledTransition')) {
+ $display->pushLeft($oldlines, $display->curLines());
+ $client->param('handledTransition',0);
+ }
+
+ } else {
+
+ my $oldscreen2 = $client->param('screen2');
+
+ pushMode($client, $setmode, $paramHashRef);
+
+ if (!$client->param('handledTransition')) {
+ $client->pushLeft($oldlines, pushpopScreen2($client, $oldscreen2));
+ $client->param('handledTransition',0);
+ }
}
}
sub popModeRight {
my $client = shift;
-
- my $oldlines = $client->curLines();
-
- Slim::Buttons::Common::popMode($client);
-
- $client->pushRight($oldlines, $client->curLines());
+ my $display = $client->display();
+
+ my $oldlines = $display->curLines();
+
+ unless ($display->hasScreen2) {
+
+ Slim::Buttons::Common::popMode($client);
+
+ $display->pushRight($oldlines, $display->curLines());
+
+ } else {
+
+ my $oldscreen2 = $client->param('screen2');
+
+ Slim::Buttons::Common::popMode($client, 1);
+
+ $display->pushRight($oldlines, pushpopScreen2($client, $oldscreen2));
+ }
+}
+
+sub pushpopScreen2 {
+ my $client = shift;
+ my $oldscreen2 = shift;
+
+ my $display = $client->display;
+
+ my $newlines = $display->curLines();
+
+ my $newscreen2 = $client->param('screen2');
+
+ if ($newscreen2 && $newscreen2 eq 'periodic' && $oldscreen2 ne 'periodic') {
+ my $linesfunc = $client->display->lines2periodic();
+ $newlines->{'screen2'} = &$linesfunc($client);
+
+ } elsif ($oldscreen2 && !$newscreen2) {
+ $newlines->{'screen2'} = {};
+ }
+
+ return $newlines;
+}
+
+sub suppressStatus {
+ my $client = shift;
+
+ return undef unless $client->display->hasScreen2();
+
+ my $screen2 = $client->param('screen2');
+
+ if ($screen2 && $screen2 eq 'periodic') {
+ return 1;
+ }
+
+ return undef;
}
sub dateTime {
@@ -1256,16 +1360,18 @@
};
}
-# if and only if the mode has set the modeUpdateInterval parameter,
-# call $client->update every modeUpdateInterval seconds.
sub startPeriodicUpdates {
my $client = shift;
+
# unset any previous timers
Slim::Utils::Timers::killTimers($client, \&_periodicUpdate);
+
my $interval = $client->param('modeUpdateInterval');
- return unless $interval;
-
- my $time = Time::HiRes::time() + $interval;
+ my $interval2 = ($client->param('screen2') eq 'periodic');
+
+ return unless ($interval || $interval2);
+
+ my $time = Time::HiRes::time() + ($interval || 0.05);
Slim::Utils::Timers::setTimer($client, $time, \&_periodicUpdate, $client);
$client->periodicUpdateTime($time);
}
@@ -1274,24 +1380,25 @@
sub syncPeriodicUpdates {
my $client = shift;
my $time = shift || Time::HiRes::time();
- # unset any previous timers
- Slim::Utils::Timers::killTimers($client, \&_periodicUpdate);
- my $interval = $client->param('modeUpdateInterval');
- return unless $interval;
-
- Slim::Utils::Timers::setTimer($client, $time, \&_periodicUpdate, $client);
- $client->periodicUpdateTime($time);
+
+ if (Slim::Utils::Timers::killTimers($client, \&_periodicUpdate)) {
+ Slim::Utils::Timers::setTimer($client, $time, \&_periodicUpdate, $client);
+ $client->periodicUpdateTime($time);
+ }
}
sub _periodicUpdate {
my $client = shift;
- my $interval = $client->param('modeUpdateInterval');
- # if interval is not set, we have left the mode that needed the update
- return unless $interval;
+ my $update = $client->param('modeUpdateInterval');
+ my $update2 = ($client->param('screen2') eq 'periodic');
+
+ # if params not set then no longer required
+ return unless ($update || $update2);
# schedule the next update time, skip if running late
my $time = $client->periodicUpdateTime();
my $timenow = Time::HiRes::time();
+ my $interval = $update || 1;
do {
$time += $interval;
@@ -1300,10 +1407,18 @@
Slim::Utils::Timers::setTimer($client, $time, \&_periodicUpdate, $client);
$client->periodicUpdateTime($time);
- # do the update if there's no block on updates
- $client->display->update() unless ($client->display->updateMode());
-}
-
+ unless ($client->display->updateMode()) {
+ # updates not blocked
+
+ if ($update) {
+ $client->display->update();
+ }
+
+ if ($update2 && !$client->display->animateState() && (my $linefunc = $client->display->lines2periodic()) ) {
+ $client->display->update({ 'screen2' => &$linefunc($client) });
+ }
+ }
+}
1;
Modified: branches/BRANCH_SN_API/server/Slim/Buttons/Playlist.pm
URL: http://svn.slimdevices.com/branches/BRANCH_SN_API/server/Slim/Buttons/Playlist.pm?rev=8851&r1=8850&r2=8851&view=diff
==============================================================================
--- branches/BRANCH_SN_API/server/Slim/Buttons/Playlist.pm (original)
+++ branches/BRANCH_SN_API/server/Slim/Buttons/Playlist.pm Mon Aug 7 14:14:07 2006
@@ -124,8 +124,13 @@
my $client = shift;
my $oldlines = $client->curLines();
Slim::Buttons::Home::jump($client, 'NOW_PLAYING');
- Slim::Buttons::Common::setMode($client, 'home');
- $client->pushRight($oldlines, $client->curLines());
+ while (Slim::Buttons::Common::popMode($client, 1)) {};
+ Slim::Buttons::Common::pushMode($client, 'home');
+ if ($client->display->showExtendedText()) {
+ $client->pushRight($oldlines, Slim::Buttons::Common::pushpopScreen2($client, 'playlist') );
+ } else {
+ $client->pushRight($oldlines, $client->curLines());
+ }
},
'right' => sub {
my $client = shift;
@@ -133,14 +138,10 @@
if ($playlistlen < 1) {
$client->bumpRight();
} else {
- my $oldlines = $client->curLines();
-
- Slim::Buttons::Common::pushMode($client, 'trackinfo', {
+ Slim::Buttons::Common::pushModeLeft($client, 'trackinfo', {
'track' => Slim::Player::Playlist::song($client, browseplaylistindex($client)),
'current' => browseplaylistindex($client) == Slim::Player::Source::playingSongIndex($client)
} );
-
- $client->pushLeft($oldlines, $client->curLines());
}
},
'numberScroll' => sub {
@@ -221,6 +222,7 @@
# update client every second in this mode
$client->param('modeUpdateInterval', 1); # seconds
+ $client->param('screen2', 'playlist'); # this mode can use screen2
}
sub jump {
@@ -252,32 +254,48 @@
sub lines {
my $client = shift;
- my ($line1, $line2);
+ my ($parts, $line1, $line2);
if (showingNowPlaying($client) || (Slim::Player::Playlist::count($client) < 1)) {
- return $client->currentSongLines();
- }
-
- if ( browseplaylistindex($client) + 1 > Slim::Player::Playlist::count($client)) {
- browseplaylistindex($client,Slim::Player::Playlist::count($client)-1)
- }
-
- $line1 = sprintf("%s (%d %s %d) ",
- $client->string('PLAYLIST'),
- browseplaylistindex($client) + 1,
- $client->string('OUT_OF'),
- Slim::Player::Playlist::count($client)
- );
-
- $line2 = Slim::Music::Info::standardTitle(
- $client,
- Slim::Player::Playlist::song($client, browseplaylistindex($client))
- );
-
- return {
- 'line' => [ $line1, $line2 ],
- 'overlay' => [ undef, $client->symbols('notesymbol') ]
- };
+
+ $parts = $client->currentSongLines();
+
+ } else {
+
+ if ( browseplaylistindex($client) + 1 > Slim::Player::Playlist::count($client)) {
+ browseplaylistindex($client,Slim::Player::Playlist::count($client)-1)
+ }
+
+ $line1 = sprintf("%s (%d %s %d) ",
+ $client->string('PLAYLIST'),
+ browseplaylistindex($client) + 1,
+ $client->string('OUT_OF'),
+ Slim::Player::Playlist::count($client)
+ );
+
+ $line2 = Slim::Music::Info::standardTitle(
+ $client,
+ Slim::Player::Playlist::song($client, browseplaylistindex($client))
+ );
+
+ $parts = {
+ 'line' => [ $line1, $line2 ],
+ 'overlay' => [ undef, $client->symbols('notesymbol') ],
+ };
+ }
+
+ if ($client->display->showExtendedText()) {
+ my $url = Slim::Player::Playlist::song($client, browseplaylistindex($client));
+
+ $parts->{'screen2'} ||= {
+ 'line' => [
+ Slim::Music::TitleFormatter::infoFormat($url, 'ALBUM'),
+ Slim::Music::TitleFormatter::infoFormat($url, 'ARTIST')
+ ],
+ };
+ }
+
+ return $parts;
}
sub showingNowPlaying {
Modified: branches/BRANCH_SN_API/server/Slim/Buttons/ScreenSaver.pm
URL: http://svn.slimdevices.com/branches/BRANCH_SN_API/server/Slim/Buttons/ScreenSaver.pm?rev=8851&r1=8850&r2=8851&view=diff
==============================================================================
--- branches/BRANCH_SN_API/server/Slim/Buttons/ScreenSaver.pm (original)
+++ branches/BRANCH_SN_API/server/Slim/Buttons/ScreenSaver.pm Mon Aug 7 14:14:07 2006
@@ -183,12 +183,13 @@
$client->lines(\&lines);
# update client every second in this mode
$client->param('modeUpdateInterval', 1); # seconds
+ $client->param('screen2', 'screensaver');
}
sub lines {
my $client = shift;
$::d_time && msg("getting screensaver lines");
- return $client->currentSongLines();
+ return Slim::Buttons::Playlist::lines($client);
}
1;
Modified: branches/BRANCH_SN_API/server/Slim/Buttons/Search.pm
URL: http://svn.slimdevices.com/branches/BRANCH_SN_API/server/Slim/Buttons/Search.pm?rev=8851&r1=8850&r2=8851&view=diff
==============================================================================
--- branches/BRANCH_SN_API/server/Slim/Buttons/Search.pm (original)
+++ branches/BRANCH_SN_API/server/Slim/Buttons/Search.pm Mon Aug 7 14:14:07 2006
@@ -101,7 +101,8 @@
my $oldlines = $client->curLines();
Slim::Buttons::Home::jump($client, 'SEARCH');
- Slim::Buttons::Common::setMode($client, 'home');
+ while (Slim::Buttons::Common::popMode($client, 1)) {};
+ Slim::Buttons::Common::pushMode($client, 'home');
$client->pushRight($oldlines, $client->curLines());
Modified: branches/BRANCH_SN_API/server/Slim/Display/Display.pm
URL: http://svn.slimdevices.com/branches/BRANCH_SN_API/server/Slim/Display/Display.pm?rev=8851&r1=8850&r2=8851&view=diff
==============================================================================
--- branches/BRANCH_SN_API/server/Slim/Display/Display.pm (original)
+++ branches/BRANCH_SN_API/server/Slim/Display/Display.pm Mon Aug 7 14:14:07 2006
@@ -66,6 +66,8 @@
$display->[7] = undef; # lastVisMode
$display->[8] = undef; # sbCallbackData
$display->[9] = undef; # sbOldDisplay
+ $display->[10]= undef; # lines function
+ $display->[11]= undef; # line2periodic [Transporter only]
$display->resetDisplay(); # init render cache
@@ -119,6 +121,14 @@
my $r = shift;
@_ ? ($r->[9] = shift) : $r->[9];
}
+sub lines {
+ my $r = shift;
+ @_ ? ($r->[10] = shift) : $r->[10];
+}
+sub lines2periodic {
+ my $r = shift;
+ @_ ? ($r->[11] = shift) : $r->[11];
+}
################################################################################################
@@ -143,7 +153,7 @@
if (defined($lines)) {
$parts = $display->parseLines($lines);
} else {
- my $linefunc = $client->lines();
+ my $linefunc = $display->lines();
$parts = $display->parseLines(&$linefunc($client));
}
@@ -385,7 +395,7 @@
return undef;
}
- my $linefunc = $client->lines();
+ my $linefunc = $display->lines();
if (defined $linefunc) {
return $display->parseLines(&$linefunc($client));
@@ -668,9 +678,6 @@
}
}
-sub resetDisplay {}
-sub killAnimation {}
-
sub endAnimation {
# called after after an animation to redisplay current screen and initiate scrolling
my $display = shift;
@@ -682,8 +689,14 @@
$display->update($screen);
}
+sub resetDisplay {}
+sub killAnimation {}
sub fonts {}
sub displayHeight {}
+sub showExtendedText {}
+sub modes() { [] }
+sub nmodes() { 0 }
+sub hasScreen2 { 0 }
sub forgetDisplay {
my $display = shift;
Modified: branches/BRANCH_SN_API/server/Slim/Display/NoDisplay.pm
URL: http://svn.slimdevices.com/branches/BRANCH_SN_API/server/Slim/Display/NoDisplay.pm?rev=8851&r1=8850&r2=8851&view=diff
==============================================================================
--- branches/BRANCH_SN_API/server/Slim/Display/NoDisplay.pm (original)
+++ branches/BRANCH_SN_API/server/Slim/Display/NoDisplay.pm Mon Aug 7 14:14:07 2006
@@ -34,8 +34,6 @@
sub killAnimation {}
sub resetDisplay {}
sub endAnimation {}
-sub modes() { [] }
-sub nmodes() { 0 }
1;
Modified: branches/BRANCH_SN_API/server/Slim/Display/Transporter.pm
URL: http://svn.slimdevices.com/branches/BRANCH_SN_API/server/Slim/Display/Transporter.pm?rev=8851&r1=8850&r2=8851&view=diff
==============================================================================
--- branches/BRANCH_SN_API/server/Slim/Display/Transporter.pm (original)
+++ branches/BRANCH_SN_API/server/Slim/Display/Transporter.pm Mon Aug 7 14:14:07 2006
@@ -27,7 +27,8 @@
'idleBrightness' => 2,
'playingDisplayMode' => 0,
'playingDisplayModes' => [0..5],
- 'visuMode' => 0,
+ 'visualMode' => 0,
+ 'visualModes' => [0..5],
};
# Display modes for Transporter:
@@ -89,22 +90,61 @@
# Right channel parameters (not required for mono):
# 11-18 - same as left channel parameters
-my $VISUALIZER_NONE = 0;
-my $VISUALIZER_VUMETER = 1;
-my $VISUALIZER_SPECTRUM_ANALYZER = 2;
-my $VISUALIZER_WAVEFORM = 3;
+use constant VISUALIZER_NONE => 0;
+use constant VISUALIZER_VUMETER => 1;
+use constant VISUALIZER_SPECTRUM_ANALYZER => 2;
+use constant VISUALIZER_WAVEFORM => 3;
my @visualizers = (
- [$VISUALIZER_NONE],
- [$VISUALIZER_SPECTRUM_ANALYZER, 0, 0, 0x10000, 0 + 320, 160, 0, 4, 1, 1, 1, 3, 160 + 320, 160, 1, 4, 1, 1, 1, 3],
- [$VISUALIZER_VUMETER, 0, 1, 0 + 320, 160, 160 + 320, 160],
- [$VISUALIZER_VUMETER, 0, 0, 20 + 320, 130, 170 + 320, 130]
+ { desc => ['BLANK'],
+ params => [VISUALIZER_NONE],
+ },
+ { desc => ['VISUALIZER_EXTENDED_TEXT'],
+ text => 1,
+ params => [VISUALIZER_NONE],
+ },
+ { desc => ['VISUALIZER_VUMETER_AN'],
+ params => [VISUALIZER_VUMETER, 0, 1, 0 + 320, 160, 160 + 320, 160],
+ },
+ { desc => ['VISUALIZER_VUMETER_DIG'],
+ params => [VISUALIZER_VUMETER, 0, 0, 20 + 320, 130, 170 + 320, 130],
+ },
+ { desc => ['VISUALIZER_SPECTRUM_ANALYZER'],
+ params => [VISUALIZER_SPECTRUM_ANALYZER, 0, 0, 0x10000, 0 + 320, 160, 0, 4, 1, 1, 1, 3, 160 + 320, 160, 1, 4, 1, 1, 1, 3],
+ },
+ { desc => ['VISUALIZER_SPECTRUM_ANALYZER', 'AND', 'VISUALIZER_EXTENDED_TEXT'],
+ text => 1,
+ params => [VISUALIZER_SPECTRUM_ANALYZER, 0, 0, 0x10000, 0 + 320, 160, 0, 4, 1, 1, 1, 3, 160 + 320, 160, 1, 4, 1, 1, 1, 3],
+ },
);
+
+my $nvisualizers = $#visualizers;
+
+sub modes {
+ return \@modes;
+}
+
+sub nmodes {
+ return $nmodes;
+}
+
+sub visualizerModes {
+ return \@visualizers;
+}
+
+sub visualizerNModes {
+ return $nvisualizers;
+}
+
+sub hasScreen2 { 1 }
sub init {
my $display = shift;
Slim::Utils::Prefs::initClientPrefs($display->client, $defaultPrefs);
$display->SUPER::init();
+
+ # register default handler for periodic screen2 updates on visual screen
+ $display->lines2periodic(\&Slim::Player::Player::currentSongLines);
}
sub resetDisplay {
@@ -188,14 +228,14 @@
my $param1 = shift || 0;
my $param2 = shift || 0;
- if ($render->{screen1}->{present} && $render->{screen2}->{present}) {
+ if ($render->{screen1}->{changed} && $render->{screen2}->{changed}) {
# animate both screens
my $twoScreen = ${$render->{screen1}->{bitsref}} . ${$render->{screen2}->{bitsref}};
$display->killAnimation(undef, 1);
$display->killAnimation(undef, 2);
$display->drawFrameBuf(\$twoScreen, 0, $trans, $param1);
- } elsif ($render->{screen2}->{present}) {
+ } elsif ($render->{screen2}->{changed}) {
# animate screen 2 only
$display->killAnimation(undef, 2);
$display->drawFrameBuf($render->{screen2}->{bitsref}, 640, $trans, $param2);
@@ -210,66 +250,40 @@
$display->updateMode(1);
}
-sub modes {
- return \@modes;
-}
-
-sub nmodes {
- return $nmodes;
-}
-
-# Transporter visualizer stuff - moved here, but would like to tidy up
-
-# Moved to here as rest of visu code is here, but not used yet - embed in visualizer array?
-#sub visualizerOptions {
-# my $client = shift;
-# my %options = (
-# '0' => $client->string('NONE'),
-# '1' => $client->string('PLUGIN_SCREENSAVER_VISUALIZER_SPECTRUM_ANALYZER'),
-# '2' => $client->string('PLUGIN_SCREENSAVER_VISUALIZER_ANALOG_VUMETER') ,
-# '3' => $client->string('PLUGIN_SCREENSAVER_VISUALIZER_DIGITAL_VUMETER') ,
-# );
-#
-# return \%options;
-#}
-
-# This could be removed if visualizer options are handled the same way as modes
-sub visualizerModes {
- return scalar(@visualizers);
-}
-
sub visualizerParams {
my $display = shift;
my $client = $display->client;
- my $visu = $client->prefGet('visuMode');
+ my $visu = $client->prefGet('visualModes', $client->prefGet('visualMode')) || 0;
$visu = 0 if (!$display->showVisualizer());
- if (!defined $visu || $visu < 0) {
- $visu = 0;
- }
+ return $visualizers[$visu]{params};
+}
+
+sub visualizer {
+ my $display = shift;
+ my $forceSend = shift;
+
+ $display->SUPER::visualizer($forceSend);
+}
+
+sub showVisualizer {
+ my $display = shift;
+
+ return $display->client->power();
+}
+
+sub showExtendedText {
+ my $display = shift;
+ my $client = $display->client;
+
+ return 1 if ($client->param('visu'));
+ return 0 if (!$client->power());
+
+ my $visu = $client->prefGet('visualModes', $client->prefGet('visualMode')) || 0;
- my $nmodes = $display->visualizerModes();
-
- if ($visu >= $nmodes) {
- $visu = $nmodes - 1;
- }
-
- return $visualizers[$visu];
-}
-
-sub visualizer {
- my $display = shift;
- my $forceSend = shift;
-
- $display->SUPER::visualizer($forceSend);
-}
-
-sub showVisualizer {
- my $display = shift;
-
- return $display->client->power();
+ return $visualizers[$visu]{text};
}
1;
Modified: branches/BRANCH_SN_API/server/Slim/Player/Client.pm
URL: http://svn.slimdevices.com/branches/BRANCH_SN_API/server/Slim/Player/Client.pm?rev=8851&r1=8850&r2=8851&view=diff
==============================================================================
--- branches/BRANCH_SN_API/server/Slim/Player/Client.pm (original)
+++ branches/BRANCH_SN_API/server/Slim/Player/Client.pm Mon Aug 7 14:14:07 2006
@@ -685,7 +685,7 @@
$client->[54] = undef; # epochirtime
$client->[55] = []; # modeStack
$client->[56] = []; # modeParameterStack
- $client->[57] = undef; # lines
+ $client->[57] = undef; #unused
$client->[58] = []; # trackInfoLines
$client->[59] = []; # trackInfoContent
$client->[60] = {}; # lastID3Selection
@@ -1179,6 +1179,7 @@
sub symbols{}
sub unblock{}
sub updateKnob{}
+sub lines {}
sub pause {
my $client = shift;
@@ -1740,10 +1741,6 @@
@_ ? ($i = shift) : return $r->[56];
@_ ? ($r->[56]->[$i] = shift) : $r->[56]->[$i];
}
-sub lines {
- my $r = shift;
- @_ ? ($r->[57] = shift) : $r->[57];
-}
sub trackInfoLines {
my $r = shift;
my $i;
Modified: branches/BRANCH_SN_API/server/Slim/Player/Player.pm
URL: http://svn.slimdevices.com/branches/BRANCH_SN_API/server/Slim/Player/Player.pm?rev=8851&r1=8850&r2=8851&view=diff
==============================================================================
--- branches/BRANCH_SN_API/server/Slim/Player/Player.pm (original)
+++ branches/BRANCH_SN_API/server/Slim/Player/Player.pm Mon Aug 7 14:14:07 2006
@@ -292,6 +292,7 @@
sub balanceBar { shift->display->balanceBar(@_); }
sub fonts { shift->display->fonts(@_); }
sub displayHeight { shift->display->displayHeight(@_); }
+sub lines { shift->display->lines(@_); }
sub updateMode { shift->display->updateMode(@_); }
sub animateState{ shift->display->animateState(@_); }
Modified: branches/BRANCH_SN_API/server/Slim/Web/Setup.pm
URL: http://svn.slimdevices.com/branches/BRANCH_SN_API/server/Slim/Web/Setup.pm?rev=8851&r1=8850&r2=8851&view=diff
==============================================================================
--- branches/BRANCH_SN_API/server/Slim/Web/Setup.pm (original)
+++ branches/BRANCH_SN_API/server/Slim/Web/Setup.pm Mon Aug 7 14:14:07 2006
@@ -123,6 +123,9 @@
if ($client->isPlayer()) {
$pageref->{'GroupOrder'} = ['Default','TitleFormats','Display'];
+ if ($client->display->isa('Slim::Display::Transporter')) {
+ push @{$pageref->{'GroupOrder'}}, 'Visual';
+ }
if (scalar(keys %{Slim::Buttons::Common::hash_of_savers()}) > 0) {
push @{$pageref->{'GroupOrder'}}, 'ScreenSaver';
}
@@ -180,6 +183,20 @@
,'GroupLine' => 1
,'GroupSub' => 1
}
+ ,'Visual' => {
+ 'PrefOrder' => ['visualModes']
+ ,'PrefsInTable' => 1
+ ,'Suppress_PrefHead' => 1
+ ,'Suppress_PrefDesc' => 1
+ ,'Suppress_PrefLine' => 1
+ ,'Suppress_PrefSub' => 1
+ ,'GroupHead' => 'SETUP_VISUALIZERMODE'
+ ,'GroupDesc' => 'SETUP_VISUALIZERMODE_DESC'
+ ,'GroupPrefHead' => '<tr><th>' . string('SETUP_CURRENT') .
+ '</th><th></th><th>' . string('DISPLAY_SETTINGS') . '</th><th></th></tr>'
+ ,'GroupLine' => 1
+ ,'GroupSub' => 1
+ }
,'ScreenSaver' => {
'PrefOrder' => ['screensaver','idlesaver','offsaver','screensavertimeout']
,'Suppress_PrefHead' => 1
@@ -217,6 +234,23 @@
,'validateArgs' => [\&getPlayingDisplayModes,1]
,'validateAddClient' => 1
,'options' => \&getPlayingDisplayModes
+ ,'optionSort' => 'NK'
+ }
+ ,'visualMode' => {
+ 'validate' => \&Slim::Utils::Validate::isInt
+ }
+ ,'visualModes' => {
+ 'isArray' => 1
+ ,'arrayAddExtra' => 1
+ ,'arrayDeleteNull' => 1
+ ,'arrayDeleteValue' => -1
+ ,'arrayBasicValue' => 0
+ ,'arrayCurrentPref' => 'visualMode'
+ ,'inputTemplate' => 'setup_input_array_sel.html'
+ ,'validate' => \&Slim::Utils::Validate::inHash
+ ,'validateArgs' => [\&getVisualModes,1]
+ ,'validateAddClient' => 1
+ ,'options' => \&getVisualModes
,'optionSort' => 'NK'
}
,'titleFormat' => {
@@ -2158,6 +2192,24 @@
return $displayHash;
}
+sub getVisualModes {
+ my $client = shift;
+
+ return {} unless (defined $client && $client->display->isa('Slim::Display::Transporter'));
+
+ my $displayHash = { '-1' => ' ' };
+ my $modes = $client->display->visualizerModes();
+
+ foreach my $i (0..$client->display->visualizerNModes()) {
+ my $desc = $modes->[$i]{'desc'};
+ foreach my $j (0..$#{$desc}){
+ $displayHash->{"$i"} .= ' ' if ($j > 0);
+ $displayHash->{"$i"} .= string(@{$desc}[$j]);
+ }
+ }
+ return $displayHash;
+}
+
sub getFontOptions {
my $client = shift;
Modified: branches/BRANCH_SN_API/server/strings.txt
URL: http://svn.slimdevices.com/branches/BRANCH_SN_API/server/strings.txt?rev=8851&r1=8850&r2=8851&view=diff
==============================================================================
--- branches/BRANCH_SN_API/server/strings.txt (original)
+++ branches/BRANCH_SN_API/server/strings.txt Mon Aug 7 14:14:07 2006
@@ -12322,3 +12322,18 @@
DIGITAL_INPUT_OPTICAL_SPDIF
EN Optical S/PDIF
+
+VISUALIZER_EXTENDED_TEXT
+ EN Extended Text Display
+
+VISUALIZER_VUMETER_AN
+ EN Analogue VU Meter
+
+VISUALIZER_VUMETER_DIG
+ EN Digital VU Meter
+
+SETUP_VISUALIZERMODE
+ EN Visualizer Screen
+
+SETUP_VISUALIZERMODE_DESC
+ EN The player can display visualizers or extended text information on the right hand screen. Choose which you wish to be displayed. The Visual button on the player will cycle through each of the options selected below.
More information about the checkins
mailing list