[Slim-Checkins] r11757 - in /trunk/server/Slim/Plugin/iTunes: Common.pm HTML/EN/plugins/iTunes/settings/itunes.html Importer.pm Plugin.pm Settings.pm

adrian at svn.slimdevices.com adrian at svn.slimdevices.com
Thu Apr 12 15:01:22 PDT 2007


Author: adrian
Date: Thu Apr 12 15:01:21 2007
New Revision: 11757

URL: http://svn.slimdevices.com?rev=11757&view=rev
Log:
Bug: N/A
Description: migrate itunes to new prefs

Modified:
    trunk/server/Slim/Plugin/iTunes/Common.pm
    trunk/server/Slim/Plugin/iTunes/HTML/EN/plugins/iTunes/settings/itunes.html
    trunk/server/Slim/Plugin/iTunes/Importer.pm
    trunk/server/Slim/Plugin/iTunes/Plugin.pm
    trunk/server/Slim/Plugin/iTunes/Settings.pm

Modified: trunk/server/Slim/Plugin/iTunes/Common.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Plugin/iTunes/Common.pm?rev=11757&r1=11756&r2=11757&view=diff
==============================================================================
--- trunk/server/Slim/Plugin/iTunes/Common.pm (original)
+++ trunk/server/Slim/Plugin/iTunes/Common.pm Thu Apr 12 15:01:21 2007
@@ -35,8 +35,11 @@
 use Slim::Utils::Log;
 use Slim::Utils::Misc;
 use Slim::Utils::Strings qw(string);
+use Slim::Utils::Prefs;
 
 my $log = logger('plugin.itunes');
+
+my $prefs = preferences('plugin.itunes');
 
 {
 	my $class = __PACKAGE__;
@@ -56,10 +59,10 @@
 	my $newValue = shift;
 
 	if (defined($newValue)) {
-		Slim::Utils::Prefs::set('itunes', $newValue);
-	}
-
-	my $use = Slim::Utils::Prefs::get('itunes');
+		$prefs->set('itunes', $newValue);
+	}
+
+	my $use = $prefs->get('itunes');
 	my $can = $class->canUseiTunesLibrary();
 
 	Slim::Music::Import->useImporter($class, $use && $can);
@@ -147,7 +150,7 @@
 sub findMusicLibraryFile {
 	my $class = shift;
 
-	my $explicit_xml_path = Slim::Utils::Prefs::get('itunes_library_xml_path');
+	my $explicit_xml_path = $prefs->get('xml_file');
 
 	if ($explicit_xml_path) {
 
@@ -170,7 +173,7 @@
 
 		$log->info("Found path via iTunes preferences at: $path");
 
-		Slim::Utils::Prefs::set( 'itunes_library_xml_path', $path );
+		$prefs->set('xml_file', $path );
 
 		return $path;
 	}
@@ -181,7 +184,7 @@
 
 		$log->info("Found path via Windows registry at: $path");
 
-		Slim::Utils::Prefs::set( 'itunes_library_xml_path', $path );
+		$prefs->set('xml_file', $path );
 
 		return $path;
 	}
@@ -238,7 +241,7 @@
 
 	if ($fileMTime > $lastiTunesChange) {
 
-		my $scanInterval = Slim::Utils::Prefs::get('itunesscaninterval');
+		my $scanInterval = $prefs->get('scan_interval');
 
 		$log->debug("lastiTunesChange: " . scalar localtime($lastiTunesChange));
 		$log->debug("lastScanTime    : $lastScanTime");
@@ -283,7 +286,7 @@
 	my $stripped = $class->strip_automounter($location);
 
 	# on non-mac or windows, we need to substitute the itunes library path for the one in the iTunes xml file
-	my $explicit_path = Slim::Utils::Prefs::get('itunes_library_music_path');
+	my $explicit_path = $prefs->get('music_path');
 
 	if ( $explicit_path && !$fallback ) {
 
@@ -333,29 +336,28 @@
 sub checkDefaults {
 	my $class = shift;
 
-	if (!Slim::Utils::Prefs::isDefined('itunesscaninterval')) {
-
-		Slim::Utils::Prefs::set('itunesscaninterval', $class->iTunesScanInterval);
-	}
-
-	if (!Slim::Utils::Prefs::isDefined('iTunesplaylistprefix')) {
-		Slim::Utils::Prefs::set('iTunesplaylistprefix','iTunes: ');
-	}
-
-	if (!Slim::Utils::Prefs::isDefined('iTunesplaylistsuffix')) {
-		Slim::Utils::Prefs::set('iTunesplaylistsuffix','');
-	}
-
-	if (!Slim::Utils::Prefs::isDefined('ignoredisableditunestracks')) {
-		Slim::Utils::Prefs::set('ignoredisableditunestracks',0);
-	}
-
-	if (!Slim::Utils::Prefs::isDefined('lastITunesMusicLibraryDate')) {
-		Slim::Utils::Prefs::set('lastITunesMusicLibraryDate',0);
-	}
-
-	if (!Slim::Utils::Prefs::isDefined('itunes') && defined findMusicLibraryFile()) {
-		Slim::Utils::Prefs::set('itunes', 1);
+	if (!defined $prefs->get('scan_interval')) {
+		$prefs->set('scan_interval', $class->iTunesScanInterval);
+	}
+
+	if (!defined $prefs->get('playlist_prefix')) {
+		$prefs->set('playlist_prefix','iTunes: ');
+	}
+
+	if (!defined $prefs->get('playlist_suffix')) {
+		$prefs->set('playlist_suffix','');
+	}
+
+	if (!defined $prefs->get('ignore_disabled')) {
+		$prefs->set('ignore_disabled',0);
+	}
+
+	if (!defined $prefs->get('lastITunesMusicLibraryDate')) {
+		$prefs->set('lastITunesMusicLibraryDate',0);
+	}
+
+	if (!defined $prefs->get('itunes') && defined findMusicLibraryFile()) {
+		$prefs->set('itunes', 1);
 	}
 }
 

Modified: trunk/server/Slim/Plugin/iTunes/HTML/EN/plugins/iTunes/settings/itunes.html
URL: http://svn.slimdevices.com/trunk/server/Slim/Plugin/iTunes/HTML/EN/plugins/iTunes/settings/itunes.html?rev=11757&r1=11756&r2=11757&view=diff
==============================================================================
--- trunk/server/Slim/Plugin/iTunes/HTML/EN/plugins/iTunes/settings/itunes.html (original)
+++ trunk/server/Slim/Plugin/iTunes/HTML/EN/plugins/iTunes/settings/itunes.html Thu Apr 12 15:01:21 2007
@@ -4,19 +4,15 @@
 		<div class="prefHead">[% "ITUNES" | string | upper %]</div>
 		<div class="prefDesc">[% "SETUP_ITUNES_DESC" | string %]</div>
 
-		<input type="checkbox" [% IF prefs.itunes %]checked [% END %] class="stdedit" name="itunes" id="itunes" />
+		<input type="checkbox" [% IF prefs.itunes %]checked [% END %] class="stdedit" name="itunes" />
 
-		<!--
-		<option [% IF NOT prefs.itunes %]selected [% END %]value="0">[% 'DONT_USE_ITUNES' | getstring %]</option>
-		<option [% IF prefs.itunes %]selected [% END %]value="1">[% 'USE_ITUNES' | getstring %]</option>
-		-->
 	</div>
 
 	<div class="settingSection">
 		<div class="prefHead">[% "SETUP_ITUNESSCANINTERVAL" | string | upper %]</div>
 		<div class="prefDesc">[% "SETUP_ITUNESSCANINTERVAL_DESC" | string %]</div>
 
-		<input type="text" class="stdedit" name="itunesscaninterval" id="itunesscaninterval" value="[% prefs.itunesscaninterval %]" size="5">
+		<input type="text" class="stdedit" name="scan_interval" value="[% prefs.scan_interval %]" size="5">
 	</div>
 
 	<div class="settingSection">
@@ -24,13 +20,13 @@
 		<div class="groupHead">[% "SETUP_IGNOREDISABLEDITUNESTRACKS" | string | upper %]</div>
 		<div class="groupDesc">[% "SETUP_IGNOREDISABLEDITUNESTRACKS_DESC" | string %]</div>
 
-		<select class="stdedit" name="ignoredisableditunestracks" id="rescantype">
+		<select class="stdedit" name="ignore_disabled" id="rescantype">
 
-			<option value="0" [% IF NOT prefs.ignoredisableditunestracks %]selected[% END %]>
+			<option value="0" [% IF NOT prefs.ignore_disabled %]selected[% END %]>
 				[% "SETUP_IGNOREDISABLEDITUNESTRACKS_0" | string %]
 			</option>
 
-			<option value="1" [% IF prefs.ignoredisableditunestracks %]selected[% END %]>
+			<option value="1" [% IF prefs.ignore_disabled %]selected[% END %]>
 				[% "SETUP_IGNOREDISABLEDITUNESTRACKS_1" | string %]
 			</option>
 
@@ -42,23 +38,23 @@
 		<div class="prefHead">[% "SETUP_ITUNES_LIBRARY_XML_PATH" | string | upper %]</div>
 		<div class="prefDesc">[% "SETUP_ITUNES_LIBRARY_XML_PATH_DESC" | string %]</div>
 
-		<input type="text" class="stdedit" name="itunes_library_xml_path" id="itunes_library_xml_path" value="[% prefs.itunes_library_xml_path %]" size="40">
+		<input type="text" class="stdedit" name="xml_file" value="[% prefs.xml_file %]" size="40">
 	</div>
 
 	<div class="settingSection">
 		<div class="prefHead">[% "SETUP_ITUNES_LIBRARY_MUSIC_PATH" | string | upper %]</div>
 		<div class="prefDesc">[% "SETUP_ITUNES_LIBRARY_MUSIC_PATH_DESC" | string %]</div>
 
-		<input type="text" class="stdedit" name="itunes_library_music_path" id="itunes_library_music_path" value="[% prefs.itunes_library_music_path %]" size="40">
+		<input type="text" class="stdedit" name="music_path" value="[% prefs.music_path %]" size="40">
 	</div>
 
 	<div class="settingSection">
 		<div class="groupHead">[% "SETUP_ITUNESPLAYLISTFORMAT" | string | upper %]</div>
 		<div class="groupDesc">[% "SETUP_ITUNESPLAYLISTFORMAT_DESC" | string %]</div>
 
-		[% "SETUP_PLAYLISTPREFIX_CHOOSE" | string %]<input type="text" class="stdedit" name="iTunesplaylistprefix" id="iTunesplaylistprefix" value="[% prefs.iTunesplaylistprefix %]" size="40">
+		[% "SETUP_PLAYLISTPREFIX_CHOOSE" | string %]<input type="text" class="stdedit" name="playlist_prefix" value="[% prefs.playlist_prefix %]" size="40">
 		<br>
-		[% "SETUP_PLAYLISTSUFFIX_CHOOSE" | string %]<input type="text" class="stdedit" name="iTunesplaylistsuffix" id="iTunesplaylistsuffix" value="[% prefs.iTunesplaylistsuffix %]" size="40">
+		[% "SETUP_PLAYLISTSUFFIX_CHOOSE" | string %]<input type="text" class="stdedit" name="playlist_suffix" value="[% prefs.playlist_suffix %]" size="40">
 	</div>
 
 [% PROCESS settings/footer.html %]

Modified: trunk/server/Slim/Plugin/iTunes/Importer.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Plugin/iTunes/Importer.pm?rev=11757&r1=11756&r2=11757&view=diff
==============================================================================
--- trunk/server/Slim/Plugin/iTunes/Importer.pm (original)
+++ trunk/server/Slim/Plugin/iTunes/Importer.pm Thu Apr 12 15:01:21 2007
@@ -23,6 +23,7 @@
 use Slim::Utils::Log;
 use Slim::Utils::Misc;
 use Slim::Utils::Strings qw(string);
+use Slim::Utils::Prefs;
 
 my $lastMusicLibraryFinishTime = undef;
 my $lastITunesMusicLibraryDate = 0;
@@ -40,6 +41,8 @@
 	'category'     => 'plugin.itunes',
 	'defaultLevel' => 'WARN',
 });
+
+my $prefs = preferences('plugin.itunes');
 
 # mac file types
 our %filetypes = (
@@ -72,7 +75,7 @@
 	Slim::Music::Import->addImporter($class, {
 		'reset'        => \&resetState,
 		'playlistOnly' => 1,
-		'use'          => Slim::Utils::Prefs::get('itunes'),
+		'use'          => $prefs->get('itunes'),
 	});
 
 	Slim::Player::ProtocolHandlers->registerHandler('itunesplaylist', 0);
@@ -245,7 +248,7 @@
 		# we want to fall back to the real file path from the XML file
 		#
 		# Bug 3717 - check this after we've checked the locale above.
-		if (!-e $file && Slim::Utils::Prefs::get('itunes_library_music_path')) {
+		if (!-e $file && $prefs->get('music_path')) {
 
 			$url  = $class->normalize_location($location, 'fallback');
 			$file = Slim::Utils::Misc::pathFromFileURL($url);
@@ -264,7 +267,7 @@
 	$tracks{$id} = $url;
 
 	# skip track if Disabled in iTunes
-	if ($curTrack->{'Disabled'} && !Slim::Utils::Prefs::get('ignoredisableditunestracks')) {
+	if ($curTrack->{'Disabled'} && !$prefs->get('ignore_disabled')) {
 
 		$log->info("Deleting disabled track $url");
 
@@ -436,8 +439,8 @@
 
 	$cacheEntry->{'CT'}    = 'itu';
 	$cacheEntry->{'TITLE'} = join($name, 
-		Slim::Utils::Prefs::get('iTunesplaylistprefix'),
-		Slim::Utils::Prefs::get('iTunesplaylistsuffix')
+		$prefs->get('playlist_prefix'),
+		$prefs->get('playlist_suffix')
 	);
 
 	Slim::Music::Info::updateCacheEntry($url, $cacheEntry);

Modified: trunk/server/Slim/Plugin/iTunes/Plugin.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Plugin/iTunes/Plugin.pm?rev=11757&r1=11756&r2=11757&view=diff
==============================================================================
--- trunk/server/Slim/Plugin/iTunes/Plugin.pm (original)
+++ trunk/server/Slim/Plugin/iTunes/Plugin.pm Thu Apr 12 15:01:21 2007
@@ -14,22 +14,17 @@
 use Slim::Utils::Log;
 use Slim::Utils::Misc;
 use Slim::Utils::Strings qw(string);
+use Slim::Utils::Prefs;
 
 my $log = Slim::Utils::Log->addLogCategory({
 	'category'     => 'plugin.itunes',
 	'defaultLevel' => 'WARN',
 });
 
+my $prefs = preferences('plugin.itunes');
+
 sub getDisplayName {
 	return 'SETUP_ITUNES';
-}
-
-sub enabled {
-	return ($::VERSION ge '6.1');
-}
-
-sub getFunctions {
-	return '';
 }
 
 sub initPlugin {
@@ -72,7 +67,7 @@
 	my $class     = shift;
 	my $firstTime = shift || 0;
 
-	if (!Slim::Utils::Prefs::get('itunes')) {
+	if (!$prefs->get('itunes')) {
 
 		return 0;
 	}
@@ -85,7 +80,7 @@
 	# make sure we aren't doing this more than once...
 	Slim::Utils::Timers::killTimers(0, \&checker);
 
-	my $interval = Slim::Utils::Prefs::get('itunesscaninterval') || 3600;
+	my $interval = $prefs->get('scan_interval') || 3600;
 
 	# the very first time, we do want to scan right away
 	if ($firstTime) {

Modified: trunk/server/Slim/Plugin/iTunes/Settings.pm
URL: http://svn.slimdevices.com/trunk/server/Slim/Plugin/iTunes/Settings.pm?rev=11757&r1=11756&r2=11757&view=diff
==============================================================================
--- trunk/server/Slim/Plugin/iTunes/Settings.pm (original)
+++ trunk/server/Slim/Plugin/iTunes/Settings.pm Thu Apr 12 15:01:21 2007
@@ -11,66 +11,61 @@
 use Slim::Utils::Log;
 use Slim::Utils::Misc;
 use Slim::Utils::Strings qw(string);
+use Slim::Utils::Prefs;
 
 my $log = Slim::Utils::Log->addLogCategory({
 	'category'     => 'plugin.itunes',
 	'defaultLevel' => 'WARN',
 });
 
+my $prefs = preferences('plugin.itunes');
+
+$prefs->migrate(1, sub {
+	$prefs->set('itunes',          Slim::Utils::Prefs::OldPrefs->get('itunes'));
+	$prefs->set('scan_interval',   Slim::Utils::Prefs::OldPrefs->get('itunesscaninterval')   || 3600      );
+	$prefs->set('ignore_disabled', Slim::Utils::Prefs::OldPrefs->get('ignoredisableditunestracks') || 0   );
+	$prefs->set('xml_file',        Slim::Utils::Prefs::OldPrefs->get('itunes_library_xml_path')           );
+	$prefs->set('music_path',      Slim::Utils::Prefs::OldPrefs->get('itunes_library_music_path')         );
+	$prefs->set('playlist_prefix', Slim::Utils::Prefs::OldPrefs->get('iTunesplaylistprefix') || 'iTunes: ');
+	$prefs->set('playlist_suffix', Slim::Utils::Prefs::OldPrefs->get('iTunesplaylistsuffix') || ''        );
+
+	$prefs->set('itunes', 1) unless defined $prefs->get('itunes'); # default to on if not previously set
+	1;
+});
+
+$prefs->setValidate('num', 'scan_interval');
+$prefs->setValidate( sub { !$_[1] || -e $_[1] }, 'xml_file');   # empty or a file
+$prefs->setValidate( sub { !$_[1] || -d $_[1] }, 'music_path'); # empty or a directory
+
+$prefs->setChange(
+	sub {
+		Slim::Music::Import->useImporter('Plugin::iTunes::Plugin', $_[1]);
+
+		for my $c (Slim::Player::Client::clients()) {
+			Slim::Buttons::Home::updateMenu($c);
+		}
+	},
+'itunes');
+
 sub name {
-        return 'ITUNES';
+	return 'ITUNES';
 }
 
 sub page {
-        return 'plugins/iTunes/settings/itunes.html';
+	return 'plugins/iTunes/settings/itunes.html';
+}
+
+sub prefs {
+	return ($prefs, qw(itunes scan_interval ignore_disabled xml_file music_path playlist_prefix playlist_suffix));
 }
 
 sub handler {
-        my ($class, $client, $params) = @_;
-
-	# These are lame preference names.
-	my @prefs = qw(
-		itunes
-		itunesscaninterval
-		ignoredisableditunestracks
-		itunes_library_xml_path
-		itunes_library_music_path
-		iTunesplaylistprefix
-		iTunesplaylistsuffix
-	);
+	my ($class, $client, $params) = @_;
 
 	# Cleanup the checkbox
 	$params->{'itunes'} = defined $params->{'itunes'} ? 1 : 0;
 
-	if ($params->{'saveSettings'}) {
-
-		if ($params->{'itunes'} != Slim::Utils::Prefs::get('itunes')) {
-
-			for my $c (Slim::Player::Client::clients()) {
-
-				Slim::Buttons::Home::updateMenu($c);
-			}
-
-			Slim::Music::Import->useImporter('Plugin::iTunes::Plugin', $params->{'itunes'});
-		}
-
-		for my $pref (@prefs) {
-
-			# XXX - need validation!
-			#'itunesscaninterval' => { 'validate' => \&Slim::Utils::Validate::number, },
-			#'itunes_library_xml_path' => { 'validate' => \&Slim::Utils::Validate::isFile, },
-			#'itunes_library_music_path' => { 'validate' => \&Slim::Utils::Validate::isDir, },
-
-			Slim::Utils::Prefs::set($pref, $params->{$pref});
-		}
-	}
-
-	for my $pref (@prefs) {
-
-		$params->{'prefs'}->{$pref} = Slim::Utils::Prefs::get($pref);
-        }
-
-        return $class->SUPER::handler($client, $params);
+	return $class->SUPER::handler($client, $params);
 }
 
 1;



More information about the checkins mailing list