64 lines
1.9 KiB
Go
64 lines
1.9 KiB
Go
package ui
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
|
|
"git.patanix.de/git/kettlebell-app/internal/services"
|
|
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/container"
|
|
"fyne.io/fyne/v2/dialog"
|
|
"fyne.io/fyne/v2/widget"
|
|
)
|
|
|
|
func MakeSettingsScreen(settingsService *services.SettingsService, parent fyne.Window) fyne.CanvasObject {
|
|
currentSettings := settingsService.LoadSettings()
|
|
|
|
trainingTimeEntry := widget.NewEntry()
|
|
trainingTimeEntry.SetText(fmt.Sprintf("%d", currentSettings.TrainingTimeMinutes))
|
|
|
|
weightLeftEntry := widget.NewEntry()
|
|
weightLeftEntry.SetText(fmt.Sprintf("%.1f", currentSettings.WeightLeft))
|
|
|
|
weightRightEntry := widget.NewEntry()
|
|
weightRightEntry.SetText(fmt.Sprintf("%.1f", currentSettings.WeightRight))
|
|
|
|
goalSetsEntry := widget.NewEntry()
|
|
goalSetsEntry.SetText(fmt.Sprintf("%d", currentSettings.GoalSets))
|
|
|
|
form := &widget.Form{
|
|
Items: []*widget.FormItem{
|
|
{Text: "Trainingszeit (Minuten)", Widget: trainingTimeEntry},
|
|
{Text: "Linke Kettlebell (kg)", Widget: weightLeftEntry},
|
|
{Text: "Rechte Kettlebell (kg)", Widget: weightRightEntry},
|
|
{Text: "Ziel-Sätze", Widget: goalSetsEntry},
|
|
},
|
|
OnSubmit: func() {
|
|
timeMin, err1 := strconv.Atoi(trainingTimeEntry.Text)
|
|
weightL, err2 := strconv.ParseFloat(weightLeftEntry.Text, 64)
|
|
weightR, err3 := strconv.ParseFloat(weightRightEntry.Text, 64)
|
|
goal, err4 := strconv.Atoi(goalSetsEntry.Text)
|
|
|
|
if err1 != nil || err2 != nil || err3 != nil || err4 != nil {
|
|
dialog.ShowError(fmt.Errorf("Bitte gib gültige Zahlen ein"), parent)
|
|
return
|
|
}
|
|
|
|
newSettings := &services.Settings{
|
|
TrainingTimeMinutes: timeMin,
|
|
WeightLeft: weightL,
|
|
WeightRight: weightR,
|
|
GoalSets: goal,
|
|
}
|
|
settingsService.SaveSettings(newSettings)
|
|
|
|
fyne.CurrentApp().SendNotification(&fyne.Notification{
|
|
Title: "Gespeichert",
|
|
Content: "Die Einstellungen wurden erfolgreich aktualisiert.",
|
|
})
|
|
},
|
|
}
|
|
|
|
return container.NewPadded(form)
|
|
}
|