extend searchdialog / SearchResult to properly support headphone profiles
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
"github.com/dweymouth/supersonic/backend"
|
||||
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
||||
"github.com/dweymouth/supersonic/sharedutil"
|
||||
"github.com/dweymouth/supersonic/ui/theme"
|
||||
"github.com/dweymouth/supersonic/ui/util"
|
||||
)
|
||||
|
||||
@@ -70,8 +71,9 @@ func (ab *AutoEQBrowser) profileToSearchResult(profile backend.AutoEQProfileMeta
|
||||
|
||||
return &mediaprovider.SearchResult{
|
||||
Name: profile.Name,
|
||||
ID: profile.Path, // Store path as ID for retrieval
|
||||
Type: mediaprovider.ContentTypeAlbum, // Use album icon (looks like headphones)
|
||||
Icon: theme.HeadphonesIcon, // Use headphone icon for all profiles
|
||||
ID: profile.Path, // Store path as ID for retrieval
|
||||
Type: mediaprovider.ContentTypeOther, // Use "Other" content type for AutoEQ profiles
|
||||
ArtistName: subtitle,
|
||||
Size: 0, // Don't show track count
|
||||
}
|
||||
|
||||
+24
-10
@@ -272,7 +272,11 @@ func (s *searchResult) Update(result *mediaprovider.SearchResult) {
|
||||
}
|
||||
s.id = result.ID
|
||||
s.contentType = result.Type
|
||||
s.image.PlaceholderIcon = placeholderIconForContentType(result.Type)
|
||||
if result.Icon != nil {
|
||||
s.image.PlaceholderIcon = result.Icon
|
||||
} else {
|
||||
s.image.PlaceholderIcon = placeholderIconForContentType(result.Type)
|
||||
}
|
||||
s.imageLoader.Load(result.CoverID)
|
||||
s.title.SetText(result.Name)
|
||||
|
||||
@@ -300,19 +304,29 @@ func (s *searchResult) Update(result *mediaprovider.SearchResult) {
|
||||
} else {
|
||||
secondaryText = ""
|
||||
}
|
||||
case mediaprovider.ContentTypeOther:
|
||||
secondaryText = result.ArtistName
|
||||
}
|
||||
s.secondary.Segments = []widget.RichTextSegment{
|
||||
&widget.TextSegment{
|
||||
Text: result.Type.String(),
|
||||
Style: widget.RichTextStyle{SizeName: theme.SizeNameCaptionText, TextStyle: fyne.TextStyle{Bold: true}, Inline: true},
|
||||
},
|
||||
|
||||
if result.Type == mediaprovider.ContentTypeOther {
|
||||
s.secondary.Segments = []widget.RichTextSegment{}
|
||||
} else {
|
||||
s.secondary.Segments = []widget.RichTextSegment{
|
||||
&widget.TextSegment{
|
||||
Text: result.Type.String(),
|
||||
Style: widget.RichTextStyle{SizeName: theme.SizeNameCaptionText, TextStyle: fyne.TextStyle{Bold: true}, Inline: true},
|
||||
},
|
||||
}
|
||||
}
|
||||
if secondaryText != "" {
|
||||
if len(s.secondary.Segments) > 0 {
|
||||
s.secondary.Segments = append(s.secondary.Segments,
|
||||
&widget.TextSegment{
|
||||
Text: " · ",
|
||||
Style: widget.RichTextStyle{SizeName: theme.SizeNameCaptionText, Inline: true},
|
||||
})
|
||||
}
|
||||
s.secondary.Segments = append(s.secondary.Segments,
|
||||
&widget.TextSegment{
|
||||
Text: " · ",
|
||||
Style: widget.RichTextStyle{SizeName: theme.SizeNameCaptionText, Inline: true},
|
||||
},
|
||||
&widget.TextSegment{
|
||||
Text: secondaryText,
|
||||
Style: widget.RichTextStyle{SizeName: theme.SizeNameCaptionText, Inline: true},
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@ var (
|
||||
RadioIcon fyne.Resource = theme.NewThemedResource(res.ResBroadcastSvg)
|
||||
FavoriteIcon fyne.Resource = theme.NewThemedResource(res.ResHeartFilledSvg)
|
||||
NotFavoriteIcon fyne.Resource = theme.NewThemedResource(res.ResHeartOutlineSvg)
|
||||
NowPlayingIcon fyne.Resource = theme.NewThemedResource(res.ResHeadphonesSvg)
|
||||
HeadphonesIcon fyne.Resource = theme.NewThemedResource(res.ResHeadphonesSvg)
|
||||
PlaylistIcon fyne.Resource = theme.NewThemedResource(res.ResPlaylistSvg)
|
||||
PlayNextIcon fyne.Resource = theme.NewThemedResource(res.ResPlaylistAddNextSvg)
|
||||
PlayQueueIcon fyne.Resource = theme.NewThemedResource(res.ResPlayqueueSvg)
|
||||
|
||||
+1
-1
@@ -146,7 +146,7 @@ func (t *Toolbar) CreateRenderer() fyne.WidgetRenderer {
|
||||
}
|
||||
|
||||
func (t *Toolbar) setupNavigationButtons(navigateFn func(controller.Route)) {
|
||||
t.addNavigationButton(myTheme.NowPlayingIcon, controller.NowPlaying, func() {
|
||||
t.addNavigationButton(myTheme.HeadphonesIcon, controller.NowPlaying, func() {
|
||||
navigateFn(controller.NowPlayingRoute())
|
||||
})
|
||||
t.addNavigationButton(myTheme.FavoriteIcon, controller.Favorites, func() {
|
||||
|
||||
Reference in New Issue
Block a user