my $client = shift; my $button = shift; my $buttonarg = shift; my $playdisp = undef; if (defined $buttonarg && $buttonarg eq "add") { my $list = $client->modeParam('listRef'); if ($list) { my $obj = $list->[$client->modeParam('listIndex')]; my $title; my $url; if (blessed($obj) && $obj->can('url')) { $url = $obj->url; } elsif (ref($obj) eq 'HASH') { $url = $obj->{'url'}; } if (blessed($obj) && $obj->can('name')) { $title = $obj->name; }elsif (ref($obj) eq 'HASH') { $title = $obj->{'name'}; } else { $title = Slim::Music::Info::standardTitle($client, $obj); } if ($url && $title) { Slim::Utils::Favorites->clientAdd($client, $url, $title); $client->showBriefly($client->string('FAVORITES_ADDING'), $title); } else { $::d_favorites && msg("list item is missing url or title, not adding favorite\n"); $::d_favorites && msg(Data::Dumper::Dumper($obj)); } } else { $::d_favorites && msg("Favorites: no valid list found!\n"); $::d_favorites && Slim::Utils::Misc::bt(); } } elsif (mode($client) ne 'FAVORITES') { setMode($client, 'home'); Slim::Buttons::Home::jump($client, 'FAVORITES'); Slim::Buttons::Common::pushModeLeft($client, 'FAVORITES'); } },