kettlebell-tracker/internal/ui/navbar.go

45 lines
1.4 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"
)
// MakeNavBar erstellt die benutzerdefinierte Navigationsleiste und gibt die Navigationsfunktion zurück.
func MakeNavBar(screens map[string]fyne.CanvasObject, content *fyne.Container) (fyne.CanvasObject, func(string)) {
buttons := make(map[string]*components.NavButton)
// Funktion zum Umschalten der Ansichten
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
}