From 7593560bba5e75182ceda85d480f0b12961e867f Mon Sep 17 00:00:00 2001 From: Phil Oliver <3497406+poliver@users.noreply.github.com> Date: Tue, 30 Sep 2025 21:37:17 -0400 Subject: [PATCH] Modularize more maps files (#3262) --- .../com/geeksville/mesh/ui/map/MapView.kt | 7 ++-- .../java/com/geeksville/mesh/di/MapModule.kt | 34 ------------------- .../com/geeksville/mesh/ui/map/MapView.kt | 10 ++++-- .../ui/map/components/NodeClusterMarkers.kt | 2 +- .../mesh/ui/map/components/WaypointMarkers.kt | 2 +- .../com/geeksville/mesh/ui/map/MapScreen.kt | 1 + .../core/data/di/GoogleDataModule.kt | 7 ++++ feature/map/build.gradle.kts | 22 +++++++++++- .../meshtastic/feature}/map/MapViewModel.kt | 2 +- .../feature/map/component}/CacheLayout.kt | 4 +-- .../feature/map/component}/DownloadButton.kt | 4 +-- .../feature/map/component}/MapButton.kt | 2 +- .../feature}/map/LocationHandler.kt | 2 +- .../meshtastic/feature}/map/MapViewModel.kt | 2 +- .../map/component}/CustomMapLayersSheet.kt | 4 +-- .../CustomTileProviderManagerSheet.kt | 4 +-- .../feature/map/component}/MapButton.kt | 2 +- .../map/component}/MapControlsOverlay.kt | 4 +-- .../map/component}/MapFilterDropdown.kt | 6 ++-- .../feature/map/component}/MapTypeDropdown.kt | 4 +-- .../feature}/map/BaseMapViewModel.kt | 2 +- 21 files changed, 63 insertions(+), 64 deletions(-) delete mode 100644 app/src/google/java/com/geeksville/mesh/di/MapModule.kt rename {app/src/fdroid/java/com/geeksville/mesh/ui => feature/map/src/fdroid/kotlin/org/meshtastic/feature}/map/MapViewModel.kt (98%) rename {app/src/fdroid/java/com/geeksville/mesh/ui/map/components => feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/component}/CacheLayout.kt (97%) rename {app/src/fdroid/java/com/geeksville/mesh/ui/map/components => feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/component}/DownloadButton.kt (95%) rename {app/src/fdroid/java/com/geeksville/mesh/ui/map/components => feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/component}/MapButton.kt (97%) rename {app/src/google/java/com/geeksville/mesh/ui => feature/map/src/google/kotlin/org/meshtastic/feature}/map/LocationHandler.kt (99%) rename {app/src/google/java/com/geeksville/mesh/ui => feature/map/src/google/kotlin/org/meshtastic/feature}/map/MapViewModel.kt (99%) rename {app/src/google/java/com/geeksville/mesh/ui/map/components => feature/map/src/google/kotlin/org/meshtastic/feature/map/component}/CustomMapLayersSheet.kt (98%) rename {app/src/google/java/com/geeksville/mesh/ui/map/components => feature/map/src/google/kotlin/org/meshtastic/feature/map/component}/CustomTileProviderManagerSheet.kt (99%) rename {app/src/google/java/com/geeksville/mesh/ui/map/components => feature/map/src/google/kotlin/org/meshtastic/feature/map/component}/MapButton.kt (96%) rename {app/src/google/java/com/geeksville/mesh/ui/map/components => feature/map/src/google/kotlin/org/meshtastic/feature/map/component}/MapControlsOverlay.kt (98%) rename {app/src/google/java/com/geeksville/mesh/ui/map/components => feature/map/src/google/kotlin/org/meshtastic/feature/map/component}/MapFilterDropdown.kt (97%) rename {app/src/google/java/com/geeksville/mesh/ui/map/components => feature/map/src/google/kotlin/org/meshtastic/feature/map/component}/MapTypeDropdown.kt (97%) rename {app/src/main/java/com/geeksville/mesh/ui => feature/map/src/main/kotlin/org/meshtastic/feature}/map/BaseMapViewModel.kt (99%) diff --git a/app/src/fdroid/java/com/geeksville/mesh/ui/map/MapView.kt b/app/src/fdroid/java/com/geeksville/mesh/ui/map/MapView.kt index 499508626..55e5f7912 100644 --- a/app/src/fdroid/java/com/geeksville/mesh/ui/map/MapView.kt +++ b/app/src/fdroid/java/com/geeksville/mesh/ui/map/MapView.kt @@ -66,10 +66,7 @@ import com.geeksville.mesh.MeshProtos.Waypoint import com.geeksville.mesh.android.gpsDisabled import com.geeksville.mesh.android.hasGps import com.geeksville.mesh.copy -import com.geeksville.mesh.ui.map.components.CacheLayout -import com.geeksville.mesh.ui.map.components.DownloadButton import com.geeksville.mesh.ui.map.components.EditWaypointDialog -import com.geeksville.mesh.ui.map.components.MapButton import com.geeksville.mesh.util.SqlTileWriterExt import com.geeksville.mesh.util.addCopyright import com.geeksville.mesh.util.addScaleBarOverlay @@ -83,7 +80,11 @@ import org.meshtastic.core.database.model.Node import org.meshtastic.core.model.DataPacket import org.meshtastic.core.model.util.formatAgo import org.meshtastic.core.strings.R +import org.meshtastic.feature.map.MapViewModel import org.meshtastic.feature.map.cluster.RadiusMarkerClusterer +import org.meshtastic.feature.map.component.CacheLayout +import org.meshtastic.feature.map.component.DownloadButton +import org.meshtastic.feature.map.component.MapButton import org.meshtastic.feature.map.model.CustomTileSource import org.meshtastic.feature.map.model.MarkerWithLabel import org.meshtastic.feature.map.zoomIn diff --git a/app/src/google/java/com/geeksville/mesh/di/MapModule.kt b/app/src/google/java/com/geeksville/mesh/di/MapModule.kt deleted file mode 100644 index 0ef9b5c94..000000000 --- a/app/src/google/java/com/geeksville/mesh/di/MapModule.kt +++ /dev/null @@ -1,34 +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 com.geeksville.mesh.di - -import dagger.Module -import dagger.Provides -import dagger.hilt.InstallIn -import dagger.hilt.components.SingletonComponent -import kotlinx.serialization.json.Json -import javax.inject.Singleton - -@Module -@InstallIn(SingletonComponent::class) -object MapModule { - - // Serialization Provider (from original SerializationModule) - @Provides @Singleton - fun provideJson(): Json = Json { prettyPrint = false } -} diff --git a/app/src/google/java/com/geeksville/mesh/ui/map/MapView.kt b/app/src/google/java/com/geeksville/mesh/ui/map/MapView.kt index 8ef529906..d777ef6d6 100644 --- a/app/src/google/java/com/geeksville/mesh/ui/map/MapView.kt +++ b/app/src/google/java/com/geeksville/mesh/ui/map/MapView.kt @@ -68,10 +68,7 @@ import com.geeksville.mesh.MeshProtos.Position import com.geeksville.mesh.MeshProtos.Waypoint import com.geeksville.mesh.copy import com.geeksville.mesh.ui.map.components.ClusterItemsListDialog -import com.geeksville.mesh.ui.map.components.CustomMapLayersSheet -import com.geeksville.mesh.ui.map.components.CustomTileProviderManagerSheet import com.geeksville.mesh.ui.map.components.EditWaypointDialog -import com.geeksville.mesh.ui.map.components.MapControlsOverlay import com.geeksville.mesh.ui.map.components.NodeClusterMarkers import com.geeksville.mesh.ui.map.components.WaypointMarkers import com.geeksville.mesh.ui.metrics.HEADING_DEG @@ -115,6 +112,13 @@ import org.meshtastic.core.model.util.mpsToKmph import org.meshtastic.core.model.util.mpsToMph import org.meshtastic.core.model.util.toString import org.meshtastic.core.strings.R +import org.meshtastic.feature.map.LastHeardFilter +import org.meshtastic.feature.map.LayerType +import org.meshtastic.feature.map.LocationPermissionsHandler +import org.meshtastic.feature.map.MapViewModel +import org.meshtastic.feature.map.component.CustomMapLayersSheet +import org.meshtastic.feature.map.component.CustomTileProviderManagerSheet +import org.meshtastic.feature.map.component.MapControlsOverlay import timber.log.Timber import java.text.DateFormat diff --git a/app/src/google/java/com/geeksville/mesh/ui/map/components/NodeClusterMarkers.kt b/app/src/google/java/com/geeksville/mesh/ui/map/components/NodeClusterMarkers.kt index 160ce3007..9bca72a27 100644 --- a/app/src/google/java/com/geeksville/mesh/ui/map/components/NodeClusterMarkers.kt +++ b/app/src/google/java/com/geeksville/mesh/ui/map/components/NodeClusterMarkers.kt @@ -20,7 +20,6 @@ package com.geeksville.mesh.ui.map.components import androidx.compose.runtime.Composable import androidx.compose.runtime.key import androidx.compose.ui.graphics.Color -import com.geeksville.mesh.ui.map.BaseMapViewModel import com.geeksville.mesh.ui.map.NodeClusterItem import com.geeksville.mesh.ui.node.components.NodeChip import com.google.maps.android.clustering.Cluster @@ -28,6 +27,7 @@ import com.google.maps.android.clustering.view.DefaultClusterRenderer import com.google.maps.android.compose.Circle import com.google.maps.android.compose.MapsComposeExperimentalApi import com.google.maps.android.compose.clustering.Clustering +import org.meshtastic.feature.map.BaseMapViewModel @OptIn(MapsComposeExperimentalApi::class) @Suppress("NestedBlockDepth") diff --git a/app/src/google/java/com/geeksville/mesh/ui/map/components/WaypointMarkers.kt b/app/src/google/java/com/geeksville/mesh/ui/map/components/WaypointMarkers.kt index e1614579e..24126075c 100644 --- a/app/src/google/java/com/geeksville/mesh/ui/map/components/WaypointMarkers.kt +++ b/app/src/google/java/com/geeksville/mesh/ui/map/components/WaypointMarkers.kt @@ -21,13 +21,13 @@ import android.widget.Toast import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import com.geeksville.mesh.MeshProtos -import com.geeksville.mesh.ui.map.BaseMapViewModel import com.geeksville.mesh.ui.node.DEG_D import com.google.android.gms.maps.model.BitmapDescriptor import com.google.android.gms.maps.model.LatLng import com.google.maps.android.compose.Marker import com.google.maps.android.compose.rememberUpdatedMarkerState import org.meshtastic.core.strings.R +import org.meshtastic.feature.map.BaseMapViewModel @Composable fun WaypointMarkers( 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 0279bd092..985f6bbb9 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 @@ -28,6 +28,7 @@ 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.feature.map.MapViewModel @Composable fun MapScreen( diff --git a/core/data/src/google/kotlin/org/meshtastic/core/data/di/GoogleDataModule.kt b/core/data/src/google/kotlin/org/meshtastic/core/data/di/GoogleDataModule.kt index ef67c2e6a..391a39d96 100644 --- a/core/data/src/google/kotlin/org/meshtastic/core/data/di/GoogleDataModule.kt +++ b/core/data/src/google/kotlin/org/meshtastic/core/data/di/GoogleDataModule.kt @@ -19,8 +19,10 @@ package org.meshtastic.core.data.di import dagger.Binds import dagger.Module +import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import kotlinx.serialization.json.Json import org.meshtastic.core.data.repository.CustomTileProviderRepository import org.meshtastic.core.data.repository.CustomTileProviderRepositoryImpl import javax.inject.Singleton @@ -32,4 +34,9 @@ interface GoogleDataModule { @Binds @Singleton fun bindCustomTileProviderRepository(impl: CustomTileProviderRepositoryImpl): CustomTileProviderRepository + + companion object { + @Provides @Singleton + fun provideJson(): Json = Json { prettyPrint = false } + } } diff --git a/feature/map/build.gradle.kts b/feature/map/build.gradle.kts index a74b77d2a..3a5c6c7f0 100644 --- a/feature/map/build.gradle.kts +++ b/feature/map/build.gradle.kts @@ -18,8 +18,28 @@ plugins { alias(libs.plugins.kover) alias(libs.plugins.meshtastic.android.library) + alias(libs.plugins.meshtastic.android.library.compose) + alias(libs.plugins.meshtastic.hilt) } android { namespace = "org.meshtastic.feature.map" } -dependencies { implementation(libs.bundles.osm) } +dependencies { + implementation(projects.core.data) + implementation(projects.core.database) + implementation(projects.core.datastore) + implementation(projects.core.model) + implementation(projects.core.prefs) + implementation(projects.core.proto) + implementation(projects.core.service) + implementation(projects.core.strings) + implementation(projects.core.ui) + + implementation(libs.bundles.coroutines) + implementation(libs.bundles.lifecycle) + implementation(libs.bundles.osm) + googleImplementation(libs.bundles.maps.compose) + + implementation(libs.annotation) + implementation(libs.timber) +} diff --git a/app/src/fdroid/java/com/geeksville/mesh/ui/map/MapViewModel.kt b/feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/MapViewModel.kt similarity index 98% rename from app/src/fdroid/java/com/geeksville/mesh/ui/map/MapViewModel.kt rename to feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/MapViewModel.kt index 0120ddf54..9a45e0918 100644 --- a/app/src/fdroid/java/com/geeksville/mesh/ui/map/MapViewModel.kt +++ b/feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/MapViewModel.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.map +package org.meshtastic.feature.map import androidx.lifecycle.viewModelScope import com.geeksville.mesh.LocalOnlyProtos.LocalConfig diff --git a/app/src/fdroid/java/com/geeksville/mesh/ui/map/components/CacheLayout.kt b/feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/component/CacheLayout.kt similarity index 97% rename from app/src/fdroid/java/com/geeksville/mesh/ui/map/components/CacheLayout.kt rename to feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/component/CacheLayout.kt index 4b491b098..614ebf73e 100644 --- a/app/src/fdroid/java/com/geeksville/mesh/ui/map/components/CacheLayout.kt +++ b/feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/component/CacheLayout.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.map.components +package org.meshtastic.feature.map.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -40,7 +40,7 @@ import org.meshtastic.core.strings.R @OptIn(ExperimentalLayoutApi::class) @Composable -internal fun CacheLayout( +fun CacheLayout( cacheEstimate: String, onExecuteJob: () -> Unit, onCancelDownload: () -> Unit, diff --git a/app/src/fdroid/java/com/geeksville/mesh/ui/map/components/DownloadButton.kt b/feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/component/DownloadButton.kt similarity index 95% rename from app/src/fdroid/java/com/geeksville/mesh/ui/map/components/DownloadButton.kt rename to feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/component/DownloadButton.kt index d008d0328..8b7634c85 100644 --- a/app/src/fdroid/java/com/geeksville/mesh/ui/map/components/DownloadButton.kt +++ b/feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/component/DownloadButton.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.map.components +package org.meshtastic.feature.map.component import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.FastOutSlowInEasing @@ -34,7 +34,7 @@ import androidx.compose.ui.res.stringResource import org.meshtastic.core.strings.R @Composable -internal fun DownloadButton(enabled: Boolean, onClick: () -> Unit) { +fun DownloadButton(enabled: Boolean, onClick: () -> Unit) { AnimatedVisibility( visible = enabled, enter = diff --git a/app/src/fdroid/java/com/geeksville/mesh/ui/map/components/MapButton.kt b/feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/component/MapButton.kt similarity index 97% rename from app/src/fdroid/java/com/geeksville/mesh/ui/map/components/MapButton.kt rename to feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/component/MapButton.kt index 2f5e3030a..834105220 100644 --- a/app/src/fdroid/java/com/geeksville/mesh/ui/map/components/MapButton.kt +++ b/feature/map/src/fdroid/kotlin/org/meshtastic/feature/map/component/MapButton.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.map.components +package org.meshtastic.feature.map.component import androidx.annotation.StringRes import androidx.compose.foundation.layout.size diff --git a/app/src/google/java/com/geeksville/mesh/ui/map/LocationHandler.kt b/feature/map/src/google/kotlin/org/meshtastic/feature/map/LocationHandler.kt similarity index 99% rename from app/src/google/java/com/geeksville/mesh/ui/map/LocationHandler.kt rename to feature/map/src/google/kotlin/org/meshtastic/feature/map/LocationHandler.kt index b340105f3..c7b5ffa15 100644 --- a/app/src/google/java/com/geeksville/mesh/ui/map/LocationHandler.kt +++ b/feature/map/src/google/kotlin/org/meshtastic/feature/map/LocationHandler.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.map +package org.meshtastic.feature.map import android.Manifest import android.app.Activity diff --git a/app/src/google/java/com/geeksville/mesh/ui/map/MapViewModel.kt b/feature/map/src/google/kotlin/org/meshtastic/feature/map/MapViewModel.kt similarity index 99% rename from app/src/google/java/com/geeksville/mesh/ui/map/MapViewModel.kt rename to feature/map/src/google/kotlin/org/meshtastic/feature/map/MapViewModel.kt index e3efdd395..287d9b835 100644 --- a/app/src/google/java/com/geeksville/mesh/ui/map/MapViewModel.kt +++ b/feature/map/src/google/kotlin/org/meshtastic/feature/map/MapViewModel.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.map +package org.meshtastic.feature.map import android.app.Application import android.net.Uri diff --git a/app/src/google/java/com/geeksville/mesh/ui/map/components/CustomMapLayersSheet.kt b/feature/map/src/google/kotlin/org/meshtastic/feature/map/component/CustomMapLayersSheet.kt similarity index 98% rename from app/src/google/java/com/geeksville/mesh/ui/map/components/CustomMapLayersSheet.kt rename to feature/map/src/google/kotlin/org/meshtastic/feature/map/component/CustomMapLayersSheet.kt index 79d13d0c5..ef71a6fb6 100644 --- a/app/src/google/java/com/geeksville/mesh/ui/map/components/CustomMapLayersSheet.kt +++ b/feature/map/src/google/kotlin/org/meshtastic/feature/map/component/CustomMapLayersSheet.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.map.components +package org.meshtastic.feature.map.component import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row @@ -39,8 +39,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import com.geeksville.mesh.ui.map.MapLayerItem import org.meshtastic.core.strings.R +import org.meshtastic.feature.map.MapLayerItem @Suppress("LongMethod") @Composable diff --git a/app/src/google/java/com/geeksville/mesh/ui/map/components/CustomTileProviderManagerSheet.kt b/feature/map/src/google/kotlin/org/meshtastic/feature/map/component/CustomTileProviderManagerSheet.kt similarity index 99% rename from app/src/google/java/com/geeksville/mesh/ui/map/components/CustomTileProviderManagerSheet.kt rename to feature/map/src/google/kotlin/org/meshtastic/feature/map/component/CustomTileProviderManagerSheet.kt index cad2a5fdb..a92d206b5 100644 --- a/app/src/google/java/com/geeksville/mesh/ui/map/components/CustomTileProviderManagerSheet.kt +++ b/feature/map/src/google/kotlin/org/meshtastic/feature/map/component/CustomTileProviderManagerSheet.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.map.components +package org.meshtastic.feature.map.component import android.widget.Toast import androidx.compose.foundation.layout.Arrangement @@ -51,10 +51,10 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.geeksville.mesh.ui.map.MapViewModel import kotlinx.coroutines.flow.collectLatest import org.meshtastic.core.data.model.CustomTileProviderConfig import org.meshtastic.core.strings.R +import org.meshtastic.feature.map.MapViewModel @Suppress("LongMethod") @Composable diff --git a/app/src/google/java/com/geeksville/mesh/ui/map/components/MapButton.kt b/feature/map/src/google/kotlin/org/meshtastic/feature/map/component/MapButton.kt similarity index 96% rename from app/src/google/java/com/geeksville/mesh/ui/map/components/MapButton.kt rename to feature/map/src/google/kotlin/org/meshtastic/feature/map/component/MapButton.kt index 6e9af80dc..6a22fdf52 100644 --- a/app/src/google/java/com/geeksville/mesh/ui/map/components/MapButton.kt +++ b/feature/map/src/google/kotlin/org/meshtastic/feature/map/component/MapButton.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.map.components +package org.meshtastic.feature.map.component import androidx.compose.material3.FilledIconButton import androidx.compose.material3.Icon diff --git a/app/src/google/java/com/geeksville/mesh/ui/map/components/MapControlsOverlay.kt b/feature/map/src/google/kotlin/org/meshtastic/feature/map/component/MapControlsOverlay.kt similarity index 98% rename from app/src/google/java/com/geeksville/mesh/ui/map/components/MapControlsOverlay.kt rename to feature/map/src/google/kotlin/org/meshtastic/feature/map/component/MapControlsOverlay.kt index b1db202c4..7cb1f396c 100644 --- a/app/src/google/java/com/geeksville/mesh/ui/map/components/MapControlsOverlay.kt +++ b/feature/map/src/google/kotlin/org/meshtastic/feature/map/component/MapControlsOverlay.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.map.components +package org.meshtastic.feature.map.component import androidx.compose.foundation.layout.Box import androidx.compose.material.icons.Icons @@ -33,9 +33,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.rotate import androidx.compose.ui.res.stringResource -import com.geeksville.mesh.ui.map.MapViewModel import org.meshtastic.core.strings.R import org.meshtastic.core.ui.theme.StatusColors.StatusRed +import org.meshtastic.feature.map.MapViewModel @OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable diff --git a/app/src/google/java/com/geeksville/mesh/ui/map/components/MapFilterDropdown.kt b/feature/map/src/google/kotlin/org/meshtastic/feature/map/component/MapFilterDropdown.kt similarity index 97% rename from app/src/google/java/com/geeksville/mesh/ui/map/components/MapFilterDropdown.kt rename to feature/map/src/google/kotlin/org/meshtastic/feature/map/component/MapFilterDropdown.kt index 71c6813c5..1dd8bd319 100644 --- a/app/src/google/java/com/geeksville/mesh/ui/map/components/MapFilterDropdown.kt +++ b/feature/map/src/google/kotlin/org/meshtastic/feature/map/component/MapFilterDropdown.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.map.components +package org.meshtastic.feature.map.component import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding @@ -40,9 +40,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.geeksville.mesh.ui.map.LastHeardFilter -import com.geeksville.mesh.ui.map.MapViewModel import org.meshtastic.core.strings.R +import org.meshtastic.feature.map.LastHeardFilter +import org.meshtastic.feature.map.MapViewModel import kotlin.math.roundToInt @Composable diff --git a/app/src/google/java/com/geeksville/mesh/ui/map/components/MapTypeDropdown.kt b/feature/map/src/google/kotlin/org/meshtastic/feature/map/component/MapTypeDropdown.kt similarity index 97% rename from app/src/google/java/com/geeksville/mesh/ui/map/components/MapTypeDropdown.kt rename to feature/map/src/google/kotlin/org/meshtastic/feature/map/component/MapTypeDropdown.kt index 42150b5e3..aa67a20c6 100644 --- a/app/src/google/java/com/geeksville/mesh/ui/map/components/MapTypeDropdown.kt +++ b/feature/map/src/google/kotlin/org/meshtastic/feature/map/component/MapTypeDropdown.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.map.components +package org.meshtastic.feature.map.component import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Check @@ -28,9 +28,9 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.res.stringResource import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.geeksville.mesh.ui.map.MapViewModel import com.google.maps.android.compose.MapType import org.meshtastic.core.strings.R +import org.meshtastic.feature.map.MapViewModel @Suppress("LongMethod") @Composable diff --git a/app/src/main/java/com/geeksville/mesh/ui/map/BaseMapViewModel.kt b/feature/map/src/main/kotlin/org/meshtastic/feature/map/BaseMapViewModel.kt similarity index 99% rename from app/src/main/java/com/geeksville/mesh/ui/map/BaseMapViewModel.kt rename to feature/map/src/main/kotlin/org/meshtastic/feature/map/BaseMapViewModel.kt index c7a37721b..d1844ad78 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/map/BaseMapViewModel.kt +++ b/feature/map/src/main/kotlin/org/meshtastic/feature/map/BaseMapViewModel.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.map +package org.meshtastic.feature.map import android.os.RemoteException import androidx.annotation.StringRes