124 lines
2.4 KiB
Go
124 lines
2.4 KiB
Go
package main
|
|
|
|
import (
|
|
"path"
|
|
"time"
|
|
)
|
|
|
|
func listPrevious() {
|
|
if mainBufferOrigin > 0 && mainBufferCursor == mainBufferOrigin {
|
|
mainBufferOrigin--
|
|
}
|
|
if mainBufferCursor > 0 {
|
|
mainBufferCursor--
|
|
}
|
|
|
|
go app.QueueUpdateDraw(updateMain)
|
|
}
|
|
|
|
func listNext() {
|
|
if mainBufferCursor < len(mainBufferFiles) {
|
|
mainBufferCursor++
|
|
if mainBufferCursor-mainBufferOrigin > mainBufHeight-3 {
|
|
mainBufferOrigin++
|
|
}
|
|
}
|
|
|
|
go app.QueueUpdateDraw(updateMain)
|
|
}
|
|
|
|
func listSelect() {
|
|
if mainBufferCursor == 0 {
|
|
browseFolder(path.Join(mainBufferDirectory, ".."))
|
|
return
|
|
}
|
|
|
|
entry := selectedEntry()
|
|
if entry.File.IsDir() {
|
|
browseFolder(path.Join(mainBufferDirectory, path.Base(entry.File.Name())))
|
|
return
|
|
}
|
|
|
|
audioFile, err := openFile(path.Join(mainBufferDirectory, entry.File.Name()), entry.Metadata)
|
|
if err != nil {
|
|
statusText = err.Error()
|
|
go func() {
|
|
time.Sleep(5 * time.Second)
|
|
statusText = ""
|
|
go app.QueueUpdateDraw(updateMain)
|
|
}()
|
|
go app.QueueUpdateDraw(updateMain)
|
|
return
|
|
}
|
|
go play(audioFile)
|
|
|
|
go app.QueueUpdateDraw(updateStatus)
|
|
}
|
|
|
|
func selectedEntry() *libraryEntry {
|
|
return mainBufferFiles[mainBufferCursor-1]
|
|
}
|
|
|
|
func offsetEntry(offset int) *libraryEntry {
|
|
return mainBufferFiles[(mainBufferCursor-1)+offset]
|
|
}
|
|
|
|
func listPreviousPage() {
|
|
if mainBufferOrigin == 0 {
|
|
mainBufferCursor = 0
|
|
|
|
go app.QueueUpdateDraw(updateMain)
|
|
return
|
|
}
|
|
|
|
mainBufferOrigin -= (mainBufHeight - 1) - 2
|
|
if mainBufferOrigin < 0 {
|
|
mainBufferOrigin = 0
|
|
}
|
|
mainBufferCursor = mainBufferOrigin
|
|
|
|
go app.QueueUpdateDraw(updateMain)
|
|
}
|
|
|
|
func listNextPage() {
|
|
numEntries := len(mainBufferFiles)
|
|
|
|
if mainBufferOrigin >= numEntries-(mainBufHeight-1) {
|
|
mainBufferCursor = numEntries
|
|
|
|
go app.QueueUpdateDraw(updateMain)
|
|
return
|
|
}
|
|
|
|
mainBufferOrigin += (mainBufHeight - 1) - 2
|
|
if mainBufferOrigin > (numEntries-(mainBufHeight-1))+2 {
|
|
mainBufferOrigin = (numEntries - (mainBufHeight - 1)) + 2
|
|
}
|
|
mainBufferCursor = mainBufferOrigin
|
|
|
|
go app.QueueUpdateDraw(updateMain)
|
|
}
|
|
|
|
func listRefresh() {
|
|
// TODO Remember cursor position
|
|
d := mainBufferDirectory
|
|
mainBufferDirectory = ""
|
|
browseFolder(d)
|
|
}
|
|
|
|
func listToggleHidden() {
|
|
showHiddenFolders = !showHiddenFolders
|
|
|
|
if showHiddenFolders {
|
|
statusText = "Hidden folders: shown"
|
|
} else {
|
|
statusText = "Hidden folders: hidden"
|
|
}
|
|
go func() {
|
|
time.Sleep(3 * time.Second)
|
|
statusText = ""
|
|
go app.QueueUpdateDraw(updateMain)
|
|
}()
|
|
|
|
listRefresh()
|
|
}
|