kettlebell-tracker/cmd/main.go

54 lines
1.7 KiB
Go

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()
}