feat(scene): add scene editor, executor and fakes (phase 1) #5

Merged
KremeCN merged 10 commits from feat/scene-editor into main 2026-08-25 20:20:19 +08:00
2 changed files with 17 additions and 8 deletions
Showing only changes of commit f70f034119 - Show all commits
@@ -32,7 +32,10 @@ import com.flagship.abox.manager.ui.navigation.deviceDetailGraph
import com.flagship.abox.manager.ui.navigation.navigateToSocket import com.flagship.abox.manager.ui.navigation.navigateToSocket
import com.flagship.abox.manager.ui.navigation.navigateToTemperatureHumidity import com.flagship.abox.manager.ui.navigation.navigateToTemperatureHumidity
import com.flagship.abox.manager.ui.provider.ProviderSelectionRoute import com.flagship.abox.manager.ui.provider.ProviderSelectionRoute
import com.flagship.abox.manager.ui.scene.SceneNavHost import com.flagship.abox.manager.ui.scene.SceneListScreen
import com.flagship.abox.manager.ui.scene.SceneRoutes
import com.flagship.abox.manager.ui.scene.sceneEditorDestination
import com.flagship.abox.manager.ui.scene.sceneExecutionDestination
import com.flagship.abox.manager.ui.session.AppSessionUiState import com.flagship.abox.manager.ui.session.AppSessionUiState
import com.flagship.abox.manager.ui.session.AppSessionViewModel import com.flagship.abox.manager.ui.session.AppSessionViewModel
import com.flagship.abox.manager.ui.session.SessionActionsViewModel import com.flagship.abox.manager.ui.session.SessionActionsViewModel
@@ -126,13 +129,24 @@ private fun AuthenticatedNavHost(
) )
}, },
scenesSlot = { scenesSlot = {
SceneNavHost() SceneListScreen(
onAddScene = { navController.navigate(SceneRoutes.EDITOR) },
onEditScene = { sceneId -> navController.navigate(SceneRoutes.editorFor(sceneId)) },
onExecuteScene = { sceneId -> navController.navigate(SceneRoutes.executionFor(sceneId)) },
)
}, },
) )
} }
deviceDetailGraph( deviceDetailGraph(
onBackClick = navController::popBackStack, onBackClick = navController::popBackStack,
) )
sceneEditorDestination(
onBack = { navController.popBackStack() },
onSaved = { navController.popBackStack() },
)
sceneExecutionDestination(
onBack = { navController.popBackStack() },
)
composable( composable(
route = "infrared_hub/{profileId}", route = "infrared_hub/{profileId}",
arguments = listOf( arguments = listOf(
@@ -58,11 +58,6 @@ fun SceneListScreen(
val pendingDelete by viewModel.pendingDelete.collectAsStateWithLifecycle() val pendingDelete by viewModel.pendingDelete.collectAsStateWithLifecycle()
Scaffold( Scaffold(
topBar = {
TopAppBar(
title = { Text(stringResource(R.string.scene_list_title)) },
)
},
floatingActionButton = { floatingActionButton = {
ExtendedFloatingActionButton( ExtendedFloatingActionButton(
onClick = onAddScene, onClick = onAddScene,
@@ -76,7 +71,7 @@ fun SceneListScreen(
contentPadding = PaddingValues( contentPadding = PaddingValues(
start = 16.dp, start = 16.dp,
end = 16.dp, end = 16.dp,
top = innerPadding.calculateTopPadding(), top = 16.dp,
bottom = innerPadding.calculateBottomPadding() + 80.dp, bottom = innerPadding.calculateBottomPadding() + 80.dp,
), ),
verticalArrangement = Arrangement.spacedBy(12.dp), verticalArrangement = Arrangement.spacedBy(12.dp),