From d4137a7dc41e9f81f2d5f887f92038dd5b32cf05 Mon Sep 17 00:00:00 2001 From: andrekir Date: Mon, 4 Nov 2024 12:57:00 -0300 Subject: [PATCH] refactor: scale `requiredZoomLevel()` by 0.8 to improve fit --- .../com/geeksville/mesh/ui/map/MapFragment.kt | 2 +- .../com/geeksville/mesh/util/LocationUtils.kt | 2 +- config/detekt/detekt-baseline.xml | 22 +++++++------------ 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/map/MapFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/map/MapFragment.kt index c65d1e76..3c67dae4 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/map/MapFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/map/MapFragment.kt @@ -507,7 +507,7 @@ fun MapView( val geoPoints = model.nodesWithPosition.map { GeoPoint(it.latitude, it.longitude) } val box = BoundingBox.fromGeoPoints(geoPoints) val center = GeoPoint(box.centerLatitude, box.centerLongitude) - val finalZoomLevel = minOf(box.requiredZoomLevel() * 0.8, maxZoomLevel) + val finalZoomLevel = minOf(box.requiredZoomLevel(), maxZoomLevel) controller.setCenter(center) controller.setZoom(finalZoomLevel) } else { diff --git a/app/src/main/java/com/geeksville/mesh/util/LocationUtils.kt b/app/src/main/java/com/geeksville/mesh/util/LocationUtils.kt index 21f56c65..613bb8b6 100644 --- a/app/src/main/java/com/geeksville/mesh/util/LocationUtils.kt +++ b/app/src/main/java/com/geeksville/mesh/util/LocationUtils.kt @@ -278,7 +278,7 @@ fun BoundingBox.requiredZoomLevel(): Double { val latLonHeight = topLeft.distanceToAsDouble(GeoPoint(bottomRight.latitude, topLeft.longitude)) val requiredLatZoom = log2(360.0 / (latLonHeight / 111320)) val requiredLonZoom = log2(360.0 / (latLonWidth / 111320)) - return maxOf(requiredLatZoom, requiredLonZoom) + return maxOf(requiredLatZoom, requiredLonZoom) * 0.8 } /** diff --git a/config/detekt/detekt-baseline.xml b/config/detekt/detekt-baseline.xml index 87b78081..85842bbf 100644 --- a/config/detekt/detekt-baseline.xml +++ b/config/detekt/detekt-baseline.xml @@ -1,12 +1,6 @@ - - MaxLineLength:MetricsViewModel.kt$MetricsViewModel$writer.appendLine("$rxDateTime,\"$latitude\",\"$longitude\",\"$altitude\",\"$satsInView\",\"$speed\",\"$heading\"") - MaxLineLength:MetricsViewModel.kt$MetricsViewModel$writer.appendLine("\"date\",\"time\",\"latitude\",\"longitude\",\"altitude\",\"satsInView\",\"speed\",\"heading\"") - MagicNumber:MetricsViewModel.kt$MetricsViewModel$1000L - MagicNumber:MetricsViewModel.kt$MetricsViewModel$1e-7 - MagicNumber:MetricsViewModel.kt$MetricsViewModel$1e-5 - + ChainWrapping:Channel.kt$Channel$&& ChainWrapping:CustomTileSource.kt$CustomTileSource.Companion.<no name provided>$+ @@ -251,6 +245,7 @@ MagicNumber:LocationRepository.kt$LocationRepository$1000L MagicNumber:LocationRepository.kt$LocationRepository$30 MagicNumber:LocationRepository.kt$LocationRepository$31 + MagicNumber:LocationUtils.kt$0.8 MagicNumber:LocationUtils.kt$110540 MagicNumber:LocationUtils.kt$111320 MagicNumber:LocationUtils.kt$180 @@ -266,7 +261,6 @@ MagicNumber:MainActivity.kt$MainActivity$30000 MagicNumber:MainActivity.kt$MainActivity$5 MagicNumber:MapFragment.kt$0.5f - MagicNumber:MapFragment.kt$0.8 MagicNumber:MapFragment.kt$1.3 MagicNumber:MapFragment.kt$1.5 MagicNumber:MapFragment.kt$1000 @@ -288,10 +282,10 @@ MagicNumber:MeshService.kt$MeshService$32 MagicNumber:MeshService.kt$MeshService$60000 MagicNumber:MeshService.kt$MeshService$8 - MagicNumber:MessagesFragment.kt$1000L - MagicNumber:MessagesFragment.kt$24 - MagicNumber:MessagesFragment.kt$60 MagicNumber:MessagesFragment.kt$MessagesFragment$234 + MagicNumber:MetricsViewModel.kt$MetricsViewModel$1000L + MagicNumber:MetricsViewModel.kt$MetricsViewModel$1e-5 + MagicNumber:MetricsViewModel.kt$MetricsViewModel$1e-7 MagicNumber:MockInterface.kt$MockInterface$1.5f MagicNumber:MockInterface.kt$MockInterface$1000 MagicNumber:MockInterface.kt$MockInterface$16 @@ -431,6 +425,8 @@ MaxLineLength:MeshService.kt$MeshService.Companion$// generate a RECEIVED action filter string that includes either the portnumber as an int, or preferably a symbolic name from portnums.proto MaxLineLength:MeshServiceBroadcasts.kt$MeshServiceBroadcasts$context.sendBroadcast(intent) MaxLineLength:MeshServiceNotifications.kt$MeshServiceNotifications$// If running on really old versions of android (<= 5.1.1) (possibly only cyanogen) we might encounter a bug with setting application specific icons + MaxLineLength:MetricsViewModel.kt$MetricsViewModel$writer.appendLine("$rxDateTime,\"$latitude\",\"$longitude\",\"$altitude\",\"$satsInView\",\"$speed\",\"$heading\"") + MaxLineLength:MetricsViewModel.kt$MetricsViewModel$writer.appendLine("\"date\",\"time\",\"latitude\",\"longitude\",\"altitude\",\"satsInView\",\"speed\",\"heading\"") MaxLineLength:NodeInfo.kt$NodeInfo$prefUnits == ConfigProtos.Config.DisplayConfig.DisplayUnits.IMPERIAL_VALUE && dist < 1609 -> "%.0f ft".format(dist.toDouble()*3.281) MaxLineLength:NodeInfo.kt$NodeInfo$prefUnits == ConfigProtos.Config.DisplayConfig.DisplayUnits.IMPERIAL_VALUE && dist >= 1609 -> "%.1f mi".format(dist / 1609.34) MaxLineLength:NodeInfo.kt$NodeInfo$prefUnits == ConfigProtos.Config.DisplayConfig.DisplayUnits.METRIC_VALUE && dist < 1000 -> "%.0f m".format(dist.toDouble()) @@ -511,7 +507,7 @@ MultiLineIfElse:Logging.kt$Logging$printlog(Log.ERROR, tag(), "$msg") MultiLineIfElse:MapFragment.kt$<no name provided>$showEditWaypointDialog = waypoint { latitudeI = (p.latitude * 1e7).toInt() longitudeI = (p.longitude * 1e7).toInt() } MultiLineIfElse:MapFragment.kt$CacheLayout( cacheEstimate = cacheEstimate, onExecuteJob = { startDownload() }, onCancelDownload = { downloadRegionBoundingBox = null map.overlays.removeAll { it is Polygon } map.invalidate() }, modifier = Modifier.align(Alignment.BottomCenter) ) - MultiLineIfElse:MapFragment.kt$Column( modifier = Modifier .padding(top = 16.dp, end = 16.dp) .align(Alignment.TopEnd), verticalArrangement = Arrangement.spacedBy(8.dp), ) { MapButton( onClick = { showMapStyleDialog() }, drawableRes = R.drawable.ic_twotone_layers_24, contentDescription = R.string.map_style_selection, ) MapButton( onClick = { if (context.hasLocationPermission()) { map.toggleMyLocation() } else { requestPermissionAndToggleLauncher.launch(context.getLocationPermissions()) } }, enabled = hasGps, drawableRes = if (myLocationOverlay == null) { R.drawable.ic_twotone_my_location_24 } else { R.drawable.ic_twotone_location_disabled_24 }, contentDescription = null, ) } + MultiLineIfElse:MapFragment.kt$Column( modifier = Modifier .padding(top = 16.dp, end = 16.dp) .align(Alignment.TopEnd), verticalArrangement = Arrangement.spacedBy(8.dp), ) { MapButton( onClick = ::showMapStyleDialog, icon = Icons.Outlined.Layers, contentDescription = R.string.map_style_selection, ) MapButton( enabled = hasGps, icon = if (myLocationOverlay == null) { Icons.Outlined.MyLocation } else { Icons.Default.LocationDisabled }, contentDescription = null, ) { if (context.hasLocationPermission()) { map.toggleMyLocation() } else { requestPermissionAndToggleLauncher.launch(context.getLocationPermissions()) } } } MultiLineIfElse:MapViewWithLifecycle.kt$try { acquire() } catch (e: SecurityException) { errormsg("WakeLock permission exception: ${e.message}") } catch (e: IllegalStateException) { errormsg("WakeLock acquire() exception: ${e.message}") } MultiLineIfElse:MapViewWithLifecycle.kt$try { release() } catch (e: IllegalStateException) { errormsg("WakeLock release() exception: ${e.message}") } MultiLineIfElse:MeshService.kt$MeshService$getDataPacketById(packetId)?.let { p -> if (p.status == m) return@handledLaunch packetRepository.get().updateMessageStatus(p, m) serviceBroadcasts.broadcastMessageStatus(packetId, m) } @@ -608,13 +604,11 @@ NoConsecutiveBlankLines:BluetoothInterface.kt$ NoConsecutiveBlankLines:BluetoothInterface.kt$BluetoothInterface$ NoConsecutiveBlankLines:BootCompleteReceiver.kt$ - NoConsecutiveBlankLines:CommonCharts.kt$ NoConsecutiveBlankLines:Constants.kt$ NoConsecutiveBlankLines:CustomTileSource.kt$ NoConsecutiveBlankLines:CustomTileSource.kt$CustomTileSource.Companion$ NoConsecutiveBlankLines:DebugLogFile.kt$ NoConsecutiveBlankLines:DeferredExecution.kt$ - NoConsecutiveBlankLines:EnvironmentMetrics.kt$ NoConsecutiveBlankLines:Exceptions.kt$ NoConsecutiveBlankLines:IRadioInterface.kt$ NoConsecutiveBlankLines:NOAAWmsTileSource.kt$NOAAWmsTileSource$