[Slim-Checkins] r11180 - /trunk/server/Plugins/Rescan/Plugin.pm

kdf at svn.slimdevices.com kdf at svn.slimdevices.com
Thu Jan 11 17:04:40 PST 2007


Author: kdf
Date: Thu Jan 11 17:04:40 2007
New Revision: 11180

URL: http://svn.slimdevices.com?rev=11180&view=rev
Log:
Bug: n/a
Description: reverse order of scan options. advance to the latest when it starts and the display is currently showing the scan just completed.


Modified:
    trunk/server/Plugins/Rescan/Plugin.pm

Modified: trunk/server/Plugins/Rescan/Plugin.pm
URL: http://svn.slimdevices.com/trunk/server/Plugins/Rescan/Plugin.pm?rev=11180&r1=11179&r2=11180&view=diff
==============================================================================
--- trunk/server/Plugins/Rescan/Plugin.pm (original)
+++ trunk/server/Plugins/Rescan/Plugin.pm Thu Jan 11 17:04:40 2007
@@ -26,7 +26,6 @@
 our %functions;
 
 my @progress;
-my %progressParams;
 
 sub getDisplayName {
 	return 'PLUGIN_RESCAN_MUSIC_LIBRARY';
@@ -56,8 +55,92 @@
 			}
 		}
 	);
-
-	%progressParams = (
+	
+	Slim::Buttons::Common::addMode('scanProgress', undef, \&setProgressMode, \&exitProgressMode);
+
+	$class->SUPER::initPlugin();
+	Plugins::Rescan::Settings->new;
+
+	setTimer();
+}
+
+sub setMode {
+	my $class  = shift;
+	my $client = shift;
+	my $method = shift;
+
+	if ($method eq 'pop') {
+		Slim::Buttons::Common::popMode($client);
+		return;
+	}
+
+	@browseMenuChoices = (
+		'PLUGIN_RESCAN_TIMER_SET',
+		'PLUGIN_RESCAN_TIMER_OFF',
+		'PLUGIN_RESCAN_TIMER_TYPE',
+		'PLUGIN_RESCAN_PRESS_PLAY',
+	);
+
+	# get previous alarm time or set a default
+	if (!defined Slim::Utils::Prefs::get("rescan-time")) {
+
+		Slim::Utils::Prefs::set("rescan-time", 9 * 60 * 60 );
+	}
+	
+	if ( Slim::Music::Import->stillScanning ) {
+
+		Slim::Buttons::Common::pushMode($client, 'scanProgress');
+		
+	} else {
+
+		my %params = (
+			'listRef'        => \@browseMenuChoices,
+			'externRefArgs'  => 'CV',
+			'header'         => 'PLUGIN_RESCAN_MUSIC_LIBRARY',
+			'headerAddCount' => 1,
+			'stringHeader'   => 1,
+			'callback'       => \&rescanExitHandler,
+			'overlayRef'     => sub { 
+
+					if($_[1] =~ /PLUGIN_RESCAN_TIMER_O/) {
+
+						return (undef, Slim::Buttons::Common::checkBoxOverlay( $client, Slim::Utils::Prefs::get("rescan-scheduled")));
+					} elsif ($_[1] ne 'PLUGIN_RESCAN_PRESS_PLAY') {
+
+						return (undef, $_[0]->symbols('rightarrow')) 
+					}
+
+				},
+			'overlayRefArgs' => 'CV',
+			'externRef'      => sub {
+				my $client = shift;
+				my $value  = shift;
+				
+				if (Slim::Utils::Prefs::get("rescan-scheduled") && $value eq 'PLUGIN_RESCAN_TIMER_OFF') {
+	
+					return $client->string('PLUGIN_RESCAN_TIMER_ON');
+				}
+	
+				return $client->string($value);
+			},
+		);
+	
+		Slim::Buttons::Common::pushMode($client, 'INPUT.List', \%params);
+	}
+	
+	
+}
+
+sub setProgressMode {
+	my $client = shift;
+	my $method = shift;
+
+	if ($method eq 'pop') {
+		Slim::Buttons::Common::popMode($client);
+		return;
+	}
+
+	my %progressParams = (
 		'header'             => \&progressHeader,
 		'headerArgs'         => 'CI',
 		'headerAddCount'     => 1,
@@ -67,90 +150,6 @@
 		'modeUpdateInterval' => 1,
 	);
 
-	Slim::Buttons::Common::addMode('scanProgress', undef, \&setProgressMode, \&exitProgressMode);
-
-	$class->SUPER::initPlugin();
-	Plugins::Rescan::Settings->new;
-
-	setTimer();
-}
-
-sub setMode {
-	my $class  = shift;
-	my $client = shift;
-	my $method = shift;
-
-	if ($method eq 'pop') {
-		Slim::Buttons::Common::popMode($client);
-		return;
-	}
-
-	@browseMenuChoices = (
-		'PLUGIN_RESCAN_TIMER_SET',
-		'PLUGIN_RESCAN_TIMER_OFF',
-		'PLUGIN_RESCAN_TIMER_TYPE',
-		'PLUGIN_RESCAN_PRESS_PLAY',
-	);
-
-	# get previous alarm time or set a default
-	if (!defined Slim::Utils::Prefs::get("rescan-time")) {
-
-		Slim::Utils::Prefs::set("rescan-time", 9 * 60 * 60 );
-	}
-	
-	if ( Slim::Music::Import->stillScanning ) {
-
-		Slim::Buttons::Common::pushMode($client, 'scanProgress');
-		
-	} else {
-
-		my %params = (
-			'listRef'        => \@browseMenuChoices,
-			'externRefArgs'  => 'CV',
-			'header'         => 'PLUGIN_RESCAN_MUSIC_LIBRARY',
-			'headerAddCount' => 1,
-			'stringHeader'   => 1,
-			'callback'       => \&rescanExitHandler,
-			'overlayRef'     => sub { 
-
-					if($_[1] =~ /PLUGIN_RESCAN_TIMER_O/) {
-
-						return (undef, Slim::Buttons::Common::checkBoxOverlay( $client, Slim::Utils::Prefs::get("rescan-scheduled")));
-					} elsif ($_[1] ne 'PLUGIN_RESCAN_PRESS_PLAY') {
-
-						return (undef, $_[0]->symbols('rightarrow')) 
-					}
-
-				},
-			'overlayRefArgs' => 'CV',
-			'externRef'      => sub {
-				my $client = shift;
-				my $value  = shift;
-				
-				if (Slim::Utils::Prefs::get("rescan-scheduled") && $value eq 'PLUGIN_RESCAN_TIMER_OFF') {
-	
-					return $client->string('PLUGIN_RESCAN_TIMER_ON');
-				}
-	
-				return $client->string($value);
-			},
-		);
-	
-		Slim::Buttons::Common::pushMode($client, 'INPUT.List', \%params);
-	}
-	
-	
-}
-
-sub setProgressMode {
-	my $client = shift;
-	my $method = shift;
-
-	if ($method eq 'pop') {
-		Slim::Buttons::Common::popMode($client);
-		return;
-	}
-
 	Slim::Utils::Timers::setTimer($client, Time::HiRes::time() + 1, \&progressUpdate);
 	
 	Slim::Buttons::Common::pushMode($client, 'INPUT.List', \%progressParams);
@@ -167,7 +166,7 @@
 
 sub progressHeader {
 	my $client = shift;
-	my $index  = shift || 0;
+	my $index  = shift;
 	
 	my $p = $progress[$index];
 	
@@ -175,7 +174,7 @@
 	
 		return $client->string($p->name.'_PROGRESS')
 			.' '. $client->string( $p->active ? 'RUNNING' : 'COMPLETE')
-			.' ('. ($p->active ? $p->done.'/' . $p->total . ') ' : '' );
+			.($p->active ? ' ('.  $p->done.'/' . $p->total . ') ' : '' );
 	} else {
 	
 		return $client->string('RESCANNING_SHORT');
@@ -207,10 +206,16 @@
 	
 	Slim::Utils::Timers::killTimers($client, \&progressUpdate);
 	
-	@progress = reverse(Slim::Schema->rs('Progress')->search( { 'type' => 'importer' }, { 'order_by' => 'start' } )->all);
+	@progress = Slim::Schema->rs('Progress')->search( { 'type' => 'importer' }, { 'order_by' => 'start' } )->all;
+	my $size = scalar @{$client->modeParam('listRef')};
 	
 	if (scalar @progress) {
 		$client->modeParam('listRef',[0..$#progress]);
+	}
+	
+	#adjust the index to teh last position if the new item starts while viewing the previous last item
+	if ($client->modeParam('listIndex') == $#progress -1 && $size != scalar @progress) {
+		$client->modeParam('listIndex',$#progress);
 	}
 	
 	$client->update;



More information about the checkins mailing list