76 lines
2.1 KiB
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),
|
|
)
|
|
}
|