diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapFragment.kt index dd176481..4299e2d9 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapFragment.kt @@ -1,6 +1,5 @@ package com.rtbishop.look4sat.ui.mainScreen -import android.content.SharedPreferences import android.graphics.Color import android.graphics.ColorMatrix import android.graphics.ColorMatrixColorFilter @@ -17,6 +16,7 @@ import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.data.SelectedSat import com.rtbishop.look4sat.databinding.FragmentMapBinding +import com.rtbishop.look4sat.utility.PrefsManager import dagger.hilt.android.AndroidEntryPoint import org.osmdroid.config.Configuration import org.osmdroid.tileprovider.tilesource.ITileSource @@ -33,14 +33,14 @@ import javax.inject.Inject class MapFragment : Fragment(R.layout.fragment_map) { @Inject - lateinit var preferences: SharedPreferences + lateinit var prefsManager: PrefsManager private lateinit var binding: FragmentMapBinding private val mapViewModel: MapViewModel by viewModels() private val sharedViewModel: SharedViewModel by activityViewModels() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - Configuration.getInstance().load(requireContext().applicationContext, preferences) + Configuration.getInstance().load(requireContext(), prefsManager.preferences) binding = FragmentMapBinding.bind(view).apply { mapView.apply { setMultiTouchControls(true) @@ -106,16 +106,34 @@ class MapFragment : Fragment(R.layout.fragment_map) { binding.apply { val markers = FolderOverlay() map.entries.forEach { - Marker(mapView).apply { - setInfoWindow(null) - setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_CENTER) - icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_map_sat) - position = GeoPoint(it.value.lat, it.value.lon) - setOnMarkerClickListener { _, _ -> - mapViewModel.selectSatellite(it.key) - return@setOnMarkerClickListener true + if (prefsManager.shouldUseTextLabels()) { + Marker(mapView).apply { + setInfoWindow(null) + textLabelFontSize = 24 + textLabelBackgroundColor = Color.TRANSPARENT + textLabelForegroundColor = + ContextCompat.getColor(requireContext(), R.color.themeLight) + setTextIcon(it.key.tle.name) + setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_CENTER) + position = GeoPoint(it.value.lat, it.value.lon) + setOnMarkerClickListener { _, _ -> + mapViewModel.selectSatellite(it.key) + return@setOnMarkerClickListener true + } + markers.add(this) + } + } else { + Marker(mapView).apply { + setInfoWindow(null) + setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_CENTER) + icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_map_sat) + position = GeoPoint(it.value.lat, it.value.lon) + setOnMarkerClickListener { _, _ -> + mapViewModel.selectSatellite(it.key) + return@setOnMarkerClickListener true + } + markers.add(this) } - markers.add(this) } } mapView.overlays[3] = markers diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapViewModel.kt index 69034004..8b747d53 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/mainScreen/MapViewModel.kt @@ -139,8 +139,8 @@ class MapViewModel @ViewModelInject constructor(val prefsManager: PrefsManager) private fun getSatFootprint(satPos: SatPos): Overlay { val rangePoints = mutableListOf() - satPos.rangeCircle.withIndex().forEach { - val osmPos = getOsmPosition(it.value.lat, it.value.lon, false) + satPos.rangeCircle.forEach { + val osmPos = getOsmPosition(it.lat, it.lon, false) rangePoints.add(GeoPoint(osmPos.lat, osmPos.lon)) } return Polygon().apply { diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt b/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt index 8d07dc57..2c1925e0 100644 --- a/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt +++ b/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt @@ -26,12 +26,13 @@ import com.github.amsacode.predict4java.GroundStationPosition import com.rtbishop.look4sat.data.PassPrefs import javax.inject.Inject -class PrefsManager @Inject constructor(private val preferences: SharedPreferences) { +class PrefsManager @Inject constructor(val preferences: SharedPreferences) { companion object { const val keyLatitude = "latitude" const val keyLongitude = "longitude" const val keyAltitude = "altitude" const val keyCompass = "compass" + const val keyTextLabels = "shouldUseTextLabels" const val keyTimeUTC = "timeUTC" const val keyHoursAhead = "hoursAhead" const val keyMinElevation = "minElevation" @@ -71,6 +72,10 @@ class PrefsManager @Inject constructor(private val preferences: SharedPreference return GeomagneticField(lat, lon, alt, System.currentTimeMillis()).declination } + fun shouldUseTextLabels(): Boolean { + return preferences.getBoolean(keyTextLabels, false) + } + fun shouldUseUTC(): Boolean { return preferences.getBoolean(keyTimeUTC, false) } diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index add7dd6d..494e2881 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -68,6 +68,8 @@ Настройки пролетов спутников Количество часов Минимальная элевация + Настройки карты + Использовать текстовые метки Другие настройки Использовать компас Показывать время пролета по UTC diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 938a127f..0a724179 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -85,6 +85,8 @@ Satellite pass preferences Hours ahead Minimal elevation + Map preferences + Use text labels instead of icons Other Show pass time in UTC Use sensors to rotate PolarView diff --git a/app/src/main/res/xml/preference.xml b/app/src/main/res/xml/preference.xml index 4eb97727..29f6d045 100644 --- a/app/src/main/res/xml/preference.xml +++ b/app/src/main/res/xml/preference.xml @@ -52,6 +52,15 @@ app:min="0" app:showSeekBarValue="true" /> + + +