diff --git a/layout.go b/layout.go index e0b0cf2..56c4372 100644 --- a/layout.go +++ b/layout.go @@ -4,16 +4,14 @@ import "github.com/rivo/tview" func Layout( app *tview.Application, - child1 *tview.TreeView, - child2 *tview.List, - child3 *tview.Box, + player *Player, ) *tview.Flex { flex := tview.NewFlex(). - AddItem(child1, 0, 1, false). + AddItem(player.tree, 0, 1, false). AddItem(tview.NewFlex().SetDirection(tview.FlexRow). - AddItem(child2, 0, 7, false). - AddItem(child3, 0, 1, false), 0, 3, false) + AddItem(player.list, 0, 7, false). + AddItem(player.playingBar.frame, 0, 1, false), 0, 3, false) return flex diff --git a/playlist.go b/playlist.go index 38acf54..403645b 100644 --- a/playlist.go +++ b/playlist.go @@ -15,14 +15,14 @@ type AudioFile struct { Parent *tview.TreeNode } -func Playlist(list *tview.List, player *Player) *tview.TreeView { +func Playlist(list *tview.List, playBar *Progress, player *Player) *tview.TreeView { musicDir := "./music" rootDir, err := filepath.Abs(musicDir) if err != nil { - panic(err) + log(err.Error()) } root := tview.NewTreeNode(musicDir) @@ -69,6 +69,7 @@ func Playlist(list *tview.List, player *Player) *tview.TreeView { case 'l': if audioFile.IsAudioFile { + list.AddItem(audioFile.Name, audioFile.Path, 0, nil) player.Push(audioFile.Path) @@ -114,7 +115,7 @@ func populate(root *tview.TreeNode, rootPath string) { files, err := ioutil.ReadDir(rootPath) if err != nil { - panic(err) + log(err.Error()) } for _, file := range files { diff --git a/queue.go b/queue.go index bd4a121..7509921 100644 --- a/queue.go +++ b/queue.go @@ -5,7 +5,7 @@ import ( "github.com/rivo/tview" ) -func Queue(playlist *tview.Box) *tview.List { +func Queue() *tview.List { list := tview.NewList(). ShowSecondaryText(false) diff --git a/start.go b/start.go index 2922f50..0446746 100644 --- a/start.go +++ b/start.go @@ -19,15 +19,20 @@ func start(app *tview.Application) { player := &Player{} - child3 := NowPlayingBar() - child2 := Queue(child3) - child1 := Playlist(child2, player) + child3 := PlayingBar(app) + child2 := Queue() + child1 := Playlist(child2, child3, player) - flex := Layout(app, child1, child2, child3) + player.tree = child1 + player.list = child2 + player.playingBar = child3 + player.app = app + + flex := Layout(app, player) pages := tview.NewPages().AddPage("main", flex, true, true) - childrens := []Children{child1, child2, child3} + childrens := []Children{child1, child2, child3.frame} app.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { @@ -52,12 +57,15 @@ func start(app *tview.Application) { }) case ' ': - - if player.ctrl.Paused { - player.Play() - } else { - player.Pause() - } + player.TogglePause() + + case '+': + + player.Volume(0.5) + + case '-': + + player.Volume(-0.5) } @@ -72,7 +80,7 @@ func start(app *tview.Application) { // main loop if err := app.SetRoot(pages, true).SetFocus(flex).Run(); err != nil { - panic(err) + log(err.Error()) } } diff --git a/utils.go b/utils.go index 2dca052..141ef84 100644 --- a/utils.go +++ b/utils.go @@ -10,7 +10,7 @@ func log(text string) { panic(err) } - if _, err := f.Write([]byte(text)); err != nil { + if _, err := f.Write([]byte(text + "\n")); err != nil { panic(err) }