Added Playlist Functionality
Using Switch case for mappings and removed Cycling The Feature of Cycling through all the windows now seems useless instead I am assigning each of the windows a number and one can cycle through them using the number keys. Also now the default window is the playlist window instead of the files tab. The mappings are separated with the help of the global boolean value InPlaylist
This commit is contained in:
parent
db9887c041
commit
c6d2e8d8af
212
main.go
212
main.go
@ -14,6 +14,7 @@ import (
|
|||||||
var Volume int64
|
var Volume int64
|
||||||
var Random bool
|
var Random bool
|
||||||
var Repeat bool
|
var Repeat bool
|
||||||
|
var InsidePlaylist bool = true
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
@ -29,11 +30,11 @@ func main() {
|
|||||||
Navbar := tview.NewTable()
|
Navbar := tview.NewTable()
|
||||||
searchBar := tview.NewTable()
|
searchBar := tview.NewTable()
|
||||||
|
|
||||||
searchBar.SetBorder(true)
|
searchBar.SetBorder(true).SetTitle("Search").SetTitleAlign(tview.AlignLeft)
|
||||||
Navbar.SetBorder(true)
|
Navbar.SetBorder(true)
|
||||||
Navbar.SetSelectable(true, false)
|
Navbar.SetSelectable(true, false)
|
||||||
Navbar.SetCell(0, 0, tview.NewTableCell("Files"))
|
Navbar.SetCell(0, 0, tview.NewTableCell("PlayList"))
|
||||||
Navbar.SetCell(1, 0, tview.NewTableCell("Playlist"))
|
Navbar.SetCell(1, 0, tview.NewTableCell("Files"))
|
||||||
Navbar.SetCell(2, 0, tview.NewTableCell("Most Played"))
|
Navbar.SetCell(2, 0, tview.NewTableCell("Most Played"))
|
||||||
|
|
||||||
searchNavFlex := tview.NewFlex().SetDirection(tview.FlexRow).
|
searchNavFlex := tview.NewFlex().SetDirection(tview.FlexRow).
|
||||||
@ -53,102 +54,135 @@ func main() {
|
|||||||
expandedView.SetBorderPadding(1, 1, 1, 1).SetBorder(true)
|
expandedView.SetBorderPadding(1, 1, 1, 1).SetBorder(true)
|
||||||
expandedView.SetSelectable(true, false)
|
expandedView.SetSelectable(true, false)
|
||||||
|
|
||||||
a, err := conn.GetFiles()
|
fileMap, err := conn.GetFiles()
|
||||||
aer := generateDirectoryTree(a)
|
dirTree := generateDirectoryTree(fileMap)
|
||||||
|
|
||||||
Update(*conn, aer.children, expandedView)
|
UpdatePlaylist(*conn, expandedView)
|
||||||
|
|
||||||
Navbar.SetDoneFunc(func(key tcell.Key) {
|
_v, _ := conn.Status()
|
||||||
if key == tcell.KeyTAB {
|
Volume, _ = strconv.ParseInt(_v["volume"], 10, 64)
|
||||||
App.SetFocus(searchBar)
|
Random, _ = strconv.ParseBool(_v["random"])
|
||||||
} else if key == tcell.KeyBacktab {
|
Repeat, _ = strconv.ParseBool(_v["repeat"])
|
||||||
App.SetFocus(expandedView)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
expandedView.SetDoneFunc(func(key tcell.Key) {
|
|
||||||
if key == tcell.KeyTAB {
|
|
||||||
App.SetFocus(Navbar)
|
|
||||||
} else if key == tcell.KeyBacktab {
|
|
||||||
App.SetFocus(searchBar)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
searchBar.SetDoneFunc(func(key tcell.Key) {
|
|
||||||
if key == tcell.KeyTAB {
|
|
||||||
App.SetFocus(expandedView)
|
|
||||||
} else if key == tcell.KeyBacktab {
|
|
||||||
App.SetFocus(Navbar)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
v, _ := conn.Status()
|
|
||||||
Volume, _ = strconv.ParseInt(v["volume"], 10, 64)
|
|
||||||
Random, _ = strconv.ParseBool(v["random"])
|
|
||||||
Repeat, _ = strconv.ParseBool(v["repeat"])
|
|
||||||
|
|
||||||
expandedView.SetInputCapture(func(e *tcell.EventKey) *tcell.EventKey {
|
expandedView.SetInputCapture(func(e *tcell.EventKey) *tcell.EventKey {
|
||||||
if e.Rune() == 108 {
|
switch e.Rune() {
|
||||||
r, _ := expandedView.GetSelection()
|
case 108: // L : Key
|
||||||
if len(aer.children[r].children) == 0 {
|
{
|
||||||
id, _ := conn.AddId(aer.children[r].absolutePath, -1)
|
r, _ := expandedView.GetSelection()
|
||||||
conn.PlayId(id)
|
if !InsidePlaylist {
|
||||||
} else {
|
if len(dirTree.children[r].children) == 0 {
|
||||||
Update(*conn, aer.children[r].children, expandedView)
|
id, _ := conn.AddId(dirTree.children[r].absolutePath, -1)
|
||||||
aer = &aer.children[r]
|
conn.PlayId(id)
|
||||||
|
} else {
|
||||||
|
Update(*conn, dirTree.children[r].children, expandedView)
|
||||||
|
dirTree = &dirTree.children[r]
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
conn.Play(r)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
return nil
|
case 112: // P : Key
|
||||||
} else if e.Rune() == 112 {
|
{
|
||||||
togglePlayBack(*conn)
|
togglePlayBack(*conn)
|
||||||
return nil
|
return nil
|
||||||
} else if e.Rune() == 104 {
|
|
||||||
if aer.parent != nil {
|
|
||||||
Update(*conn, aer.parent.children, expandedView)
|
|
||||||
aer = aer.parent
|
|
||||||
}
|
}
|
||||||
return nil
|
case 104: // H : Key
|
||||||
} else if e.Rune() == 110 {
|
{
|
||||||
conn.Next()
|
if !InsidePlaylist {
|
||||||
return nil
|
if dirTree.parent != nil {
|
||||||
} else if e.Rune() == 99 {
|
Update(*conn, dirTree.parent.children, expandedView)
|
||||||
conn.Clear()
|
dirTree = dirTree.parent
|
||||||
return nil
|
}
|
||||||
} else if e.Rune() == 78 {
|
}
|
||||||
conn.Previous()
|
return nil
|
||||||
return nil
|
|
||||||
} else if e.Rune() == 97 {
|
|
||||||
r, _ := expandedView.GetSelection()
|
|
||||||
conn.Add(aer.children[r].absolutePath)
|
|
||||||
return nil
|
|
||||||
} else if e.Rune() == 122 {
|
|
||||||
err := conn.Random(!Random)
|
|
||||||
if err == nil {
|
|
||||||
Random = !Random
|
|
||||||
}
|
}
|
||||||
return nil
|
case 110: // N : Key
|
||||||
} else if e.Rune() == 114 {
|
{
|
||||||
err := conn.Repeat(!Repeat)
|
conn.Next()
|
||||||
if err == nil {
|
return nil
|
||||||
Repeat = !Repeat
|
|
||||||
}
|
}
|
||||||
return nil
|
case 99: // C : Key
|
||||||
} else if e.Rune() == 45 {
|
{
|
||||||
if Volume <= 0 {
|
conn.Clear()
|
||||||
Volume = 0
|
if InsidePlaylist {
|
||||||
} else {
|
UpdatePlaylist(*conn, expandedView)
|
||||||
Volume -= 10
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
conn.SetVolume(int(Volume))
|
case 78: // Shift - N : Key
|
||||||
return nil
|
{
|
||||||
} else if e.Rune() == 61 {
|
conn.Previous()
|
||||||
if Volume >= 100 {
|
return nil
|
||||||
Volume = 100
|
}
|
||||||
} else {
|
case 97: // A : Key
|
||||||
Volume += 10
|
{
|
||||||
|
if !InsidePlaylist {
|
||||||
|
r, _ := expandedView.GetSelection()
|
||||||
|
conn.Add(dirTree.children[r].absolutePath)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
case 122: // Z : Key
|
||||||
|
{
|
||||||
|
err := conn.Random(!Random)
|
||||||
|
if err == nil {
|
||||||
|
Random = !Random
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
case 114: // R : Key
|
||||||
|
{
|
||||||
|
err := conn.Repeat(!Repeat)
|
||||||
|
if err == nil {
|
||||||
|
Repeat = !Repeat
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
case 45: // Minus : Key
|
||||||
|
{
|
||||||
|
if Volume <= 0 {
|
||||||
|
Volume = 0
|
||||||
|
} else {
|
||||||
|
Volume -= 10
|
||||||
|
}
|
||||||
|
conn.SetVolume(int(Volume))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
case 61: // Plus : Key
|
||||||
|
{
|
||||||
|
if Volume >= 100 {
|
||||||
|
Volume = 100
|
||||||
|
} else {
|
||||||
|
Volume += 10
|
||||||
|
}
|
||||||
|
conn.SetVolume(int(Volume))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
case 50: // 2 : Key
|
||||||
|
{
|
||||||
|
InsidePlaylist = false
|
||||||
|
Navbar.Select(1, 0)
|
||||||
|
Update(*conn, dirTree.children, expandedView)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
case 49: // 1 : Key
|
||||||
|
{
|
||||||
|
InsidePlaylist = true
|
||||||
|
Navbar.Select(0, 0)
|
||||||
|
UpdatePlaylist(*conn, expandedView)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
case 51: // 3 : Key
|
||||||
|
{
|
||||||
|
InsidePlaylist = false
|
||||||
|
Navbar.Select(2, 0)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return e
|
||||||
}
|
}
|
||||||
conn.SetVolume(int(Volume))
|
|
||||||
return nil
|
|
||||||
} else {
|
|
||||||
// fmt.Println(e.Rune())
|
|
||||||
return e
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user