From 5019cc39ce066ecf6e35f59e6e846a0dd3a4d000 Mon Sep 17 00:00:00 2001 From: PWRxPSYCHO Date: Sat, 1 Oct 2022 22:37:21 -0400 Subject: [PATCH] Updated some download policies and the rendering of the download button --- .../geeksville/mesh/model/CustomTileSource.kt | 6 ++++-- .../java/com/geeksville/mesh/ui/MapFragment.kt | 18 +++++++++++++++--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/model/CustomTileSource.kt b/app/src/main/java/com/geeksville/mesh/model/CustomTileSource.kt index 030c3408..b32f3444 100644 --- a/app/src/main/java/com/geeksville/mesh/model/CustomTileSource.kt +++ b/app/src/main/java/com/geeksville/mesh/model/CustomTileSource.kt @@ -32,8 +32,9 @@ class CustomTileSource { + mImageFilenameEnding) } } - //https://nowcoast.noaa.gov/arcgis/rest/services/nowcoast/radar_meteo_imagery_nexrad_time/MapServer + //Transparent Background + //https://earthlive.maptiles.arcgis.com/arcgis/rest/services/GOES/GOES31D/MapServer/tile/ private val NOAA_RADAR = object : OnlineTileSourceBase( "NOAA GOES Radar", 0, @@ -46,7 +47,8 @@ class CustomTileSource { "Dataset Citation: GOES-R Calibration Working Group and GOES-R Series Program, (2017): NOAA GOES-R Series Advanced Baseline Imager (ABI) Level 1b Radiances Band 13. NOAA National Centers for Environmental Information. doi:10.7289/V5BV7DSR", TileSourcePolicy( 2, - TileSourcePolicy.FLAG_NO_PREVENTIVE + TileSourcePolicy.FLAG_NO_BULK + or TileSourcePolicy.FLAG_NO_PREVENTIVE or TileSourcePolicy.FLAG_USER_AGENT_MEANINGFUL or TileSourcePolicy.FLAG_USER_AGENT_NORMALIZED ) diff --git a/app/src/main/java/com/geeksville/mesh/ui/MapFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/MapFragment.kt index 769a9e4f..0266444c 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/MapFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/MapFragment.kt @@ -7,6 +7,7 @@ import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Rect +import android.opengl.Visibility import android.os.Bundle import android.text.Editable import android.text.TextWatcher @@ -34,6 +35,7 @@ import org.osmdroid.tileprovider.cachemanager.CacheManager import org.osmdroid.tileprovider.cachemanager.CacheManager.CacheManagerCallback import org.osmdroid.tileprovider.modules.SqliteArchiveTileWriter import org.osmdroid.tileprovider.tilesource.ITileSource +import org.osmdroid.tileprovider.tilesource.OnlineTileSourceBase import org.osmdroid.tileprovider.tilesource.TileSourcePolicyException import org.osmdroid.util.BoundingBox import org.osmdroid.util.GeoPoint @@ -57,7 +59,7 @@ class MapFragment : ScreenFragment("Map"), Logging, View.OnClickListener, OnSeek private val model: UIViewModel by activityViewModels() private lateinit var cacheManager: CacheManager - private lateinit var btnCache: FloatingActionButton + private lateinit var downloadBtn: FloatingActionButton private lateinit var cacheNorth: EditText private lateinit var cacheSouth: EditText @@ -88,7 +90,7 @@ class MapFragment : ScreenFragment("Map"), Logging, View.OnClickListener, OnSeek inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { binding = MapViewBinding.inflate(inflater) - btnCache = binding.root.findViewById(R.id.downloadButton) + downloadBtn = binding.root.findViewById(R.id.downloadButton) return binding.root } @@ -101,6 +103,11 @@ class MapFragment : ScreenFragment("Map"), Logging, View.OnClickListener, OnSeek setupMapProperties() map.setTileSource(loadOnlineTileSourceBase()) + if (!(map.tileProvider.tileSource as OnlineTileSourceBase).tileSourcePolicy.acceptsBulkDownload()) { + downloadBtn.visibility = View.GONE + } else { + downloadBtn.visibility = View.VISIBLE + } map.let { if (view != null) { mapController = map.controller @@ -124,7 +131,7 @@ class MapFragment : ScreenFragment("Map"), Logging, View.OnClickListener, OnSeek } zoomToNodes(mapController) } - btnCache.setOnClickListener(this) + downloadBtn.setOnClickListener(this) } override fun onClick(v: View) { @@ -360,6 +367,11 @@ class MapFragment : ScreenFragment("Map"), Logging, View.OnClickListener, OnSeek editor.apply() dialog.dismiss() map.setTileSource(loadOnlineTileSourceBase()) + if (!(map.tileProvider.tileSource as OnlineTileSourceBase).tileSourcePolicy.acceptsBulkDownload()) { + downloadBtn.visibility = View.GONE + } else { + downloadBtn.visibility = View.VISIBLE + } } val dialog = builder.create() dialog.show()