[Slim-Checkins] r12674 - /trunk/server/Slim/Plugin/Jive/Plugin.pm

bklaas at svn.slimdevices.com bklaas at svn.slimdevices.com
Wed Aug 22 13:07:50 PDT 2007


Author: bklaas
Date: Wed Aug 22 13:07:50 2007
New Revision: 12674

URL: http://svn.slimdevices.com?rev=12674&view=rev
Log:
Adding Player Settings menu (commented out from main menu for now). 
Removed quotes from hash keys per style request. 
Added Shuffle, Repeat, Crossfade options to Settings Menu options

Modified:
    trunk/server/Slim/Plugin/Jive/Plugin.pm

Modified: trunk/server/Slim/Plugin/Jive/Plugin.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Plugin/Jive/Plugin.pm?rev=12674&r1=12673&r2=12674&view=diff
==============================================================================
--- trunk/server/Slim/Plugin/Jive/Plugin.pm (original)
+++ trunk/server/Slim/Plugin/Jive/Plugin.pm Wed Aug 22 13:07:50 2007
@@ -15,7 +15,7 @@
 
 use Slim::Utils::Log;
 #use Slim::Utils::Misc;
-#use Slim::Utils::Prefs;
+use Slim::Utils::Prefs;
 #use Slim::Utils::Strings qw(string);
 use Data::Dumper;
 
@@ -79,6 +79,8 @@
 
     Slim::Control::Request::addDispatch(['menu', '_index', '_quantity'], 
         [0, 1, 1, \&menuQuery]);
+    Slim::Control::Request::addDispatch(['menusettings', '_index', '_quantity'], 
+        [1, 1, 1, \&menusettingsQuery]);
 
 }
 
@@ -713,199 +715,198 @@
 	}
 
 	# get our parameters
-#	my $client        = $request->client();
 	my $index         = $request->getParam('_index');
 	my $quantity      = $request->getParam('_quantity');
 
 	my @menu = (
 		{
-			'text' => Slim::Utils::Strings::string('MY_MUSIC'),
-			'count' => 9,
-			'offset' => 0,
-			'item_loop' => [
-			{
-				'text' => Slim::Utils::Strings::string('BROWSE_BY_ALBUM'),
-				'actions' => {
-					'go' => {
-						'cmd' => ['albums'],
-						'params' => {
-							'menu' => 'track',
-						},
-					},
-				},
-				'window' => {
-					'menuStyle' => 'album',
-				},
-			},
-			{
-				'text' => Slim::Utils::Strings::string('BROWSE_BY_ARTIST'),
-				'actions' => {
-					'go' => {
-						'cmd' => ['artists'],
-						'params' => {
-							'menu' => 'album',
-						},
-					},
-				},
-			},
-			{
-				'text' => Slim::Utils::Strings::string('BROWSE_BY_GENRE'),
-				'actions' => {
-					'go' => {
-						'cmd' => ['genres'],
-						'params' => {
-							'menu' => 'artist',
-						},
-					},
-				},
-			},
-			{
-				'text' => Slim::Utils::Strings::string('BROWSE_BY_YEAR'),
-				'actions' => {
-					'go' => {
-					'cmd' => ['years'],
-						'params' => {
-							'menu' => 'album',
-						},
-					},
-				},
-			},
-			{
-				'text' => Slim::Utils::Strings::string('BROWSE_NEW_MUSIC'),
-				'actions' => {
-					'go' => {
-						'cmd' => ['albums'],
-						'params' => {
-							'menu' => 'track',
-							'sort' => 'new',
-						},
-					},
-				},
-				'window' => {
-					'menuStyle' => 'album',
-				},
-			},
-			{
-				'text' => Slim::Utils::Strings::string('FAVORITES'),
-				'actions' => {
-					'go' => {
-						'cmd' => ['favorites', 'items'],
-						'params' => {
-							'menu' => 'favorites',
-						},
-					},
-				},
-			},
-			{
-				'text' => Slim::Utils::Strings::string('BROWSE_MUSIC_FOLDER'),
-				'actions' => {
-					'go' => {
-						'cmd' => ['musicfolder'],
-						'params' => {
-							'menu' => 'musicfolder',
-						},
-					},
-				},
-			},
-			{
-				'text' => Slim::Utils::Strings::string('SAVED_PLAYLISTS'),
-				'actions' => {
-					'go' => {
-						'cmd' => ['playlists'],
-						'params' => {
-							'menu' => 'track',
-						},
-					},
-				},
-			},
-			{
-				'text' => Slim::Utils::Strings::string('SEARCH'),
-				'count' => 4,
-				'offset' => 0,
-				'item_loop' => [
+			text => Slim::Utils::Strings::string('MY_MUSIC'),
+			count => 9,
+			offset => 0,
+			item_loop => [
+			{
+				text => Slim::Utils::Strings::string('BROWSE_BY_ALBUM'),
+				actions => {
+					go => {
+						cmd => ['albums'],
+						params => {
+							menu => 'track',
+						},
+					},
+				},
+				window => {
+					menuStyle => 'album',
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string('BROWSE_BY_ARTIST'),
+				actions => {
+					go => {
+						cmd => ['artists'],
+						params => {
+							menu => 'album',
+						},
+					},
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string('BROWSE_BY_GENRE'),
+				actions => {
+					go => {
+						cmd => ['genres'],
+						params => {
+							menu => 'artist',
+						},
+					},
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string('BROWSE_BY_YEAR'),
+				actions => {
+					go => {
+					cmd => ['years'],
+						params => {
+							menu => 'album',
+						},
+					},
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string('BROWSE_NEW_MUSIC'),
+				actions => {
+					go => {
+						cmd => ['albums'],
+						params => {
+							menu => 'track',
+							sort => 'new',
+						},
+					},
+				},
+				window => {
+					menuStyle => 'album',
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string('FAVORITES'),
+				actions => {
+					go => {
+						cmd => ['favorites', 'items'],
+						params => {
+							menu => 'favorites',
+						},
+					},
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string('BROWSE_MUSIC_FOLDER'),
+				actions => {
+					go => {
+						cmd => ['musicfolder'],
+						params => {
+							menu => 'musicfolder',
+						},
+					},
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string('SAVED_PLAYLISTS'),
+				actions => {
+					go => {
+						cmd => ['playlists'],
+						params => {
+							menu => 'track',
+						},
+					},
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string('SEARCH'),
+				count => 4,
+				offset => 0,
+				item_loop => [
 					{
-						'text' => Slim::Utils::Strings::string('ARTISTS'),
-						'input' => {
-							'len' => 2, # Richard says "we can't search for U2!"
-							'help' => {
-								'text' => Slim::Utils::Strings::string('JIVE_SEARCHFOR_HELP')
+						text => Slim::Utils::Strings::string('ARTISTS'),
+						input => {
+							len => 2, # Richard says "we can't search for U2!"
+							help => {
+								text => Slim::Utils::Strings::string('JIVE_SEARCHFOR_HELP')
 							},
 						},
-						'actions' => {
-							'go' => {
-								'cmd' => ['artists'],
-								'params' => {
-									'menu' => 'album',
-									'search' => '__INPUT__',
+						actions => {
+							go => {
+								cmd => ['artists'],
+								params => {
+									menu => 'album',
+									search => '__INPUT__',
 								},
 							},
 						},
-						'window' => {
-							'text' => Slim::Utils::Strings::string('SEARCHFOR_ARTISTS'),
+						window => {
+							text => Slim::Utils::Strings::string('SEARCHFOR_ARTISTS'),
 						},
 					},
 					{
-						'text' => Slim::Utils::Strings::string('ALBUMS'),
-						'input' => {
-							'len' => 3,
-							'help' => {
-								'text' => Slim::Utils::Strings::string('JIVE_SEARCHFOR_HELP')
+						text => Slim::Utils::Strings::string('ALBUMS'),
+						input => {
+							len => 3,
+							help => {
+								text => Slim::Utils::Strings::string('JIVE_SEARCHFOR_HELP')
 							},
 						},
-						'actions' => {
-							'go' => {
-								'cmd' => ['albums'],
-								'params' => {
-									'menu' => 'track',
-									'search' => '__INPUT__',
+						actions => {
+							go => {
+								cmd => ['albums'],
+								params => {
+									menu => 'track',
+									search => '__INPUT__',
 								},
 							},
 						},
-						'window' => {
-							'text' => Slim::Utils::Strings::string('SEARCHFOR_ALBUMS'),
-							'menuStyle' => 'album',
+						window => {
+							text => Slim::Utils::Strings::string('SEARCHFOR_ALBUMS'),
+							menuStyle => 'album',
 						},
 					},
 					{
-						'text' => Slim::Utils::Strings::string('SONGS'),
-						'input' => {
-							'len' => 3,
-							'help' => {
-								'text' => Slim::Utils::Strings::string('JIVE_SEARCHFOR_HELP')
+						text => Slim::Utils::Strings::string('SONGS'),
+						input => {
+							len => 3,
+							help => {
+								text => Slim::Utils::Strings::string('JIVE_SEARCHFOR_HELP')
 							},
 						},
-						'actions' => {
-							'go' => {
-								'cmd' => ['tracks'],
-								'params' => {
-									'menu' => 'track',
-									'search' => '__INPUT__',
+						actions => {
+							go => {
+								cmd => ['tracks'],
+								params => {
+									menu => 'track',
+									search => '__INPUT__',
 								},
 							},
 						},
-						'window' => {
+						window => {
 							'text' => Slim::Utils::Strings::string('SEARCHFOR_SONGS'),
 						},
 					},
 					{
-						'text' => Slim::Utils::Strings::string('PLAYLISTS'),
-						'input' => {
-							'len' => 3,
-							'help' => {
-								'text' => Slim::Utils::Strings::string('JIVE_SEARCHFOR_HELP')
+						text => Slim::Utils::Strings::string('PLAYLISTS'),
+						input => {
+							len => 3,
+							help => {
+								text => Slim::Utils::Strings::string('JIVE_SEARCHFOR_HELP')
 							},
 						},
-						'actions' => {
-							'go' => {
-								'cmd' => ['playlists'],
-								'params' => {
-									'menu' => 'track',
-									'search' => '__INPUT__',
+						actions => {
+							go => {
+								cmd => ['playlists'],
+								params => {
+									menu => 'track',
+									search => '__INPUT__',
 								},
 							},
 						},
-						'window' => {
-							'text' => Slim::Utils::Strings::string('SEARCHFOR_PLAYLISTS'),
+						window => {
+							text => Slim::Utils::Strings::string('SEARCHFOR_PLAYLISTS'),
 						},
 					},
 				],
@@ -945,6 +946,18 @@
 				},
 			},
 		},
+#		{
+#			text => Slim::Utils::Strings::string('SETTINGS'),
+#			actions => {
+#				go => {
+#					cmd => ['menusettings'],
+#					player => 0,
+#					params => {
+#						menu => 'settings',
+#					},
+#				},
+#			},
+#		},
 	);
 
 	my $numitems = scalar(@menu);
@@ -967,4 +980,180 @@
 	$request->setStatusDone();
 }
 
+sub menusettingsQuery {
+	my $request = shift;
+ 
+	$log->debug("Begin Function");
+ 
+	if ($request->isNotQuery([['menusettings']])) {
+		$request->setStatusBadDispatch();
+		return;
+	}
+
+	# get our parameters
+	my $client        = $request->client();
+	my $prefs         = preferences('server');
+	my $index         = $request->getParam('_index');
+	my $quantity      = $request->getParam('_quantity');
+
+	my @menu = (
+		# To fill based on the $client type
+		{
+		text => Slim::Utils::Strings::string('REPEAT'),
+		count => 3,
+		offset => 0,
+		#initialValue => sub { Slim::Player::Playlist::repeat(shift) },
+		item_loop => [
+			{
+				text => Slim::Utils::Strings::string("REPEAT_OFF"),
+				radio	=> 1,
+				actions => {
+					do => {
+						player => 0,
+						cmd => ['playlist', 'repeat', '0'],
+					},
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string("REPEAT_ONE"),
+				radio	=> 1,
+				actions => {
+					do => {
+						player => 0,
+						cmd => ['playlist', 'repeat', '1'],
+					},
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string("REPEAT_ALL"),
+				radio	=> 1,
+				actions => {
+					do => {
+						player => 0,
+						cmd => ['playlist', 'repeat', '2'],
+					},
+				},
+			},
+		],
+		},
+		{
+		text => Slim::Utils::Strings::string('SHUFFLE'),
+		count => 3,
+		offset => 0,
+		#initialValue => sub{ return Slim::Player::Playlist::shuffle(shift)},
+		item_loop => [
+			{
+				text => Slim::Utils::Strings::string("SHUFFLE_OFF"),
+				radio	=> 1,
+				actions => {
+					do => {
+						player => 0,
+						cmd => ['playlist', 'shuffle', '0'],
+					},
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string("SHUFFLE_ON_SONGS"),
+				radio	=> 1,
+				actions => {
+					do => {
+						player => 0,
+						cmd => ['playlist', 'shuffle', '1'],
+					},
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string("SHUFFLE_ON_ALBUMS"),
+				radio	=> 1,
+				actions => {
+					do => {
+						player => 0,
+						cmd => ['playlist', 'shuffle', '2'],
+					},
+				},
+			},
+		],
+		},
+		{
+		text => Slim::Utils::Strings::string('SETUP_TRANSITIONTYPE'),
+		count => 5,
+		offset => 0,
+		#initialValue => sub { $prefs->client(shift)->get('transitionType') },
+		#condition    => sub { return $_[0]->isa('Slim::Player::Squeezebox2') },
+		item_loop => [
+			{
+				text => Slim::Utils::Strings::string("TRANSITION_NONE"),
+				radio	=> 1,
+				actions => {
+					do => {
+						player => 0,
+						cmd => ['playerpref', 'transitionType', '0'],
+					},
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string("TRANSITION_CROSSFADE"),
+				radio	=> 1,
+				actions => {
+					do => {
+						player => 0,
+						cmd => ['playerpref', 'transitionType', '1'],
+					},
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string("TRANSITION_FADE_IN"),
+				radio	=> 1,
+				actions => {
+					do => {
+						player => 0,
+						cmd => ['playerpref', 'transitionType', '2'],
+					},
+				}
+			},
+			{
+				text => Slim::Utils::Strings::string("TRANSITION_FADE_OUT"),
+				radio	=> 1,
+				actions => {
+					do => {
+						player => 0,
+						cmd => ['playerpref', 'transitionType', '3'],
+					},
+				},
+			},
+			{
+				text => Slim::Utils::Strings::string("TRANSITION_FADE_IN_OUT"),
+				radio	=> 1,
+				actions => {
+					do => {
+						player => 0,
+						cmd => ['playerpref', 'transitionType', '4'],
+					},
+				},
+			},
+		],
+		},
+	);
+
+	my $numitems = scalar(@menu);
+
+	$request->addResult("count", $numitems);
+
+	my ($valid, $start, $end) = $request->normalize(scalar($index), scalar($quantity), $numitems);
+
+	if ($valid) {
+		
+		my $cnt = 0;
+		$request->addResult('offset', $start);
+
+		for my $eachmenu (@menu[$start..$end]) {			
+			$request->setResultLoopHash('item_loop', $cnt, $eachmenu);
+			$cnt++;
+		}
+	}
+
+	$request->setStatusDone();
+}
+
+
 1;



More information about the checkins mailing list