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: show" } else { statusText = "Hidden folders: hide" } go func() { time.Sleep(3 * time.Second) statusText = "" go app.QueueUpdateDraw(updateMain) }() listRefresh() }