From a19c463b3727c3c49666e305974d1025e7f1bfdb Mon Sep 17 00:00:00 2001 From: James Rich Date: Mon, 2 Mar 2026 09:50:52 -0600 Subject: [PATCH] refactor: Move node components to core:ui and add screenshot tests Move various informational UI components from the node feature module to the core UI module to improve reusability across the application. Add a comprehensive screenshot testing suite for core components. - Relocate ChannelInfo, DistanceInfo, ElevationInfo, HopsInfo, IconInfo, LastHeardInfo, SatelliteCountInfo, and TelemetryInfo to `org.meshtastic.core.ui.component`. - Add `ComponentScreenshotTest` in `core:ui` along with baseline reference images for battery, signal, node chips, and other UI elements. - Remove unused `ClickableTextField` from `core:ui`. - Update `CompassBottomSheet` to use the relocated components. --- .../core/ui/component/ClickableTextField.kt | 58 ----- .../core/ui/ComponentScreenshotTest.kt | 173 +++++++++++++++ .../BatteryInfoTest_748aa731_e7e392ea_0.png | Bin 0 -> 3549 bytes .../BatteryInfoTest_748aa731_e7e392ea_1.png | Bin 0 -> 3121 bytes .../BatteryInfoTest_748aa731_e7e392ea_2.png | Bin 0 -> 3280 bytes .../BatteryInfoTest_748aa731_e7e392ea_3.png | Bin 0 -> 3561 bytes .../BatteryInfoTest_748aa731_e7e392ea_4.png | Bin 0 -> 3515 bytes .../BatteryInfoTest_748aa731_e7e392ea_5.png | Bin 0 -> 3282 bytes .../BatteryInfoTest_748aa731_e7e392ea_6.png | Bin 0 -> 68 bytes .../BatteryInfoTest_748aa731_e7e392ea_7.png | Bin 0 -> 68 bytes .../ChannelInfoTest_748aa731_0.png | Bin 0 -> 68 bytes .../DistanceInfoTest_748aa731_0.png | Bin 0 -> 68 bytes .../ElevationInfoTest_748aa731_0.png | Bin 0 -> 68 bytes .../HopsInfoTest_748aa731_0.png | Bin 0 -> 68 bytes .../IAQScaleTest_748aa731_0.png | Bin 0 -> 51241 bytes .../IndoorAirQualityPillTest_748aa731_0.png | Bin 0 -> 68 bytes .../ListItemTest_748aa731_0.png | Bin 0 -> 5677 bytes .../NodeChipTest_748aa731_41783942_0.png | Bin 0 -> 1804 bytes .../NodeChipTest_748aa731_41783942_1.png | Bin 0 -> 2262 bytes .../NodeChipTest_748aa731_41783942_2.png | Bin 0 -> 1561 bytes .../NodeChipTest_748aa731_41783942_3.png | Bin 0 -> 2250 bytes .../NodeChipTest_748aa731_41783942_4.png | Bin 0 -> 2013 bytes .../SatelliteCountInfoTest_748aa731_0.png | Bin 0 -> 68 bytes .../SignalInfoTest_748aa731_41783942_0.png | Bin 0 -> 68 bytes .../SignalInfoTest_748aa731_41783942_1.png | Bin 0 -> 68 bytes .../SignalInfoTest_748aa731_41783942_2.png | Bin 0 -> 68 bytes .../SignalInfoTest_748aa731_41783942_3.png | Bin 0 -> 68 bytes .../SignalInfoTest_748aa731_41783942_4.png | Bin 0 -> 68 bytes .../SwitchListItemTest_748aa731_0.png | Bin 0 -> 8806 bytes .../TitledCardTest_748aa731_0.png | Bin 0 -> 6885 bytes .../feature/node/component/ChannelInfo.kt | 47 ----- .../node/component/CompassBottomSheet.kt | 1 + .../feature/node/component/DistanceInfo.kt | 51 ----- .../feature/node/component/ElevationInfo.kt | 56 ----- .../feature/node/component/HopsInfo.kt | 47 ----- .../feature/node/component/IconInfo.kt | 72 ------- .../feature/node/component/LastHeardInfo.kt | 55 ----- .../node/component/SatelliteCountInfo.kt | 51 ----- .../feature/node/component/TelemetryInfo.kt | 199 ------------------ .../NodeInfoSignalTest_748aa731_0.png | Bin 0 -> 68 bytes .../NodeInfoSimpleTest_748aa731_0.png | Bin 0 -> 68 bytes .../NodeInfoStatusTest_748aa731_0.png | Bin 0 -> 68 bytes .../NodeInfoTest_748aa731_41783942_1.png | Bin 0 -> 68 bytes .../NodeInfoTest_748aa731_41783942_2.png | Bin 0 -> 68 bytes .../NodeInfoTest_748aa731_41783942_3.png | Bin 0 -> 68 bytes .../NodeInfoTest_748aa731_41783942_4.png | Bin 0 -> 68 bytes 46 files changed, 174 insertions(+), 636 deletions(-) delete mode 100644 core/ui/src/main/kotlin/org/meshtastic/core/ui/component/ClickableTextField.kt create mode 100644 core/ui/src/screenshotTest/kotlin/org/meshtastic/core/ui/ComponentScreenshotTest.kt create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_0.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_1.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_2.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_3.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_4.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_5.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_6.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_7.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/ChannelInfoTest_748aa731_0.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/DistanceInfoTest_748aa731_0.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/ElevationInfoTest_748aa731_0.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/HopsInfoTest_748aa731_0.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/IAQScaleTest_748aa731_0.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/IndoorAirQualityPillTest_748aa731_0.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/ListItemTest_748aa731_0.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/NodeChipTest_748aa731_41783942_0.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/NodeChipTest_748aa731_41783942_1.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/NodeChipTest_748aa731_41783942_2.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/NodeChipTest_748aa731_41783942_3.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/NodeChipTest_748aa731_41783942_4.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/SatelliteCountInfoTest_748aa731_0.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/SignalInfoTest_748aa731_41783942_0.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/SignalInfoTest_748aa731_41783942_1.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/SignalInfoTest_748aa731_41783942_2.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/SignalInfoTest_748aa731_41783942_3.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/SignalInfoTest_748aa731_41783942_4.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/SwitchListItemTest_748aa731_0.png create mode 100644 core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/TitledCardTest_748aa731_0.png delete mode 100644 feature/node/src/main/kotlin/org/meshtastic/feature/node/component/ChannelInfo.kt delete mode 100644 feature/node/src/main/kotlin/org/meshtastic/feature/node/component/DistanceInfo.kt delete mode 100644 feature/node/src/main/kotlin/org/meshtastic/feature/node/component/ElevationInfo.kt delete mode 100644 feature/node/src/main/kotlin/org/meshtastic/feature/node/component/HopsInfo.kt delete mode 100644 feature/node/src/main/kotlin/org/meshtastic/feature/node/component/IconInfo.kt delete mode 100644 feature/node/src/main/kotlin/org/meshtastic/feature/node/component/LastHeardInfo.kt delete mode 100644 feature/node/src/main/kotlin/org/meshtastic/feature/node/component/SatelliteCountInfo.kt delete mode 100644 feature/node/src/main/kotlin/org/meshtastic/feature/node/component/TelemetryInfo.kt create mode 100644 feature/node/src/screenshotTestFdroidDebug/reference/org/meshtastic/feature/node/NodeItemScreenshotTest/NodeInfoSignalTest_748aa731_0.png create mode 100644 feature/node/src/screenshotTestFdroidDebug/reference/org/meshtastic/feature/node/NodeItemScreenshotTest/NodeInfoSimpleTest_748aa731_0.png create mode 100644 feature/node/src/screenshotTestFdroidDebug/reference/org/meshtastic/feature/node/NodeItemScreenshotTest/NodeInfoStatusTest_748aa731_0.png create mode 100644 feature/node/src/screenshotTestFdroidDebug/reference/org/meshtastic/feature/node/NodeItemScreenshotTest/NodeInfoTest_748aa731_41783942_1.png create mode 100644 feature/node/src/screenshotTestFdroidDebug/reference/org/meshtastic/feature/node/NodeItemScreenshotTest/NodeInfoTest_748aa731_41783942_2.png create mode 100644 feature/node/src/screenshotTestFdroidDebug/reference/org/meshtastic/feature/node/NodeItemScreenshotTest/NodeInfoTest_748aa731_41783942_3.png create mode 100644 feature/node/src/screenshotTestFdroidDebug/reference/org/meshtastic/feature/node/NodeItemScreenshotTest/NodeInfoTest_748aa731_41783942_4.png diff --git a/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/ClickableTextField.kt b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/ClickableTextField.kt deleted file mode 100644 index 2d4accc60..000000000 --- a/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/ClickableTextField.kt +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2025 Meshtastic LLC - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.meshtastic.core.ui.component - -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.interaction.collectIsPressedAsState -import androidx.compose.material3.Icon -import androidx.compose.material3.OutlinedTextField -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.vector.ImageVector -import org.jetbrains.compose.resources.StringResource -import org.jetbrains.compose.resources.stringResource - -@Composable -fun ClickableTextField( - label: StringResource, - enabled: Boolean, - trailingIcon: ImageVector, - value: String, - onClick: () -> Unit, - modifier: Modifier = Modifier, - isError: Boolean = false, -) { - val source = remember { MutableInteractionSource() } - val isPressed by source.collectIsPressedAsState() - if (isPressed) onClick() - - OutlinedTextField( - value, - onValueChange = {}, - enabled = enabled, - readOnly = true, - label = { Text(stringResource(label)) }, - trailingIcon = { Icon(trailingIcon, null) }, - isError = isError, - interactionSource = source, - modifier = modifier, - ) -} diff --git a/core/ui/src/screenshotTest/kotlin/org/meshtastic/core/ui/ComponentScreenshotTest.kt b/core/ui/src/screenshotTest/kotlin/org/meshtastic/core/ui/ComponentScreenshotTest.kt new file mode 100644 index 000000000..9da44d81e --- /dev/null +++ b/core/ui/src/screenshotTest/kotlin/org/meshtastic/core/ui/ComponentScreenshotTest.kt @@ -0,0 +1,173 @@ +/* + * Copyright (c) 2025-2026 Meshtastic LLC + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.meshtastic.core.ui + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.rounded.Android +import androidx.compose.material3.Surface +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.compose.ui.unit.dp +import com.android.tools.screenshot.PreviewTest +import org.meshtastic.core.database.model.Node +import org.meshtastic.core.ui.component.BatteryInfoPreviewParameterProvider +import org.meshtastic.core.ui.component.ChannelInfo +import org.meshtastic.core.ui.component.DistanceInfo +import org.meshtastic.core.ui.component.ElevationInfo +import org.meshtastic.core.ui.component.HopsInfo +import org.meshtastic.core.ui.component.IAQScale +import org.meshtastic.core.ui.component.IaqDisplayMode +import org.meshtastic.core.ui.component.IndoorAirQuality +import org.meshtastic.core.ui.component.ListItem +import org.meshtastic.core.ui.component.MaterialBatteryInfo +import org.meshtastic.core.ui.component.NodeChip +import org.meshtastic.core.ui.component.SatelliteCountInfo +import org.meshtastic.core.ui.component.SignalInfo +import org.meshtastic.core.ui.component.SwitchListItem +import org.meshtastic.core.ui.component.TitledCard +import org.meshtastic.core.ui.component.preview.NodePreviewParameterProvider +import org.meshtastic.core.ui.theme.AppTheme +import org.meshtastic.proto.Config + +class ComponentScreenshotTest { + + @PreviewTest + @Preview(showBackground = true) + @Composable + fun BatteryInfoTest(@PreviewParameter(BatteryInfoPreviewParameterProvider::class) info: Pair) { + AppTheme { + MaterialBatteryInfo(level = info.first, voltage = info.second) + } + } + + @PreviewTest + @Preview(showBackground = true) + @Composable + fun SignalInfoTest(@PreviewParameter(NodePreviewParameterProvider::class) node: Node) { + AppTheme { + SignalInfo(node = node) + } + } + + @PreviewTest + @Preview(showBackground = true) + @Composable + fun NodeChipTest(@PreviewParameter(NodePreviewParameterProvider::class) node: Node) { + AppTheme { + NodeChip(node = node) + } + } + + @PreviewTest + @Preview(showBackground = true) + @Composable + fun DistanceInfoTest() { + AppTheme { + DistanceInfo(distance = "12.3 km") + } + } + + @PreviewTest + @Preview(showBackground = true) + @Composable + fun ElevationInfoTest() { + AppTheme { + ElevationInfo(altitude = 1234, system = Config.DisplayConfig.DisplayUnits.METRIC, suffix = "m") + } + } + + @PreviewTest + @Preview(showBackground = true) + @Composable + fun HopsInfoTest() { + AppTheme { + HopsInfo(hops = 3) + } + } + + @PreviewTest + @Preview(showBackground = true) + @Composable + fun SatelliteCountInfoTest() { + AppTheme { + SatelliteCountInfo(satCount = 8) + } + } + + @PreviewTest + @Preview(showBackground = true) + @Composable + fun ChannelInfoTest() { + AppTheme { + ChannelInfo(channel = 1) + } + } + + @PreviewTest + @Preview(showBackground = true) + @Composable + fun ListItemTest() { + AppTheme { + ListItem(text = "Example Item", leadingIcon = Icons.Rounded.Android) {} + } + } + + @PreviewTest + @Preview(showBackground = true) + @Composable + fun SwitchListItemTest() { + AppTheme { + SwitchListItem(checked = true, text = "Example Switch", onClick = {}) + } + } + + @PreviewTest + @Preview(showBackground = true) + @Composable + fun TitledCardTest() { + AppTheme { + Surface { + TitledCard(title = "Example Title") { + Box(modifier = Modifier.fillMaxWidth().height(50.dp)) + } + } + } + } + + @PreviewTest + @Preview(showBackground = true) + @Composable + fun IAQScaleTest() { + AppTheme { + IAQScale() + } + } + + @PreviewTest + @Preview(showBackground = true) + @Composable + fun IndoorAirQualityPillTest() { + AppTheme { + IndoorAirQuality(iaq = 101, displayMode = IaqDisplayMode.Pill) + } + } +} diff --git a/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_0.png b/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_0.png new file mode 100644 index 0000000000000000000000000000000000000000..0e5a618e795ead99279295647f26681df9923e67 GIT binary patch literal 3549 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 LNkvXXu0mjf8>k!l literal 0 HcmV?d00001 diff --git a/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_2.png b/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9c656182981fff9c7240019bafc3dba4be63b405 GIT binary patch literal 3280 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 E0}muc>;M1& literal 0 HcmV?d00001 diff --git a/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_3.png b/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c064a352c071777a68c159f5cca303d78841e45c GIT binary patch literal 3561 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 pFiK)D1YnfJU?obK7TUcP)O91cf(-r^@5 z4u>7ih#ZcDI3sd665@==;Yf%xB8MX(&WIe2gg7H|I1=(k8&OHgdhzXd%L6G{yIxf7 z+9R%CzoA`Exp?W4a^33HYc&mJ`SKqT5DYuR>j z^k|KE{`|RikEB#r9};Ua&mg&W?YgE(3fg@5$Wigbij`v0LZ4jAWy}uMyRlBu%0A2vq{-VL#qOR_-rZZ{Zd%uyUk?h}Jt!SHk+CtOVwBs)y zG!hFJEfx3g-`DDi0}SS)PnwDMKWyxA=$kJoA%uzB-Vtxn8jTnCnY|AV3%J$8bo ziPMe`GA|M{2(QbQe~%cWb;Mj65oT;&zlky9CWg+k2M!$6t~2pjv)1Co$y3_(7!*Hl z(p=I0_vTGaXJY8^k;-*2NLiN1h>q19&yMb?bWhPOLzLs%V@H+N0YR>e=*W>{THW*J zFUq=Axc9K(qm(kZNxTlpojZ3$t2P}y?LR(hDpsyqBMu%qEOzhND~jhW6pb1;^~%!) zy~N|kx+gKas93ot+(543;NJ8a7$WsjVjB_s+wPeuI@OIDO0P)2%PV$h^~HgAKEw^Q z{KbnGS=VcOW~Rgo;GGa{pnAj}v>dJhzb9z?@n>3HCZjZIPo6rhX~Nn8SEsuApqN{{ zKs5N}uN7^No_)3YqHy=_UD39E7o~GZa$!XH+Yc!G+N<-gfBz)g;i;ysu1@srSEzJO zbXZ;&fPv9x#5?60oTHlZ3SEP?QO(HF<24NjF)zIahDgg}84=uwg6_SwnMT6T^YU4< z=W2DvA*}OJZr-|;b%CgU^ceLIh(ME;cj%bX>Oq2nY9tsLx%T$$JBkJ~2Tv*hn|5s2 zxLLcmpDP)}oVg3UP679ac9L8e(U~)6l{yjka1FprN_FcuY|=EKU;lxgrcd9mvPQ}^ z_}jMckn(giZlRi%tvh%c825t*4>TQR%-D&6e;;cj${G-zfpU2Ka=;*Q_Ut+Bo_^SL zK7dRY)i?dTl~RuB9|;9nZb~lT9=sDvu3o*SXn9frFP}dXuxZEBr%%N@e|%5TS61%S zbU|RSkR75))0WvRS5PO31KcE9CtN$O0WgLxsUDurG^1lCrgb6C;u;ACXsP4xSF&X3 zcS?P5ExASl1B0PSEsT^8gjPnhZ{GotHq1b|Ji=$@_w~c3^8xtcRR61nztcuE_|jBU zTYEw&pFCxTSN8jN-VMAzPbw^0v{ZX0VB3z)UArs#wd*!$8b2^l&`cR(IUXD3!iW&B z&^mA2@Lyt>G-bNdNqKqgiIb5#Js%KEi346A?$0%nomIOP?b2_SX&PT6!f3T)=Pps1 zd0-q75T^@z8)F>B5E7RA1?VPhJKwI|dldbj-~CY26wR5hXt0Ju%Ufk!0a*rj;ctza zc)usJm%$Si2!Q$hfNeXtTN>18$u+2-4kVb3O-TqaW$H|&K2uCZ=BDE5v^OlQK{2!xd1F!xJ1$NHKU!GK|Jd7ZQEXTdlyJSd28IO#lNuNvH*jDyBDgH3m_;!Ne%_*-cFZK$bUw@iJhKJgnCswnPz_Bk za05e<0Rs*_2SbCFCl&Cl{9ckM?ZCPg+R&)+r;4^~CZ6D06BwK@^T-YXS5ubd!-#l# zd(q-=G>rr^I@R((-{$#vhR!b*Lo$ZykZ9o=7#7vQMdcb`G$M3z(+rZUW4??CYchPx z3<6c^f=RH;z%QLj)6z7#fGsBSyqtCT>?BjKh#%>BQ>MtT9j)7T%BFrLh|?Or{Rc$@ zFevzqw46^YtZL~5GfCrLY+HE(O|lqL|5pp(eXz}s%qNp0Xkew%ikGx5#d>~q)D)M^W#z_e6g z^L#c�{A4rGr7yzuBOF4%M!g7>x*{rfCL|@bk9iL8Gz_aXMe8&S`P_^ck%#3O1k8 zYmi*PMpAl?F7{2IG21(jSp?^X3>%^7O#yD)b|8U)R5!234{WKCoq;bD0-H{1!=p!a zqG#{^O5Gg999S@xzkBx?pw+`OWI@lzjp*1h|G^S2H`UVJG;|pNU?%6+ON>U8or!oX zlfz@aW+LteQDC?T%1wbG2m7vQz1X>cy;Ag?jC}wCUs?u(L*OodW05uJzPugWE$!F8 zP$_TGvVG(P4B{x+5wOT;N^a!KhyY?t>=&fpK`>=vEI3<(_YQw6ztfh*9Gkv zZ}|FDj~&(YIk0X+f5Z3Y_n?He1MV14iukSUQxNwA?RbttP-@x+#1q)MGj00p z?Cu2^2L8@?M!0bDex|)_d{*#VDgZny81{JtwgyrCsZ(dNhD85vn92Ed6r&L#3zbTv z!}FMi%qR)U;a{3|dt)lLaZ|!NUlOppK-P=o0t`p~Hn~Jdm&fw@x+!!Uyo4{(Qi9wM5TzY32%e#% zX=)P>A3ah!LmcvHL>Msf-sQdET5%2FL4MHQOZv$I_S^At6PO+4HDC1Vrz}YG9or^+ zjmQLcU#HUbGm7z;u)KI){Nltc8LY(0h=5{9IX+@1 z!-dzY=uwE;`Qm^8oErn^lIpH$0Y?3w{k);3M_Qa~IZ@kzXX2Yri;CuHI$Lav2w%eD zLq5a|*kZ%W!@wdZVk7>gYtUjWz-KE|kIqe#HTbN8Z_$xEGQz-`7T?J(3G*U=wGjcl zqFM8ePW@~}WHDmI-j4yG?yO?#{)rZ{TLmNHGpv1tdk#9-qr)#G~?uCu|$ zi0GOQfGfl`96uw%hmy#~MIA`t7Kg1n0l0pA*FzXs{N?pTHN@CP1j@?FGk?^6uMEW} z#^Fb7Hstlh#isMcfqwvpv^U%~u9INu=SCFegE`xFtXQ#9yHAuE!4DfFg3;hR9h=Td zjR=N=>yU{J3)oFys}?r>^8b|p;0d7KsB35xTth$T13@twC6N(bn;AWvtbaa3nA-SsCmc&NnaQwgHjL6|g zh%+LGBO%U+9FBxIBXT$r;*7}QNQg5cha(}*h#ZcDI3sd665@==;Yi5;0Ej=QwNGUB QRsaA107*qoM6N<$g1t*tmH+?% literal 0 HcmV?d00001 diff --git a/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_6.png b/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/BatteryInfoTest_748aa731_e7e392ea_6.png new file mode 100644 index 0000000000000000000000000000000000000000..bd01926438efcc452601dc179e9ac6512a671cd8 GIT binary patch literal 68 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 Hvk3SvbV`yL literal 0 HcmV?d00001 diff --git a/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/IndoorAirQualityPillTest_748aa731_0.png b/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/IndoorAirQualityPillTest_748aa731_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bd01926438efcc452601dc179e9ac6512a671cd8 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blZci7-kcznE1O_Gs237_}Hj&cB PKw$zvQI&wZ}@y07c|{a$z4EgN&m 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 literal 0 HcmV?d00001 diff --git a/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/NodeChipTest_748aa731_41783942_2.png b/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/NodeChipTest_748aa731_41783942_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6244babaf813e726e02ce464fe3fd7447a869c40 GIT binary patch literal 1561 zcmXw3dpOg382=3+tfo3{Q#emrxpdKCE)SF3Mj}E{n^Fe;T zmWHy_hMYF$vNe~3#at>>j4_<$)F0pX`#kUSKA+3`e!uT^zr!A24Fe4T0KiC3SAWG# zQyedKRYly>V&n(_>xPi72aYDAz6`AT1|}J{d|e7=TnH)iHZKg72ERRvfyX;MSziCm%B)}J6oW2sgZkeYFJR(!p6ymoIo)bK zbWr{wK^ZFHT2qE>nA$ivU;P6M@~&NtRq~>;G`+Tbs^}JZWDK#Nsj;u*{9HJF7RG4t6VkY0xer|Q{R#ZV!z4gi!B?x zVsB=zr9UnTyJa;+*-ix5{^#%~TG8{blw#uIo;*+3#LfdPzO84A+%r!pk7|}np`ck< z?A|lfN=wV;1ke%~SlkS6_1*7At&0|Ba{y&R=;z-exz+xZ{dn3j^}P@#he)BA6U0wo z%sg2@w|e5lKmc1Qoxt`nAPC4?H^V^v>3v#wxwKHMk`Bcd5`?;zTVTMC#W>?&Dh*^JKrW5yF**ra{ zL%eG6+JYG2_lS^jSL+T}SbN|EVILcuNt&7|jzjXz<&Vd4_6zSkj;6i2OD=l{Nw7buVA9+ zrxz~H@2+lMUuoA{^HPOCe7&*pvV35`r+nKL&x&{#g>;KO2dFk8{fX{@p0k`8A5_(` zk5>hTUyh?PopG(l$)`?C?%TN1^*cI~@r>lUR_{Vx9fqGtOiDavGV}eFX#k9rbUTvE zFB%P0Pi$qSaVMC`e2w8lZ`Y?xH7#*|4#G+$MIUVpzgbJxY0G5=|Kk3hO8vAc;<(Ao z?bXR0zjX5E3EyygxtW6uzVJ)Z|8pEvYl}O-f8&*+2*mWCYx>5PoLL|0v!cAc!5-4o zT|dnWWlnxrxQa#<(YdJyZ?tn&gzc*-m=#Gbtq7mHueCt|FU524U*D|rf~Gb6va5i* zxz!HCdEGMUu~-X#`inzW)4?riq`Ta|>5N)p;{5sDB(uXf)w=YDl6VkW}(L7aoGlb;R-^OzGX zIbWxwnC#paB~2=O&;oTBsH*fd@qKYiG9=bI@(J_pWB-RO_&q2XYw>V(Q1X{2Q?Sh+1#ga4K#W z4p|?+oHLk8$9~rP$|bO{$}joK@FrF~iDkBB!1bdMX+AwL;bOSEV&wx!x5KVgE@2t} E0S$>4v;Y7A literal 0 HcmV?d00001 diff --git a/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/NodeChipTest_748aa731_41783942_3.png b/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/NodeChipTest_748aa731_41783942_3.png new file mode 100644 index 0000000000000000000000000000000000000000..41ce867ae37fd64afff033c5ce14e47726807e41 GIT binary patch literal 2250 zcmV;*2sQVKP)_Us;=ezrl+d9cRP0M z*fG&m;`P;{s;)>JuGuEasyB*~%GF|D#joPu@}HUiA;>)(fD3Q}Zom=Mn{0@w1#TQo z92N(w{}RQOE64yDCKGT4&cGejCpSC`ig&`n^gBa6IKyNE9Lnab>MCe56;Ge8x28KU zBnM-drcr1(1-De+R2mhuJ{cGLkF3jZ0EWq({YTcPB~1|TJPDde)`;SYm84UKX-=@H zO4Qd7{~8taXrf#cRV*W&F^nG+RV){EiAv&OMnQ4PEvZ~ZI$;<;DXm58Opw4q`J>(vw4!zg31*lufQvRk zqG4 z9e|s$gVmc!1;gk7+>9NlT2Cq%MhD<#thkczSYq@93#AzEe=@p)-*Jkmg$$z;EGVNj zET{|1*G~~6$G%~FRqGi4(O%Fq&pJ)SVlj&+pL>wRWJ{lZPuThdJN7RkaSML=(iStn za5RaL33IIZO5_AR@uU;Prd@MLoL9E)n@{?5O8ThrZ`opoe?5@I$f*4WIo5n7a)N>n zKkrB4yrN3iSkhN)m?q9Sx0O+kuXwG-$b>o8d?k{Cw!P{yvG?##B-RTz-qMcr*I3fm zZJi~4On=nlt6HZL_E__gND2yOFB(o_-B`ME9O0q#?qGf2 z^O-Ir){Pfm?P0YqxbHSw(sv$MOyaX8N@I-*krGs%lV!UAQ5PIvPJG)n=^J*;7DI-; zY_a9vA4rT$m}6DJw4!j$1o6qp0iyRS-9@)23Pj)jJ;kS^Ul+^PO(yZW5-CBKtQae9 zyYmL?HKbAFoxonE+3wow+lp12rn@E`36^7i-!g;5$b>monH7Id6?YZfVr!#v_x-nv zwSUhfZFM73f?{7%KAU8-0Ff6QACDMdY`n_}%QUacMbMzfYBFi&5XZT&N~_jqif`tA zLi*4N?FE(pv$5Ftr*xrceRfN$?A!UDk~S)fmVa%sY;^)=lZOO`%^lSwU zbF2XU%W>_lyFz?5=^gRw+DYP{l7+_4gQ-WG%P+FU%~>*%^rZ`t5_HB7!;G?i1D~?W z9`AJzX`|Bn>#Ur z`kaqllb(y9L5>w4<#N3_y>J6>BC`$7?wBU1F<}!aLFJn@FlV~pqH`LOGLNoC<+&UB z*;cf`s+%}tNTW#yxd zI&}ep1qZfi%zE|gfbEyYk`8haG{~`HFVn0${ftw|xSZHkw#3%&Ob^>&K@({~!9(5d zvg+R+(%UM>N32`aBx1@vS6cqS1R&|x{^@70WJ#%gC%v}SWh`gZk0zzJZ$P11! zQwNiFZb=8tEvR2(RmX`-qiP?S_-U2>jwx)3sWD*_c|nn6B-@OcHv1#vOklpo;sjT8 z)OK!32WsMT71Xb>VlH`di<7K+uX~!qM!jaW!DUY!H|rxWD0uIqzE(`v$2yDW`*yQl zzxL*{Bp$dW9W=L~z^}35DwSD(?*n&`dKF9qok*OCm!$h4DDY#f zdk!r%t_GPg_#G;zn^UHKKh!o>EZ)2>tb!(Q1pR*DaFX;X-wh>kCSH>6m!N)(6<}4a z{vK1O&Nmsm1UM#cR_@U8dRzU?w_fLXQ;81bji5LK;GRn}wy{f!z)RBo64Z~en&2vu zDxnh{JGB>^ch4n#=tSNK3Q%vx%KMC&@RD@D1O?4KRvFZzPxC=cWWuM=aFGbgb5TYI%(-VqK~t%E zvH!?g(uiS#pfv4XDwT8=6x1ind#aB_P>`sv5k(ctNGA;A2XGC}sUA8C zYDk)1=9gBkA)PTyb5fFa%-mASgrlG!nVyrDRc$1lGE8$&R<*%c_o&`^7SyCVUXnfy zFDD0Jn5F=is_Tl0XPNLMC`hK_;!w@s?{9; z9Gqb?0atKuC)`neawBU&WoqIFjCTa~uWDlzyvc_D Y0O#;JF*X;;LjV8(07*qoM6N<$g0)gfRR910 literal 0 HcmV?d00001 diff --git a/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/NodeChipTest_748aa731_41783942_4.png b/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/NodeChipTest_748aa731_41783942_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d032a70d54673e5cabe2bce5e960101a1ed481db GIT binary patch literal 2013 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 literal 0 HcmV?d00001 diff --git a/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/TitledCardTest_748aa731_0.png b/core/ui/src/screenshotTestFdroidDebug/reference/org/meshtastic/core/ui/ComponentScreenshotTest/TitledCardTest_748aa731_0.png new file mode 100644 index 0000000000000000000000000000000000000000..06a5a72c6614cfe0eb10d11841bfec6da1b5e379 GIT binary patch literal 6885 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 VBmV-^7(6z<^CnitrDw0*`45Q#krn^| literal 0 HcmV?d00001 diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/ChannelInfo.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/ChannelInfo.kt deleted file mode 100644 index 040856fc8..000000000 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/ChannelInfo.kt +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2025-2026 Meshtastic LLC - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.meshtastic.feature.node.component - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Tsunami -import androidx.compose.material3.MaterialTheme -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.tooling.preview.PreviewLightDark -import org.meshtastic.core.ui.theme.AppTheme - -@Composable -fun ChannelInfo( - channel: Int, - modifier: Modifier = Modifier, - contentColor: Color = MaterialTheme.colorScheme.onSurface, -) { - IconInfo( - modifier = modifier, - icon = Icons.Rounded.Tsunami, - contentDescription = "Channel", - text = channel.toString(), - contentColor = contentColor, - ) -} - -@PreviewLightDark -@Composable -private fun ChannelInfoPreview() { - AppTheme { ChannelInfo(channel = 2) } -} diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/CompassBottomSheet.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/CompassBottomSheet.kt index 7f8b99573..049f75adf 100644 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/CompassBottomSheet.kt +++ b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/CompassBottomSheet.kt @@ -70,6 +70,7 @@ import org.meshtastic.core.resources.compass_uncertainty_unknown import org.meshtastic.core.resources.elevation_suffix import org.meshtastic.core.resources.exchange_position import org.meshtastic.core.resources.last_position_update +import org.meshtastic.core.ui.component.ElevationInfo import org.meshtastic.core.ui.theme.AppTheme import org.meshtastic.feature.node.compass.CompassUiState import org.meshtastic.feature.node.compass.CompassWarning diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/DistanceInfo.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/DistanceInfo.kt deleted file mode 100644 index c65b9a490..000000000 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/DistanceInfo.kt +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2025-2026 Meshtastic LLC - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.meshtastic.feature.node.component - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.SocialDistance -import androidx.compose.material3.MaterialTheme -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.tooling.preview.PreviewLightDark -import org.jetbrains.compose.resources.stringResource -import org.meshtastic.core.resources.Res -import org.meshtastic.core.resources.distance -import org.meshtastic.core.ui.theme.AppTheme - -@Composable -fun DistanceInfo( - distance: String, - modifier: Modifier = Modifier, - contentColor: Color = MaterialTheme.colorScheme.onSurface, -) { - IconInfo( - modifier = modifier, - icon = Icons.Rounded.SocialDistance, - contentDescription = stringResource(Res.string.distance), - label = stringResource(Res.string.distance), - text = distance, - contentColor = contentColor, - ) -} - -@PreviewLightDark -@Composable -private fun DistanceInfoPreview() { - AppTheme { DistanceInfo(distance = "423 mi.") } -} diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/ElevationInfo.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/ElevationInfo.kt deleted file mode 100644 index dca3b143f..000000000 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/ElevationInfo.kt +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2025-2026 Meshtastic LLC - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.meshtastic.feature.node.component - -import androidx.compose.material3.MaterialTheme -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.tooling.preview.Preview -import org.jetbrains.compose.resources.stringResource -import org.meshtastic.core.model.util.metersIn -import org.meshtastic.core.model.util.toString -import org.meshtastic.core.resources.Res -import org.meshtastic.core.resources.altitude -import org.meshtastic.core.resources.elevation_suffix -import org.meshtastic.core.ui.icon.Elevation -import org.meshtastic.core.ui.icon.MeshtasticIcons -import org.meshtastic.proto.Config - -@Composable -fun ElevationInfo( - modifier: Modifier = Modifier, - altitude: Int, - system: Config.DisplayConfig.DisplayUnits, - suffix: String = stringResource(Res.string.elevation_suffix), - contentColor: Color = MaterialTheme.colorScheme.onSurface, -) { - IconInfo( - modifier = modifier, - icon = MeshtasticIcons.Elevation, - contentDescription = stringResource(Res.string.altitude), - label = stringResource(Res.string.altitude), - text = altitude.metersIn(system).toString(system) + " " + suffix, - contentColor = contentColor, - ) -} - -@Composable -@Preview -private fun ElevationInfoPreview() { - MaterialTheme { ElevationInfo(altitude = 100, system = Config.DisplayConfig.DisplayUnits.METRIC, suffix = "ASL") } -} diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/HopsInfo.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/HopsInfo.kt deleted file mode 100644 index c888bbca1..000000000 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/HopsInfo.kt +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2025-2026 Meshtastic LLC - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.meshtastic.feature.node.component - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.CrueltyFree -import androidx.compose.material3.MaterialTheme -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.tooling.preview.PreviewLightDark -import org.jetbrains.compose.resources.stringResource -import org.meshtastic.core.resources.Res -import org.meshtastic.core.resources.hops_away -import org.meshtastic.core.ui.theme.AppTheme - -@Composable -fun HopsInfo(hops: Int, modifier: Modifier = Modifier, contentColor: Color = MaterialTheme.colorScheme.onSurface) { - IconInfo( - modifier = modifier, - icon = Icons.Rounded.CrueltyFree, - contentDescription = stringResource(Res.string.hops_away), - label = stringResource(Res.string.hops_away), - text = hops.toString(), - contentColor = contentColor, - ) -} - -@PreviewLightDark -@Composable -private fun HopsInfoPreview() { - AppTheme { HopsInfo(hops = 3) } -} diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/IconInfo.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/IconInfo.kt deleted file mode 100644 index 1c02eb024..000000000 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/IconInfo.kt +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2025-2026 Meshtastic LLC - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.meshtastic.feature.node.component - -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.size -import androidx.compose.material3.Icon -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import org.meshtastic.core.ui.icon.Elevation -import org.meshtastic.core.ui.icon.MeshtasticIcons - -private const val SIZE_ICON = 20 - -@Composable -fun IconInfo( - icon: ImageVector, - contentDescription: String, - modifier: Modifier = Modifier, - label: String? = null, - text: String? = null, - style: TextStyle = MaterialTheme.typography.labelMedium, - contentColor: Color = MaterialTheme.colorScheme.onSurface, - content: @Composable () -> Unit = {}, -) { - Row( - modifier = modifier, - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(2.dp), - ) { - Icon( - modifier = Modifier.size(SIZE_ICON.dp), - imageVector = icon, - contentDescription = contentDescription, - tint = contentColor, - ) - label?.let { Text(text = it, style = style, color = contentColor) } - text?.let { Text(text = it, style = style, color = contentColor) } - content() - } -} - -@Composable -@Preview -private fun IconInfoPreview() { - MaterialTheme { - IconInfo(icon = MeshtasticIcons.Elevation, contentDescription = "Elevation", content = { Text(text = "100") }) - } -} diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/LastHeardInfo.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/LastHeardInfo.kt deleted file mode 100644 index 8821065a0..000000000 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/LastHeardInfo.kt +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2025-2026 Meshtastic LLC - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.meshtastic.feature.node.component - -import androidx.compose.material3.MaterialTheme -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.vectorResource -import androidx.compose.ui.tooling.preview.PreviewLightDark -import org.jetbrains.compose.resources.stringResource -import org.jetbrains.compose.resources.vectorResource -import org.meshtastic.core.common.util.nowSeconds -import org.meshtastic.core.resources.Res -import org.meshtastic.core.resources.ic_antenna -import org.meshtastic.core.resources.node_sort_last_heard -import org.meshtastic.core.ui.theme.AppTheme -import org.meshtastic.core.ui.util.formatAgo - -@Composable -fun LastHeardInfo( - modifier: Modifier = Modifier, - lastHeard: Int, - showLabel: Boolean = true, - contentColor: Color = MaterialTheme.colorScheme.onSurface, -) { - IconInfo( - modifier = modifier, - icon = vectorResource(Res.drawable.ic_antenna), - contentDescription = stringResource(Res.string.node_sort_last_heard), - label = if (showLabel) stringResource(Res.string.node_sort_last_heard) else null, - text = formatAgo(lastHeard), - contentColor = contentColor, - ) -} - -@PreviewLightDark -@Composable -private fun LastHeardInfoPreview() { - AppTheme { LastHeardInfo(lastHeard = nowSeconds.toInt() - 8600) } -} diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/SatelliteCountInfo.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/SatelliteCountInfo.kt deleted file mode 100644 index f11749d98..000000000 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/SatelliteCountInfo.kt +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2025-2026 Meshtastic LLC - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.meshtastic.feature.node.component - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.twotone.SatelliteAlt -import androidx.compose.material3.MaterialTheme -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.tooling.preview.PreviewLightDark -import org.jetbrains.compose.resources.stringResource -import org.meshtastic.core.resources.Res -import org.meshtastic.core.resources.sats -import org.meshtastic.core.ui.theme.AppTheme - -@Composable -fun SatelliteCountInfo( - modifier: Modifier = Modifier, - satCount: Int, - contentColor: Color = MaterialTheme.colorScheme.onSurface, -) { - IconInfo( - modifier = modifier, - icon = Icons.TwoTone.SatelliteAlt, - contentDescription = stringResource(Res.string.sats), - label = stringResource(Res.string.sats), - text = "$satCount", - contentColor = contentColor, - ) -} - -@PreviewLightDark -@Composable -private fun SatelliteCountInfoPreview() { - AppTheme { SatelliteCountInfo(satCount = 5) } -} diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/TelemetryInfo.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/TelemetryInfo.kt deleted file mode 100644 index 12acecf9d..000000000 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/TelemetryInfo.kt +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright (c) 2025-2026 Meshtastic LLC - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -@file:Suppress("TooManyFunctions") - -package org.meshtastic.feature.node.component - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Air -import androidx.compose.material.icons.rounded.ElectricBolt -import androidx.compose.material.icons.rounded.Fingerprint -import androidx.compose.material.icons.rounded.Grass -import androidx.compose.material.icons.rounded.People -import androidx.compose.material.icons.rounded.Router -import androidx.compose.material.icons.rounded.Thermostat -import androidx.compose.material.icons.rounded.WaterDrop -import androidx.compose.material.icons.rounded.Work -import androidx.compose.material3.MaterialTheme -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import org.jetbrains.compose.resources.stringResource -import org.meshtastic.core.resources.Res -import org.meshtastic.core.resources.env_metrics_log -import org.meshtastic.core.resources.humidity -import org.meshtastic.core.resources.iaq -import org.meshtastic.core.resources.node_id -import org.meshtastic.core.resources.pax -import org.meshtastic.core.resources.pax_metrics_log -import org.meshtastic.core.resources.role -import org.meshtastic.core.resources.soil_moisture -import org.meshtastic.core.resources.soil_temperature -import org.meshtastic.core.resources.temperature - -@Composable -fun TemperatureInfo( - temp: String, - modifier: Modifier = Modifier, - contentColor: Color = MaterialTheme.colorScheme.onSurface, -) { - IconInfo( - modifier = modifier, - icon = Icons.Rounded.Thermostat, - contentDescription = stringResource(Res.string.env_metrics_log), - label = stringResource(Res.string.temperature), - text = temp, - contentColor = contentColor, - ) -} - -@Composable -fun HumidityInfo( - humidity: String, - modifier: Modifier = Modifier, - contentColor: Color = MaterialTheme.colorScheme.onSurface, -) { - IconInfo( - modifier = modifier, - icon = Icons.Rounded.WaterDrop, - contentDescription = stringResource(Res.string.env_metrics_log), - label = stringResource(Res.string.humidity), - text = humidity, - contentColor = contentColor, - ) -} - -@Composable -fun SoilTemperatureInfo( - temp: String, - modifier: Modifier = Modifier, - contentColor: Color = MaterialTheme.colorScheme.onSurface, -) { - IconInfo( - modifier = modifier, - icon = Icons.Rounded.Grass, - contentDescription = stringResource(Res.string.env_metrics_log), - label = stringResource(Res.string.soil_temperature), - text = temp, - contentColor = contentColor, - ) -} - -@Composable -fun SoilMoistureInfo( - moisture: String, - modifier: Modifier = Modifier, - contentColor: Color = MaterialTheme.colorScheme.onSurface, -) { - IconInfo( - modifier = modifier, - icon = Icons.Rounded.Grass, - contentDescription = stringResource(Res.string.env_metrics_log), - label = stringResource(Res.string.soil_moisture), - text = moisture, - contentColor = contentColor, - ) -} - -@Composable -fun PaxcountInfo( - pax: String, - modifier: Modifier = Modifier, - contentColor: Color = MaterialTheme.colorScheme.onSurface, -) { - IconInfo( - modifier = modifier, - icon = Icons.Rounded.People, - contentDescription = stringResource(Res.string.pax_metrics_log), - label = stringResource(Res.string.pax), - text = pax, - contentColor = contentColor, - ) -} - -@Composable -fun AirQualityInfo( - iaq: String, - modifier: Modifier = Modifier, - contentColor: Color = MaterialTheme.colorScheme.onSurface, -) { - IconInfo( - modifier = modifier, - icon = Icons.Rounded.Air, - contentDescription = stringResource(Res.string.env_metrics_log), - label = stringResource(Res.string.iaq), - text = iaq, - contentColor = contentColor, - ) -} - -@Composable -fun PowerInfo( - value: String, - modifier: Modifier = Modifier, - label: String? = null, - contentColor: Color = MaterialTheme.colorScheme.onSurface, -) { - IconInfo( - modifier = modifier, - icon = Icons.Rounded.ElectricBolt, - contentDescription = stringResource(Res.string.env_metrics_log), - label = label, - text = value, - contentColor = contentColor, - ) -} - -@Composable -fun HardwareInfo( - hwModel: String, - modifier: Modifier = Modifier, - contentColor: Color = MaterialTheme.colorScheme.onSurface, -) { - IconInfo( - modifier = modifier, - icon = Icons.Rounded.Router, - contentDescription = "Hardware Model", - text = hwModel, - style = MaterialTheme.typography.labelSmall, - contentColor = contentColor, - ) -} - -@Composable -fun RoleInfo(role: String, modifier: Modifier = Modifier, contentColor: Color = MaterialTheme.colorScheme.onSurface) { - IconInfo( - modifier = modifier, - icon = Icons.Rounded.Work, - contentDescription = stringResource(Res.string.role), - text = role, - style = MaterialTheme.typography.labelSmall, - contentColor = contentColor, - ) -} - -@Composable -fun NodeIdInfo(id: String, modifier: Modifier = Modifier, contentColor: Color = MaterialTheme.colorScheme.onSurface) { - IconInfo( - modifier = modifier, - icon = Icons.Rounded.Fingerprint, - contentDescription = stringResource(Res.string.node_id), - text = id, - style = MaterialTheme.typography.labelSmall, - contentColor = contentColor, - ) -} diff --git a/feature/node/src/screenshotTestFdroidDebug/reference/org/meshtastic/feature/node/NodeItemScreenshotTest/NodeInfoSignalTest_748aa731_0.png b/feature/node/src/screenshotTestFdroidDebug/reference/org/meshtastic/feature/node/NodeItemScreenshotTest/NodeInfoSignalTest_748aa731_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bd01926438efcc452601dc179e9ac6512a671cd8 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blZci7-kcznE1O_Gs237_}Hj&cB PKw$