Show poster thumbnails in the detail panes
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
+11
-8
@@ -47,6 +47,7 @@ type libItem struct {
|
||||
status string
|
||||
size string
|
||||
details string
|
||||
cover coverRef
|
||||
movie *radarr.Movie
|
||||
series *sonarr.Series
|
||||
// File properties for the attribute filter. For series they are fetched on
|
||||
@@ -199,7 +200,7 @@ type libraryView struct {
|
||||
root *tview.Flex
|
||||
header *tview.TextView
|
||||
input *tview.InputField
|
||||
details *tview.TextView
|
||||
details *detailPane
|
||||
panes [2]*libPane
|
||||
|
||||
// UI-goroutine state.
|
||||
@@ -225,11 +226,10 @@ func newLibraryView(app *App, r *radarr.Client, s *sonarr.Client) *libraryView {
|
||||
app: app, radarr: r, sonarr: s,
|
||||
header: tview.NewTextView().SetDynamicColors(true),
|
||||
input: tview.NewInputField().SetLabel("Filter Movies: ").SetFieldWidth(0),
|
||||
details: tview.NewTextView().SetDynamicColors(true).SetWordWrap(true),
|
||||
details: newDetailPane(app),
|
||||
|
||||
seriesFiles: map[int]seriesFiles{},
|
||||
}
|
||||
v.details.SetBorder(true).SetTitle(" Details ")
|
||||
|
||||
lists := tview.NewFlex().SetDirection(tview.FlexRow) // movies above series
|
||||
for _, kind := range []libKind{kindMovies, kindSeries} {
|
||||
@@ -326,14 +326,18 @@ func (v *libraryView) reloadPane(p *libPane) {
|
||||
var movies []radarr.Movie
|
||||
if movies, err = v.radarr.Movies(ctx); err == nil {
|
||||
for _, m := range movies {
|
||||
items = append(items, newMovieItem(m))
|
||||
it := newMovieItem(m)
|
||||
it.cover = coverFor(v.radarr.Client, m.Images, true)
|
||||
items = append(items, it)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
var series []sonarr.Series
|
||||
if series, err = v.sonarr.Series(ctx); err == nil {
|
||||
for _, s := range series {
|
||||
items = append(items, v.withCachedFiles(newSeriesItem(s)))
|
||||
it := newSeriesItem(s)
|
||||
it.cover = coverFor(v.sonarr.Client, s.Images, true)
|
||||
items = append(items, v.withCachedFiles(it))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -423,11 +427,10 @@ func (v *libraryView) renderPane(p *libPane) {
|
||||
|
||||
func (v *libraryView) renderDetails() {
|
||||
if it, ok := v.selected(); ok {
|
||||
v.details.SetText(it.details)
|
||||
v.details.ScrollToBeginning()
|
||||
v.details.Show(it.details, it.cover)
|
||||
return
|
||||
}
|
||||
v.details.SetText("")
|
||||
v.details.Clear()
|
||||
}
|
||||
|
||||
// open starts the interactive search (movie) or the episode drill-down (series).
|
||||
|
||||
Reference in New Issue
Block a user