aboutsummaryrefslogtreecommitdiff
path: root/androidApp/src/main/java
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2022-01-16 04:02:30 -0600
committerIván Ávalos <avalos@disroot.org>2022-01-16 04:02:30 -0600
commit3f6958e68f6e4dd5d42e1049c05059502d939cf9 (patch)
treed451027198866bacc7a9404d11380276cb65e7e9 /androidApp/src/main/java
parentf8e7e755dc8e557e1e5b9e9be318f8415a2c7f8e (diff)
downloadetbsa-trackermap-mobile-3f6958e68f6e4dd5d42e1049c05059502d939cf9.tar.gz
etbsa-trackermap-mobile-3f6958e68f6e4dd5d42e1049c05059502d939cf9.tar.bz2
etbsa-trackermap-mobile-3f6958e68f6e4dd5d42e1049c05059502d939cf9.zip
Added attribution and refactored map layers code
Diffstat (limited to 'androidApp/src/main/java')
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt23
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt14
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt11
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt16
4 files changed, 35 insertions, 29 deletions
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt
index e30885d..c4e5fc8 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt
@@ -18,6 +18,7 @@ import mil.nga.sf.wkt.GeometryReader
import java.io.File
import mx.trackermap.TrackerMap.android.R
import mx.trackermap.TrackerMap.client.models.Geofence
+import mx.trackermap.TrackerMap.client.models.MapLayer
import mx.trackermap.TrackerMap.utils.MapCalculus
import mx.trackermap.TrackerMap.utils.MarkerType
@@ -59,7 +60,8 @@ class MapFragment : GlobeMapFragment() {
Log.d("MapFragment", "controlHasStarted")
if (tileInfo == null) {
- val layer = resources.getStringArray(R.array.maps_streets_tile_url)
+ // Load default map layer
+ val layer = resources.getStringArray(R.array.maps_streets_tile)
val tmpInfo = RemoteTileInfoNew(layer[0], layer[1].toInt(), layer[2].toInt())
tileInfo = tileInfoSetCacheDir(layer[0], tmpInfo)
tileInfo?.let {
@@ -344,6 +346,15 @@ class MapFragment : GlobeMapFragment() {
}
}
+ fun updateTileInfo(layer: MapLayer) {
+ val tileInfo = RemoteTileInfoNew(layer.url, layer.minZoom, layer.maxZoom)
+ this.tileInfo = tileInfoSetCacheDir(layer.url, tileInfo)
+ this.tileInfo?.let {
+ loader?.changeTileInfo(it)
+ setZoomLimits(tileInfo.minZoom, tileInfo.maxZoom)
+ }
+ }
+
private fun setZoomLimits(minZoom: Int, maxZoom: Int) {
mapControl?.let {
it.setZoomLimits(
@@ -359,16 +370,6 @@ class MapFragment : GlobeMapFragment() {
}
}
- fun updateTileInfo(url: String, tileInfo: TileInfoNew) {
- context?.let {
- this.tileInfo = tileInfoSetCacheDir(url, tileInfo)
- this.tileInfo?.let {
- loader?.changeTileInfo(it)
- setZoomLimits(tileInfo.minZoom, tileInfo.maxZoom)
- }
- }
- }
-
private fun getIcon(markerType: MarkerType): Bitmap {
return ResourcesCompat.getDrawable(
activity!!.resources,
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt
index c17e6a4..66ccc7a 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt
@@ -6,6 +6,7 @@ import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.core.text.HtmlCompat
import kotlinx.coroutines.DelicateCoroutinesApi
import mx.trackermap.TrackerMap.android.R
import mx.trackermap.TrackerMap.android.databinding.UnitMapFragmentBinding
@@ -14,6 +15,7 @@ import mx.trackermap.TrackerMap.android.devices.Action
import mx.trackermap.TrackerMap.android.devices.UnitRenderData
import mx.trackermap.TrackerMap.android.units.UnitFragment
import mx.trackermap.TrackerMap.android.units.UnitsViewModel
+import mx.trackermap.TrackerMap.client.models.MapLayer
import mx.trackermap.TrackerMap.client.models.UnitInformation
@DelicateCoroutinesApi
@@ -53,6 +55,11 @@ class UnitMapFragment(private val unitsViewModel: UnitsViewModel) : UnitFragment
private fun initializeMap() {
unitsMapFragment = childFragmentManager.findFragmentById(R.id.unitsMap) as MapFragment
unitsMapFragment.markerCallback = unitsViewModel::selectUnitWith
+
+ val layer = resources.getStringArray(R.array.maps_streets_tile)
+ unitsViewModel.setMapLayer(MapLayer(
+ layer[0], layer[1].toInt(), layer[2].toInt(), layer[3]
+ ))
}
private fun setupObservers() {
@@ -94,9 +101,10 @@ class UnitMapFragment(private val unitsViewModel: UnitsViewModel) : UnitFragment
}
}
- unitsViewModel.mapTileInfo.observe(viewLifecycleOwner) { tileInfo ->
+ unitsViewModel.mapLayer.observe(viewLifecycleOwner) { layer ->
Log.d("UnitMapFragment", "Loading layer!")
- unitsMapFragment.updateTileInfo(tileInfo.first, tileInfo.second)
+ unitsMapFragment.updateTileInfo(layer)
+ binding.attributionText.text = HtmlCompat.fromHtml(layer.attribution, 0)
}
unitsViewModel.geofences.observe(viewLifecycleOwner) { geofences ->
@@ -108,7 +116,7 @@ class UnitMapFragment(private val unitsViewModel: UnitsViewModel) : UnitFragment
Log.d("UnitMapFragment", "removeObservers()")
unitsViewModel.units.removeObservers(viewLifecycleOwner)
unitsViewModel.selectedUnit.removeObservers(viewLifecycleOwner)
- unitsViewModel.mapTileInfo.removeObservers(viewLifecycleOwner)
+ unitsViewModel.mapLayer.removeObservers(viewLifecycleOwner)
unitsViewModel.geofences.removeObservers(viewLifecycleOwner)
}
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt
index cbd543a..1bbcb80 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt
@@ -17,6 +17,7 @@ import mx.trackermap.TrackerMap.android.databinding.UnitsActivityBinding
import mx.trackermap.TrackerMap.android.devices.DevicesFragment
import mx.trackermap.TrackerMap.android.map.UnitMapFragment
import mx.trackermap.TrackerMap.android.session.UserInformationActivity
+import mx.trackermap.TrackerMap.client.models.MapLayer
import org.koin.androidx.viewmodel.ext.android.viewModel
@DelicateCoroutinesApi
@@ -92,12 +93,14 @@ class UnitsActivity : AppCompatActivity() {
popOver.setOnMenuItemClickListener { item ->
val layer = resources.getStringArray(
when (item.itemId) {
- R.id.layerStreets -> R.array.maps_streets_tile_url
- R.id.layerSatellite -> R.array.maps_satellite_tile_url
- else -> R.array.maps_streets_tile_url
+ R.id.layerStreets -> R.array.maps_streets_tile
+ R.id.layerSatellite -> R.array.maps_satellite_tile
+ else -> R.array.maps_streets_tile
}
)
- unitsViewModel.setMapLayer(layer[0], layer[1].toInt(), layer[2].toInt())
+ unitsViewModel.setMapLayer(MapLayer(
+ layer[0], layer[1].toInt(), layer[2].toInt(), layer[3]
+ ))
true
}
popOver.show()
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt
index 94e22fa..d3060f0 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt
@@ -2,16 +2,11 @@ package mx.trackermap.TrackerMap.android.units
import android.util.Log
import androidx.lifecycle.*
-import com.mousebird.maply.RemoteTileInfoNew
-import com.mousebird.maply.TileInfoNew
-import com.soywiz.krypto.Hash
-import com.soywiz.krypto.Hasher
-import com.soywiz.krypto.HasherFactory
-import com.soywiz.krypto.md5
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import mx.trackermap.TrackerMap.client.models.Geofence
+import mx.trackermap.TrackerMap.client.models.MapLayer
import mx.trackermap.TrackerMap.client.models.UnitInformation
import mx.trackermap.TrackerMap.controllers.GeofencesController
import mx.trackermap.TrackerMap.controllers.UnitsController
@@ -34,14 +29,14 @@ class UnitsViewModel(
private var _unitsDisplayMode = MutableLiveData(UnitsDisplayMode.MAP)
private var _units = MutableLiveData<List<UnitInformation>>()
private var _selectedUnit = MutableLiveData<UnitInformation?>()
- private var _mapTileInfo = MutableLiveData<Pair<String, TileInfoNew>>()
+ private var _mapLayer = MutableLiveData<MapLayer>()
private var _geofences = MutableLiveData<Map<Int, Geofence>>()
val searchQuery: LiveData<String> get() = _searchQuery
val unitsDisplayMode: LiveData<UnitsDisplayMode> get() = _unitsDisplayMode
val units: LiveData<List<UnitInformation>> get() = _units
val selectedUnit: LiveData<UnitInformation?> get() = _selectedUnit
- val mapTileInfo: LiveData<Pair<String, TileInfoNew>> get() = _mapTileInfo
+ val mapLayer: LiveData<MapLayer> get() = _mapLayer
val geofences: LiveData<Map<Int, Geofence>> get() = _geofences
init {
@@ -90,9 +85,8 @@ class UnitsViewModel(
_unitsDisplayMode.postValue(displayMode)
}
- fun setMapLayer(url: String, minZoom: Int = 0, maxZoom: Int = 21) {
- val tileInfo = RemoteTileInfoNew(url, minZoom, maxZoom)
- _mapTileInfo.postValue(url to tileInfo)
+ fun setMapLayer(layer: MapLayer) {
+ _mapLayer.postValue(layer)
}
fun toggleDisplayMode() {