kettlebell-tracker/internal/ui/home.go

76 lines
2.1 KiB
Go

package ui
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
)
// // MakeHomeScreen erstellt den statischen Willkommensbildschirm.
// func MakeHomeScreen() fyne.CanvasObject {
// primaryColor := theme.PrimaryColor()
//
// title := canvas.NewText("Willkommen beim Giant Programm Tracker!", primaryColor)
// title.TextStyle.Bold = true
// title.Alignment = fyne.TextAlignCenter
// title.TextSize = 24
//
// subtitle := widget.NewLabel("Verwalte deine Kettlebell-Trainings effizient.")
// subtitle.Alignment = fyne.TextAlignCenter
//
// icon := widget.NewIcon(theme.MediaPlayIcon())
// icon.Resize(fyne.NewSize(150, 150))
//
// // Layout erstellen, das dem Flutter-Layout entspricht
// content := container.NewVBox(
// title,
// widget.NewSeparator(),
// subtitle,
// container.NewPadded(icon), // Icon mit etwas Abstand
// )
//
// // Zentriert den Inhalt
// return container.NewCenter(content)
// }
func MakeHomeScreen() fyne.CanvasObject {
primary := theme.PrimaryColor()
secondary := theme.WarningColor()
// Header mit personalisierter Begrüßung
greeting := canvas.NewText("Dein Kettlebell Fortschritt", primary)
greeting.TextSize = 20
greeting.Alignment = fyne.TextAlignCenter
// Fortschrittsvisualisierung (Beispiel)
progressRing := canvas.NewCircle(secondary)
progressRing.StrokeWidth = 8
progressRing.StrokeColor = primary
ringContainer := container.NewCenter(progressRing)
// Programmstatus
programInfo := widget.NewLabel("Aktuell: Giant - Woche 2/4")
programInfo.Alignment = fyne.TextAlignCenter
// Primäre Aktion
startBtn := widget.NewButtonWithIcon("Training starten", theme.MediaPlayIcon(), func() {})
startBtn.Importance = widget.HighImportance
return container.NewVBox(
container.NewPadded(greeting),
ringContainer,
programInfo,
container.NewCenter(startBtn),
widget.NewSeparator(),
buildQuickStats(), // Eigene Komponente für Statistiken
)
}
func buildQuickStats() fyne.CanvasObject {
return container.NewGridWithColumns(2,
widget.NewCard("Letztes Training", "12 Sätze", nil),
widget.NewCard("Aktuelle Serie", "5 Tage", nil),
)
}