[Slim-Checkins] r12489 - in /trunk/server: Slim/Control/Queries.pm strings.txt

fred at svn.slimdevices.com fred at svn.slimdevices.com
Sun Aug 5 10:51:21 PDT 2007


Author: fred
Date: Sun Aug  5 10:51:20 2007
New Revision: 12489

URL: http://svn.slimdevices.com?rev=12489&view=rev
Log:
Bug: N/A
Description: Add "Play this song" in Jive songinfo

Modified:
    trunk/server/Slim/Control/Queries.pm
    trunk/server/strings.txt

Modified: trunk/server/Slim/Control/Queries.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Control/Queries.pm?rev=12489&r1=12488&r2=12489&view=diff
==============================================================================
--- trunk/server/Slim/Control/Queries.pm (original)
+++ trunk/server/Slim/Control/Queries.pm Sun Aug  5 10:51:20 2007
@@ -2769,10 +2769,13 @@
 	my $url	     = $request->getParam('url');
 	my $trackID  = $request->getParam('track_id');
 	my $tagsprm  = $request->getParam('tags');
+	
 	my $menu     = $request->getParam('menu');
-	
+	my $insert   = $request->getParam('menu_play');
+
 	# menu/jive mgmt
 	my $menuMode = defined $menu;
+	my $insertPlay = $menuMode && defined $insert;
 
 	if (!defined $trackID && !defined $url) {
 		$request->setStatusBadParams();
@@ -2803,14 +2806,15 @@
 
 	if (blessed($track) && $track->can('id')) {
 
+		my $trackId = $track->id();
+		$trackId += 0;
+
 		if ($menuMode) {
 
 			# decide what is the next step down
 			# generally, we go nowhere after songingo, so we get menu:nowhere...
 
 			# build the base element
-			my $trackId = $track->id();
-			$trackId += 0;
 			my $base = {
 				'actions' => {
 					# no go, we ain't going anywhere!
@@ -2841,6 +2845,9 @@
 		my $hashRef = _songData($track, $tags, $menuMode);
 		my $count = scalar (keys %{$hashRef});
 
+		# correct count if we insert "Play all songs"
+		$count++ if $insertPlay;
+
 		$count += 0;
 		$request->addResult("count", $count);
 
@@ -2852,6 +2859,40 @@
 			my $cnt = 0;
 			my $loopname = $menuMode?'item_loop':'songinfo_loop';
 			$request->addResult('offset', $start) if $menuMode;
+
+			# first PLAY item
+			if ($insertPlay) {
+			
+				# insert first item if needed
+				if ($start == 0) {
+					$request->addResultLoop($loopname, $cnt, 'text', Slim::Utils::Strings::string('JIVE_PLAY_THIS_SONGS'));
+
+					# override the actions, babe!
+					my $actions = {
+						'do' => {
+							'player' => 0,
+							'cmd' => ['playlistcontrol'],
+							'params' => {
+								'cmd' => 'load',
+								'track_id' => $trackId,
+							},
+						},
+						# play/add taken care of in base
+					};
+					$request->addResultLoop($loopname, $cnt, 'actions', $actions);
+					$cnt++;
+				}
+
+				# correct db slice!
+				else {
+					# we are not adding our item but it is counted in $start
+					# (a query for tracks 1 10 needs to start at db 0! -- and go to db 9 (instead of 10))
+					# (a query for tracks 0 10 ALSO needs to start at db 0! -- and go to db 8 (instead of 9))
+					$start--;
+				}
+				# always fix $end 
+				$end--;
+			}
 
 			while (my ($key, $val) = each %{$hashRef}) {
 
@@ -3180,6 +3221,7 @@
 					'cmd' => [$actioncmd],
 					'params' => {
 						'menu' => $nextMenu,
+						'menu_play' => '1',
 					},
 					'itemsParams' => 'params',
 				},
@@ -3281,7 +3323,6 @@
 			# always fix $end 
 			$end--;
 		}
-
 
 		for my $item ($rs->slice($start, $end)) {
 			

Modified: trunk/server/strings.txt
URL: http://svn.slimdevices.com/trunk/server/strings.txt?rev=12489&r1=12488&r2=12489&view=diff
==============================================================================
--- trunk/server/strings.txt (original)
+++ trunk/server/strings.txt Sun Aug  5 10:51:20 2007
@@ -13788,5 +13788,8 @@
 JIVE_PLAY_ALL_SONGS
 	EN	Play all songs
 
+JIVE_PLAY_THIS_SONGS
+	EN	Play this song
+
 SEARCHFOR_PLAYLISTS
 	EN	Search for playlists



More information about the checkins mailing list