diff --git a/app/src/main/java/com/example/smarthome/MainActivity.kt b/app/src/main/java/com/example/smarthome/MainActivity.kt index 4a501c8..035c9a7 100644 --- a/app/src/main/java/com/example/smarthome/MainActivity.kt +++ b/app/src/main/java/com/example/smarthome/MainActivity.kt @@ -4,6 +4,9 @@ import android.os.Bundle import androidx.activity.ComponentActivity import com.example.smarthome.ui.theme.SmartHomeTheme import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.LocalOverscrollConfiguration import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.compose.material3.Surface @@ -72,23 +75,27 @@ class MainActivity : ComponentActivity() { } } +@OptIn(ExperimentalFoundationApi::class) @Composable fun AppRoot() { val context = androidx.compose.ui.platform.LocalContext.current - + // 监听登录状态 val isLoggedIn by UserManager.isLoggedIn.collectAsState() - - if (!isLoggedIn) { - // 未登录,显示登录页面 - LoginScreen( - onLoginSuccess = { - // 登录成功后会自动更新isLoggedIn状态 - } - ) - } else { - // 已登录,显示主界面 - MainContent() + + // 禁用上下滑到边界时的拉伸回弹效果,降低滑动重绘开销 + CompositionLocalProvider(LocalOverscrollConfiguration provides null) { + if (!isLoggedIn) { + // 未登录,显示登录页面 + LoginScreen( + onLoginSuccess = { + // 登录成功后会自动更新isLoggedIn状态 + } + ) + } else { + // 已登录,显示主界面 + MainContent() + } } } diff --git a/app/src/main/java/com/example/smarthome/ui/MainScaffold.kt b/app/src/main/java/com/example/smarthome/ui/MainScaffold.kt index c301ad3..4ec857e 100644 --- a/app/src/main/java/com/example/smarthome/ui/MainScaffold.kt +++ b/app/src/main/java/com/example/smarthome/ui/MainScaffold.kt @@ -132,7 +132,8 @@ fun MainScaffold( selectedNavItem = selectedNavItem, onNavItemSelect = onNavItemSelect, modifier = Modifier.fillMaxHeight(), - hazeState = hazeState + hazeState = hazeState, + rooms = rooms ) // 间距 @@ -2347,19 +2348,13 @@ fun GlassSidebar( selectedNavItem: Int = 0, onNavItemSelect: (Int) -> Unit = {}, modifier: Modifier = Modifier, - hazeState: HazeState + hazeState: HazeState, + rooms: List = listOf("总览", "客厅", "厨房", "卧室", "影音室", "游戏房") ) { - - // 房间列表 - 放在总览上面 - val roomNavItems = listOf( - "总览", - "客厅", - "厨房", - "卧室", - "影音室", - "游戏房" - ) - + + // 房间列表 - 使用外部传入,支持动态增删改 + val roomNavItems = rooms + // 导航项列表 val navItems = listOf( "首页", diff --git a/app/src/main/java/com/example/smarthome/ui/SettingsScreen.kt b/app/src/main/java/com/example/smarthome/ui/SettingsScreen.kt index 520a650..9f218c0 100644 --- a/app/src/main/java/com/example/smarthome/ui/SettingsScreen.kt +++ b/app/src/main/java/com/example/smarthome/ui/SettingsScreen.kt @@ -485,7 +485,8 @@ fun SettingsContent( onRenameRoom: (Int, String) -> Unit = { _, _ -> } ) { var showEditRoomsDialog by remember { mutableStateOf(false) } - + var showAddRoomDialog by remember { mutableStateOf(false) } + Column( modifier = Modifier .fillMaxSize() @@ -517,7 +518,18 @@ fun SettingsContent( onDismiss = { showEditRoomsDialog = false }, onRenameRoom = onRenameRoom, onDeleteRoom = onDeleteRoom, - onAddRoom = { /* 添加房间通过对话框内的按钮处理 */ } + onAddRoom = { showAddRoomDialog = true } + ) + } + + // 添加房间对话框 + if (showAddRoomDialog) { + AddRoomDialog( + onDismiss = { showAddRoomDialog = false }, + onConfirm = { roomName -> + onAddRoom(roomName) + showAddRoomDialog = false + } ) } } diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml new file mode 100644 index 0000000..757f450 --- /dev/null +++ b/app/src/main/res/drawable/ic_add.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/taozhi_icon_v3.png b/app/src/main/res/drawable/taozhi_icon_v3.png new file mode 100644 index 0000000..73b637b Binary files /dev/null and b/app/src/main/res/drawable/taozhi_icon_v3.png differ