From fe9491121ca2a41e609ecd10155f2858dee32acc Mon Sep 17 00:00:00 2001 From: Phil Oliver <3497406+poliver@users.noreply.github.com> Date: Thu, 2 Oct 2025 05:56:49 -0400 Subject: [PATCH] Modularize common composables (#3286) --- app/detekt-baseline.xml | 15 -------- .../ui/map/components/EditWaypointDialog.kt | 2 +- .../ui/map/components/EditWaypointDialog.kt | 2 +- .../geeksville/mesh/ui/node/NodeMapScreen.kt | 2 +- .../main/java/com/geeksville/mesh/ui/Main.kt | 2 +- .../mesh/ui/connections/ConnectionsScreen.kt | 2 +- .../geeksville/mesh/ui/contact/ContactItem.kt | 2 +- .../geeksville/mesh/ui/contact/Contacts.kt | 2 +- .../com/geeksville/mesh/ui/debug/Debug.kt | 2 +- .../com/geeksville/mesh/ui/map/MapScreen.kt | 2 +- .../com/geeksville/mesh/ui/message/Message.kt | 2 +- .../ui/message/components/MessageActions.kt | 2 +- .../mesh/ui/node/NodeDetailScreen.kt | 2 +- .../geeksville/mesh/ui/node/NodeListScreen.kt | 2 +- .../mesh/ui/settings/SettingsScreen.kt | 2 +- .../radio/components/AudioConfigItemList.kt | 2 +- .../components/BluetoothConfigItemList.kt | 2 +- .../components/CannedMessageConfigItemList.kt | 2 +- .../components/ChannelSettingsItemList.kt | 2 +- .../DetectionSensorConfigItemList.kt | 2 +- .../radio/components/DeviceConfigItemList.kt | 2 +- .../radio/components/DisplayConfigItemList.kt | 2 +- .../radio/components/EditChannelDialog.kt | 4 +-- .../radio/components/LoRaConfigItemList.kt | 4 +-- .../components/MapReportingPreference.kt | 2 +- .../radio/components/NetworkConfigItemList.kt | 2 +- .../components/PositionConfigItemList.kt | 2 +- .../radio/components/RadioConfigScreenList.kt | 2 +- .../RemoteHardwareConfigItemList.kt | 2 +- .../components/SecurityConfigItemList.kt | 8 ++--- .../radio/components/SerialConfigItemList.kt | 2 +- .../core/model}/util/ByteStringExtensions.kt | 3 +- core/ui/build.gradle.kts | 6 ++++ core/ui/detekt-baseline.xml | 28 +++++++-------- .../core/ui/component}/DropDownPreference.kt | 2 +- .../ui/component}/EditBase64Preference.kt | 6 ++-- .../core/ui/component}/EditListPreference.kt | 3 +- .../core/ui/component}/MainAppBar.kt | 8 +++-- .../component}/PositionPrecisionPreference.kt | 3 +- .../core/ui/component}/PreferenceDivider.kt | 2 +- .../core/ui/component}/SecurityIcon.kt | 2 +- .../ui/component/preview}/PreviewUtils.kt | 2 +- .../ui/emoji}/CustomRecentEmojiProvider.kt | 2 +- .../meshtastic/core/ui/emoji}/EmojiPicker.kt | 4 +-- .../core/ui/emoji}/EmojiPickerViewModel.kt | 2 +- .../src/main/res/drawable/ic_meshtastic.xml | 36 +++++++++++++++++++ 46 files changed, 110 insertions(+), 84 deletions(-) rename {app/src/main/java/com/geeksville/mesh => core/model/src/main/kotlin/org/meshtastic/core/model}/util/ByteStringExtensions.kt (96%) rename {app/src/main/java/com/geeksville/mesh/ui/common/components => core/ui/src/main/kotlin/org/meshtastic/core/ui/component}/DropDownPreference.kt (99%) rename {app/src/main/java/com/geeksville/mesh/ui/common/components => core/ui/src/main/kotlin/org/meshtastic/core/ui/component}/EditBase64Preference.kt (97%) rename {app/src/main/java/com/geeksville/mesh/ui/common/components => core/ui/src/main/kotlin/org/meshtastic/core/ui/component}/EditListPreference.kt (98%) rename {app/src/main/java/com/geeksville/mesh/ui/common/components => core/ui/src/main/kotlin/org/meshtastic/core/ui/component}/MainAppBar.kt (94%) rename {app/src/main/java/com/geeksville/mesh/ui/common/components => core/ui/src/main/kotlin/org/meshtastic/core/ui/component}/PositionPrecisionPreference.kt (97%) rename {app/src/main/java/com/geeksville/mesh/ui/common/components => core/ui/src/main/kotlin/org/meshtastic/core/ui/component}/PreferenceDivider.kt (95%) rename {app/src/main/java/com/geeksville/mesh/ui/common/components => core/ui/src/main/kotlin/org/meshtastic/core/ui/component}/SecurityIcon.kt (99%) rename {app/src/main/java/com/geeksville/mesh/ui/common/components => core/ui/src/main/kotlin/org/meshtastic/core/ui/component/preview}/PreviewUtils.kt (97%) rename {app/src/main/java/com/geeksville/mesh/util => core/ui/src/main/kotlin/org/meshtastic/core/ui/emoji}/CustomRecentEmojiProvider.kt (98%) rename {app/src/main/java/com/geeksville/mesh/ui/common/components => core/ui/src/main/kotlin/org/meshtastic/core/ui/emoji}/EmojiPicker.kt (94%) rename {app/src/main/java/com/geeksville/mesh/ui/common => core/ui/src/main/kotlin/org/meshtastic/core/ui/emoji}/EmojiPickerViewModel.kt (96%) create mode 100644 core/ui/src/main/res/drawable/ic_meshtastic.xml diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index 52110d240..4af55d5f5 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -8,19 +8,16 @@ CommentWrapping:SignalMetrics.kt$Metric.SNR$/* Selected 12 as the max to get 4 equal vertical sections. */ ComposableNaming:NodeDetailScreen.kt$notesSection ComposableParamOrder:ChannelSettingsItemList.kt$ChannelSettingsItemList - ComposableParamOrder:Debug.kt$DebugMenuActions ComposableParamOrder:Debug.kt$DecodedPayloadBlock ComposableParamOrder:DebugSearch.kt$DebugSearchState ComposableParamOrder:DebugSearch.kt$DebugSearchStateviewModelDefaults ComposableParamOrder:DeviceMetrics.kt$DeviceMetricsChart - ComposableParamOrder:EditBase64Preference.kt$EditBase64Preference ComposableParamOrder:EmptyStateContent.kt$EmptyStateContent ComposableParamOrder:EnvironmentCharts.kt$ChartContent ComposableParamOrder:EnvironmentCharts.kt$EnvironmentMetricsChart ComposableParamOrder:EnvironmentCharts.kt$MetricPlottingCanvas ComposableParamOrder:HostMetricsLog.kt$HostMetricsItem ComposableParamOrder:HostMetricsLog.kt$LogLine - ComposableParamOrder:MainAppBar.kt$MainAppBar ComposableParamOrder:MapReportingPreference.kt$MapReportingPreference ComposableParamOrder:Message.kt$MessageScreen ComposableParamOrder:Message.kt$QuickChatRow @@ -69,7 +66,6 @@ FinalNewline:UsbRepositoryModule.kt$com.geeksville.mesh.repository.usb.UsbRepositoryModule.kt ForbiddenComment:SafeBluetooth.kt$SafeBluetooth$// TODO: display some kind of UI about restarting BLE LambdaParameterEventTrailing:Channel.kt$onConfirm - LambdaParameterEventTrailing:MainAppBar.kt$onClickChip LambdaParameterEventTrailing:Message.kt$onClick LambdaParameterEventTrailing:Message.kt$onSendMessage LambdaParameterEventTrailing:MessageList.kt$onReply @@ -105,9 +101,6 @@ MagicNumber:Debug.kt$3 MagicNumber:EditChannelDialog.kt$16 MagicNumber:EditChannelDialog.kt$32 - MagicNumber:EditListPreference.kt$12 - MagicNumber:EditListPreference.kt$12345 - MagicNumber:EditListPreference.kt$67890 MagicNumber:LocationRepository.kt$LocationRepository$1000L MagicNumber:LocationRepository.kt$LocationRepository$30 MagicNumber:LocationRepository.kt$LocationRepository$31 @@ -161,8 +154,6 @@ ModifierMissing:Contacts.kt$ContactsScreen ModifierMissing:Contacts.kt$SelectionToolbar ModifierMissing:DeviceMetrics.kt$DeviceMetricsScreen - ModifierMissing:EmojiPicker.kt$EmojiPicker - ModifierMissing:EmojiPicker.kt$EmojiPickerDialog ModifierMissing:EmptyStateContent.kt$EmptyStateContent ModifierMissing:EnvironmentMetrics.kt$EnvironmentMetricsScreen ModifierMissing:HostMetricsLog.kt$HostMetricsLogScreen @@ -181,12 +172,10 @@ ModifierMissing:PositionLog.kt$PositionItem ModifierMissing:PositionLog.kt$PositionLogScreen ModifierMissing:PowerMetrics.kt$PowerMetricsScreen - ModifierMissing:PreferenceDivider.kt$PreferenceDivider ModifierMissing:RadioConfig.kt$RadioConfigItemList ModifierMissing:RadioConfigScreenList.kt$RadioConfigScreenList ModifierMissing:Reaction.kt$ReactionDialog ModifierMissing:SecurityConfigItemList.kt$SecurityConfigScreen - ModifierMissing:SecurityIcon.kt$SecurityIcon ModifierMissing:SettingsScreen.kt$SettingsScreen ModifierMissing:Share.kt$ShareScreen ModifierMissing:SignalMetrics.kt$SignalMetricsScreen @@ -276,15 +265,12 @@ ParameterNaming:ContactSharing.kt$onSharedContactRequested ParameterNaming:Contacts.kt$onDeleteSelected ParameterNaming:Contacts.kt$onMuteSelected - ParameterNaming:DropDownPreference.kt$onItemSelected - ParameterNaming:EditListPreference.kt$onValuesChanged ParameterNaming:MapReportingPreference.kt$onMapReportingEnabledChanged ParameterNaming:MapReportingPreference.kt$onPositionPrecisionChanged ParameterNaming:MapReportingPreference.kt$onPublishIntervalSecsChanged ParameterNaming:MapReportingPreference.kt$onShouldReportLocationChanged ParameterNaming:MessageList.kt$onUnreadChanged ParameterNaming:NodeDetailScreen.kt$onFirmwareSelected - ParameterNaming:PositionPrecisionPreference.kt$onValueChanged ParameterNaming:UsbDevices.kt$onDeviceSelected ParameterNaming:WelcomeScreen.kt$onGetStarted PreviewPublic:Channel.kt$ModemPresetInfoPreview @@ -335,7 +321,6 @@ TopLevelPropertyNaming:Constants.kt$const val prefix = "com.geeksville.mesh" UnusedParameter:ChannelSettingsItemList.kt$onBack: () -> Unit UnusedParameter:ChannelSettingsItemList.kt$title: String - UnusedParameter:DropDownPreference.kt$modifier: Modifier = Modifier UtilityClassWithPublicConstructor:NetworkRepositoryModule.kt$NetworkRepositoryModule ViewModelForwarding:Main.kt$ScannedQrCodeDialog(uIViewModel, newChannelSet) ViewModelForwarding:Main.kt$VersionChecks(uIViewModel) diff --git a/app/src/fdroid/java/com/geeksville/mesh/ui/map/components/EditWaypointDialog.kt b/app/src/fdroid/java/com/geeksville/mesh/ui/map/components/EditWaypointDialog.kt index 6eba0ba04..227be8a9c 100644 --- a/app/src/fdroid/java/com/geeksville/mesh/ui/map/components/EditWaypointDialog.kt +++ b/app/src/fdroid/java/com/geeksville/mesh/ui/map/components/EditWaypointDialog.kt @@ -64,10 +64,10 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.geeksville.mesh.MeshProtos.Waypoint import com.geeksville.mesh.copy -import com.geeksville.mesh.ui.common.components.EmojiPickerDialog import com.geeksville.mesh.waypoint import org.meshtastic.core.strings.R import org.meshtastic.core.ui.component.EditTextPreference +import org.meshtastic.core.ui.emoji.EmojiPickerDialog import org.meshtastic.core.ui.theme.AppTheme import java.text.SimpleDateFormat import java.util.Calendar diff --git a/app/src/google/java/com/geeksville/mesh/ui/map/components/EditWaypointDialog.kt b/app/src/google/java/com/geeksville/mesh/ui/map/components/EditWaypointDialog.kt index 72de273f3..a05d34e4c 100644 --- a/app/src/google/java/com/geeksville/mesh/ui/map/components/EditWaypointDialog.kt +++ b/app/src/google/java/com/geeksville/mesh/ui/map/components/EditWaypointDialog.kt @@ -64,8 +64,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.geeksville.mesh.MeshProtos.Waypoint import com.geeksville.mesh.copy -import com.geeksville.mesh.ui.common.components.EmojiPickerDialog import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.emoji.EmojiPickerDialog import java.text.SimpleDateFormat import java.util.Calendar import java.util.Locale diff --git a/app/src/google/java/com/geeksville/mesh/ui/node/NodeMapScreen.kt b/app/src/google/java/com/geeksville/mesh/ui/node/NodeMapScreen.kt index f9dd1420b..81c0c778b 100644 --- a/app/src/google/java/com/geeksville/mesh/ui/node/NodeMapScreen.kt +++ b/app/src/google/java/com/geeksville/mesh/ui/node/NodeMapScreen.kt @@ -28,9 +28,9 @@ import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.NavHostController import com.geeksville.mesh.model.MetricsViewModel -import com.geeksville.mesh.ui.common.components.MainAppBar import com.geeksville.mesh.ui.map.MapView import com.geeksville.mesh.ui.map.NodeMapViewModel +import org.meshtastic.core.ui.component.MainAppBar const val DEG_D = 1e-7 diff --git a/app/src/main/java/com/geeksville/mesh/ui/Main.kt b/app/src/main/java/com/geeksville/mesh/ui/Main.kt index 24df1c606..31a5b70d0 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/Main.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/Main.kt @@ -87,7 +87,6 @@ import com.geeksville.mesh.navigation.nodesGraph import com.geeksville.mesh.navigation.settingsGraph import com.geeksville.mesh.repository.radio.MeshActivity import com.geeksville.mesh.service.MeshService -import com.geeksville.mesh.ui.common.components.MainAppBar import com.geeksville.mesh.ui.common.components.ScannedQrCodeDialog import com.geeksville.mesh.ui.connections.DeviceType import com.geeksville.mesh.ui.connections.components.TopLevelNavIcon @@ -107,6 +106,7 @@ import org.meshtastic.core.navigation.Route import org.meshtastic.core.navigation.SettingsRoutes import org.meshtastic.core.service.ConnectionState import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.MainAppBar import org.meshtastic.core.ui.component.MultipleChoiceAlertDialog import org.meshtastic.core.ui.component.SimpleAlertDialog import org.meshtastic.core.ui.icon.Conversations diff --git a/app/src/main/java/com/geeksville/mesh/ui/connections/ConnectionsScreen.kt b/app/src/main/java/com/geeksville/mesh/ui/connections/ConnectionsScreen.kt index 28f776736..6010b5eff 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/connections/ConnectionsScreen.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/connections/ConnectionsScreen.kt @@ -64,7 +64,6 @@ import com.geeksville.mesh.model.BTScanModel import com.geeksville.mesh.model.DeviceListEntry import com.geeksville.mesh.navigation.ConfigRoute import com.geeksville.mesh.navigation.getNavRouteFrom -import com.geeksville.mesh.ui.common.components.MainAppBar import com.geeksville.mesh.ui.connections.components.BLEDevices import com.geeksville.mesh.ui.connections.components.ConnectionsSegmentedBar import com.geeksville.mesh.ui.connections.components.CurrentlyConnectedInfo @@ -78,6 +77,7 @@ import org.meshtastic.core.navigation.Route import org.meshtastic.core.navigation.SettingsRoutes import org.meshtastic.core.service.ConnectionState import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.MainAppBar import org.meshtastic.core.ui.component.SettingsItem import org.meshtastic.core.ui.component.TitledCard diff --git a/app/src/main/java/com/geeksville/mesh/ui/contact/ContactItem.kt b/app/src/main/java/com/geeksville/mesh/ui/contact/ContactItem.kt index 6e729db61..346387315 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/contact/ContactItem.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/contact/ContactItem.kt @@ -51,8 +51,8 @@ import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.unit.dp import com.geeksville.mesh.AppOnlyProtos import com.geeksville.mesh.model.Contact -import com.geeksville.mesh.ui.common.components.SecurityIcon import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.SecurityIcon import org.meshtastic.core.ui.theme.AppTheme @Suppress("LongMethod") diff --git a/app/src/main/java/com/geeksville/mesh/ui/contact/Contacts.kt b/app/src/main/java/com/geeksville/mesh/ui/contact/Contacts.kt index d7b126d74..945a0b50d 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/contact/Contacts.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/contact/Contacts.kt @@ -63,8 +63,8 @@ import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.geeksville.mesh.AppOnlyProtos import com.geeksville.mesh.model.Contact -import com.geeksville.mesh.ui.common.components.MainAppBar import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.MainAppBar import java.util.concurrent.TimeUnit @OptIn(ExperimentalMaterial3ExpressiveApi::class) diff --git a/app/src/main/java/com/geeksville/mesh/ui/debug/Debug.kt b/app/src/main/java/com/geeksville/mesh/ui/debug/Debug.kt index 4b77a57d8..aad95916e 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/debug/Debug.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/debug/Debug.kt @@ -80,13 +80,13 @@ import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.geeksville.mesh.model.DebugViewModel import com.geeksville.mesh.model.DebugViewModel.UiMeshLog -import com.geeksville.mesh.ui.common.components.MainAppBar import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.meshtastic.core.strings.R import org.meshtastic.core.ui.component.CopyIconButton +import org.meshtastic.core.ui.component.MainAppBar import org.meshtastic.core.ui.component.SimpleAlertDialog import org.meshtastic.core.ui.theme.AnnotationColor import org.meshtastic.core.ui.theme.AppTheme diff --git a/app/src/main/java/com/geeksville/mesh/ui/map/MapScreen.kt b/app/src/main/java/com/geeksville/mesh/ui/map/MapScreen.kt index 985f6bbb9..3706f010a 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/map/MapScreen.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/map/MapScreen.kt @@ -26,8 +26,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.geeksville.mesh.ui.common.components.MainAppBar import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.MainAppBar import org.meshtastic.feature.map.MapViewModel @Composable diff --git a/app/src/main/java/com/geeksville/mesh/ui/message/Message.kt b/app/src/main/java/com/geeksville/mesh/ui/message/Message.kt index 116b36606..d5df880f7 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/message/Message.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/message/Message.kt @@ -95,7 +95,6 @@ import androidx.compose.ui.unit.dp import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.geeksville.mesh.AppOnlyProtos -import com.geeksville.mesh.ui.common.components.SecurityIcon import com.geeksville.mesh.ui.sharing.SharedContactDialog import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @@ -105,6 +104,7 @@ import org.meshtastic.core.database.model.Node import org.meshtastic.core.model.DataPacket import org.meshtastic.core.model.util.getChannel import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.SecurityIcon import org.meshtastic.core.ui.theme.AppTheme import org.meshtastic.feature.node.component.NodeKeyStatusIcon import java.nio.charset.StandardCharsets diff --git a/app/src/main/java/com/geeksville/mesh/ui/message/components/MessageActions.kt b/app/src/main/java/com/geeksville/mesh/ui/message/components/MessageActions.kt index 504a05b72..187af2a20 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/message/components/MessageActions.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/message/components/MessageActions.kt @@ -39,9 +39,9 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import com.geeksville.mesh.ui.common.components.EmojiPickerDialog import org.meshtastic.core.model.MessageStatus import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.emoji.EmojiPickerDialog @Composable fun ReactionButton(onSendReaction: (String) -> Unit = {}) { diff --git a/app/src/main/java/com/geeksville/mesh/ui/node/NodeDetailScreen.kt b/app/src/main/java/com/geeksville/mesh/ui/node/NodeDetailScreen.kt index 927c518de..c77152a42 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/node/NodeDetailScreen.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/node/NodeDetailScreen.kt @@ -133,7 +133,6 @@ import com.geeksville.mesh.ConfigProtos import com.geeksville.mesh.MeshProtos import com.geeksville.mesh.model.MetricsState import com.geeksville.mesh.model.MetricsViewModel -import com.geeksville.mesh.ui.common.components.MainAppBar import com.geeksville.mesh.ui.sharing.SharedContactDialog import com.geeksville.mesh.util.thenIf import com.mikepenz.markdown.m3.Markdown @@ -156,6 +155,7 @@ import org.meshtastic.core.navigation.Route import org.meshtastic.core.navigation.SettingsRoutes import org.meshtastic.core.service.ServiceAction import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.MainAppBar import org.meshtastic.core.ui.component.SettingsItem import org.meshtastic.core.ui.component.SettingsItemDetail import org.meshtastic.core.ui.component.SettingsItemSwitch diff --git a/app/src/main/java/com/geeksville/mesh/ui/node/NodeListScreen.kt b/app/src/main/java/com/geeksville/mesh/ui/node/NodeListScreen.kt index f56db1653..7167d9750 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/node/NodeListScreen.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/node/NodeListScreen.kt @@ -58,13 +58,13 @@ import androidx.compose.ui.unit.dp import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.geeksville.mesh.AdminProtos -import com.geeksville.mesh.ui.common.components.MainAppBar import com.geeksville.mesh.ui.sharing.AddContactFAB import com.geeksville.mesh.ui.sharing.supportsQrCodeSharing import org.meshtastic.core.database.model.Node import org.meshtastic.core.model.DeviceVersion import org.meshtastic.core.service.ConnectionState import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.MainAppBar import org.meshtastic.core.ui.component.rememberTimeTickWithLifecycle import org.meshtastic.core.ui.theme.StatusColors.StatusRed import org.meshtastic.feature.node.component.NodeActionDialogs diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/SettingsScreen.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/SettingsScreen.kt index b70bf00d7..d899a8797 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/SettingsScreen.kt @@ -59,7 +59,6 @@ import com.geeksville.mesh.BuildConfig import com.geeksville.mesh.ClientOnlyProtos.DeviceProfile import com.geeksville.mesh.android.gpsDisabled import com.geeksville.mesh.navigation.getNavRouteFrom -import com.geeksville.mesh.ui.common.components.MainAppBar import com.geeksville.mesh.ui.settings.radio.RadioConfigItemList import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel import com.geeksville.mesh.ui.settings.radio.components.EditDeviceProfileDialog @@ -71,6 +70,7 @@ import com.google.accompanist.permissions.rememberMultiplePermissionsState import kotlinx.coroutines.delay import org.meshtastic.core.navigation.Route import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.MainAppBar import org.meshtastic.core.ui.component.MultipleChoiceAlertDialog import org.meshtastic.core.ui.component.SettingsItem import org.meshtastic.core.ui.component.SettingsItemDetail diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/AudioConfigItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/AudioConfigItemList.kt index 837e58240..fed6e3562 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/AudioConfigItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/AudioConfigItemList.kt @@ -29,9 +29,9 @@ import androidx.navigation.NavController import com.geeksville.mesh.ModuleConfigProtos.ModuleConfig.AudioConfig import com.geeksville.mesh.copy import com.geeksville.mesh.moduleConfig -import com.geeksville.mesh.ui.common.components.DropDownPreference import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.DropDownPreference import org.meshtastic.core.ui.component.EditTextPreference import org.meshtastic.core.ui.component.PreferenceCategory import org.meshtastic.core.ui.component.SwitchPreference diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/BluetoothConfigItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/BluetoothConfigItemList.kt index 64d678512..e535bed80 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/BluetoothConfigItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/BluetoothConfigItemList.kt @@ -29,9 +29,9 @@ import androidx.navigation.NavController import com.geeksville.mesh.ConfigProtos.Config.BluetoothConfig import com.geeksville.mesh.config import com.geeksville.mesh.copy -import com.geeksville.mesh.ui.common.components.DropDownPreference import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.DropDownPreference import org.meshtastic.core.ui.component.EditTextPreference import org.meshtastic.core.ui.component.PreferenceCategory import org.meshtastic.core.ui.component.SwitchPreference diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/CannedMessageConfigItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/CannedMessageConfigItemList.kt index bb916f935..6c4b09e70 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/CannedMessageConfigItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/CannedMessageConfigItemList.kt @@ -35,9 +35,9 @@ import androidx.navigation.NavController import com.geeksville.mesh.ModuleConfigProtos.ModuleConfig.CannedMessageConfig import com.geeksville.mesh.copy import com.geeksville.mesh.moduleConfig -import com.geeksville.mesh.ui.common.components.DropDownPreference import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.DropDownPreference import org.meshtastic.core.ui.component.EditTextPreference import org.meshtastic.core.ui.component.PreferenceCategory import org.meshtastic.core.ui.component.SwitchPreference diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/ChannelSettingsItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/ChannelSettingsItemList.kt index 32cdd57ef..6520898fe 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/ChannelSettingsItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/ChannelSettingsItemList.kt @@ -73,13 +73,13 @@ import androidx.navigation.NavController import com.geeksville.mesh.ChannelProtos.ChannelSettings import com.geeksville.mesh.ConfigProtos.Config.LoRaConfig import com.geeksville.mesh.channelSettings -import com.geeksville.mesh.ui.common.components.SecurityIcon import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel import org.meshtastic.core.model.Channel import org.meshtastic.core.model.DeviceVersion import org.meshtastic.core.strings.R import org.meshtastic.core.ui.component.PreferenceCategory import org.meshtastic.core.ui.component.PreferenceFooter +import org.meshtastic.core.ui.component.SecurityIcon import org.meshtastic.core.ui.component.dragContainer import org.meshtastic.core.ui.component.dragDropItemsIndexed import org.meshtastic.core.ui.component.rememberDragDropState diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/DetectionSensorConfigItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/DetectionSensorConfigItemList.kt index 77efbb1cc..4da4725d5 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/DetectionSensorConfigItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/DetectionSensorConfigItemList.kt @@ -32,9 +32,9 @@ import androidx.navigation.NavController import com.geeksville.mesh.ModuleConfigProtos.ModuleConfig import com.geeksville.mesh.copy import com.geeksville.mesh.moduleConfig -import com.geeksville.mesh.ui.common.components.DropDownPreference import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.DropDownPreference import org.meshtastic.core.ui.component.EditTextPreference import org.meshtastic.core.ui.component.PreferenceCategory import org.meshtastic.core.ui.component.SwitchPreference diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/DeviceConfigItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/DeviceConfigItemList.kt index eb5ac6771..2e7263314 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/DeviceConfigItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/DeviceConfigItemList.kt @@ -50,9 +50,9 @@ import androidx.navigation.NavController import com.geeksville.mesh.ConfigProtos.Config.DeviceConfig import com.geeksville.mesh.config import com.geeksville.mesh.copy -import com.geeksville.mesh.ui.common.components.DropDownPreference import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.DropDownPreference import org.meshtastic.core.ui.component.EditTextPreference import org.meshtastic.core.ui.component.PreferenceCategory import org.meshtastic.core.ui.component.SwitchPreference diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/DisplayConfigItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/DisplayConfigItemList.kt index 07c95e42c..f567834f9 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/DisplayConfigItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/DisplayConfigItemList.kt @@ -29,9 +29,9 @@ import androidx.navigation.NavController import com.geeksville.mesh.ConfigProtos.Config.DisplayConfig import com.geeksville.mesh.config import com.geeksville.mesh.copy -import com.geeksville.mesh.ui.common.components.DropDownPreference import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.DropDownPreference import org.meshtastic.core.ui.component.EditTextPreference import org.meshtastic.core.ui.component.PreferenceCategory import org.meshtastic.core.ui.component.SwitchPreference diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/EditChannelDialog.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/EditChannelDialog.kt index 4927b01cf..04257bb9e 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/EditChannelDialog.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/EditChannelDialog.kt @@ -45,11 +45,11 @@ import androidx.compose.ui.unit.dp import com.geeksville.mesh.ChannelProtos import com.geeksville.mesh.channelSettings import com.geeksville.mesh.copy -import com.geeksville.mesh.ui.common.components.EditBase64Preference -import com.geeksville.mesh.ui.common.components.PositionPrecisionPreference import org.meshtastic.core.model.Channel import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.EditBase64Preference import org.meshtastic.core.ui.component.EditTextPreference +import org.meshtastic.core.ui.component.PositionPrecisionPreference import org.meshtastic.core.ui.component.SwitchPreference @Suppress("LongMethod") diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/LoRaConfigItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/LoRaConfigItemList.kt index 02a2822a3..a6deea4a9 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/LoRaConfigItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/LoRaConfigItemList.kt @@ -35,15 +35,15 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.NavController import com.geeksville.mesh.config import com.geeksville.mesh.copy -import com.geeksville.mesh.ui.common.components.DropDownPreference -import com.geeksville.mesh.ui.common.components.PreferenceDivider import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel import org.meshtastic.core.model.Channel import org.meshtastic.core.model.ChannelOption import org.meshtastic.core.model.RegionInfo import org.meshtastic.core.model.numChannels import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.DropDownPreference import org.meshtastic.core.ui.component.EditTextPreference +import org.meshtastic.core.ui.component.PreferenceDivider import org.meshtastic.core.ui.component.SignedIntegerEditTextPreference import org.meshtastic.core.ui.component.SwitchPreference import org.meshtastic.core.ui.component.TitledCard diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/MapReportingPreference.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/MapReportingPreference.kt index b1909ee8c..8d5d1b610 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/MapReportingPreference.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/MapReportingPreference.kt @@ -40,12 +40,12 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.geeksville.mesh.ui.common.components.precisionBitsToMeters import org.meshtastic.core.model.util.DistanceUnit import org.meshtastic.core.model.util.toDistanceString import org.meshtastic.core.strings.R import org.meshtastic.core.ui.component.EditTextPreference import org.meshtastic.core.ui.component.SwitchPreference +import org.meshtastic.core.ui.component.precisionBitsToMeters import kotlin.math.roundToInt private const val POSITION_PRECISION_MIN = 12 diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/NetworkConfigItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/NetworkConfigItemList.kt index 93a5035e3..3619ae91b 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/NetworkConfigItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/NetworkConfigItemList.kt @@ -43,11 +43,11 @@ import androidx.navigation.NavController import com.geeksville.mesh.ConfigProtos.Config.NetworkConfig import com.geeksville.mesh.config import com.geeksville.mesh.copy -import com.geeksville.mesh.ui.common.components.DropDownPreference import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel import com.journeyapps.barcodescanner.ScanContract import com.journeyapps.barcodescanner.ScanOptions import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.DropDownPreference import org.meshtastic.core.ui.component.EditIPv4Preference import org.meshtastic.core.ui.component.EditPasswordPreference import org.meshtastic.core.ui.component.EditTextPreference diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/PositionConfigItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/PositionConfigItemList.kt index 68e0cb0df..b53ed04e2 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/PositionConfigItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/PositionConfigItemList.kt @@ -43,7 +43,6 @@ import com.geeksville.mesh.ConfigProtos import com.geeksville.mesh.ConfigProtos.Config.PositionConfig import com.geeksville.mesh.config import com.geeksville.mesh.copy -import com.geeksville.mesh.ui.common.components.DropDownPreference import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.rememberPermissionState @@ -51,6 +50,7 @@ import kotlinx.coroutines.launch import org.meshtastic.core.model.Position import org.meshtastic.core.strings.R import org.meshtastic.core.ui.component.BitwisePreference +import org.meshtastic.core.ui.component.DropDownPreference import org.meshtastic.core.ui.component.EditTextPreference import org.meshtastic.core.ui.component.PreferenceCategory import org.meshtastic.core.ui.component.SwitchPreference diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/RadioConfigScreenList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/RadioConfigScreenList.kt index 9f6e32395..7398032c5 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/RadioConfigScreenList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/RadioConfigScreenList.kt @@ -29,10 +29,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import com.geeksville.mesh.ui.common.components.MainAppBar import com.geeksville.mesh.ui.settings.radio.ResponseState import com.google.protobuf.MessageLite import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.MainAppBar import org.meshtastic.core.ui.component.PreferenceFooter @Composable diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/RemoteHardwareConfigItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/RemoteHardwareConfigItemList.kt index a0d4b40f1..bf0d7ce3d 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/RemoteHardwareConfigItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/RemoteHardwareConfigItemList.kt @@ -28,9 +28,9 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.NavController import com.geeksville.mesh.copy import com.geeksville.mesh.moduleConfig -import com.geeksville.mesh.ui.common.components.EditListPreference import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.EditListPreference import org.meshtastic.core.ui.component.PreferenceCategory import org.meshtastic.core.ui.component.SwitchPreference diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/SecurityConfigItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/SecurityConfigItemList.kt index afe596b7e..289c30535 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/SecurityConfigItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/SecurityConfigItemList.kt @@ -46,15 +46,15 @@ import androidx.navigation.NavController import com.geeksville.mesh.ConfigProtos.Config.SecurityConfig import com.geeksville.mesh.config import com.geeksville.mesh.copy -import com.geeksville.mesh.ui.common.components.EditBase64Preference -import com.geeksville.mesh.ui.common.components.EditListPreference import com.geeksville.mesh.ui.node.NodeActionButton import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel -import com.geeksville.mesh.util.encodeToString -import com.geeksville.mesh.util.toByteString import com.google.protobuf.ByteString +import org.meshtastic.core.model.util.encodeToString +import org.meshtastic.core.model.util.toByteString import org.meshtastic.core.strings.R import org.meshtastic.core.ui.component.CopyIconButton +import org.meshtastic.core.ui.component.EditBase64Preference +import org.meshtastic.core.ui.component.EditListPreference import org.meshtastic.core.ui.component.PreferenceCategory import org.meshtastic.core.ui.component.SwitchPreference import java.security.SecureRandom diff --git a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/SerialConfigItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/SerialConfigItemList.kt index d306362ee..370da2c49 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/SerialConfigItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/settings/radio/components/SerialConfigItemList.kt @@ -29,9 +29,9 @@ import androidx.navigation.NavController import com.geeksville.mesh.ModuleConfigProtos.ModuleConfig.SerialConfig import com.geeksville.mesh.copy import com.geeksville.mesh.moduleConfig -import com.geeksville.mesh.ui.common.components.DropDownPreference import com.geeksville.mesh.ui.settings.radio.RadioConfigViewModel import org.meshtastic.core.strings.R +import org.meshtastic.core.ui.component.DropDownPreference import org.meshtastic.core.ui.component.EditTextPreference import org.meshtastic.core.ui.component.PreferenceCategory import org.meshtastic.core.ui.component.SwitchPreference diff --git a/app/src/main/java/com/geeksville/mesh/util/ByteStringExtensions.kt b/core/model/src/main/kotlin/org/meshtastic/core/model/util/ByteStringExtensions.kt similarity index 96% rename from app/src/main/java/com/geeksville/mesh/util/ByteStringExtensions.kt rename to core/model/src/main/kotlin/org/meshtastic/core/model/util/ByteStringExtensions.kt index a3de63f42..dc9c64b0e 100644 --- a/app/src/main/java/com/geeksville/mesh/util/ByteStringExtensions.kt +++ b/core/model/src/main/kotlin/org/meshtastic/core/model/util/ByteStringExtensions.kt @@ -15,11 +15,12 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.util +package org.meshtastic.core.model.util import android.util.Base64 import com.google.protobuf.ByteString import com.google.protobuf.kotlin.toByteString fun ByteString.encodeToString() = Base64.encodeToString(this.toByteArray(), Base64.NO_WRAP) + fun String.toByteString() = Base64.decode(this, Base64.NO_WRAP).toByteString() diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index 450bdd9e7..1065e599f 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -18,6 +18,7 @@ plugins { alias(libs.plugins.meshtastic.android.library) alias(libs.plugins.meshtastic.android.library.compose) + alias(libs.plugins.meshtastic.hilt) } android { namespace = "org.meshtastic.core.ui" } @@ -25,7 +26,12 @@ android { namespace = "org.meshtastic.core.ui" } dependencies { implementation(projects.core.database) implementation(projects.core.model) + implementation(projects.core.navigation) + implementation(projects.core.prefs) implementation(projects.core.proto) implementation(projects.core.strings) + + implementation(libs.bundles.coroutines) implementation(libs.bundles.markdown) + implementation(libs.emoji2.emojipicker) } diff --git a/core/ui/detekt-baseline.xml b/core/ui/detekt-baseline.xml index 4f2b259f6..c97624857 100644 --- a/core/ui/detekt-baseline.xml +++ b/core/ui/detekt-baseline.xml @@ -3,42 +3,40 @@ ComposableParamOrder:AlertDialogs.kt$SimpleAlertDialog - ComposableParamOrder:BatteryInfo.kt$BatteryInfo + ComposableParamOrder:EditBase64Preference.kt$EditBase64Preference ComposableParamOrder:EditTextPreference.kt$EditTextPreference + ComposableParamOrder:MainAppBar.kt$MainAppBar ComposableParamOrder:MaterialBatteryInfo.kt$MaterialBatteryInfo ComposableParamOrder:NodeChip.kt$NodeChip ComposableParamOrder:SettingsItem.kt$SettingsItem ComposableParamOrder:SignalInfo.kt$SignalInfo ComposableParamOrder:SwitchPreference.kt$SwitchPreference ContentSlotReused:AdaptiveTwoPane.kt$second + LambdaParameterEventTrailing:MainAppBar.kt$onClickChip LongMethod:EditTextPreference.kt$@Composable fun EditTextPreference( title: String, value: String, enabled: Boolean, isError: Boolean, keyboardOptions: KeyboardOptions, keyboardActions: KeyboardActions, onValueChanged: (String) -> Unit, modifier: Modifier = Modifier, summary: String? = null, maxSize: Int = 0, // max_size - 1 (in bytes) onFocusChanged: (FocusState) -> Unit = {}, trailingIcon: (@Composable () -> Unit)? = null, visualTransformation: VisualTransformation = VisualTransformation.None, ) - MagicNumber:BatteryInfo.kt$100 - MagicNumber:BatteryInfo.kt$101 - MagicNumber:BatteryInfo.kt$14 - MagicNumber:BatteryInfo.kt$15 - MagicNumber:BatteryInfo.kt$34 - MagicNumber:BatteryInfo.kt$35 - MagicNumber:BatteryInfo.kt$4 - MagicNumber:BatteryInfo.kt$5 - MagicNumber:BatteryInfo.kt$79 - MagicNumber:BatteryInfo.kt$80 MagicNumber:EditIPv4Preference.kt$0xff MagicNumber:EditIPv4Preference.kt$16 MagicNumber:EditIPv4Preference.kt$24 MagicNumber:EditIPv4Preference.kt$8 + MagicNumber:EditListPreference.kt$12 + MagicNumber:EditListPreference.kt$12345 + MagicNumber:EditListPreference.kt$67890 MagicNumber:LazyColumnDragAndDropDemo.kt$50 ModifierMissing:AdaptiveTwoPane.kt$AdaptiveTwoPane + ModifierMissing:EmojiPicker.kt$EmojiPicker + ModifierMissing:EmojiPicker.kt$EmojiPickerDialog ModifierMissing:IndoorAirQuality.kt$IndoorAirQuality ModifierMissing:LoraSignalIndicator.kt$LoraSignalIndicator ModifierMissing:LoraSignalIndicator.kt$Rssi ModifierMissing:LoraSignalIndicator.kt$Snr ModifierMissing:LoraSignalIndicator.kt$SnrAndRssi + ModifierMissing:PreferenceDivider.kt$PreferenceDivider + ModifierMissing:SecurityIcon.kt$SecurityIcon ModifierMissing:SettingsItem.kt$SettingsItem ModifierMissing:SettingsItem.kt$SettingsItemDetail ModifierMissing:SettingsItem.kt$SettingsItemSwitch ModifierMissing:SimpleAlertDialog.kt$SimpleAlertDialog ModifierMissing:SlidingSelector.kt$OptionLabel - ModifierNotUsedAtRoot:SignalInfo.kt$modifier = modifier ModifierNotUsedAtRoot:TextDividerPreference.kt$modifier = modifier.fillMaxWidth().padding(all = 16.dp) ModifierNotUsedAtRoot:TextDividerPreference.kt$modifier = modifier.fillMaxWidth().wrapContentWidth(Alignment.End) ModifierReused:PreferenceCategory.kt$Card(modifier = modifier.padding(bottom = 8.dp)) { Column( modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp, vertical = 16.dp), horizontalAlignment = Alignment.CenterHorizontally, ) { ProvideTextStyle(MaterialTheme.typography.bodyLarge) { content() } } } @@ -48,19 +46,21 @@ ModifierReused:TextDividerPreference.kt$Row(modifier = modifier.fillMaxWidth().padding(all = 16.dp), verticalAlignment = Alignment.CenterVertically) { Text( text = title, style = MaterialTheme.typography.bodyLarge, color = if (!enabled) { MaterialTheme.colorScheme.onSurface.copy(alpha = 0.38f) } else { Color.Unspecified }, ) if (trailingIcon != null) { Icon(trailingIcon, "trailingIcon", modifier = modifier.fillMaxWidth().wrapContentWidth(Alignment.End)) } } MultipleEmitters:PreferenceCategory.kt$PreferenceCategory ParameterNaming:BitwisePreference.kt$onItemSelected + ParameterNaming:DropDownPreference.kt$onItemSelected ParameterNaming:EditIPv4Preference.kt$onValueChanged + ParameterNaming:EditListPreference.kt$onValuesChanged ParameterNaming:EditPasswordPreference.kt$onValueChanged ParameterNaming:EditTextPreference.kt$onValueChanged + ParameterNaming:PositionPrecisionPreference.kt$onValueChanged ParameterNaming:PreferenceFooter.kt$onNegativeClicked ParameterNaming:PreferenceFooter.kt$onPositiveClicked ParameterNaming:SlidingSelector.kt$onOptionSelected - PreviewPublic:BatteryInfo.kt$BatteryInfoPreview - PreviewPublic:BatteryInfo.kt$BatteryInfoPreviewSimple PreviewPublic:IndoorAirQuality.kt$IAQScalePreview PreviewPublic:LazyColumnDragAndDropDemo.kt$LazyColumnDragAndDropDemo PreviewPublic:MaterialBatteryInfo.kt$MaterialBatteryInfoPreview PreviewPublic:SignalInfo.kt$SignalInfoPreview PreviewPublic:SignalInfo.kt$SignalInfoSelfPreview PreviewPublic:SignalInfo.kt$SignalInfoSimplePreview + UnusedParameter:DropDownPreference.kt$modifier: Modifier = Modifier diff --git a/app/src/main/java/com/geeksville/mesh/ui/common/components/DropDownPreference.kt b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/DropDownPreference.kt similarity index 99% rename from app/src/main/java/com/geeksville/mesh/ui/common/components/DropDownPreference.kt rename to core/ui/src/main/kotlin/org/meshtastic/core/ui/component/DropDownPreference.kt index 36912e98c..35d262991 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/common/components/DropDownPreference.kt +++ b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/DropDownPreference.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.common.components +package org.meshtastic.core.ui.component import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding diff --git a/app/src/main/java/com/geeksville/mesh/ui/common/components/EditBase64Preference.kt b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/EditBase64Preference.kt similarity index 97% rename from app/src/main/java/com/geeksville/mesh/ui/common/components/EditBase64Preference.kt rename to core/ui/src/main/kotlin/org/meshtastic/core/ui/component/EditBase64Preference.kt index 5f430dbb6..8e17f812e 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/common/components/EditBase64Preference.kt +++ b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/EditBase64Preference.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.common.components +package org.meshtastic.core.ui.component import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth @@ -44,10 +44,10 @@ import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import com.geeksville.mesh.util.encodeToString -import com.geeksville.mesh.util.toByteString import com.google.protobuf.ByteString import org.meshtastic.core.model.Channel +import org.meshtastic.core.model.util.encodeToString +import org.meshtastic.core.model.util.toByteString import org.meshtastic.core.strings.R @Suppress("LongMethod") diff --git a/app/src/main/java/com/geeksville/mesh/ui/common/components/EditListPreference.kt b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/EditListPreference.kt similarity index 98% rename from app/src/main/java/com/geeksville/mesh/ui/common/components/EditListPreference.kt rename to core/ui/src/main/kotlin/org/meshtastic/core/ui/component/EditListPreference.kt index 8fc3a3575..3f9d44a1a 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/common/components/EditListPreference.kt +++ b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/EditListPreference.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.common.components +package org.meshtastic.core.ui.component import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth @@ -46,7 +46,6 @@ import com.geeksville.mesh.copy import com.geeksville.mesh.remoteHardwarePin import com.google.protobuf.ByteString import org.meshtastic.core.strings.R -import org.meshtastic.core.ui.component.EditTextPreference @Suppress("LongMethod") @Composable diff --git a/app/src/main/java/com/geeksville/mesh/ui/common/components/MainAppBar.kt b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/MainAppBar.kt similarity index 94% rename from app/src/main/java/com/geeksville/mesh/ui/common/components/MainAppBar.kt rename to core/ui/src/main/kotlin/org/meshtastic/core/ui/component/MainAppBar.kt index db01edfeb..901996bd1 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/common/components/MainAppBar.kt +++ b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/MainAppBar.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.common.components +package org.meshtastic.core.ui.component import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn @@ -47,7 +47,8 @@ import org.meshtastic.core.database.model.Node import org.meshtastic.core.navigation.ContactsRoutes import org.meshtastic.core.navigation.SettingsRoutes import org.meshtastic.core.strings.R -import org.meshtastic.core.ui.component.NodeChip +import org.meshtastic.core.ui.component.preview.BooleanProvider +import org.meshtastic.core.ui.component.preview.previewNode import org.meshtastic.core.ui.theme.AppTheme @Suppress("CyclomaticComplexMethod") @@ -128,7 +129,8 @@ fun MainAppBar( { IconButton(enabled = false, onClick = {}) { Icon( - imageVector = ImageVector.vectorResource(id = com.geeksville.mesh.R.drawable.app_icon), + imageVector = + ImageVector.vectorResource(id = org.meshtastic.core.ui.R.drawable.ic_meshtastic), contentDescription = stringResource(id = R.string.application_icon), ) } diff --git a/app/src/main/java/com/geeksville/mesh/ui/common/components/PositionPrecisionPreference.kt b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/PositionPrecisionPreference.kt similarity index 97% rename from app/src/main/java/com/geeksville/mesh/ui/common/components/PositionPrecisionPreference.kt rename to core/ui/src/main/kotlin/org/meshtastic/core/ui/component/PositionPrecisionPreference.kt index 22133584c..67d8e8eff 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/common/components/PositionPrecisionPreference.kt +++ b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/PositionPrecisionPreference.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.common.components +package org.meshtastic.core.ui.component import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues @@ -34,7 +34,6 @@ import androidx.compose.ui.unit.dp import org.meshtastic.core.model.util.DistanceUnit import org.meshtastic.core.model.util.toDistanceString import org.meshtastic.core.strings.R -import org.meshtastic.core.ui.component.SwitchPreference import kotlin.math.pow import kotlin.math.roundToInt diff --git a/app/src/main/java/com/geeksville/mesh/ui/common/components/PreferenceDivider.kt b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/PreferenceDivider.kt similarity index 95% rename from app/src/main/java/com/geeksville/mesh/ui/common/components/PreferenceDivider.kt rename to core/ui/src/main/kotlin/org/meshtastic/core/ui/component/PreferenceDivider.kt index 9914b67a7..675aec6dc 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/common/components/PreferenceDivider.kt +++ b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/PreferenceDivider.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.common.components +package org.meshtastic.core.ui.component import androidx.compose.foundation.layout.padding import androidx.compose.material3.HorizontalDivider diff --git a/app/src/main/java/com/geeksville/mesh/ui/common/components/SecurityIcon.kt b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/SecurityIcon.kt similarity index 99% rename from app/src/main/java/com/geeksville/mesh/ui/common/components/SecurityIcon.kt rename to core/ui/src/main/kotlin/org/meshtastic/core/ui/component/SecurityIcon.kt index 13dceefe2..fc8ffdaa2 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/common/components/SecurityIcon.kt +++ b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/SecurityIcon.kt @@ -17,7 +17,7 @@ @file:Suppress("TooManyFunctions") -package com.geeksville.mesh.ui.common.components +package org.meshtastic.core.ui.component import androidx.annotation.StringRes import androidx.compose.foundation.layout.Arrangement diff --git a/app/src/main/java/com/geeksville/mesh/ui/common/components/PreviewUtils.kt b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/preview/PreviewUtils.kt similarity index 97% rename from app/src/main/java/com/geeksville/mesh/ui/common/components/PreviewUtils.kt rename to core/ui/src/main/kotlin/org/meshtastic/core/ui/component/preview/PreviewUtils.kt index 1671181c8..280f95549 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/common/components/PreviewUtils.kt +++ b/core/ui/src/main/kotlin/org/meshtastic/core/ui/component/preview/PreviewUtils.kt @@ -17,7 +17,7 @@ @file:Suppress("MatchingDeclarationName") -package com.geeksville.mesh.ui.common.components +package org.meshtastic.core.ui.component.preview import androidx.compose.ui.tooling.preview.PreviewParameterProvider import com.geeksville.mesh.MeshProtos diff --git a/app/src/main/java/com/geeksville/mesh/util/CustomRecentEmojiProvider.kt b/core/ui/src/main/kotlin/org/meshtastic/core/ui/emoji/CustomRecentEmojiProvider.kt similarity index 98% rename from app/src/main/java/com/geeksville/mesh/util/CustomRecentEmojiProvider.kt rename to core/ui/src/main/kotlin/org/meshtastic/core/ui/emoji/CustomRecentEmojiProvider.kt index 7a53307ad..fd1724585 100644 --- a/app/src/main/java/com/geeksville/mesh/util/CustomRecentEmojiProvider.kt +++ b/core/ui/src/main/kotlin/org/meshtastic/core/ui/emoji/CustomRecentEmojiProvider.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.util +package org.meshtastic.core.ui.emoji import androidx.emoji2.emojipicker.RecentEmojiAsyncProvider import com.google.common.util.concurrent.Futures diff --git a/app/src/main/java/com/geeksville/mesh/ui/common/components/EmojiPicker.kt b/core/ui/src/main/kotlin/org/meshtastic/core/ui/emoji/EmojiPicker.kt similarity index 94% rename from app/src/main/java/com/geeksville/mesh/ui/common/components/EmojiPicker.kt rename to core/ui/src/main/kotlin/org/meshtastic/core/ui/emoji/EmojiPicker.kt index 56261e9b9..fa3b56e44 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/common/components/EmojiPicker.kt +++ b/core/ui/src/main/kotlin/org/meshtastic/core/ui/emoji/EmojiPicker.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.common.components +package org.meshtastic.core.ui.emoji import androidx.activity.compose.BackHandler import androidx.compose.foundation.background @@ -29,8 +29,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.viewinterop.AndroidView import androidx.emoji2.emojipicker.RecentEmojiProviderAdapter import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel -import com.geeksville.mesh.ui.common.EmojiPickerViewModel -import com.geeksville.mesh.util.CustomRecentEmojiProvider import org.meshtastic.core.ui.component.BottomSheetDialog @Composable diff --git a/app/src/main/java/com/geeksville/mesh/ui/common/EmojiPickerViewModel.kt b/core/ui/src/main/kotlin/org/meshtastic/core/ui/emoji/EmojiPickerViewModel.kt similarity index 96% rename from app/src/main/java/com/geeksville/mesh/ui/common/EmojiPickerViewModel.kt rename to core/ui/src/main/kotlin/org/meshtastic/core/ui/emoji/EmojiPickerViewModel.kt index 9eabbfc7b..27c727612 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/common/EmojiPickerViewModel.kt +++ b/core/ui/src/main/kotlin/org/meshtastic/core/ui/emoji/EmojiPickerViewModel.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.common +package org.meshtastic.core.ui.emoji import androidx.lifecycle.ViewModel import dagger.hilt.android.lifecycle.HiltViewModel diff --git a/core/ui/src/main/res/drawable/ic_meshtastic.xml b/core/ui/src/main/res/drawable/ic_meshtastic.xml new file mode 100644 index 000000000..2c6079c25 --- /dev/null +++ b/core/ui/src/main/res/drawable/ic_meshtastic.xml @@ -0,0 +1,36 @@ + + + + + + + + +