Details pane: director and cast from Trakt
With a Trakt client ID, the details of a movie or series show the director(s) or creators and up to 8 cast members with their roles below the plot, in every view. The title is found on Trakt by its TMDb/TVDB (else IMDb) id, then its people are read. Casts are cached and, like posters, only loaded once the selection rests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+12
-1
@@ -40,6 +40,12 @@ type detailPane struct {
|
||||
lastShow time.Time // when the shown title last changed
|
||||
settle *time.Timer // shows the poster once the selection rests
|
||||
|
||||
// The cast from Trakt, below the plot (see people.go).
|
||||
castKey string // the title it belongs to
|
||||
cast string // rendered; "" while loading or when there is none
|
||||
castShown time.Time
|
||||
castSettle *time.Timer
|
||||
|
||||
// What the text was last wrapped for.
|
||||
laidOut struct {
|
||||
width, narrow, rows int
|
||||
@@ -65,6 +71,7 @@ func newDetailPane(app *App) *detailPane {
|
||||
func (d *detailPane) Show(text detailText, ref coverRef) {
|
||||
d.detail, d.lastRef = text, ref
|
||||
d.laidOut.valid = false
|
||||
d.showPeople(text.people)
|
||||
if !d.app.covers || ref.fetch == nil {
|
||||
d.want, d.hasCover = "", false
|
||||
d.cover.setImage(nil)
|
||||
@@ -137,7 +144,11 @@ func (d *detailPane) Draw(screen tcell.Screen) {
|
||||
}
|
||||
if !d.laidOut.valid || d.laidOut.width != w || d.laidOut.narrow != narrow || d.laidOut.rows != rows {
|
||||
d.laidOut.width, d.laidOut.narrow, d.laidOut.rows, d.laidOut.valid = w, narrow, rows, true
|
||||
d.text.SetText(strings.Join(flowWrap(d.detail.String(), narrow, w, rows), "\n"))
|
||||
text := d.detail.String()
|
||||
if d.cast != "" {
|
||||
text += "\n\n" + d.cast
|
||||
}
|
||||
d.text.SetText(strings.Join(flowWrap(text, narrow, w, rows), "\n"))
|
||||
}
|
||||
|
||||
d.Flex.Draw(screen)
|
||||
|
||||
Reference in New Issue
Block a user