54 lines
1.5 KiB
Go
54 lines
1.5 KiB
Go
package ui
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.patanix.de/git/kettlebell-app/internal/services"
|
|
"git.patanix.de/git/kettlebell-app/internal/ui/theme"
|
|
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/canvas"
|
|
"fyne.io/fyne/v2/container"
|
|
"fyne.io/fyne/v2/widget"
|
|
)
|
|
|
|
func MakeHomeScreen(ts *services.TrainingService, onStart func()) fyne.CanvasObject {
|
|
// Header
|
|
headerTitle := canvas.NewText("Patanix", theme.ColorSlate200)
|
|
headerTitle.TextSize = 28
|
|
headerTitle.TextStyle.Bold = true
|
|
|
|
header := container.NewVBox(
|
|
widget.NewLabel("Hallo,"),
|
|
headerTitle,
|
|
)
|
|
|
|
// Nächstes Training CTA
|
|
state := ts.State
|
|
|
|
// Verwende ein Card-Widget für das Styling
|
|
nextTrainingCard := widget.NewCard(
|
|
"Nächstes Training",
|
|
fmt.Sprintf("%s - Tag %d", state.CurrentProgram, state.CurrentBlockDay),
|
|
container.NewVBox(
|
|
widget.NewLabel(fmt.Sprintf("Ziel: %d Wiederholungen pro Satz", state.CurrentReps)),
|
|
widget.NewButton("Training starten", onStart),
|
|
),
|
|
)
|
|
|
|
// Letzte Leistung
|
|
statsCard := widget.NewCard("Letzte Leistung", "", container.NewGridWithColumns(3,
|
|
container.NewVBox(widget.NewLabel("Sätze"), widget.NewLabelWithStyle("8", fyne.TextAlignCenter, fyne.TextStyle{Bold: true})),
|
|
container.NewVBox(widget.NewLabel("Dauer"), widget.NewLabelWithStyle("18:45", fyne.TextAlignCenter, fyne.TextStyle{Bold: true})),
|
|
container.NewVBox(widget.NewLabel("Gewicht"), widget.NewLabelWithStyle("16kg", fyne.TextAlignCenter, fyne.TextStyle{Bold: true})),
|
|
))
|
|
|
|
layout := container.NewVBox(
|
|
header,
|
|
widget.NewSeparator(),
|
|
nextTrainingCard,
|
|
statsCard,
|
|
)
|
|
|
|
return container.NewPadded(layout)
|
|
}
|