diff --git a/composeApp/src/commonMain/kotlin/moe/lava/banksia/client/di/ClientModule.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/client/di/ClientModule.kt index 3a22297..2002745 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/banksia/client/di/ClientModule.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/banksia/client/di/ClientModule.kt @@ -15,7 +15,7 @@ import moe.lava.banksia.client.datasource.remote.StopRemoteDataSource import moe.lava.banksia.client.repository.RouteRepository import moe.lava.banksia.client.repository.StopRepository import moe.lava.banksia.data.ptv.PtvService -import moe.lava.banksia.ui.screens.MapScreenViewModel +import moe.lava.banksia.ui.screens.map.MapScreenViewModel import moe.lava.banksia.util.log import org.koin.core.module.dsl.singleOf import org.koin.core.module.dsl.viewModelOf diff --git a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/App.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/App.kt index 1f30bbe..3e41bbb 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/App.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/App.kt @@ -5,7 +5,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.ExperimentalComposeUiApi import moe.lava.banksia.client.di.ClientModule import moe.lava.banksia.di.CommonModules -import moe.lava.banksia.ui.screens.MapScreen +import moe.lava.banksia.ui.screens.map.MapScreen import org.koin.compose.KoinMultiplatformApplication import org.koin.core.annotation.KoinExperimentalAPI import org.koin.dsl.koinConfiguration diff --git a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/layout/InfoPanel.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/layout/InfoPanel.kt index 159402d..17a0ad0 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/layout/InfoPanel.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/layout/InfoPanel.kt @@ -27,7 +27,7 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.coerceAtMost import androidx.compose.ui.unit.dp import moe.lava.banksia.ui.components.RouteIcon -import moe.lava.banksia.ui.screens.MapScreenEvent +import moe.lava.banksia.ui.screens.map.MapScreenEvent import moe.lava.banksia.ui.state.InfoPanelState @Composable diff --git a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/layout/Searcher.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/layout/Searcher.kt index 696547b..53f309b 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/layout/Searcher.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/layout/Searcher.kt @@ -24,7 +24,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import moe.lava.banksia.ui.components.RouteIcon -import moe.lava.banksia.ui.screens.MapScreenEvent +import moe.lava.banksia.ui.screens.map.MapScreenEvent import moe.lava.banksia.ui.state.SearchState @OptIn(ExperimentalMaterial3Api::class) diff --git a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/Maps.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/Maps.kt deleted file mode 100644 index 06678e9..0000000 --- a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/Maps.kt +++ /dev/null @@ -1,25 +0,0 @@ -package moe.lava.banksia.ui.platform.maps - -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import kotlinx.coroutines.flow.Flow -import moe.lava.banksia.ui.screens.MapScreenEvent -import moe.lava.banksia.ui.state.MapState -import moe.lava.banksia.util.BoxedValue -import moe.lava.banksia.util.Point - -@Composable -expect fun getScreenHeight(): Int - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -expect fun Maps( - modifier: Modifier = Modifier.Companion, - state: MapState, - onEvent: (MapScreenEvent) -> Unit, - cameraPositionFlow: Flow>, - setLastKnownLocation: (Point) -> Unit, - extInsets: WindowInsets, -) diff --git a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/MapScreen.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/map/MapScreen.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/MapScreen.kt rename to composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/map/MapScreen.kt index 085fb25..4c5d686 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/MapScreen.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/map/MapScreen.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.ui.screens +package moe.lava.banksia.ui.screens.map import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.WindowInsets @@ -36,7 +36,6 @@ import moe.lava.banksia.ui.layout.InfoPanel import moe.lava.banksia.ui.layout.Searcher import moe.lava.banksia.ui.layout.SheetStateWrapper import moe.lava.banksia.ui.platform.BanksiaTheme -import moe.lava.banksia.ui.platform.maps.Maps import moe.lava.banksia.ui.state.InfoPanelState import moe.lava.banksia.util.Point import org.jetbrains.compose.resources.painterResource diff --git a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/MapScreenViewModel.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/map/MapScreenViewModel.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/MapScreenViewModel.kt rename to composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/map/MapScreenViewModel.kt index 9aad243..99ac1fa 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/MapScreenViewModel.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/map/MapScreenViewModel.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.ui.screens +package moe.lava.banksia.ui.screens.map import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -20,13 +20,13 @@ import moe.lava.banksia.data.ptv.structures.PtvRoute import moe.lava.banksia.model.Route import moe.lava.banksia.model.RouteType import moe.lava.banksia.ui.components.getUIProperties -import moe.lava.banksia.ui.platform.maps.CameraPosition -import moe.lava.banksia.ui.platform.maps.CameraPositionBounds -import moe.lava.banksia.ui.platform.maps.Marker -import moe.lava.banksia.ui.platform.maps.Polyline import moe.lava.banksia.ui.state.InfoPanelState import moe.lava.banksia.ui.state.MapState import moe.lava.banksia.ui.state.SearchState +import moe.lava.banksia.ui.utils.map.CameraPosition +import moe.lava.banksia.ui.utils.map.CameraPositionBounds +import moe.lava.banksia.ui.utils.map.Marker +import moe.lava.banksia.ui.utils.map.Polyline import moe.lava.banksia.util.BoxedValue import moe.lava.banksia.util.BoxedValue.Companion.box import moe.lava.banksia.util.LoopFlow.Companion.waitUntilSubscribed diff --git a/composeApp/src/androidMain/kotlin/moe/lava/banksia/ui/platform/maps/Maps.android.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/map/Maps.kt similarity index 82% rename from composeApp/src/androidMain/kotlin/moe/lava/banksia/ui/platform/maps/Maps.android.kt rename to composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/map/Maps.kt index 921af04..0782880 100644 --- a/composeApp/src/androidMain/kotlin/moe/lava/banksia/ui/platform/maps/Maps.android.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/screens/map/Maps.kt @@ -1,10 +1,7 @@ @file:Suppress("COMPOSE_APPLIER_CALL_MISMATCH") -package moe.lava.banksia.ui.platform.maps +package moe.lava.banksia.ui.screens.map -import android.Manifest -import android.annotation.SuppressLint -import android.content.pm.PackageManager import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.add import androidx.compose.foundation.layout.asPaddingValues @@ -13,15 +10,9 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalConfiguration -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp -import androidx.core.content.ContextCompat import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.google.android.gms.location.LocationServices import kotlinx.coroutines.flow.Flow import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json @@ -29,9 +20,9 @@ import kotlinx.serialization.json.decodeFromJsonElement import moe.lava.banksia.model.RouteType import moe.lava.banksia.ui.components.getUIProperties import moe.lava.banksia.ui.platform.BanksiaTheme -import moe.lava.banksia.ui.screens.MELBOURNE -import moe.lava.banksia.ui.screens.MapScreenEvent import moe.lava.banksia.ui.state.MapState +import moe.lava.banksia.ui.utils.map.CameraPosition +import moe.lava.banksia.ui.utils.map.Marker import moe.lava.banksia.util.BoxedValue import moe.lava.banksia.util.Point import moe.lava.banksia.util.log @@ -54,24 +45,11 @@ import org.maplibre.spatialk.geojson.FeatureCollection import org.maplibre.spatialk.geojson.Position import org.maplibre.spatialk.geojson.dsl.addFeature import org.maplibre.spatialk.geojson.dsl.buildFeatureCollection - import org.maplibre.compose.camera.CameraPosition as MLCameraPosition import org.maplibre.spatialk.geojson.Point as MLPoint fun Point.toPos(): Position = Position(this.lng, this.lat) -@Composable -private fun checkLocationPermission() = - ContextCompat.checkSelfPermission(LocalContext.current, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED - -@Composable -actual fun getScreenHeight(): Int { - val dp = LocalConfiguration.current.screenHeightDp.dp - return with(LocalDensity.current) { - dp.roundToPx() - } -} - @Serializable data class MarkerProps( val type: RouteType, @@ -108,7 +86,7 @@ private val colorTypeExpression @Composable get() = switch( @OptIn(ExperimentalMaterial3Api::class) @Composable -actual fun Maps( +fun Maps( modifier: Modifier, state: MapState, onEvent: (MapScreenEvent) -> Unit, @@ -141,21 +119,21 @@ actual fun Maps( )) } } - - val ctx = LocalContext.current - val fusedLocation = remember { LocationServices.getFusedLocationProviderClient(ctx) } - LaunchedEffect(Unit) { - @SuppressLint("MissingPermission") - fusedLocation.lastLocation.addOnSuccessListener { - if (it != null) { - camPos.position = MLCameraPosition( - zoom = 16.0, - target = Position(it.longitude, it.latitude) - ) - setLastKnownLocation(Point(it.latitude, it.longitude)) - } - } - } +// +// val ctx = LocalContext.current +// val fusedLocation = remember { LocationServices.getFusedLocationProviderClient(ctx) } +// LaunchedEffect(Unit) { +// @SuppressLint("MissingPermission") +// fusedLocation.lastLocation.addOnSuccessListener { +// if (it != null) { +// camPos.position = MLCameraPosition( +// zoom = 16.0, +// target = Position(it.longitude, it.latitude) +// ) +// setLastKnownLocation(Point(it.latitude, it.longitude)) +// } +// } +// } MaplibreMap( modifier = modifier, diff --git a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/state/MapState.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/state/MapState.kt index d06018c..ff71bf4 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/state/MapState.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/state/MapState.kt @@ -1,7 +1,7 @@ package moe.lava.banksia.ui.state -import moe.lava.banksia.ui.platform.maps.Marker -import moe.lava.banksia.ui.platform.maps.Polyline +import moe.lava.banksia.ui.utils.map.Marker +import moe.lava.banksia.ui.utils.map.Polyline data class MapState( val stops: List = listOf(), diff --git a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/CameraPosition.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/utils/map/CameraPosition.kt similarity index 79% rename from composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/CameraPosition.kt rename to composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/utils/map/CameraPosition.kt index 82f93a6..2bc80af 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/CameraPosition.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/utils/map/CameraPosition.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.ui.platform.maps +package moe.lava.banksia.ui.utils.map import moe.lava.banksia.util.Point diff --git a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/CameraPositionBounds.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/utils/map/CameraPositionBounds.kt similarity index 72% rename from composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/CameraPositionBounds.kt rename to composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/utils/map/CameraPositionBounds.kt index 4fbd648..335f668 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/CameraPositionBounds.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/utils/map/CameraPositionBounds.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.ui.platform.maps +package moe.lava.banksia.ui.utils.map import moe.lava.banksia.util.Point diff --git a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/Marker.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/utils/map/Marker.kt similarity index 91% rename from composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/Marker.kt rename to composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/utils/map/Marker.kt index 53e8642..2efe33d 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/Marker.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/utils/map/Marker.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.ui.platform.maps +package moe.lava.banksia.ui.utils.map import androidx.compose.ui.graphics.Color import moe.lava.banksia.model.RouteType diff --git a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/Polyline.kt b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/utils/map/Polyline.kt similarity index 77% rename from composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/Polyline.kt rename to composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/utils/map/Polyline.kt index c37853f..d9529e4 100644 --- a/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/platform/maps/Polyline.kt +++ b/composeApp/src/commonMain/kotlin/moe/lava/banksia/ui/utils/map/Polyline.kt @@ -1,4 +1,4 @@ -package moe.lava.banksia.ui.platform.maps +package moe.lava.banksia.ui.utils.map import androidx.compose.ui.graphics.Color import moe.lava.banksia.util.Point diff --git a/composeApp/src/iosMain/kotlin/moe/lava/banksia/ui/platform/maps/Maps.ios.kt b/composeApp/src/iosMain/kotlin/moe/lava/banksia/ui/platform/maps/Maps.ios.kt deleted file mode 100644 index 399e8b9..0000000 --- a/composeApp/src/iosMain/kotlin/moe/lava/banksia/ui/platform/maps/Maps.ios.kt +++ /dev/null @@ -1,32 +0,0 @@ -package moe.lava.banksia.ui.platform.maps - -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.runtime.Composable -import androidx.compose.ui.ExperimentalComposeUiApi -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalWindowInfo -import kotlinx.coroutines.flow.Flow -import moe.lava.banksia.ui.screens.MapScreenEvent -import moe.lava.banksia.ui.state.MapState -import moe.lava.banksia.util.BoxedValue -import moe.lava.banksia.util.Point - -@OptIn(ExperimentalComposeUiApi::class) -@Composable -actual fun getScreenHeight(): Int { - return LocalWindowInfo.current.containerSize.height -} - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -actual fun Maps( - modifier: Modifier, - state: MapState, - onEvent: (MapScreenEvent) -> Unit, - cameraPositionFlow: Flow>, - setLastKnownLocation: (Point) -> Unit, - extInsets: WindowInsets, -) { - TODO("Not yet implemented") -}