[Slim-Checkins] r10822 - in /trunk/server: Plugins/Rescan/ Plugins/Rescan/HTML/ Plugins/Rescan/HTML/EN/ Plugins/Rescan/HTML/EN/plugins/ Plugins/Rescan/HTML/EN/plugins/Rescan/ Plugins/Rescan/HTML/EN/plugins/Rescan/settings/ Slim/Buttons/ Slim/Buttons/Input/ Slim/Utils/ Slim/Web/Settings/Player/

dsully at svn.slimdevices.com dsully at svn.slimdevices.com
Fri Dec 1 14:25:20 PST 2006


Author: dsully
Date: Fri Dec  1 14:25:20 2006
New Revision: 10822

URL: http://svn.slimdevices.com?rev=10822&view=rev
Log:
Bug: N/A
Description: Convert Rescan plugin. 

* Move common time related functions out of Slim::Buttons::Input::Time

Added:
    trunk/server/Plugins/Rescan/HTML/
    trunk/server/Plugins/Rescan/HTML/EN/
    trunk/server/Plugins/Rescan/HTML/EN/plugins/
    trunk/server/Plugins/Rescan/HTML/EN/plugins/Rescan/
    trunk/server/Plugins/Rescan/HTML/EN/plugins/Rescan/settings/
    trunk/server/Plugins/Rescan/HTML/EN/plugins/Rescan/settings/basic.html   (with props)
    trunk/server/Plugins/Rescan/Settings.pm   (with props)
Modified:
    trunk/server/Plugins/Rescan/Plugin.pm
    trunk/server/Slim/Buttons/AlarmClock.pm
    trunk/server/Slim/Buttons/Input/Time.pm
    trunk/server/Slim/Utils/DateTime.pm
    trunk/server/Slim/Utils/PluginManager.pm
    trunk/server/Slim/Web/Settings/Player/Alarm.pm

Added: trunk/server/Plugins/Rescan/HTML/EN/plugins/Rescan/settings/basic.html
URL: http://svn.slimdevices.com/trunk/server/Plugins/Rescan/HTML/EN/plugins/Rescan/settings/basic.html?rev=10822&view=auto
==============================================================================
--- trunk/server/Plugins/Rescan/HTML/EN/plugins/Rescan/settings/basic.html (added)
+++ trunk/server/Plugins/Rescan/HTML/EN/plugins/Rescan/settings/basic.html Fri Dec  1 14:25:20 2006
@@ -1,0 +1,46 @@
+[% PROCESS settings/header.html %]
+
+	<div class="settingSection">
+		<div class="groupHead">[% "PLUGIN_RESCAN_MUSIC_LIBRARY" | string | upper %]</div>
+		<div class="groupDesc">[% "PLUGIN_RESCAN_TIMER_DESC" | string %]</div>
+
+		<table border="0" cellspacing="7" cellpaddding="7">
+
+		<tr>
+			<td><label for="rescan-scheduled">[% "PLUGIN_RESCAN_TIMER_NAME" | string %]</label></td>
+			<td>
+				<select name="rescan-scheduled">
+
+				<option value="1" [% IF prefs.rescanScheduled %]selected[% END %]>[% "ON" | string %]</option>
+				<option value="0" [% IF NOT prefs.rescanScheduled %]selected[% END %]>[% "OFF" | string %]</option>
+
+				</select>
+			</td>
+
+		</tr>
+		<tr>
+			<td><label for="rescan-time">[% "PLUGIN_RESCAN_TIMER_SET" | string %]</label></td>
+			<td>
+				<input type="text" class="stdedit" name="rescan-time" id="rescan-time" value="[% prefs.rescanTime %]" size="10" />
+			</td>
+
+		</tr>
+		<tr>
+
+			<td><label for="rescan-type">[% "PLUGIN_RESCAN_TIMER_TYPE" | string %]</label></td>
+			<td>
+				<select name="rescan-type">
+
+				<option value="1rescan" [% IF prefs.rescanType == "1rescan" %]selected[% END %]>[% "SETUP_STANDARDRESCAN" | string %]</option>
+				<option value="2wipedb" [% IF prefs.rescanType == "2wipedb" %]selected[% END %]>[% "SETUP_WIPEDB" | string %]</option>
+				<option value="3playlist" [% IF prefs.rescanType == "3playlist" %]selected[% END %]>[% "SETUP_PLAYLISTRESCAN" | string %]</option>
+
+				</select>
+			</td>
+
+		</tr>
+
+		</table>
+	</div>
+
+[% PROCESS settings/footer.html %]

Propchange: trunk/server/Plugins/Rescan/HTML/EN/plugins/Rescan/settings/basic.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/server/Plugins/Rescan/HTML/EN/plugins/Rescan/settings/basic.html
------------------------------------------------------------------------------
    svn:keywords = Id Author LastChangedDate LastChangedBy

Propchange: trunk/server/Plugins/Rescan/HTML/EN/plugins/Rescan/settings/basic.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Modified: trunk/server/Plugins/Rescan/Plugin.pm
URL: http://svn.slimdevices.com/trunk/server/Plugins/Rescan/Plugin.pm?rev=10822&r1=10821&r2=10822&view=diff
==============================================================================
--- trunk/server/Plugins/Rescan/Plugin.pm (original)
+++ trunk/server/Plugins/Rescan/Plugin.pm Fri Dec  1 14:25:20 2006
@@ -14,6 +14,8 @@
 use strict;
 use Time::HiRes;
 
+use Plugins::Rescan::Settings;
+
 use Slim::Control::Request;
 use Slim::Utils::Log;
 
@@ -44,7 +46,7 @@
 
 				$client->showBriefly( {
 					'line' => [ $client->string('PLUGIN_RESCAN_MUSIC_LIBRARY'),
-								$client->string('PLUGIN_RESCAN_RESCANNING') ]
+							$client->string('PLUGIN_RESCAN_RESCANNING') ]
 				});
 
 			} else {
@@ -53,6 +55,8 @@
 			}
 		}
 	);
+
+	Plugins::Rescan::Settings->new;
 
 	Slim::Buttons::Common::addMode('scantimer', getFunctions(), \&setMode);
 	setTimer();
@@ -75,24 +79,13 @@
 	);
 
 	# get previous alarm time or set a default
-	unless (defined Slim::Utils::Prefs::get("rescan-time")) {
+	if (!defined Slim::Utils::Prefs::get("rescan-time")) {
 
 		Slim::Utils::Prefs::set("rescan-time", 9 * 60 * 60 );
 	}
 	
 	my %params = (
 		'listRef'        => \@browseMenuChoices,
-		'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');
-				} else {
-					return $client->string($value);
-				}
-			},
 		'externRefArgs'  => 'CV',
 		'header'         => 'PLUGIN_RESCAN_MUSIC_LIBRARY',
 		'headerAddCount' => 1,
@@ -100,6 +93,17 @@
 		'callback'       => \&rescanExitHandler,
 		'overlayRef'     => sub { return (undef, Slim::Display::Display::symbol('rightarrow')) },
 		'overlayRefArgs' => '',
+		'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);
@@ -183,9 +187,6 @@
 	} elsif ($exittype eq 'RIGHT') {
 
 		$client->bumpRight();
-
-	} else {
-		return;
 	}
 }
 
@@ -246,80 +247,6 @@
 
 	setTimer();
 }
-
-sub setupGroup {
-
-	my %group = (
-		PrefOrder => ['rescan-scheduled','rescan-time', 'rescan-type'],
-		PrefsInTable => 1,
-		GroupHead => Slim::Utils::Strings::string('PLUGIN_RESCAN_MUSIC_LIBRARY'),
-		GroupDesc => Slim::Utils::Strings::string('PLUGIN_RESCAN_TIMER_DESC'),
-		GroupLine => 1,
-		GroupSub => 1,
-		Suppress_PrefSub => 1,
-		Suppress_PrefLine => 1,
-		Suppress_PrefHead => 1
-	);
-	
-	my %prefs = (
-		'rescan-scheduled' => {
-			'validate' => \&Slim::Utils::Validate::trueFalse,
-			'PrefChoose' => Slim::Utils::Strings::string('PLUGIN_RESCAN_TIMER_NAME'),
-			'changeIntro' => Slim::Utils::Strings::string('PLUGIN_RESCAN_TIMER_NAME'),
-			'options' => {
-				'1' => 'ON',
-				'0' => 'OFF',
-			},
-		},
-
-		'rescan-time' => {
-			'validate' => \&Slim::Utils::Validate::acceptAll,
-			'validateArgs' => [0,undef],
-			'PrefChoose' => Slim::Utils::Strings::string('PLUGIN_RESCAN_TIMER_SET'),
-			'changeIntro' => Slim::Utils::Strings::string('PLUGIN_RESCAN_TIMER_SET'),
-
-			'currentValue' => sub {
-				my $client = shift;
-				my $time = Slim::Utils::Prefs::get("rescan-time");
-				my ($h0, $h1, $m0, $m1, $p) = Slim::Buttons::Input::Time::timeDigits($client,$time);
-				my $timestring = ((defined($p) && $h0 == 0) ? ' ' : $h0) . $h1 . ":" . $m0 . $m1 . " " . (defined($p) ? $p : '');
-				return $timestring;
-			},
-
-			'onChange' => sub {
-				my ($client,$changeref,$paramref,$pageref) = @_;
-				my $time = $changeref->{'rescan-time'}{'new'};
-				if (defined $time) {
-					my $newtime = 0;
-					$time =~ s{
-						^(\s?0?[0-9]|1[0-9]|2[0-4]):([0-5][0-9])\s*(P|PM|A|AM)?$
-					}{
-						if (defined $3) {
-							$newtime = ($1 == 12?0:$1 * 60 * 60) + ($2 * 60) + ($3 =~ /P/?12 * 60 * 60:0);
-						} else {
-							$newtime = ($1 * 60 * 60) + ($2 * 60);
-						}
-					}iegsx;
-					Slim::Utils::Prefs::set('rescan-time',$newtime);
-				}
-			},
-		},
-		
-		'rescan-type' => {
-			'validate' => \&Slim::Utils::Validate::acceptAll,
-			'optionSort' => 'K',
-			'options' => {
-				'1rescan'   => Slim::Utils::Strings::string('SETUP_STANDARDRESCAN'),
-				'2wipedb'   => Slim::Utils::Strings::string('SETUP_WIPEDB'),
-				'3playlist' => Slim::Utils::Strings::string('SETUP_PLAYLISTRESCAN'),
-			},
-			'PrefChoose' => Slim::Utils::Strings::string('PLUGIN_RESCAN_TIMER_TYPE'),
-			'changeIntro' => Slim::Utils::Strings::string('PLUGIN_RESCAN_TIMER_TYPE'),
-		}
-	);
-
-	return (\%group,\%prefs);
-};
 
 sub strings {
 	return q^
@@ -424,5 +351,3 @@
 }
 
 1;
-
-

Added: trunk/server/Plugins/Rescan/Settings.pm
URL: http://svn.slimdevices.com/trunk/server/Plugins/Rescan/Settings.pm?rev=10822&view=auto
==============================================================================
--- trunk/server/Plugins/Rescan/Settings.pm (added)
+++ trunk/server/Plugins/Rescan/Settings.pm Fri Dec  1 14:25:20 2006
@@ -1,0 +1,64 @@
+package Plugins::Rescan::Settings;
+
+# SlimServer Copyright (C) 2001-2006 Slim Devices Inc.
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License,
+# version 2.
+
+use strict;
+use base qw(Slim::Web::Settings);
+
+use Slim::Utils::DateTime;
+
+sub name {
+        return 'PLUGIN_RESCAN_MUSIC_LIBRARY';
+}
+
+sub page {
+        return 'plugins/Rescan/settings/basic.html';
+}
+
+sub handler {
+        my ($class, $client, $params) = @_;
+
+	my @prefs = qw(
+		rescan-scheduled
+		rescan-time
+		rescan-type
+	);
+
+	for my $pref (@prefs) {
+
+		if ($params->{'submit'}) {
+
+			if ($pref eq 'rescan-time') {
+
+				$params->{$pref} = Slim::Utils::DateTime::prettyTimeToSecs($params->{$pref});
+			}
+
+			Slim::Utils::Prefs::set($pref, $params->{$pref});
+		}
+
+		$params->{'prefs'}->{$pref} = Slim::Utils::Prefs::get($pref);
+
+		if ($pref eq 'rescan-time') {
+
+			$params->{'prefs'}->{$pref} = Slim::Utils::DateTime::secsToPrettyTime(
+				$params->{'prefs'}->{$pref}
+			);
+		}
+
+		# Hack prefs - Template Toolkit doesn't like the dashes.
+		my $value = delete $params->{'prefs'}->{$pref};
+
+		$pref =~ s/-(\w)/\u$1/;
+
+		$params->{'prefs'}->{$pref} = $value;
+        }
+
+        return $class->SUPER::handler($client, $params);
+}
+
+1;
+
+__END__

Propchange: trunk/server/Plugins/Rescan/Settings.pm
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/server/Plugins/Rescan/Settings.pm
------------------------------------------------------------------------------
    svn:keywords = Id Author LastChangedDate LastChangedBy

Propchange: trunk/server/Plugins/Rescan/Settings.pm
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: trunk/server/Slim/Buttons/AlarmClock.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Buttons/AlarmClock.pm?rev=10822&r1=10821&r2=10822&view=diff
==============================================================================
--- trunk/server/Slim/Buttons/AlarmClock.pm (original)
+++ trunk/server/Slim/Buttons/AlarmClock.pm Fri Dec  1 14:25:20 2006
@@ -26,6 +26,7 @@
 
 use Slim::Player::Playlist;
 use Slim::Buttons::Common;
+use Slim::Utils::DateTime;
 use Slim::Utils::Misc;
 
 use Scalar::Util qw(blessed);
@@ -221,8 +222,7 @@
 					$dowString .= sprintf(" (%s)",
 						Slim::Buttons::Input::Time::timeString( 
 							$client,
-							Slim::Buttons::Input::Time::timeDigits(
-								$client,
+							Slim::Utils::DateTime::timeDigits(
 								$client->prefGet('alarmtime', $dayOfWeek)
 							),
 							-1  # hide the cursor

Modified: trunk/server/Slim/Buttons/Input/Time.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Buttons/Input/Time.pm?rev=10822&r1=10821&r2=10822&view=diff
==============================================================================
--- trunk/server/Slim/Buttons/Input/Time.pm (original)
+++ trunk/server/Slim/Buttons/Input/Time.pm Fri Dec  1 14:25:20 2006
@@ -41,8 +41,9 @@
 use strict;
 
 use Slim::Buttons::Common;
+use Slim::Display::Display;
+use Slim::Utils::DateTime;
 use Slim::Utils::Misc;
-use Slim::Display::Display;
 
 Slim::Buttons::Common::addMode('INPUT.Time',getFunctions(),\&setMode);
 
@@ -66,7 +67,7 @@
 	,'knob' => sub {
 			my ($client,$funct,$functarg) = @_;
 
-			my @timedigits = timeDigits($client, $client->modeParam('valueRef'));
+			my @timedigits = Slim::Utils::DateTime::timeDigits($client->modeParam('valueRef'));
 
 			scroll($client, $client->knobPos() - $timedigits[$client->modeParam('cursorPos')]);
 		}
@@ -122,7 +123,7 @@
 			}
 			
 			my $valueRef = $client->modeParam('valueRef');
-			my ($h0, $h1, $m0, $m1, $p) = timeDigits($client,$valueRef);
+			my ($h0, $h1, $m0, $m1, $p) = Slim::Utils::DateTime::timeDigits($valueRef);
 
 			$p = (defined $p && $p eq 'PM') ? 1 : 0;
 			
@@ -191,7 +192,7 @@
 				}
 			}
 			
-			$$valueRef = timeDigitsToTime($h0, $h1, $m0, $m1, $p);
+			$$valueRef = Slim::Utils::DateTime::timeDigitsToTime($h0, $h1, $m0, $m1, $p);
 	
 			Slim::Utils::Timers::setTimer($client, Time::HiRes::time() + Slim::Utils::Prefs::get("displaytexttimeout"), \&nextChar);
 			
@@ -244,9 +245,15 @@
 		$line1 = $client->string($line1);
 	}
 	
-	my $timestring = timeString($client,timeDigits($client,$client->modeParam('valueRef')));
-	
-	if (!defined($timestring)) { return ( {} ); }
+	my $timestring = timeString($client, 
+		Slim::Utils::DateTime::timeDigits($client->modeParam('valueRef'))
+	);
+	
+	if (!defined($timestring)) {
+
+		return {};
+	}
+
 	$line2 = $timestring;
 	
 	return {
@@ -271,7 +278,7 @@
 
 	# The knob on Transporter needs to be prepopulated with list lengths
 	# for proper scrolling.
-	my @timedigits = timeDigits($client, $client->modeParam('valueRef'));
+	my @timedigits = Slim::Utils::DateTime::timeDigits($client->modeParam('valueRef'));
 
 	prepKnob($client, \@timedigits);
 }
@@ -333,71 +340,6 @@
 	return 1;
 }
 
-=head2 timeDigits( $client, $timeRef)
-
-This function converts a unix time value to the individual values for hours, minutes and am/pm
-
-Takes as arguments, the $client object/structure and a reference to the scalar time value.
-
-=cut
-
-sub timeDigits {
-	my $client = shift;
-	my $timeRef = shift;
-	my $time;
-
-	if (ref($timeRef))  {
-		$time = $$timeRef || 0;
-
-	} else {
-		$time = $timeRef || 0;
-	}
-
-	my $h = int($time / (60*60));
-	my $m = int(($time - $h * 60 * 60) / 60);
-	my $p = undef;
-
-	if (Slim::Utils::Prefs::get('timeFormat') =~ /%p/) {
-		$p = 'AM';
-
-		if ($h > 11) { $h -= 12; $p = 'PM'; }
-
-		if ($h == 0) { $h = 12; }
-	} #else { $p = " "; };
-
-	if ($h < 10) { $h = '0' . $h; }
-
-	if ($m < 10) { $m = '0' . $m; }
-
-	my $h0 = substr($h, 0, 1);
-	my $h1 = substr($h, 1, 1);
-	my $m0 = substr($m, 0, 1);
-	my $m1 = substr($m, 1, 1);
-
-	return ($h0, $h1, $m0, $m1, $p);
-}
-
-=head2 timeDigitsToTime( $h0, $h1, $m0, $m1, $p)
-
-This function converts discreet time digits into a scalar time value.  It is the reverse of timeDigits()
-
-Takes as arguments, the hour ($h0, $h1), minute ($m0, $m1) and whether time is am or pm if applicable ($p)
-
-=cut
-
-sub timeDigitsToTime {
-	my ($h0, $h1, $m0, $m1, $p) = @_;
-
-	$p ||= 0;
-	
-	my $time = (((($p * 12)            # pm adds 12 hours
-	         + ($h0 * 10) + $h1) * 60) # convert hours to minutes
-	         + ($m0 * 10) + $m1) * 60; # then  minutes to seconds
-
-	return $time;
-}
-
-
 =head2 timeString( $client, $h0, $h1, $m0, $m1, $p, $c)
 
 This function converts the discrete time digits into a time string for use with a player display hash.
@@ -469,7 +411,7 @@
 	$client->modeParam('cursorPos',$cursorPos);
 	$client->update();
 	
-	prepKnob($client, [ timeDigits($client,$client->modeParam('valueRef')) ]);
+	prepKnob($client, [ Slim::Utils::DateTime::timeDigits($client->modeParam('valueRef')) ]);
 }
 
 sub scroll {
@@ -487,7 +429,8 @@
 		$onChange->(@args);
 	}
 
-	my @timedigits = timeDigits($client, $client->modeParam('valueRef'));
+	my @timedigits = Slim::Utils::DateTime::timeDigits($client->modeParam('valueRef'));
+
 	$client->modeParam('listIndex', $timedigits[$client->modeParam('cursorPos')]);
 	$client->updateKnob();
 
@@ -556,10 +499,11 @@
 		}
 
 	} else {
+
 		$valueRef = $client->modeParam('valueRef');
 	}
 	
-	my ($h0, $h1, $m0, $m1, $p) = timeDigits($client,$valueRef);
+	my ($h0, $h1, $m0, $m1, $p) = Slim::Utils::DateTime::timeDigits($valueRef);
 
 	my $ampm = (Slim::Utils::Prefs::get('timeFormat') =~ /%p/);
 	
@@ -612,7 +556,7 @@
 		}
 	}
 	
-	$$valueRef = timeDigitsToTime($h0, $h1, $m0, $m1, $p);
+	$$valueRef = Slim::Utils::DateTime::timeDigitsToTime($h0, $h1, $m0, $m1, $p);
 	
 	return $$valueRef;
 }

Modified: trunk/server/Slim/Utils/DateTime.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Utils/DateTime.pm?rev=10822&r1=10821&r2=10822&view=diff
==============================================================================
--- trunk/server/Slim/Utils/DateTime.pm (original)
+++ trunk/server/Slim/Utils/DateTime.pm Fri Dec  1 14:25:20 2006
@@ -7,8 +7,10 @@
 
 use strict;
 
+use Date::Parse;
 use POSIX qw(strftime);
 
+use Slim::Utils::Prefs;
 use Slim::Utils::Unicode;
 
 =head1 NAME 
@@ -114,6 +116,110 @@
 	$frac = substr($fracrounded, -2, 2);
 									
 	return "$min:$sec.$frac";
+}
+
+=head2 secsToPrettyTime( $seconds )
+
+Turns seconds into HH:MM AM/PM
+
+=cut
+
+sub secsToPrettyTime {
+	my $secs = shift;
+
+	my ($h0, $h1, $m0, $m1, $p) = timeDigits($secs);
+
+	my $string = ' ';
+
+	if (!defined $p || $h0 != 0) {
+
+		$string = $h0;
+	}
+
+	$string .= "$h1:$m0$m1 ";
+
+	if (defined $p) {
+		$string .= $p;
+	}
+
+	return $string;
+}
+
+=head2 prettyTimeToSecs( "HH:MM AM/PM" ) 
+
+Turns a pretty time string into seconds.
+
+=cut
+
+sub prettyTimeToSecs {
+	my $secs = shift;
+
+	my ($mm,$hh) = (strptime($secs))[1,2];
+
+	return ($hh*3600) + ($mm*60);
+}
+
+=head2 timeDigits( $time )
+
+This function converts a unix time value to the individual values for hours, minutes and am/pm
+
+Takes as arguments, the $client object/structure and a reference to the scalar time value.
+
+=cut
+
+sub timeDigits {
+	my $timeRef = shift;
+	my $time;
+
+	if (ref($timeRef))  {
+		$time = $$timeRef || 0;
+
+	} else {
+		$time = $timeRef || 0;
+	}
+
+	my $h = int($time / (60*60));
+	my $m = int(($time - $h * 60 * 60) / 60);
+	my $p = undef;
+
+	if (Slim::Utils::Prefs::get('timeFormat') =~ /%p/) {
+		$p = 'AM';
+
+		if ($h > 11) { $h -= 12; $p = 'PM'; }
+
+		if ($h == 0) { $h = 12; }
+	} #else { $p = " "; };
+
+	if ($h < 10) { $h = '0' . $h; }
+
+	if ($m < 10) { $m = '0' . $m; }
+
+	my $h0 = substr($h, 0, 1);
+	my $h1 = substr($h, 1, 1);
+	my $m0 = substr($m, 0, 1);
+	my $m1 = substr($m, 1, 1);
+
+	return ($h0, $h1, $m0, $m1, $p);
+}
+
+=head2 timeDigitsToTime( $h0, $h1, $m0, $m1, $p)
+
+This function converts discreet time digits into a scalar time value.  It is the reverse of timeDigits()
+
+Takes as arguments, the hour ($h0, $h1), minute ($m0, $m1) and whether time is am or pm if applicable ($p)
+
+=cut
+
+sub timeDigitsToTime {
+	my ($h0, $h1, $m0, $m1, $p) = @_;
+
+	$p ||= 0;
+	
+	my $time = (((($p * 12)            # pm adds 12 hours
+	         + ($h0 * 10) + $h1) * 60) # convert hours to minutes
+	         + ($m0 * 10) + $m1) * 60; # then  minutes to seconds
+
+	return $time;
 }
 
 =head2 timeFormats()

Modified: trunk/server/Slim/Utils/PluginManager.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Utils/PluginManager.pm?rev=10822&r1=10821&r2=10822&view=diff
==============================================================================
--- trunk/server/Slim/Utils/PluginManager.pm (original)
+++ trunk/server/Slim/Utils/PluginManager.pm Fri Dec  1 14:25:20 2006
@@ -41,6 +41,15 @@
 	'Picks'            => 1,
 	'iTunes'           => 1,
 	'RandomPlay'       => 1,
+	'CLI'              => 1,
+	'RPC'              => 1,
+	'RssNews'          => 1,
+	'Rescan'           => 1,
+	'SavePlaylist'     => 1,
+	'SlimTris'         => 1,
+	'Snow'             => 1,
+	'Visualizer'       => 1,
+	'xPL'              => 1,
 );
 
 my $log = logger('server.plugins');

Modified: trunk/server/Slim/Web/Settings/Player/Alarm.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Web/Settings/Player/Alarm.pm?rev=10822&r1=10821&r2=10822&view=diff
==============================================================================
--- trunk/server/Slim/Web/Settings/Player/Alarm.pm (original)
+++ trunk/server/Slim/Web/Settings/Player/Alarm.pm Fri Dec  1 14:25:20 2006
@@ -10,6 +10,7 @@
 use strict;
 use base qw(Slim::Web::Settings);
 
+use Slim::Utils::DateTime;
 use Slim::Utils::Log;
 
 sub name {
@@ -61,25 +62,14 @@
 
 					if ($pref eq 'alarmtime') {
 
-						my $time    = $paramRef->{'alarmtime'.$i};
-						my $newtime = 0;
+						my $newTime = Slim::Utils::DateTime::prettyTimeToSecs($paramRef->{"alarmtime$i"});
 
-						$time =~ s{
-							^(0?[0-9]|1[0-9]|2[0-4]):([0-5][0-9])\s*(P|PM|A|AM)?$
-						}{
-							if (defined $3) {
-								$newtime = ($1 == 12?0:$1 * 60 * 60) + ($2 * 60) + ($3 =~ /P/?12 * 60 * 60:0);
-							} else {
-								$newtime = ($1 * 60 * 60) + ($2 * 60);
-							}
-						}iegsx;
-
-						if ($newtime != $client->prefGet('alarmtime', $i)) {
+						if ($newTime != $client->prefGet('alarmtime', $i)) {
 
 							push @changed, 'alarmtime'.$i;
 						}
 
-						$client->prefSet('alarmtime', $newtime, $i);
+						$client->prefSet('alarmtime', $newTime, $i);
 
 					} else {
 					
@@ -90,7 +80,6 @@
 					}
 				}
 			}
-
 		}
 		
 		$class->_handleChanges($client, \@changed, $paramRef);
@@ -132,24 +121,11 @@
 
 			for my $i (0..7) {
 
-				my $time = $client->prefGet('alarmtime',$i);
+				my $time = Slim::Utils::DateTime::secsToPrettyTime(
+					$client->prefGet('alarmtime', $i)
+				);
 				
-				my ($h0, $h1, $m0, $m1, $p) = Slim::Buttons::Input::Time::timeDigits($client,$time);
-
-				my $timestring = ' ';
-
-				if (!defined $p || $h0 != 0) {
-
-					$timestring = $h0;
-				}
-
-				$timestring .= "$h1:$m0$m1 ";
-
-				if (defined $p) {
-					$timestring .= $p;
-				}
-				
-				${$paramRef->{'prefs'}->{'alarmtime'}}[$i] = $timestring;
+				${$paramRef->{'prefs'}->{'alarmtime'}}[$i] = $time;
 			}
 		}
 	}



More information about the checkins mailing list