[Slim-Checkins] r9202 - in /trunk/server/Slim: Buttons/Input/Bar.pm Buttons/Volume.pm Player/Client.pm Player/Player.pm Player/Transporter.pm

adrian at svn.slimdevices.com adrian at svn.slimdevices.com
Mon Aug 28 09:02:25 PDT 2006


Author: adrian
Date: Mon Aug 28 09:02:21 2006
New Revision: 9202

URL: http://svn.slimdevices.com?rev=9202&view=rev
Log:
Bug: N/A
Description: Volume updates:
- dB scale only used for Tranporter and SS Tranporter skin
- add hook for custom volume lines, register with: $client->customVolumeLines()
- move Input.Bar to return new display hash

Modified:
    trunk/server/Slim/Buttons/Input/Bar.pm
    trunk/server/Slim/Buttons/Volume.pm
    trunk/server/Slim/Player/Client.pm
    trunk/server/Slim/Player/Player.pm
    trunk/server/Slim/Player/Transporter.pm

Modified: trunk/server/Slim/Buttons/Input/Bar.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Buttons/Input/Bar.pm?rev=9202&r1=9201&r2=9202&view=diff
==============================================================================
--- trunk/server/Slim/Buttons/Input/Bar.pm (original)
+++ trunk/server/Slim/Buttons/Input/Bar.pm Mon Aug 28 09:02:21 2006
@@ -411,9 +411,17 @@
 		}
 	}
 
-	my @overlay = $noOverlay ? undef : Slim::Buttons::Input::List::getExtVal($client, $valueRef, $listIndex, 'overlayRef');
-
-	return ($line1, $line2, @overlay);
+	my ($overlay1, $overlay2) = Slim::Buttons::Input::List::getExtVal($client, $valueRef, $listIndex, 'overlayRef') unless $noOverlay;
+
+	$overlay1 = $client->symbols($overlay1) if defined($overlay1);
+	$overlay2 = $client->symbols($overlay2) if defined($overlay2);
+	
+	my $parts = {
+		'line'    => [ $line1, $line2 ],
+		'overlay' => [ $overlay1, $overlay2 ]
+	};
+
+	return $parts;
 }
 
 sub getFunctions {
@@ -433,7 +441,7 @@
 		}
 	#}
 
-	$client->lines(\&lines);
+	$client->lines( $client->param('lines') || \&lines );
 }
 
 sub exitInput {

Modified: trunk/server/Slim/Buttons/Volume.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Buttons/Volume.pm?rev=9202&r1=9201&r2=9202&view=diff
==============================================================================
--- trunk/server/Slim/Buttons/Volume.pm (original)
+++ trunk/server/Slim/Buttons/Volume.pm Mon Aug 28 09:02:21 2006
@@ -76,8 +76,9 @@
 		'initialValue' => sub { return $_[0]->volume },
 		'valueRef'     => $client->volume,
 		'callback'     => \&volumeExitHandler,
+		'increment'    => 1,
+		'lines'        => $client->customVolumeLines(),
 		'screen2'      => 'inherit',
-		'increment'    => 1,
 	});
 
 	_volumeIdleChecker($client);

Modified: trunk/server/Slim/Player/Client.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Player/Client.pm?rev=9202&r1=9201&r2=9202&view=diff
==============================================================================
--- trunk/server/Slim/Player/Client.pm (original)
+++ trunk/server/Slim/Player/Client.pm Mon Aug 28 09:02:21 2006
@@ -163,7 +163,7 @@
 	$client->[101] = undef; # lines2periodic
 	$client->[102] = 0; # periodicUpdateTime
 	$client->[103] = undef; # musicInfoTextCache
-	$client->[104] = undef; # unused
+	$client->[104] = undef; # customVolumeLines
 	# 105 is scroll state
 	$client->[106] = undef; # knobPos
 	$client->[107] = undef; # knobTime
@@ -1584,6 +1584,11 @@
 	@_ ? ($r->[103] = shift) : $r->[103];
 }
 
+sub customVolumeLines {
+	my $r = shift;
+	@_ ? ($r->[104] = shift) : $r->[104];
+}
+
 sub knobPos {
 	my $r = shift;
 	@_ ? ($r->[106] = shift) : $r->[106];

Modified: trunk/server/Slim/Player/Player.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Player/Player.pm?rev=9202&r1=9201&r2=9202&view=diff
==============================================================================
--- trunk/server/Slim/Player/Player.pm (original)
+++ trunk/server/Slim/Player/Player.pm Mon Aug 28 09:02:21 2006
@@ -694,6 +694,7 @@
 	my $scale = $client->mixerConstant($feature, 'scale');
 
 	my $headerValue = '';
+	my $parts;
 
 	if ($client->mixerConstant($feature, 'balanced')) {
 
@@ -701,7 +702,15 @@
 
 	} elsif ($feature eq 'volume') {
 
-		$headerValue = $client->volumeString($featureValue);
+		if (my $linefunc = $client->customVolumeLines()) {
+
+			$parts = &$linefunc($client, $featureValue);
+
+		} else {
+			
+			$headerValue = $client->volumeString($featureValue);
+
+		}
 
 	} else {
 
@@ -720,15 +729,14 @@
 
 	$client->modeParam('visu', [0]);
 
-	my @lines = Slim::Buttons::Input::Bar::lines($client, $featureValue, $featureHeader, {
+	$parts ||= Slim::Buttons::Input::Bar::lines($client, $featureValue, $featureHeader, {
 		'min'       => $client->mixerConstant($feature, 'min'),
 		'mid'       => $mid,
 		'max'       => $client->mixerConstant($feature, 'max'),
 		'noOverlay' => 1,
 	});
 
-	# trim off any overlay for showBriefly
-	$client->display->showBriefly(@lines[0,1], { 'name' => 'mixer' } );
+	$client->display->showBriefly($parts, { 'name' => 'mixer' } );
 
 	# Turn the visualizer back to it's old value.
 	$client->modeParam('visu', $oldvisu);	

Modified: trunk/server/Slim/Player/Transporter.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Player/Transporter.pm?rev=9202&r1=9201&r2=9202&view=diff
==============================================================================
--- trunk/server/Slim/Player/Transporter.pm (original)
+++ trunk/server/Slim/Player/Transporter.pm Mon Aug 28 09:02:21 2006
@@ -124,12 +124,21 @@
 sub volumeString {
 	my ($client, $volume) = @_;
 
-	if ($volume <= 0) {
+	if ($client->display->isa('Slim::Display::Transporter')) {
 
-		return sprintf(' (%s)', $client->string('MUTED'));
+		if ($volume <= 0) {
+
+			return sprintf(' (%s)', $client->string('MUTED'));
+		}
+
+		return sprintf(' (%.2f dB)', -abs(($volume / 2) - 50));
+
+	} else {
+
+		return $client->SUPER::volumeString($volume);
+
 	}
 
-	return sprintf(' (%.2f dB)', -abs(($volume / 2) - 50));
 }
 
 1;



More information about the checkins mailing list