package main import ( "log" "path/filepath" "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "git.patanix.de/git/kettlebell-app/internal/data" "git.patanix.de/git/kettlebell-app/internal/services" "git.patanix.de/git/kettlebell-app/internal/ui" "git.patanix.de/git/kettlebell-app/internal/ui/theme" ) func main() { myApp := app.NewWithID("com.patani.kettlebell-tracker") myApp.Settings().SetTheme(&theme.KettlebellThemeOneDark{}) mainWindow := myApp.NewWindow("Kettlebell Tracker") dbDir := myApp.Storage().RootURI().Path() dbPath := filepath.Join(dbDir, "giant_training.db") dbService, err := data.NewDatabaseService(dbPath) if err != nil { log.Fatalf("Fehler bei der Initialisierung der Datenbank: %v", err) } settingsService := services.NewSettingsService(myApp) apiService := services.NewApiService(myApp.UniqueID()) trainingService := services.NewTrainingService(dbService, settingsService, apiService) contentContainer := container.NewStack() var navigateTo func(string) trainingScreen, startTrainingAction := ui.MakeTrainingScreen(trainingService, settingsService, mainWindow) homeScreen := ui.MakeHomeScreen(trainingService, dbService, func() { startTrainingAction() navigateTo("training") }) historyScreen := ui.MakeHistoryScreen(dbService, mainWindow) settingsScreen := ui.MakeSettingsScreen(settingsService, mainWindow) screens := map[string]fyne.CanvasObject{ "home": homeScreen, "training": trainingScreen, "history": historyScreen, "settings": settingsScreen, } for _, s := range screens { contentContainer.Add(s) } navBar, navigateFunc := ui.MakeNavBar(screens, contentContainer) navigateTo = navigateFunc navigateTo("home") mainLayout := container.NewBorder(nil, navBar, nil, nil, contentContainer) mainWindow.SetContent(mainLayout) mainWindow.Resize(fyne.NewSize(360, 740)) mainWindow.SetMaster() mainWindow.ShowAndRun() }