Index: Slim/Buttons/XMLBrowser.pm =================================================================== --- Slim/Buttons/XMLBrowser.pm (revision 20214) +++ Slim/Buttons/XMLBrowser.pm (working copy) @@ -774,7 +774,7 @@ if ( $item->{type} eq 'radio' ) { # Display check box overlay for type=radio my $default = $item->{default}; - $overlay = Slim::Buttons::Common::checkBoxOverlay( $client, $default eq $item->{name} ); + $overlay = Slim::Buttons::Common::radioButtonOverlay( $client, $default eq $item->{name} ); } elsif ( $item->{type} ne 'text' && ( hasDescription($item) || hasLink($item) ) ) { Index: Slim/Buttons/Input/Choice.pm =================================================================== --- Slim/Buttons/Input/Choice.pm (revision 20214) +++ Slim/Buttons/Input/Choice.pm (working copy) @@ -461,7 +461,11 @@ # assume a single non-descending list of items, 'pref' item must be given in the params my $val = ref $pref eq 'CODE' ? $pref->($client) : preferences('server')->client($client)->get($pref); - $overlay2 = Slim::Buttons::Common::checkBoxOverlay($client, $val eq getItemValue($client)); + if (scalar(@$listRef) == 1) { + $overlay2 = Slim::Buttons::Common::checkBoxOverlay($client, $val eq getItemValue($client)); + } else { + $overlay2 = Slim::Buttons::Common::radioButtonOverlay($client, $val eq getItemValue($client)); + } } my $parts = { Index: Slim/Buttons/Common.pm =================================================================== --- Slim/Buttons/Common.pm (revision 20214) +++ Slim/Buttons/Common.pm (working copy) @@ -1687,20 +1687,20 @@ =cut -# standard UI feature enable/disable a setting +# standard UI feature multi-select list sub checkBoxOverlay { my $client = shift; my $value = shift; unless (blessed($client) && $client->isa('Slim::Player::Client')) { - logBacktrace("Plugins must now provide client when calling checkBoxOverlay!"); + logBacktrace("Plugins must provide client when calling checkBoxOverlay!"); $value = $client; } elsif ($client->display->isa('Slim::Display::Graphics')) { - return $client->symbols( $value ? 'filledcircle' : 'circle' ); + return $client->symbols( $value ? 'filledsquare' : 'square' ); } return $value ? "[X]" : "[ ]"; @@ -1711,6 +1711,31 @@ return $client->modeParam(@_); } +# standard UI feature enable/disable a setting +sub radioButtonOverlay { + my $client = shift; + my $value = shift; + + unless (blessed($client) && $client->isa('Slim::Player::Client')) { + + logBacktrace("Plugins must now provide client when calling radioButtonOverlay!"); + + $value = $client; + + } elsif ($client->display->isa('Slim::Display::Graphics')) { + + return $client->symbols( $value ? 'filledcircle' : 'circle' ); + } + + return $value ? "(O)" : "( )"; +} + +sub param { + my $client = shift; + return $client->modeParam(@_); +} + + =head2 pushMode ( $client, $setmode, [ $paramHashRef ]) Push the next mode onto the client's mode stack.