43 lines
1.2 KiB
Go
43 lines
1.2 KiB
Go
package ui
|
|
|
|
import (
|
|
"git.patanix.de/git/kettlebell-app/internal/ui/components"
|
|
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/container"
|
|
"fyne.io/fyne/v2/theme"
|
|
)
|
|
|
|
func MakeNavBar(screens map[string]fyne.CanvasObject, content *fyne.Container) (fyne.CanvasObject, func(string)) {
|
|
buttons := make(map[string]*components.NavButton)
|
|
|
|
navigateTo := func(name string) {
|
|
for key, screen := range screens {
|
|
screen.Hide()
|
|
if key == name {
|
|
screen.Show()
|
|
}
|
|
}
|
|
for key, button := range buttons {
|
|
button.SetActive(false)
|
|
if key == name {
|
|
button.SetActive(true)
|
|
}
|
|
}
|
|
content.Refresh()
|
|
}
|
|
|
|
buttons["home"] = components.NewNavButton("Home", theme.HomeIcon(), false, func() { navigateTo("home") })
|
|
buttons["training"] = components.NewNavButton("Training", theme.MediaPlayIcon(), false, func() { navigateTo("training") })
|
|
buttons["history"] = components.NewNavButton("Historie", theme.ListIcon(), false, func() { navigateTo("history") })
|
|
buttons["settings"] = components.NewNavButton("Einstellungen", theme.SettingsIcon(), false, func() { navigateTo("settings") })
|
|
|
|
navContainer := container.NewGridWithColumns(4,
|
|
buttons["home"],
|
|
buttons["training"],
|
|
buttons["history"],
|
|
buttons["settings"],
|
|
)
|
|
|
|
return navContainer, navigateTo
|
|
}
|