🚸 Add main menu

This commit is contained in:
Dan Jones 2023-09-08 11:00:07 -05:00
commit d8e671d5ca
4 changed files with 83 additions and 28 deletions

69
app/menu.go Normal file
View file

@ -0,0 +1,69 @@
package app
import (
"fmt"
"codeberg.org/danjones000/strip-beats/input/list"
)
func (st AppStep) Title() string {
mustpick := "You need to pick a file"
switch st {
case Pick:
return "Pick a new show"
case Watch:
if file == nil {
return mustpick
}
return fmt.Sprintf("Watch %s", file.ShortPath())
case Fade:
if file == nil {
return mustpick
}
return fmt.Sprintf("Trim and/or add fade to %s", file.ShortPath())
case Restart:
return "Forget current selection"
case Quit:
return "Quit"
default:
return ""
}
}
func (st AppStep) Text() string {
return ""
}
func (st AppStep) Rune() rune {
switch st {
case Pick:
return 'p'
case Watch:
return 'w'
case Fade:
return 'f'
case Restart:
return 'r'
case Quit:
return 'q'
default:
return '0'
}
}
func (st AppStep) Selected() func() {
return nil
}
func mainMenu() AppStep {
var steps []list.Option
if file == nil {
steps = []list.Option{Pick, Quit}
} else {
steps = []list.Option{Pick, Watch, Fade, Quit}
}
step := list.List("What would you like to do next?", steps, nil)
return step.(AppStep)
}

View file

@ -13,6 +13,7 @@ type AppStep int
const (
Pick AppStep = iota
Watch
Fade
Restart
Quit
)
@ -39,7 +40,6 @@ func testTrim() {
}
func Run(step AppStep) {
testTrim()
for step < Quit {
switch step {
case Pick:
@ -51,12 +51,21 @@ func Run(step AppStep) {
watch := boolean.Choose(fmt.Sprintf("Would you like to watch %s?", file.ShortPath()))
if watch {
step = Watch
} else {
step = mainMenu()
}
case Watch:
media.Watch(file.Format.Path)
step = Quit // @todo
fade := boolean.Choose(fmt.Sprintf("Would you like to trim/fade %s?", file.ShortPath()))
if fade {
step = Fade
} else {
step = mainMenu()
}
case Quit:
quit()
default:
step = mainMen()
}
}
}