Put Pit Log under version control so the app and sync server can live on git.
This commit is contained in:
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() },
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user