[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