This MR adds only the reusable Kotlin Jetpack Compose device list screen for my assigned scope.
The screen displays the three ABox device categories:
Smart socket
Temperature/humidity sensor
Infrared controller
This MR intentionally does not modify the app entry point, login flow, app shell routing, or any device detail/control screen. Those parts are handled by other feature branches.
Changes
Add DeviceListScreen.
Expose click callbacks for each device category:
onSocketClick
onTemperatureHumidityClick
onInfraredClick
Update the device-list change log document.
Remove the earlier out-of-scope temporary device control screens from this branch.
Scope
Included:
Device list Compose UI component
Device category entry UI
Callback API for future route integration
Not included:
App entry point changes
Login flow changes
Device control navigation graph
Smart socket control screen
Temperature/humidity status screen
Infrared controller screen
Direct ABSDK calls
Java Activity classes
XML layout files
Integration Notes
The screen is designed to be hosted by the app shell or routing owner later:
DeviceListScreen(onSocketClick={/* route to socket module */},onTemperatureHumidityClick={/* route to temperature/humidity module */},onInfraredClick={/* route to infrared controller module */},)
The current branch keeps these callbacks external so other feature owners can connect their modules without this MR taking ownership of routing.
Verification
Built and ran android.app locally from Android Studio.
:android:app:assembleDebug completed successfully after trimming this branch to the device-list component scope.
Notes
settings.gradle.kts is intentionally not part of this MR. Local Gradle/JDK/toolchain setup is handled on the developer machine and should not modify the team-provided project configuration.
已处理:为 DeviceListScreen 根布局添加了 verticalScroll(rememberScrollState()),避免横屏、小屏或大字体场景下内容被裁剪且无法访问。已本地验证 :android:app:assembleDebug 通过。
Addressed by adding verticalScroll(rememberScrollState()) to the root layout of DeviceListScreen, so the list remains accessible on landscape, small screens, and large font settings. Verified with :android:app:assembleDebug.
已处理:为 DeviceListScreen 根布局添加了 verticalScroll(rememberScrollState()),避免横屏、小屏或大字体场景下内容被裁剪且无法访问。已本地验证 :android:app:assembleDebug 通过。
Addressed by adding verticalScroll(rememberScrollState()) to the root layout of DeviceListScreen, so the list remains accessible on landscape, small screens, and large font settings. Verified with :android:app:assembleDebug.
Here are some key observations to aid the review process:
⏱️Estimated effort to review: 1 🔵⚪⚪⚪⚪
🧪No relevant tests
🔒No security concerns identified
## PR Reviewer Guide 🔍
Here are some key observations to aid the review process:
<table>
<tr><td>⏱️ <strong>Estimated effort to review</strong>: 1 🔵⚪⚪⚪⚪</td></tr>
<tr><td>🧪 <strong>No relevant tests</strong></td></tr>
<tr><td>🔒 <strong>No security concerns identified</strong></td></tr>
</table>
Here are some key observations to aid the review process:
⏱️Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪PR contains tests
🔒No security concerns identified
⚡No major issues detected
## PR Reviewer Guide 🔍
Here are some key observations to aid the review process:
<table>
<tr><td>⏱️ <strong>Estimated effort to review</strong>: 2 🔵🔵⚪⚪⚪</td></tr>
<tr><td>🧪 <strong>PR contains tests</strong></td></tr>
<tr><td>🔒 <strong>No security concerns identified</strong></td></tr>
<tr><td>⚡ <strong>No major issues detected</strong></td></tr>
</table>
alZerNest
requested review from KremeCN 2026-08-25 10:31:57 +08:00
alZerNest
marked the pull request as ready for review 2026-08-25 11:13:18 +08:00
Changes:
- Add Kotlin Compose device list and device control placeholder screens.
- Register the new device-control navigation graph from the existing app shell.
- Preserve the current foundation and placeholder flow.
Documentation:
- Added English and Chinese change log under docs/device-control-compose-ui-change-log.md for team review.
- Wire DeviceListScreen as default composable in MainAppShell devicesSlot
- Extract and localize device list strings in en and zh-rCN
- Add DeviceListScreenTest verifying rendering and click callbacks
Here are some key observations to aid the review process:
⏱️Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪PR contains tests
🔒No security concerns identified
## PR Reviewer Guide 🔍
Here are some key observations to aid the review process:
<table>
<tr><td>⏱️ <strong>Estimated effort to review</strong>: 2 🔵🔵⚪⚪⚪</td></tr>
<tr><td>🧪 <strong>PR contains tests</strong></td></tr>
<tr><td>🔒 <strong>No security concerns identified</strong></td></tr>
</table>
KremeCN
merged commit 249721be33 into main2026-08-25 11:39:12 +08:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
WIP: Add device list Compose screen
Summary
This MR adds only the reusable Kotlin Jetpack Compose device list screen for my assigned scope.
The screen displays the three ABox device categories:
This MR intentionally does not modify the app entry point, login flow, app shell routing, or any device detail/control screen. Those parts are handled by other feature branches.
Changes
DeviceListScreen.onSocketClickonTemperatureHumidityClickonInfraredClickScope
Included:
Not included:
Integration Notes
The screen is designed to be hosted by the app shell or routing owner later:
The current branch keeps these callbacks external so other feature owners can connect their modules without this MR taking ownership of routing.
Verification
android.applocally from Android Studio.:android:app:assembleDebugcompleted successfully after trimming this branch to the device-list component scope.Notes
settings.gradle.ktsis intentionally not part of this MR. Local Gradle/JDK/toolchain setup is handled on the developer machine and should not modify the team-provided project configuration.WIP: 新增设备列表 Compose 页面
概要
本 MR 只新增我当前分工负责的 Kotlin Jetpack Compose 设备列表页面组件。
设备列表展示三类 ABox 设备入口:
本 MR 故意不修改 App 入口、登录流程、应用壳路由,也不实现任何设备详情/控制页面。这些部分由其他功能分支负责。
修改内容
DeviceListScreen。onSocketClickonTemperatureHumidityClickonInfraredClick本 MR 包含
本 MR 不包含
对接说明
该页面后续可以由 App shell 或路由负责人挂载:
当前分支只提供页面和回调 API,不负责具体跳转目标,以便其他模块负责人对接自己的功能页面。
验证
android.app。:android:app:assembleDebug构建成功。备注
settings.gradle.kts不属于本 MR 范围。本地 Gradle/JDK/toolchain 配置在开发者本机处理,不修改团队提供的项目配置文件。Inline comment
@@ -20,5 +20,5 @@onTemperatureHumidityClick: () -> Unit,onInfraredClick: () -> Unit,modifier: Modifier = Modifier,) {Column(内容裁剪
根布局使用固定内边距和垂直居中,但未提供滚动能力。在横屏、小尺寸设备或启用较大系统字体时,内容总高度会超过可用空间,导致顶部或底部的设备入口被裁剪且无法访问。建议使用可滚动布局或
LazyColumn。已处理:为 DeviceListScreen 根布局添加了 verticalScroll(rememberScrollState()),避免横屏、小屏或大字体场景下内容被裁剪且无法访问。已本地验证 :android:app:assembleDebug 通过。
Addressed by adding verticalScroll(rememberScrollState()) to the root layout of DeviceListScreen, so the list remains accessible on landscape, small screens, and large font settings. Verified with :android:app:assembleDebug.
PR Reviewer Guide 🔍
Here are some key observations to aid the review process:
PR Reviewer Guide 🔍
Here are some key observations to aid the review process:
a7697313c6toae488ef8c3Inline comment
@@ -52,3 +53,3 @@errorMessage: String? = null,devicesSlot: @Composable () -> Unit = { DefaultDevicesSlot() },devicesSlot: @Composable () -> Unit = { DeviceListScreen() },scenesSlot: @Composable () -> Unit = { DefaultScenesSlot() },无效入口
MainAppShell默认直接创建DeviceListScreen(),但没有传入任何点击回调,因此三个设备按钮都会使用空实现。任何未显式覆盖devicesSlot的调用方都会展示可点击但无响应的入口;应在路由完成前保留占位内容,或由壳层传入实际回调。PR Reviewer Guide 🔍
Here are some key observations to aid the review process: