-
Notifications
You must be signed in to change notification settings - Fork 0
/
detail-view.go
43 lines (38 loc) · 934 Bytes
/
detail-view.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package main
// Episode UI state management
import "github.com/nsf/termbox-go"
func detailEpisodeCursorUp(tx *termboxState) {
if tx.episodeIndex > 0 {
tx.episodeIndex--
updateScreen(tx, drawDetails)
}
}
func detailEpisodeCursorDown(tx *termboxState) {
if tx.episodeIndex < tx.totalEpisodes-1 {
tx.episodeIndex++
updateScreen(tx, drawDetails)
}
}
// When inside the Episode UI this is the termbox event handler
func DetailEventHandler(tx *termboxState) stateFn {
switch tx.ev.Type {
case termbox.EventKey:
switch tx.ev.Key {
case termbox.KeyEsc, termbox.KeyArrowLeft:
updateScreen(tx, drawEpisode)
return EpisodeEventHandler
}
switch tx.ev.Ch {
case keyj:
detailEpisodeCursorDown(tx)
case keyk:
detailEpisodeCursorUp(tx)
case keyh:
updateScreen(tx, drawEpisode)
return EpisodeEventHandler
}
case termbox.EventResize:
updateScreen(tx, drawDetails)
}
return DetailEventHandler
}