Index: Slim/Menu/TrackInfo.pm =================================================================== --- Slim/Menu/TrackInfo.pm (revision 21532) +++ Slim/Menu/TrackInfo.pm (working copy) @@ -27,6 +27,7 @@ use Slim::Utils::Log; use Slim::Utils::Strings qw(cstring); +use POSIX qw(floor); my $log = logger('menu.trackinfo'); @@ -1080,18 +1081,60 @@ return $items; } +sub changeRating { + my $client = shift; + my $callback = shift; + my $track = shift; + + my $rating = Slim::Schema->rating($track) || 0; + my $currentRating = floor(($rating+10)/20)*20; + + my @item = (); + for my $value (qw(0 20 40 60 80 100)) { + my $ratingValue = { + 'type' => 'link', + 'name' => cstring($client, 'RATING') . cstring($client, 'COLON') . ' ' .$value.'/100', + 'value' => $value, + 'url' => sub { + my $client = shift; + my $callback = shift; + my $passthrough = shift; + + Slim::Schema->rating($track,$value); + $callback->({ + 'type' => 'text', + 'refresh' => 1, + 'popback' => 2, + 'showBriefly' => 1, + 'name' => cstring($client, 'NEW_RATING').' '.$value, + }); + }, + }; + push @item,$ratingValue; + } + $callback->(\@item); +} + sub infoRating { my ( $client, $url, $track ) = @_; my $item; - if ( my $rating = Slim::Schema->rating($track) ) { - $item = { - type => 'text', - name => cstring($client, 'RATING') . cstring($client, 'COLON') . ' ' . $rating, - }; - } - + my $rating = Slim::Schema->rating($track) || 0; + $item = { + type => 'link', + name => cstring($client, 'RATING') . cstring($client, 'COLON') . ' ' . $rating.'/100', + url => \&changeRating, + passthrough => [$track], + web => { + type => 'htmltemplate', + value => "ratingcontrols.html", + params => { + 'currentRating' => $rating, + 'trackid' => $track->id, + }, + }, + }; return $item; } Index: HTML/EN/ratingcontrols.html =================================================================== --- HTML/EN/ratingcontrols.html (revision 0) +++ HTML/EN/ratingcontrols.html (revision 0) @@ -0,0 +1,30 @@ +[% "RATING" | string %][% "COLON" | string %] + +[% FOR ratingstar IN [20,40,60,80,100] %] + [% ratingstarlow = ratingstar - 10 %] + + + +[% END %] + Index: strings.txt =================================================================== --- strings.txt (revision 21532) +++ strings.txt (working copy) @@ -16047,3 +16047,6 @@ MOREINFO EN More Info + +NEW_RATING + EN New rating