--- Slim/Buttons/BrowseDB.pm 2006-07-25 06:46:00.000000000 -0700 +++ Slim/Buttons/BrowseDB.pm.new 2006-07-25 11:50:44.304687500 -0700 @@ -272,7 +267,7 @@ sub init { for my $import (keys %{$Imports}) { - if (defined $Imports->{$import}->{'mixer'} && $Imports->{$import}->{'use'}) { + if (defined $Imports->{$import}->{'mixer'} && $Imports->{$import}->{'use'} && $import->mixable($currentItem)) { push @mixers, $import; } } @@ -289,7 +284,10 @@ sub init { 'parentParams' => $client->modeParameterStack(-1), 'listRef' => \@mixers, - 'stringExternRef' => 1, + 'externRef' => sub { + return $_[0]->string($_[1]->title()); + }, + 'externRefArgs' => 'CV', 'header' => 'CREATE_MIX', 'headerAddCount' => 1, 'stringHeader' => 1, @@ -597,8 +595,12 @@ sub browsedbOverlay { return (undef, Slim::Display::Display::symbol('rightarrow')); } # Music Magic is everywhere, MoodLogic doesn't exist on albums - elsif (($item->can('moodlogic_mixable') && $item->moodlogic_mixable()) || $item->musicmagic_mixable()) { - $overlay1 = Slim::Display::Display::symbol('mixable'); + else { + for my $import (keys %{$Imports}) { + if ($import->mixable($currentItem)) { + $overlay1 = Slim::Display::Display::symbol('mixable'); + } + } } if ($client->param('descend')) { --- Plugins/MusicMagic/Plugin.pm 2006-07-25 12:03:00.976562500 -0700 +++ Plugins/MusicMagic/Plugin.pm.new 2006-07-25 12:02:54.539062500 -0700 @@ -100,7 +100,7 @@ sub shutdownPlugin { # set importer to not use, but only for this session. # leave server pref as is to support reenabling the features, # without needing a forced rescan - #Slim::Music::Import->useImporter('MUSICMAGIC',0); + #Slim::Music::Import->useImporter('Plugins::MusicMagic::Plugin',0); } sub initPlugin { @@ -152,15 +152,16 @@ sub initPlugin { #checker($initialized); + my $class = 'Plugins::MusicMagic::Plugin'; # addImporter for Plugins, may include mixer function, setup function, mixerlink reference and use on/off. - Slim::Music::Import->addImporter('MUSICMAGIC', { + Slim::Music::Import->addImporter($class, { 'mixer' => \&mixerFunction, 'setup' => \&addGroups, 'mixerlink' => \&mixerlink, 'use' => 1, }); - Slim::Music::Import->useImporter('MUSICMAGIC', Slim::Utils::Prefs::get('musicmagic')); + Slim::Music::Import->useImporter($class, Slim::Utils::Prefs::get($class->prefName)); Slim::Player::ProtocolHandlers->registerHandler('musicmagicplaylist', 0); @@ -369,6 +370,27 @@ sub grabFilters { return %filterHash; } +sub prefName { + my $class = shift; + return lc($class->title()); +} + +sub title { + my $class = shift; + return 'MUSICMAGIC'; +} + +sub mixable { + my $class = shift; + my $item = shift; + + if (ref $item) { + return $item->musicmagic_mixable(); + } else { + return; + } +} + sub grabMoods { my @moods; my %moodHash; @@ -563,7 +585,7 @@ sub mixerlink { if (canUseMusicMagic() && Slim::Utils::Prefs::get('musicmagic')) { # set up a musicmagic link - $form->{'mixerlinks'}{'MUSICMAGIC'} = "plugins/MusicMagic/mixerlink.html"; + $form->{'mixerlinks'}{Plugins::MusicMagic::Plugin->title()} = "plugins/MusicMagic/mixerlink.html"; # flag if mixable if (($item->can('musicmagic_mixable') && $item->musicmagic_mixable) || @@ -946,7 +968,7 @@ sub setupUse { Slim::Buttons::Home::updateMenu($client); } - Slim::Music::Import->useImporter('MUSICMAGIC',$changeref->{'musicmagic'}{'new'}); + Slim::Music::Import->useImporter('Plugins::MusicMagic::Plugin',$changeref->{'musicmagic'}{'new'}); }, 'optionSort' => 'KR', --- Plugins/MoodLogic/Plugin.pm 2006-07-25 12:02:41.914062500 -0700 +++ Plugins/MoodLogic/Plugin.pm.new 2006-07-25 12:02:36.023437500 -0700 @@ -68,7 +68,28 @@ sub shutdownPlugin { # set importer to not use #Slim::Utils::Prefs::set('moodlogic', 0); - Slim::Music::Import->useImporter('MOODLOGIC',0); + Slim::Music::Import->useImporter('Plugins::MoodLogic::Plugin',0); +} + +sub prefName { + my $class = shift; + return lc($class->title()); +} + +sub title { + my $class = shift; + return 'MOODLOGIC'; +} + +sub mixable { + my $class = shift; + my $item = shift; + + if (ref $item && $item->can('moodlogic_mixable')) { + return $item->moodlogic_mixable(); + } else { + return; + } } sub initPlugin { @@ -135,16 +156,18 @@ sub initPlugin { #Slim::Utils::Strings::addStrings($strings); Slim::Player::ProtocolHandlers->registerHandler("moodlogicplaylist", "0"); + + my $class = 'Plugins::MoodLogic::Plugin'; # addImporter for Plugins, may include mixer function, setup function, mixerlink reference and use on/off. - Slim::Music::Import->addImporter('MOODLOGIC', { + Slim::Music::Import->addImporter($class, { 'mixer' => \&mixerFunction, 'setup' => \&addGroups, 'mixerlink' => \&mixerlink, 'use' => 1, }); - Slim::Music::Import->useImporter('MOODLOGIC',Slim::Utils::Prefs::get('moodlogic')); + Slim::Music::Import->useImporter($class,Slim::Utils::Prefs::get($class->prefName)); addGroups(); Plugins::MoodLogic::InstantMix::init(); @@ -266,7 +289,7 @@ sub mixerlink { if (canUseMoodLogic() && Slim::Utils::Prefs::get('moodlogic') && $form->{'levelName'} ne 'album') { #set up a moodlogic link - $form->{'mixerlinks'}{'MOODLOGIC'} = "plugins/MoodLogic/mixerlink.html"; + $form->{'mixerlinks'}{Plugins::MoodLogic::Plugin->title()} = "plugins/MoodLogic/mixerlink.html"; #flag if mixable if ($item->can('moodlogic_mixable') && $item->moodlogic_mixable) {