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 3c67dae48..d09b89404 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
@@ -1,8 +1,6 @@
package com.geeksville.mesh.ui.map
import android.content.Context
-import android.graphics.Color
-import android.graphics.Paint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@@ -66,7 +64,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dagger.hilt.android.AndroidEntryPoint
import org.osmdroid.bonuspack.utils.BonusPackHelper.getBitmapFromVectorDrawable
import org.osmdroid.config.Configuration
-import org.osmdroid.events.DelayedMapListener
import org.osmdroid.events.MapEventsReceiver
import org.osmdroid.events.MapListener
import org.osmdroid.events.ScrollEvent
@@ -80,14 +77,15 @@ import org.osmdroid.util.BoundingBox
import org.osmdroid.util.GeoPoint
import org.osmdroid.views.CustomZoomButtonsController
import org.osmdroid.views.MapView
-import org.osmdroid.views.overlay.CopyrightOverlay
import org.osmdroid.views.overlay.MapEventsOverlay
import org.osmdroid.views.overlay.Marker
import org.osmdroid.views.overlay.Polygon
-import org.osmdroid.views.overlay.gridlines.LatLonGridlineOverlay2
import org.osmdroid.views.overlay.infowindow.InfoWindow
import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay
import com.geeksville.mesh.model.map.clustering.RadiusMarkerClusterer
+import com.geeksville.mesh.util.addCopyright
+import com.geeksville.mesh.util.addMapEventListener
+import com.geeksville.mesh.util.createLatLongGrid
import java.io.File
import java.text.DateFormat
@@ -127,41 +125,6 @@ private fun MapView.UpdateMarkers(
nodeClusterer.invalidate()
}
-/**
- * Adds copyright to map depending on what source is showing
- */
-private fun MapView.addCopyright() {
- if (overlays.none { it is CopyrightOverlay }) {
- val copyrightNotice: String = tileProvider.tileSource.copyrightNotice ?: return
- val copyrightOverlay = CopyrightOverlay(context)
- copyrightOverlay.setCopyrightNotice(copyrightNotice)
- overlays.add(copyrightOverlay)
- }
-}
-
-/**
- * Create LatLong Grid line overlay
- * @param enabled: turn on/off gridlines
- */
-private fun MapView.createLatLongGrid(enabled: Boolean) {
- val latLongGridOverlay = LatLonGridlineOverlay2()
- latLongGridOverlay.isEnabled = enabled
- if (latLongGridOverlay.isEnabled) {
- val textPaint = Paint().apply {
- textSize = 40f
- color = Color.GRAY
- isAntiAlias = true
- isFakeBoldText = true
- textAlign = Paint.Align.CENTER
- }
- latLongGridOverlay.textPaint = textPaint
- latLongGridOverlay.setBackgroundColor(Color.TRANSPARENT)
- latLongGridOverlay.setLineWidth(3.0f)
- latLongGridOverlay.setLineColor(Color.GRAY)
- overlays.add(latLongGridOverlay)
- }
-}
-
// private fun addWeatherLayer() {
// if (map.tileProvider.tileSource.name()
// .equals(CustomTileSource.getTileSource("ESRI World TOPO").name())
@@ -246,21 +209,6 @@ private fun Context.purgeTileSource(onResult: (String) -> Unit) {
builder.show()
}
-private const val INACTIVITY_DELAY_MILLIS = 500L
-private fun MapView.addMapEventListener(onEvent: () -> Unit) {
- addMapListener(DelayedMapListener(object : MapListener {
- override fun onScroll(event: ScrollEvent): Boolean {
- onEvent()
- return true
- }
-
- override fun onZoom(event: ZoomEvent): Boolean {
- onEvent()
- return true
- }
- }, INACTIVITY_DELAY_MILLIS))
-}
-
private const val MaxZoomLevel = 20.0
@Composable
diff --git a/app/src/main/java/com/geeksville/mesh/util/MapViewExtensions.kt b/app/src/main/java/com/geeksville/mesh/util/MapViewExtensions.kt
new file mode 100644
index 000000000..ecdabdae9
--- /dev/null
+++ b/app/src/main/java/com/geeksville/mesh/util/MapViewExtensions.kt
@@ -0,0 +1,61 @@
+package com.geeksville.mesh.util
+
+import android.graphics.Color
+import android.graphics.Paint
+import org.osmdroid.events.DelayedMapListener
+import org.osmdroid.events.MapListener
+import org.osmdroid.events.ScrollEvent
+import org.osmdroid.events.ZoomEvent
+import org.osmdroid.views.MapView
+import org.osmdroid.views.overlay.CopyrightOverlay
+import org.osmdroid.views.overlay.gridlines.LatLonGridlineOverlay2
+
+/**
+ * Adds copyright to map depending on what source is showing
+ */
+fun MapView.addCopyright() {
+ if (overlays.none { it is CopyrightOverlay }) {
+ val copyrightNotice: String = tileProvider.tileSource.copyrightNotice ?: return
+ val copyrightOverlay = CopyrightOverlay(context)
+ copyrightOverlay.setCopyrightNotice(copyrightNotice)
+ overlays.add(copyrightOverlay)
+ }
+}
+
+/**
+ * Create LatLong Grid line overlay
+ * @param enabled: turn on/off gridlines
+ */
+fun MapView.createLatLongGrid(enabled: Boolean) {
+ val latLongGridOverlay = LatLonGridlineOverlay2()
+ latLongGridOverlay.isEnabled = enabled
+ if (latLongGridOverlay.isEnabled) {
+ val textPaint = Paint().apply {
+ textSize = 40f
+ color = Color.GRAY
+ isAntiAlias = true
+ isFakeBoldText = true
+ textAlign = Paint.Align.CENTER
+ }
+ latLongGridOverlay.textPaint = textPaint
+ latLongGridOverlay.setBackgroundColor(Color.TRANSPARENT)
+ latLongGridOverlay.setLineWidth(3.0f)
+ latLongGridOverlay.setLineColor(Color.GRAY)
+ overlays.add(latLongGridOverlay)
+ }
+}
+
+private const val INACTIVITY_DELAY_MILLIS = 500L
+fun MapView.addMapEventListener(onEvent: () -> Unit) {
+ addMapListener(DelayedMapListener(object : MapListener {
+ override fun onScroll(event: ScrollEvent): Boolean {
+ onEvent()
+ return true
+ }
+
+ override fun onZoom(event: ZoomEvent): Boolean {
+ onEvent()
+ return true
+ }
+ }, INACTIVITY_DELAY_MILLIS))
+}
diff --git a/config/detekt/detekt-baseline.xml b/config/detekt/detekt-baseline.xml
index 85842bbf1..ac48b704d 100644
--- a/config/detekt/detekt-baseline.xml
+++ b/config/detekt/detekt-baseline.xml
@@ -268,9 +268,9 @@
MagicNumber:MapFragment.kt$128205
MagicNumber:MapFragment.kt$12F
MagicNumber:MapFragment.kt$1e-7
- MagicNumber:MapFragment.kt$3.0f
- MagicNumber:MapFragment.kt$40f
MagicNumber:MapFragment.kt$<no name provided>$1e7
+ MagicNumber:MapViewExtensions.kt$3.0f
+ MagicNumber:MapViewExtensions.kt$40f
MagicNumber:MarkerWithLabel.kt$MarkerWithLabel$3
MagicNumber:MeshService.kt$MeshService$0xffffffff
MagicNumber:MeshService.kt$MeshService$100