Put Pit Log under version control so the app and sync server can live on git.

This commit is contained in:
RallyBlock committed 2026-10-22 13:50:38 -07:00
commit 1030bac79e
79 files changed
+8463

No files matched your search

@@ -0,0 +1,153 @@
package com.racingapp.pitlog.ui
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import androidx.navigation.NavType
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
import com.racingapp.pitlog.ui.guide.SetupGuideScreen
import com.racingapp.pitlog.ui.home.HomeScreen
import com.racingapp.pitlog.ui.night.NightDetailScreen
import com.racingapp.pitlog.ui.night.NightEditorScreen
import com.racingapp.pitlog.ui.night.SetupEditorScreen
import com.racingapp.pitlog.ui.run.RunDetailScreen
import com.racingapp.pitlog.ui.run.RunEditorScreen
import com.racingapp.pitlog.ui.settings.SettingsScreen
import com.racingapp.pitlog.ui.setup.CarSetupEditorScreen
import com.racingapp.pitlog.ui.setup.CarSetupScreen
@Composable
fun PitNav() {
val nav = rememberNavController()
val context = LocalContext.current
NavHost(navController = nav, startDestination = "home") {
composable("home") {
HomeScreen(
onNewNight = { nav.navigate("editor/night") },
onOpenNight = { id -> nav.navigate("night/$id") },
onLogRun = { id -> nav.navigate("editor/run/$id") },
onSettings = { nav.navigate("settings") },
onGuide = { nav.navigate("guide") },
onCarSetup = { nav.navigate("car-setup") },
onExport = { name, csv -> shareCsv(context, name, csv) },
)
}
composable("settings") {
SettingsScreen(onBack = { nav.popBackStack() })
}
composable("guide") {
SetupGuideScreen(onBack = { nav.popBackStack() })
}
composable("car-setup") {
CarSetupScreen(
onBack = { nav.popBackStack() },
onEditOriginal = { nav.navigate("car-setup/original") },
onLogChange = { nav.navigate("car-setup/change") },
)
}
composable("car-setup/original") {
CarSetupEditorScreen(loggingChange = false, onBack = { nav.popBackStack() })
}
composable("car-setup/change") {
CarSetupEditorScreen(loggingChange = true, onBack = { nav.popBackStack() })
}
composable(
route = "setup/{nightId}",
arguments = listOf(navArgument("nightId") { type = NavType.LongType }),
) { entry ->
val nightId = entry.arguments?.getLong("nightId") ?: return@composable
SetupEditorScreen(nightId = nightId, onBack = { nav.popBackStack() })
}
composable("editor/night") {
NightEditorScreen(
nightId = null,
onBack = { nav.popBackStack() },
onSaved = { id ->
nav.navigate("night/$id") {
popUpTo("editor/night") { inclusive = true }
}
},
)
}
composable(
route = "editor/night/{nightId}",
arguments = listOf(navArgument("nightId") { type = NavType.LongType }),
) { entry ->
NightEditorScreen(
nightId = entry.arguments?.getLong("nightId"),
onBack = { nav.popBackStack() },
onSaved = { nav.popBackStack() },
)
}
composable(
route = "night/{nightId}",
arguments = listOf(navArgument("nightId") { type = NavType.LongType }),
) { entry ->
val nightId = entry.arguments?.getLong("nightId") ?: return@composable
NightDetailScreen(
nightId = nightId,
onBack = { nav.popBackStack() },
onEdit = { nav.navigate("editor/night/$nightId") },
onLogRun = { nav.navigate("editor/run/$nightId") },
onOpenRun = { runId -> nav.navigate("run/$nightId/$runId") },
onDeleted = {
nav.popBackStack("home", inclusive = false)
},
onExport = { name, csv -> shareCsv(context, name, csv) },
onSetup = { nav.navigate("setup/$nightId") },
)
}
composable(
route = "editor/run/{nightId}",
arguments = listOf(navArgument("nightId") { type = NavType.LongType }),
) { entry ->
val nightId = entry.arguments?.getLong("nightId") ?: return@composable
RunEditorScreen(
nightId = nightId,
runId = null,
onBack = { nav.popBackStack() },
onSaved = { runId ->
nav.navigate("run/$nightId/$runId") {
popUpTo("editor/run/$nightId") { inclusive = true }
}
},
)
}
composable(
route = "editor/run/{nightId}/{runId}",
arguments = listOf(
navArgument("nightId") { type = NavType.LongType },
navArgument("runId") { type = NavType.LongType },
),
) { entry ->
val nightId = entry.arguments?.getLong("nightId") ?: return@composable
val runId = entry.arguments?.getLong("runId") ?: return@composable
RunEditorScreen(
nightId = nightId,
runId = runId,
onBack = { nav.popBackStack() },
onSaved = { nav.popBackStack() },
)
}
composable(
route = "run/{nightId}/{runId}",
arguments = listOf(
navArgument("nightId") { type = NavType.LongType },
navArgument("runId") { type = NavType.LongType },
),
) { entry ->
val nightId = entry.arguments?.getLong("nightId") ?: return@composable
val runId = entry.arguments?.getLong("runId") ?: return@composable
RunDetailScreen(
nightId = nightId,
runId = runId,
onBack = { nav.popBackStack() },
onEdit = { nav.navigate("editor/run/$nightId/$runId") },
onGuide = { nav.navigate("guide") },
onDeleted = { nav.popBackStack() },
)
}
}
}