package main import ( "log" "path/filepath" "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/theme" "git.patanix.de/git/kettlebell-app/internal/data" "git.patanix.de/git/kettlebell-app/internal/services" "git.patanix.de/git/kettlebell-app/internal/ui" ) func main() { myApp := app.NewWithID("com.example.kettlebell-tracker") // myApp.Settings().SetTheme(theme.DarkTheme()) mainWIndow := myApp.NewWindow("Kettlebell Programm Tracker") dbDir := myApp.Storage().RootURI().Path() dbPath := filepath.Join(dbDir, "kb_training.db") log.Println("Datenbankpfad:", dbPath) 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) homeScreen := ui.MakeHomeScreen() settingsScreen := ui.MakeSettingsScreen(settingsService, mainWIndow) historyScreen := ui.MakeHistoryScreen(dbService, mainWIndow) trainingScreen := ui.MakeTrainingScreen(trainingService, settingsService, mainWIndow) tabs := container.NewAppTabs( container.NewTabItemWithIcon("Home", theme.HomeIcon(), homeScreen), container.NewTabItemWithIcon("Training", theme.MediaPlayIcon(), trainingScreen), container.NewTabItemWithIcon("Historie", theme.HistoryIcon(), historyScreen), container.NewTabItemWithIcon("Einstellungen", theme.SettingsIcon(), settingsScreen), ) tabs.SetTabLocation(container.TabLocationBottom) mainWIndow.Resize(fyne.NewSize(400, 600)) mainWIndow.SetContent(tabs) mainWIndow.SetMaster() mainWIndow.ShowAndRun() }